CLOSED TREE
This commit is contained in:
Ryan VanderMeulen 2015-03-31 14:41:03 -04:00
Родитель bf52a3a76f 9ab973102b
Коммит 3e6e4cfe95
75 изменённых файлов: 1337 добавлений и 794 удалений

Просмотреть файл

@ -1429,33 +1429,8 @@ pref("devtools.debugger.ui.variables-sorting-enabled", true);
pref("devtools.debugger.ui.variables-only-enum-visible", false);
pref("devtools.debugger.ui.variables-searchbox-visible", false);
// Enable the Profiler
pref("devtools.profiler.enabled", true);
// Timeline panel settings
#ifdef NIGHTLY_BUILD
pref("devtools.timeline.enabled", true);
#else
pref("devtools.timeline.enabled", false);
#endif
// TODO remove `devtools.timeline.hiddenMarkers.` branches when performance
// tool lands (bug 1075567)
pref("devtools.timeline.hiddenMarkers", "[]");
// Enable perftools via build command
#ifdef MOZ_DEVTOOLS_PERFTOOLS
pref("devtools.performance_dev.enabled", true);
#else
pref("devtools.performance_dev.enabled", false);
#endif
// The default Profiler UI settings
// TODO remove `devtools.profiler.ui.` branches when performance
// tool lands (bug 1075567)
pref("devtools.profiler.ui.flatten-tree-recursion", true);
pref("devtools.profiler.ui.show-platform-data", false);
pref("devtools.profiler.ui.show-idle-blocks", true);
// Enable the Performance tools
pref("devtools.performance.enabled", true);
// The default Performance UI settings
pref("devtools.performance.memory.sample-probability", "0.05");

Просмотреть файл

@ -434,10 +434,10 @@ var PlacesCommandHook = {
*/
addLiveBookmark: function PCH_addLiveBookmark(url, feedTitle, feedSubtitle) {
var feedURI = makeURI(url);
var doc = gBrowser.contentDocument;
var doc = gBrowser.contentDocumentAsCPOW;
var title = (arguments.length > 1) ? feedTitle : doc.title;
var description;
if (arguments.length > 2)
description = feedSubtitle;

Просмотреть файл

@ -3546,6 +3546,10 @@
readonly="true"
onget="return this.mCurrentBrowser.contentWindow"/>
<property name="contentWindowAsCPOW"
readonly="true"
onget="return this.mCurrentBrowser.contentWindowAsCPOW"/>
<property name="sessionHistory"
onget="return this.mCurrentBrowser.sessionHistory;"
readonly="true"/>
@ -3566,6 +3570,10 @@
onget="return this.mCurrentBrowser.contentDocument;"
readonly="true"/>
<property name="contentDocumentAsCPOW"
onget="return this.mCurrentBrowser.contentDocumentAsCPOW;"
readonly="true"/>
<property name="contentTitle"
onget="return this.mCurrentBrowser.contentTitle;"
readonly="true"/>

Просмотреть файл

@ -181,14 +181,12 @@ function test_open_from_chrome() {
title: "test_open_from_chrome",
param: "",
},
finalizeFn: function () {},
timeout: 10000,
finalizeFn: function () {}
});
}
function waitForTabOpen(aOptions) {
let start = Date.now();
let timeout = aOptions.timeout || 5000;
let message = aOptions.message;
if (!message.title) {
@ -207,7 +205,6 @@ function waitForTabOpen(aOptions) {
tab.linkedBrowser.addEventListener("load", function onLoad(ev){
let browser = ev.currentTarget;
browser.removeEventListener("load", onLoad, true, true);
clearTimeout(onTimeout);
is(browser.contentWindow.document.title, message.title,
"Opened Tab is expected: " + message.title);
@ -228,14 +225,6 @@ function waitForTabOpen(aOptions) {
runNextTest();
};
let onTimeout = setTimeout(function(){
gBrowser.tabContainer.removeEventListener("TabOpen", onTabOpen, true);
ok(false, "Timeout: '"+message.title + "'.");
finalize();
}, timeout);
const URI = "data:text/html;charset=utf-8,<!DOCTYPE html><html><head><title>"+
message.title +
"<%2Ftitle><%2Fhead><body><%2Fbody><%2Fhtml>";
@ -250,7 +239,6 @@ function waitForTabOpen(aOptions) {
function waitForWindowOpen(aOptions) {
let start = Date.now();
let timeout = aOptions.timeout || 10000;
let message = aOptions.message;
let url = aOptions.url || getBrowserURL();
@ -270,16 +258,8 @@ function waitForWindowOpen(aOptions) {
runNextTest();
};
let onTimeout = setTimeout(function(){
Services.wm.removeListener(listener);
ok(false, "Fail: '"+message.title + "'.");
onFinalize();
}, timeout);
let listener = new WindowListener(message.title, url, {
onSuccess: aOptions.successFn,
onTimeout: onTimeout,
onFinalize: onFinalize,
});
Services.wm.addListener(listener);
@ -303,7 +283,6 @@ function executeWindowOpenInContent(aParam) {
function waitForWindowOpenFromChrome(aOptions) {
let start = Date.now();
let timeout = aOptions.timeout || 10000;
let message = aOptions.message;
let url = aOptions.url || getBrowserURL();
@ -323,17 +302,8 @@ function waitForWindowOpenFromChrome(aOptions) {
runNextTest();
};
let onTimeout = setTimeout(function(){
Services.wm.removeListener(listener);
ok(false, "Fail: '"+message.title + "'.");
testWindow.close();
onFinalize();
}, timeout);
let listener = new WindowListener(message.title, url, {
onSuccess: aOptions.successFn,
onTimeout: onTimeout,
onFinalize: onFinalize,
});
Services.wm.addListener(listener);
@ -348,7 +318,6 @@ function WindowListener(aTitle, aUrl, aCallBackObj) {
this.test_title = aTitle;
this.test_url = aUrl;
this.callback_onSuccess = aCallBackObj.onSuccess;
this.callBack_onTimeout = aCallBackObj.onTimeout;
this.callBack_onFinalize = aCallBackObj.onFinalize;
}
WindowListener.prototype = {
@ -356,7 +325,6 @@ WindowListener.prototype = {
test_title: null,
test_url: null,
callback_onSuccess: null,
callBack_onTimeout: null,
callBack_onFinalize: null,
onOpenWindow: function(aXULWindow) {
@ -372,7 +340,6 @@ WindowListener.prototype = {
}
domwindow.removeEventListener("load", onLoad, true);
clearTimeout(this.callBack_onTimeout);
// wait for trasition to fullscreen on OSX Lion later
if (isOSX) {

Просмотреть файл

@ -131,10 +131,12 @@ CustomizeMode.prototype = {
swatchForTheme: function(aDocument) {
let lwthemeButton = aDocument.getElementById("customization-lwtheme-button");
let lwthemeIcon = aDocument.getAnonymousElementByAttribute(lwthemeButton,
"class", "button-icon");
let imageURL = LightweightThemeManager.currentTheme === null ?
"chrome://browser/skin/theme-switcher-icon.png" :
LightweightThemeManager.currentTheme.iconURL;
lwthemeButton.setAttribute("image", imageURL);
lwthemeIcon.style.backgroundImage = "url(" + imageURL + ")";
},
enter: function() {

Просмотреть файл

@ -421,7 +421,7 @@ ReadingListImpl.prototype = {
* @return {Promise} Promise that is fullfilled with the added item.
*/
addItemFromBrowser: Task.async(function* (browser, url) {
let metadata = yield getMetadataFromBrowser(browser);
let metadata = yield this.getMetadataFromBrowser(browser);
let record = {
url: url,
title: metadata.title,
@ -436,6 +436,25 @@ ReadingListImpl.prototype = {
return (yield this.addItem(record));
}),
/**
* Get page metadata from the content document in a given <xul:browser>.
* @see PageMetadata.jsm
*
* @param {<xul:browser>} browser - Browser element for the document.
* @returns {Promise} Promise that is fulfilled with an object describing the metadata.
*/
getMetadataFromBrowser(browser) {
let mm = browser.messageManager;
return new Promise(resolve => {
function handleResult(msg) {
mm.removeMessageListener("PageMetadata:PageDataResult", handleResult);
resolve(msg.json);
}
mm.addMessageListener("PageMetadata:PageDataResult", handleResult);
mm.sendAsyncMessage("PageMetadata:GetPageData");
});
},
/**
* Adds a listener that will be notified when the list changes. Listeners
* are objects with the following optional methods:
@ -1043,25 +1062,6 @@ function clone(obj) {
return Cu.cloneInto(obj, {}, { cloneFunctions: false });
}
/**
* Get page metadata from the content document in a given <xul:browser>.
* @see PageMetadata.jsm
*
* @param {<xul:browser>} browser - Browser element for the document.
* @returns {Promise} Promise that is fulfilled with an object describing the metadata.
*/
function getMetadataFromBrowser(browser) {
let mm = browser.messageManager;
return new Promise(resolve => {
function handleResult(msg) {
mm.removeMessageListener("PageMetadata:PageDataResult", handleResult);
resolve(msg.json);
}
mm.addMessageListener("PageMetadata:PageDataResult", handleResult);
mm.sendAsyncMessage("PageMetadata:GetPageData");
});
}
Object.defineProperty(this, "ReadingList", {
get() {
if (!this._singleton) {

Просмотреть файл

@ -103,6 +103,11 @@ let RLSidebar = {
this.itemsById.set(item.id, item);
this.emptyListInfo.hidden = true;
window.requestAnimationFrame(() => {
window.requestAnimationFrame(() => {
itemNode.classList.add('visible');
});
});
},
/**
@ -113,13 +118,20 @@ let RLSidebar = {
log.trace(`onItemDeleted: ${item}`);
let itemNode = this.itemNodesById.get(item.id);
itemNode.remove();
this.itemNodesById.delete(item.id);
this.itemsById.delete(item.id);
// TODO: ensureListItems doesn't yet cope with needing to add one item.
//this.ensureListItems();
itemNode.addEventListener('transitionend', (event) => {
if (event.propertyName == "max-height") {
this.itemNodesById.delete(item.id);
this.itemsById.delete(item.id);
itemNode.remove();
this.emptyListInfo.hidden = (this.numItems > 0);
// TODO: ensureListItems doesn't yet cope with needing to add one item.
//this.ensureListItems();
this.emptyListInfo.hidden = (this.numItems > 0);
}
}, false);
itemNode.classList.remove('visible');
},
/**

Просмотреть файл

@ -835,7 +835,7 @@ let SessionStoreInternal = {
let overwrite = this._isCmdLineEmpty(aWindow, aInitialState);
let options = {firstWindow: true, overwriteTabs: overwrite};
this.restoreWindow(aWindow, aInitialState, options);
this.restoreWindows(aWindow, aInitialState, options);
}
}
else {
@ -850,7 +850,7 @@ let SessionStoreInternal = {
else if (!this._isWindowLoaded(aWindow)) {
let state = this._statesToRestore[aWindow.__SS_restoreID];
let options = {overwriteTabs: true, isFollowUp: state.windows.length == 1};
this.restoreWindow(aWindow, state, options);
this.restoreWindow(aWindow, state.windows[0], options);
}
// The user opened another, non-private window after starting up with
// a single private one. Let's restore the session we actually wanted to
@ -864,7 +864,7 @@ let SessionStoreInternal = {
this._restoreCount = this._deferredInitialState.windows ?
this._deferredInitialState.windows.length : 0;
this.restoreWindow(aWindow, this._deferredInitialState, {firstWindow: true});
this.restoreWindows(aWindow, this._deferredInitialState, {firstWindow: true});
this._deferredInitialState = null;
}
else if (this._restoreLastWindow && aWindow.toolbar.visible &&
@ -923,7 +923,7 @@ let SessionStoreInternal = {
this._restoreCount = 1;
let state = { windows: [newWindowState] };
let options = {overwriteTabs: this._isCmdLineEmpty(aWindow, state)};
this.restoreWindow(aWindow, state, options);
this.restoreWindow(aWindow, newWindowState, options);
}
}
// we actually restored the session just now.
@ -1569,7 +1569,7 @@ let SessionStoreInternal = {
this._globalState.setFromState(state);
// restore to the given state
this.restoreWindow(window, state, {overwriteTabs: true});
this.restoreWindows(window, state, {overwriteTabs: true});
},
getWindowState: function ssi_getWindowState(aWindow) {
@ -1590,7 +1590,7 @@ let SessionStoreInternal = {
throw Components.Exception("Window is not tracked", Cr.NS_ERROR_INVALID_ARG);
}
this.restoreWindow(aWindow, aState, {overwriteTabs: aOverwrite});
this.restoreWindows(aWindow, aState, {overwriteTabs: aOverwrite});
},
getTabState: function ssi_getTabState(aTab) {
@ -1961,7 +1961,7 @@ let SessionStoreInternal = {
// weirdness but we will still merge other extData.
// Bug 588217 should make this go away by merging the group data.
let options = {overwriteTabs: canOverwriteTabs, isFollowUp: true};
this.restoreWindow(windowToUse, { windows: [winState] }, options);
this.restoreWindow(windowToUse, winState, options);
}
else {
this._openWindowWithState({ windows: [winState] });
@ -2289,9 +2289,9 @@ let SessionStoreInternal = {
/**
* restore features to a single window
* @param aWindow
* Window reference
* @param aState
* JS object or its eval'able source
* Window reference to the window to use for restoration
* @param winData
* JS object
* @param aOptions
* {overwriteTabs: true} to overwrite existing tabs w/ new ones
* {isFollowUp: true} if this is not the restoration of the 1st window
@ -2299,7 +2299,7 @@ let SessionStoreInternal = {
* restoring in this session, that might open an
* external link as well
*/
restoreWindow: function ssi_restoreWindow(aWindow, aState, aOptions = {}) {
restoreWindow: function ssi_restoreWindow(aWindow, winData, aOptions = {}) {
let overwriteTabs = aOptions && aOptions.overwriteTabs;
let isFollowUp = aOptions && aOptions.isFollowUp;
let firstWindow = aOptions && aOptions.firstWindow;
@ -2307,57 +2307,21 @@ let SessionStoreInternal = {
if (isFollowUp) {
this.windowToFocus = aWindow;
}
// initialize window if necessary
if (aWindow && (!aWindow.__SSi || !this._windows[aWindow.__SSi]))
this.onLoad(aWindow);
let root;
try {
root = (typeof aState == "string") ? JSON.parse(aState) : aState;
}
catch (ex) { // invalid state object - don't restore anything
debug(ex);
this._sendRestoreCompletedNotifications();
return;
}
// Restore closed windows if any.
if (root._closedWindows) {
this._closedWindows = root._closedWindows;
}
// We're done here if there are no windows.
if (!root.windows || !root.windows.length) {
this._sendRestoreCompletedNotifications();
return;
}
TelemetryStopwatch.start("FX_SESSION_RESTORE_RESTORE_WINDOW_MS");
// We're not returning from this before we end up calling restoreTabs
// for this window, so make sure we send the SSWindowStateBusy event.
this._setWindowStateBusy(aWindow);
var winData;
if (!root.selectedWindow || root.selectedWindow > root.windows.length) {
root.selectedWindow = 0;
}
// open new windows for all further window entries of a multi-window session
// (unless they don't contain any tab data)
for (var w = 1; w < root.windows.length; w++) {
winData = root.windows[w];
if (winData && winData.tabs && winData.tabs[0]) {
var window = this._openWindowWithState({ windows: [winData] });
if (w == root.selectedWindow - 1) {
this.windowToFocus = window;
}
}
}
winData = root.windows[0];
if (!winData.tabs) {
winData.tabs = [];
}
// don't restore a single blank tab when we've had an external
// URL passed in for loading at startup (cf. bug 357419)
else if (firstWindow && !overwriteTabs && winData.tabs.length == 1 &&
@ -2492,10 +2456,6 @@ let SessionStoreInternal = {
(overwriteTabs ? (parseInt(winData.selected || "1")) : 0));
}
if (aState.scratchpads) {
ScratchpadManager.restoreSession(aState.scratchpads);
}
// set smoothScroll back to the original value
tabstrip.smoothScroll = smoothScroll;
@ -2505,6 +2465,76 @@ let SessionStoreInternal = {
this._sendRestoreCompletedNotifications();
},
/**
* Restore multiple windows using the provided state.
* @param aWindow
* Window reference to the first window to use for restoration.
* Additionally required windows will be opened.
* @param aState
* JS object or JSON string
* @param aOptions
* {overwriteTabs: true} to overwrite existing tabs w/ new ones
* {isFollowUp: true} if this is not the restoration of the 1st window
* {firstWindow: true} if this is the first non-private window we're
* restoring in this session, that might open an
* external link as well
*/
restoreWindows: function ssi_restoreWindows(aWindow, aState, aOptions = {}) {
let isFollowUp = aOptions && aOptions.isFollowUp;
if (isFollowUp) {
this.windowToFocus = aWindow;
}
// initialize window if necessary
if (aWindow && (!aWindow.__SSi || !this._windows[aWindow.__SSi]))
this.onLoad(aWindow);
let root;
try {
root = (typeof aState == "string") ? JSON.parse(aState) : aState;
}
catch (ex) { // invalid state object - don't restore anything
debug(ex);
this._sendRestoreCompletedNotifications();
return;
}
// Restore closed windows if any.
if (root._closedWindows) {
this._closedWindows = root._closedWindows;
}
// We're done here if there are no windows.
if (!root.windows || !root.windows.length) {
this._sendRestoreCompletedNotifications();
return;
}
if (!root.selectedWindow || root.selectedWindow > root.windows.length) {
root.selectedWindow = 0;
}
// open new windows for all further window entries of a multi-window session
// (unless they don't contain any tab data)
let winData;
for (var w = 1; w < root.windows.length; w++) {
winData = root.windows[w];
if (winData && winData.tabs && winData.tabs[0]) {
var window = this._openWindowWithState({ windows: [winData] });
if (w == root.selectedWindow - 1) {
this.windowToFocus = window;
}
}
}
this.restoreWindow(aWindow, root.windows[0], aOptions);
if (aState.scratchpads) {
ScratchpadManager.restoreSession(aState.scratchpads);
}
},
/**
* Manage history restoration for a window
* @param aWindow

Просмотреть файл

@ -94,6 +94,8 @@ SourcesView.prototype = Heritage.extend(WidgetMethods, {
}
return (a in KNOWN_SOURCE_GROUPS) ? 1 : -1;
};
this._addCommands();
},
/**
@ -112,6 +114,22 @@ SourcesView.prototype = Heritage.extend(WidgetMethods, {
this._cbTextbox.removeEventListener("keypress", this._onConditionalTextboxKeyPress, false);
},
/**
* Add commands that XUL can fire.
*/
_addCommands: function() {
utils.addCommands(this._commandset, {
addBreakpointCommand: e => this._onCmdAddBreakpoint(e),
addConditionalBreakpointCommand: e => this._onCmdAddConditionalBreakpoint(e),
blackBoxCommand: () => this.toggleBlackBoxing(),
unBlackBoxButton: () => this._onStopBlackBoxing(),
prettyPrintCommand: () => this.togglePrettyPrint(),
toggleBreakpointsCommand: () =>this.toggleBreakpoints(),
nextSourceCommand: () => this.selectNextItem(),
prevSourceCommand: () => this.selectPrevItem()
});
},
/**
* Sets the preferred location to be selected in this sources container.
* @param string aUrl
@ -1279,6 +1297,8 @@ TracerView.prototype = Heritage.extend(WidgetMethods, {
this._traceButton.setAttribute("tooltiptext", this._startTooltip);
this.emptyText = this._tracingNotStartedString;
this._addCommands();
},
/**
@ -1297,6 +1317,17 @@ TracerView.prototype = Heritage.extend(WidgetMethods, {
this._search.removeEventListener("input", this._onSearch, false);
},
/**
* Add commands that XUL can fire.
*/
_addCommands: function() {
utils.addCommands(document.getElementById('debuggerCommands'), {
toggleTracing: () => this._onToggleTracing(),
startTracing: () => this._onStartTracing(),
clearTraces: () => this._onClear()
});
},
/**
* Function invoked by the "toggleTracing" command to switch the tracer state.
*/
@ -2205,6 +2236,7 @@ WatchExpressionsView.prototype = Heritage.extend(WidgetMethods, {
this.widget.addEventListener("click", this._onClick, false);
this.headerText = L10N.getStr("addWatchExpressionText");
this._addCommands();
},
/**
@ -2216,6 +2248,16 @@ WatchExpressionsView.prototype = Heritage.extend(WidgetMethods, {
this.widget.removeEventListener("click", this._onClick, false);
},
/**
* Add commands that XUL can fire.
*/
_addCommands: function() {
utils.addCommands(document.getElementById('debuggerCommands'), {
addWatchExpressionCommand: () => this._onCmdAddExpression(),
removeAllWatchExpressionsCommand: () => this._onCmdRemoveAllExpressions()
});
},
/**
* Adds a watch expression in this container.
*

Просмотреть файл

@ -57,6 +57,7 @@ ToolbarView.prototype = {
this._stepOverButton.setAttribute("tooltiptext", this._stepOverTooltip);
this._stepInButton.setAttribute("tooltiptext", this._stepInTooltip);
this._stepOutButton.setAttribute("tooltiptext", this._stepOutTooltip);
this._addCommands();
},
/**
@ -72,6 +73,18 @@ ToolbarView.prototype = {
this._stepOutButton.removeEventListener("mousedown", this._onStepOutPressed, false);
},
/**
* Add commands that XUL can fire.
*/
_addCommands: function() {
utils.addCommands(document.getElementById('debuggerCommands'), {
resumeCommand: () => this._onResumePressed(),
stepOverCommand: () => this._onStepOverPressed(),
stepInCommand: () => this._onStepInPressed(),
stepOutCommand: () => this._onStepOutPressed()
});
},
/**
* Display a warning when trying to resume a debuggee while another is paused.
* Debuggees must be unpaused in a Last-In-First-Out order.
@ -225,8 +238,9 @@ OptionsView.prototype = {
this._showVariablesFilterBoxItem.setAttribute("checked", Prefs.variablesSearchboxVisible);
this._showOriginalSourceItem.setAttribute("checked", Prefs.sourceMapsEnabled);
this._autoBlackBoxItem.setAttribute("checked", Prefs.autoBlackBox);
},
this._addCommands();
},
/**
* Destruction function, called when the debugger is closed.
@ -236,6 +250,22 @@ OptionsView.prototype = {
// Nothing to do here yet.
},
/**
* Add commands that XUL can fire.
*/
_addCommands: function() {
utils.addCommands(document.getElementById('debuggerCommands'), {
toggleAutoPrettyPrint: () => this._toggleAutoPrettyPrint(),
togglePauseOnExceptions: () => this._togglePauseOnExceptions(),
toggleIgnoreCaughtExceptions: () => this._toggleIgnoreCaughtExceptions(),
toggleShowPanesOnStartup: () => this._toggleShowPanesOnStartup(),
toggleShowOnlyEnum: () => this._toggleShowVariablesOnlyEnum(),
toggleShowVariablesFilterBox: () => this._toggleShowVariablesFilterBox(),
toggleShowOriginalSource: () => this._toggleShowOriginalSource(),
toggleAutoBlackBox: () => this._toggleAutoBlackBox()
});
},
/**
* Listener handling the 'gear menu' popup showing event.
*/
@ -784,6 +814,8 @@ FilterView.prototype = {
L10N.getFormatStr("searchPanelGoToLine", this._lineSearchKey));
this._variableOperatorLabel.setAttribute("value",
L10N.getFormatStr("searchPanelVariable", this._variableSearchKey));
this._addCommands();
},
/**
@ -799,6 +831,21 @@ FilterView.prototype = {
this._searchbox.removeEventListener("blur", this._onBlur, false);
},
/**
* Add commands that XUL can fire.
*/
_addCommands: function() {
utils.addCommands(document.getElementById('debuggerCommands'), {
fileSearchCommand: () => this._doFileSearch(),
globalSearchCommand: () => this._doGlobalSearch(),
functionSearchCommand: () => this._doFunctionSearch(),
tokenSearchCommand: () => this._doTokenSearch(),
lineSearchCommand: () => this._doLineSearch(),
variableSearchCommand: () => this._doVariableSearch(),
variablesFocusCommand: () => this._doVariablesFocus()
});
},
/**
* Gets the entered operator and arguments in the searchbox.
* @return array

Просмотреть файл

@ -25,6 +25,7 @@
<script type="application/javascript;version=1.8"
src="chrome://browser/content/devtools/theme-switching.js"/>
<script type="text/javascript" src="chrome://global/content/globalOverlay.js"/>
<script type="text/javascript" src="debugger/utils.js"/>
<script type="text/javascript" src="debugger-controller.js"/>
<script type="text/javascript" src="debugger-view.js"/>
<script type="text/javascript" src="debugger-toolbar.js"/>
@ -32,72 +33,7 @@
<commandset id="editMenuCommands"/>
<commandset id="debuggerCommands">
<command id="blackBoxCommand"
oncommand="DebuggerView.Sources.toggleBlackBoxing()"/>
<command id="unBlackBoxButton"
oncommand="DebuggerView.Sources._onStopBlackBoxing()"/>
<command id="prettyPrintCommand"
oncommand="DebuggerView.Sources.togglePrettyPrint()"/>
<command id="toggleBreakpointsCommand"
oncommand="DebuggerView.Sources.toggleBreakpoints()"/>
<command id="nextSourceCommand"
oncommand="DebuggerView.Sources.selectNextItem()"/>
<command id="prevSourceCommand"
oncommand="DebuggerView.Sources.selectPrevItem()"/>
<command id="resumeCommand"
oncommand="DebuggerView.Toolbar._onResumePressed()"/>
<command id="stepOverCommand"
oncommand="DebuggerView.Toolbar._onStepOverPressed()"/>
<command id="stepInCommand"
oncommand="DebuggerView.Toolbar._onStepInPressed()"/>
<command id="stepOutCommand"
oncommand="DebuggerView.Toolbar._onStepOutPressed()"/>
<command id="fileSearchCommand"
oncommand="DebuggerView.Filtering._doFileSearch()"/>
<command id="globalSearchCommand"
oncommand="DebuggerView.Filtering._doGlobalSearch()"/>
<command id="functionSearchCommand"
oncommand="DebuggerView.Filtering._doFunctionSearch()"/>
<command id="tokenSearchCommand"
oncommand="DebuggerView.Filtering._doTokenSearch()"/>
<command id="lineSearchCommand"
oncommand="DebuggerView.Filtering._doLineSearch()"/>
<command id="variableSearchCommand"
oncommand="DebuggerView.Filtering._doVariableSearch()"/>
<command id="variablesFocusCommand"
oncommand="DebuggerView.Filtering._doVariablesFocus()"/>
<command id="addBreakpointCommand"
oncommand="DebuggerView.Sources._onCmdAddBreakpoint(event)"/>
<command id="addConditionalBreakpointCommand"
oncommand="DebuggerView.Sources._onCmdAddConditionalBreakpoint(event)"/>
<command id="addWatchExpressionCommand"
oncommand="DebuggerView.WatchExpressions._onCmdAddExpression()"/>
<command id="removeAllWatchExpressionsCommand"
oncommand="DebuggerView.WatchExpressions._onCmdRemoveAllExpressions()"/>
<command id="toggleAutoPrettyPrint"
oncommand="DebuggerView.Options._toggleAutoPrettyPrint()"/>
<command id="togglePauseOnExceptions"
oncommand="DebuggerView.Options._togglePauseOnExceptions()"/>
<command id="toggleIgnoreCaughtExceptions"
oncommand="DebuggerView.Options._toggleIgnoreCaughtExceptions()"/>
<command id="toggleShowPanesOnStartup"
oncommand="DebuggerView.Options._toggleShowPanesOnStartup()"/>
<command id="toggleShowOnlyEnum"
oncommand="DebuggerView.Options._toggleShowVariablesOnlyEnum()"/>
<command id="toggleShowVariablesFilterBox"
oncommand="DebuggerView.Options._toggleShowVariablesFilterBox()"/>
<command id="toggleShowOriginalSource"
oncommand="DebuggerView.Options._toggleShowOriginalSource()"/>
<command id="toggleAutoBlackBox"
oncommand="DebuggerView.Options._toggleAutoBlackBox()"/>
<command id="toggleTracing"
oncommand="DebuggerView.Tracer._onToggleTracing()"/>
<command id="startTracing"
oncommand="DebuggerView.Tracer._onStartTracing()"/>
<command id="clearTraces"
oncommand="DebuggerView.Tracer._onClear()"/>
</commandset>
<commandset id="debuggerCommands"></commandset>
<popupset id="debuggerPopupset">
<menupopup id="sourceEditorContextMenu"

Просмотреть файл

@ -10,7 +10,7 @@ let gAddon, gClient, gThreadClient, gDebugger, gSources;
let PREFS = [
"devtools.canvasdebugger.enabled",
"devtools.shadereditor.enabled",
"devtools.profiler.enabled",
"devtools.performance.enabled",
"devtools.netmonitor.enabled"
];
function test() {

Просмотреть файл

@ -0,0 +1,28 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const utils = {
/**
* Create <command> elements within `commandset` with event handlers
* bound to the `command` event
*
* @param commandset HTML Element
* A <commandset> element
* @param commands Object
* An object where keys specify <command> ids and values
* specify event handlers to be bound on the `command` event
*/
addCommands: function(commandset, commands) {
Object.keys(commands).forEach(name => {
let node = document.createElement('command');
node.id = name;
// XXX bug 371900: the command element must have an oncommand
// attribute as a string set by `setAttribute` for keys to use it
node.setAttribute('oncommand', ' ');
node.addEventListener('command', commands[name]);
commandset.appendChild(node);
});
}
};

Просмотреть файл

@ -1217,8 +1217,8 @@ let gDevToolsBrowser = {
* necessary because of the WebConsole's `profile` and `profileEnd` methods.
*/
_connectToProfiler: function DT_connectToProfiler(event, toolbox) {
let SharedProfilerUtils = devtools.require("devtools/profiler/shared");
let connection = SharedProfilerUtils.getProfilerConnection(toolbox);
let SharedPerformanceUtils = devtools.require("devtools/performance/front");
let connection = SharedPerformanceUtils.getPerformanceActorsConnection(toolbox.target);
connection.open();
},

Просмотреть файл

@ -87,7 +87,7 @@
<vbox id="profiler-options" class="options-groupbox">
<checkbox label="&options.showPlatformData.label;"
tooltiptext="&options.showPlatformData.tooltip;"
data-pref="devtools.profiler.ui.show-platform-data"/>
data-pref="devtools.performance.ui.show-platform-data"/>
</vbox>
</vbox>

Просмотреть файл

@ -51,7 +51,7 @@ let connect = Task.async(function*() {
// Certain options should be toggled since we can assume chrome debugging here
function setPrefDefaults() {
Services.prefs.setBoolPref("devtools.inspector.showUserAgentStyles", true);
Services.prefs.setBoolPref("devtools.profiler.ui.show-platform-data", true);
Services.prefs.setBoolPref("devtools.performance.ui.show-platform-data", true);
Services.prefs.setBoolPref("browser.devedition.theme.showCustomizeButton", false);
Services.prefs.setBoolPref("devtools.inspector.showAllAnonymousContent", true);
Services.prefs.setBoolPref("browser.dom.window.dump.enabled", true);

Просмотреть файл

@ -72,6 +72,7 @@ browser.jar:
content/browser/devtools/debugger-view.js (debugger/debugger-view.js)
content/browser/devtools/debugger-toolbar.js (debugger/debugger-toolbar.js)
content/browser/devtools/debugger-panes.js (debugger/debugger-panes.js)
content/browser/devtools/debugger/utils.js (debugger/utils.js)
content/browser/devtools/shadereditor.xul (shadereditor/shadereditor.xul)
content/browser/devtools/shadereditor.js (shadereditor/shadereditor.js)
content/browser/devtools/canvasdebugger.xul (canvasdebugger/canvasdebugger.xul)
@ -89,11 +90,6 @@ browser.jar:
content/browser/devtools/webaudioeditor/views/inspector.js (webaudioeditor/views/inspector.js)
content/browser/devtools/webaudioeditor/views/properties.js (webaudioeditor/views/properties.js)
content/browser/devtools/webaudioeditor/views/automation.js (webaudioeditor/views/automation.js)
content/browser/devtools/profiler.xul (profiler/profiler.xul)
content/browser/devtools/profiler.js (profiler/profiler.js)
content/browser/devtools/ui-recordings.js (profiler/ui-recordings.js)
content/browser/devtools/ui-profile.js (profiler/ui-profile.js)
#ifdef MOZ_DEVTOOLS_PERFTOOLS
content/browser/devtools/performance.xul (performance/performance.xul)
content/browser/devtools/performance/performance-controller.js (performance/performance-controller.js)
content/browser/devtools/performance/performance-view.js (performance/performance-view.js)
@ -107,7 +103,6 @@ browser.jar:
content/browser/devtools/performance/views/details-memory-call-tree.js (performance/views/details-memory-call-tree.js)
content/browser/devtools/performance/views/details-memory-flamegraph.js (performance/views/details-memory-flamegraph.js)
content/browser/devtools/performance/views/recordings.js (performance/views/recordings.js)
#endif
content/browser/devtools/responsivedesign/resize-commands.js (responsivedesign/resize-commands.js)
content/browser/devtools/commandline.css (commandline/commandline.css)
content/browser/devtools/commandlineoutput.xhtml (commandline/commandlineoutput.xhtml)
@ -148,5 +143,3 @@ browser.jar:
content/browser/devtools/eyedropper.xul (eyedropper/eyedropper.xul)
content/browser/devtools/eyedropper/crosshairs.css (eyedropper/crosshairs.css)
content/browser/devtools/eyedropper/nocursor.css (eyedropper/nocursor.css)
content/browser/devtools/timeline/timeline.xul (timeline/timeline.xul)
content/browser/devtools/timeline/timeline.js (timeline/timeline.js)

Просмотреть файл

@ -30,9 +30,7 @@ loader.lazyGetter(this, "StyleEditorPanel", () => require("devtools/styleeditor/
loader.lazyGetter(this, "ShaderEditorPanel", () => require("devtools/shadereditor/panel").ShaderEditorPanel);
loader.lazyGetter(this, "CanvasDebuggerPanel", () => require("devtools/canvasdebugger/panel").CanvasDebuggerPanel);
loader.lazyGetter(this, "WebAudioEditorPanel", () => require("devtools/webaudioeditor/panel").WebAudioEditorPanel);
loader.lazyGetter(this, "ProfilerPanel", () => require("devtools/profiler/panel").ProfilerPanel);
loader.lazyGetter(this, "PerformancePanel", () => require("devtools/performance/panel").PerformancePanel);
loader.lazyGetter(this, "TimelinePanel", () => require("devtools/timeline/panel").TimelinePanel);
loader.lazyGetter(this, "NetMonitorPanel", () => require("devtools/netmonitor/panel").NetMonitorPanel);
loader.lazyGetter(this, "StoragePanel", () => require("devtools/storage/panel").StoragePanel);
loader.lazyGetter(this, "ScratchpadPanel", () => require("devtools/scratchpad/scratchpad-panel").ScratchpadPanel);
@ -47,7 +45,6 @@ const shaderEditorProps = "chrome://browser/locale/devtools/shadereditor.propert
const canvasDebuggerProps = "chrome://browser/locale/devtools/canvasdebugger.properties";
const webAudioEditorProps = "chrome://browser/locale/devtools/webaudioeditor.properties";
const profilerProps = "chrome://browser/locale/devtools/profiler.properties";
const timelineProps = "chrome://browser/locale/devtools/timeline.properties";
const netMonitorProps = "chrome://browser/locale/devtools/netmonitor.properties";
const storageProps = "chrome://browser/locale/devtools/storage.properties";
const scratchpadProps = "chrome://browser/locale/devtools/scratchpad.properties";
@ -61,7 +58,6 @@ loader.lazyGetter(this, "shaderEditorStrings", () => Services.strings.createBund
loader.lazyGetter(this, "canvasDebuggerStrings", () => Services.strings.createBundle(canvasDebuggerProps));
loader.lazyGetter(this, "webAudioEditorStrings", () => Services.strings.createBundle(webAudioEditorProps));
loader.lazyGetter(this, "inspectorStrings", () => Services.strings.createBundle(inspectorProps));
loader.lazyGetter(this, "timelineStrings", () => Services.strings.createBundle(timelineProps));
loader.lazyGetter(this, "netMonitorStrings", () => Services.strings.createBundle(netMonitorProps));
loader.lazyGetter(this, "storageStrings", () => Services.strings.createBundle(storageProps));
loader.lazyGetter(this, "scratchpadStrings", () => Services.strings.createBundle(scratchpadProps));
@ -249,41 +245,15 @@ Tools.canvasDebugger = {
}
};
Tools.jsprofiler = {
id: "jsprofiler",
accesskey: l10n("profiler.accesskey", profilerStrings),
key: l10n("profiler.commandkey2", profilerStrings),
ordinal: 7,
modifiers: "shift",
visibilityswitch: "devtools.profiler.enabled",
icon: "chrome://browser/skin/devtools/tool-profiler.svg",
invertIconForLightTheme: true,
url: "chrome://browser/content/devtools/profiler.xul",
label: l10n("profiler.label2", profilerStrings),
panelLabel: l10n("profiler.panelLabel2", profilerStrings),
tooltip: l10n("profiler.tooltip2", profilerStrings),
inMenu: true,
isTargetSupported: function (target) {
// Hide the profiler when debugging devices pre bug 1046394,
// that don't expose profiler actor in content processes.
return target.hasActor("profiler");
},
build: function (frame, target) {
return new ProfilerPanel(frame, target);
}
};
Tools.performance = {
id: "performance",
ordinal: 19,
ordinal: 7,
icon: "chrome://browser/skin/devtools/tool-profiler.svg",
invertIconForLightTheme: true,
url: "chrome://browser/content/devtools/performance.xul",
// TODO bug 1082695 audit the Performance tools labels
label: "Performance++", //l10n("profiler.label2", profilerStrings),
panelLabel: "Performance++", //l10n("profiler.panelLabel2", profilerStrings),
visibilityswitch: "devtools.performance.enabled",
label: l10n("profiler.label2", profilerStrings),
panelLabel: l10n("profiler.panelLabel2", profilerStrings),
tooltip: l10n("profiler.tooltip2", profilerStrings),
accesskey: l10n("profiler.accesskey", profilerStrings),
key: l10n("profiler.commandkey2", profilerStrings),
@ -299,27 +269,6 @@ Tools.performance = {
}
};
Tools.timeline = {
id: "timeline",
ordinal: 8,
visibilityswitch: "devtools.timeline.enabled",
icon: "chrome://browser/skin/devtools/tool-network.svg",
invertIconForLightTheme: true,
url: "chrome://browser/content/devtools/timeline/timeline.xul",
label: l10n("timeline.label", timelineStrings),
panelLabel: l10n("timeline.panelLabel", timelineStrings),
tooltip: l10n("timeline.tooltip", timelineStrings),
isTargetSupported: function(target) {
return target.hasActor("timeline");
},
build: function (iframeWindow, toolbox) {
let panel = new TimelinePanel(iframeWindow, toolbox);
return panel.open();
}
};
Tools.netMonitor = {
id: "netmonitor",
accesskey: l10n("netmonitor.accesskey", netMonitorStrings),
@ -422,23 +371,12 @@ let defaultTools = [
Tools.shaderEditor,
Tools.canvasDebugger,
Tools.webAudioEditor,
Tools.jsprofiler,
Tools.timeline,
Tools.performance,
Tools.netMonitor,
Tools.storage,
Tools.scratchpad
];
// Only enable in-development performance tools if `--enable-devtools-perf`
// used in build, turning on `devtools.performance_dev.enabled`.
// Add to normal `defaultTools` when ready for normal release,
// pull out MOZ_DEVTOOLS_PERFTOOLS setting in `./configure.in`, and
// leave config on in `./browser/app/profile/firefox.js`, and always
// build in `./browser/devtools/moz.build`.
if (Services.prefs.getBoolPref("devtools.performance_dev.enabled")) {
defaultTools.push(Tools.performance);
}
exports.defaultTools = defaultTools;
for (let definition of defaultTools) {

Просмотреть файл

@ -17,7 +17,7 @@ DIRS += [
'layoutview',
'markupview',
'netmonitor',
'profiler',
'performance',
'projecteditor',
'responsivedesign',
'scratchpad',
@ -28,15 +28,11 @@ DIRS += [
'styleeditor',
'styleinspector',
'tilt',
'timeline',
'webaudioeditor',
'webconsole',
'webide',
]
if CONFIG['MOZ_DEVTOOLS_PERFTOOLS']:
DIRS += ['performance']
EXTRA_COMPONENTS += [
'devtools-clhandler.js',
'devtools-clhandler.manifest',

Просмотреть файл

@ -48,17 +48,13 @@ let DEFAULT_PREFS = [
"devtools.performance.ui.show-idle-blocks",
"devtools.performance.ui.enable-memory",
"devtools.performance.ui.enable-framerate",
// remove after bug 1075567 is resolved.
"devtools.performance_dev.enabled"
].reduce((prefs, pref) => {
prefs[pref] = Services.prefs.getBoolPref(pref);
return prefs;
}, {});
// Enable the new performance panel for all tests. Remove this after
// bug 1075567 is resolved.
Services.prefs.setBoolPref("devtools.performance_dev.enabled", true);
// Enable the new performance panel for all tests.
Services.prefs.setBoolPref("devtools.performance.enabled", true);
// Enable logging for all the tests. Both the debugger server and frontend will
// be affected by this pref.
Services.prefs.setBoolPref("devtools.debugger.log", false);

Просмотреть файл

@ -7,5 +7,3 @@ EXTRA_JS_MODULES.devtools.profiler += [
'panel.js',
'utils/shared.js'
]
BROWSER_CHROME_MANIFESTS += ['test/browser.ini']

Просмотреть файл

@ -410,7 +410,7 @@ DeveloperToolbar.prototype.show = function(focus) {
return gcli.load().then(() => {
this.display = gcli.createDisplay({
contentDocument: this._chromeWindow.gBrowser.contentDocument,
contentDocument: this._chromeWindow.gBrowser.contentDocumentAsCPOW,
chromeDocument: this._doc,
chromeWindow: this._chromeWindow,
hintElement: this.tooltipPanel.hintElement,
@ -624,7 +624,7 @@ DeveloperToolbar.prototype.handleEvent = function(ev) {
if (ev.type == "TabSelect" || ev.type == "load") {
if (this.visible) {
this.display.reattach({
contentDocument: this._chromeWindow.gBrowser.contentDocument
contentDocument: this._chromeWindow.gBrowser.contentDocumentAsCPOW
});
if (ev.type == "TabSelect") {

Просмотреть файл

@ -140,7 +140,7 @@ Telemetry.prototype = {
userHistogram: "DEVTOOLS_CANVASDEBUGGER_OPENED_PER_USER_FLAG",
timerHistogram: "DEVTOOLS_CANVASDEBUGGER_TIME_ACTIVE_SECONDS"
},
jsprofiler: {
performance: {
histogram: "DEVTOOLS_JSPROFILER_OPENED_BOOLEAN",
userHistogram: "DEVTOOLS_JSPROFILER_OPENED_PER_USER_FLAG",
timerHistogram: "DEVTOOLS_JSPROFILER_TIME_ACTIVE_SECONDS"

Просмотреть файл

@ -11,7 +11,7 @@ add_task(function*() {
yield promiseTab(TEST_URI);
let Telemetry = loadTelemetryAndRecordLogs();
yield openAndCloseToolbox(2, TOOL_DELAY, "jsprofiler");
yield openAndCloseToolbox(2, TOOL_DELAY, "performance");
checkTelemetryResults(Telemetry);
stopRecordingTelemetryLogs(Telemetry);

Просмотреть файл

@ -6,5 +6,3 @@
EXTRA_JS_MODULES.devtools.timeline += [
'panel.js',
]
BROWSER_CHROME_MANIFESTS += ['test/browser.ini']

Просмотреть файл

@ -53,7 +53,7 @@ function test()
yield openAndCheckPanel("jsdebugger");
yield openAndCheckPanel("inspector");
yield openAndCheckPanel("styleeditor");
yield openAndCheckPanel("jsprofiler");
yield openAndCheckPanel("performance");
yield openAndCheckPanel("netmonitor");
yield checkWebconsolePanelOpened();

Просмотреть файл

@ -45,11 +45,17 @@ let ReaderParent = {
switch (message.name) {
case "Reader:AddToList":
let article = message.data.article;
ReadingList.addItem({
url: article.url,
title: article.title,
excerpt: article.excerpt,
status: article.status
ReadingList.getMetadataFromBrowser(message.target).then(function(metadata) {
if (metadata.previews.length > 0) {
article.preview = metadata.previews[0];
}
ReadingList.addItem({
url: article.url,
title: article.title,
excerpt: article.excerpt,
preview: article.preview
});
});
break;

Просмотреть файл

@ -164,6 +164,13 @@
-moz-margin-start: 6px !important;
}
#customization-lwtheme-button > .box-inherit > .box-inherit > .button-icon {
width: 20px;
height: 20px;
border-radius: 2px;
background-size: contain;
}
#customization-titlebar-visibility-button > .button-box > .button-icon {
vertical-align: middle;
}

Просмотреть файл

@ -1,12 +1,16 @@
/* Reading List button */
#urlbar:not([focused]):not(:hover) #readinglist-addremove-button {
display: none;
opacity: 0;
width: 0px;
}
#readinglist-addremove-button {
list-style-image: url("chrome://browser/skin/readinglist/icons.svg#addpage");
-moz-image-region: rect(0, 14px, 14px, 0);
transition: width 150ms ease-in-out, opacity 150ms ease-in-out 150ms;
opacity: 1;
width: 20px;
}
#readinglist-addremove-button:hover {

Просмотреть файл

@ -31,6 +31,9 @@ body {
flex-flow: row;
cursor: pointer;
padding: 6px;
opacity: 0;
max-height: 0;
transition: opacity 150ms ease-in-out, max-height 150ms ease-in-out 150ms;
}
.item.active {
@ -105,3 +108,8 @@ body {
border-width: 0;
}
.item.visible {
opacity: 1;
max-height: 80px;
transition: max-height 250ms ease-in-out, opacity 250ms ease-in-out 250ms;
}

Просмотреть файл

@ -7672,19 +7672,6 @@ if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, or omni])
fi
dnl =========================================================
dnl Enable support for revamped devtools Performance Tools
dnl =========================================================
MOZ_ARG_ENABLE_BOOL(devtools-perf,
[ --enable-devtools-perf Set compile flags necessary for compiling devtools perftools],
MOZ_DEVTOOLS_PERFTOOLS=1,
MOZ_DEVTOOLS_PERFTOOLS= )
if test -n "$MOZ_DEVTOOLS_PERFTOOLS"; then
AC_DEFINE(MOZ_DEVTOOLS_PERFTOOLS)
fi
AC_SUBST(MOZ_DEVTOOLS_PERFTOOLS)
dnl =========================================================
dnl Omnijar packaging (bug 552121)
dnl =========================================================

Просмотреть файл

@ -344,6 +344,7 @@ pref("privacy.item.cache", true);
pref("privacy.item.cookies", true);
pref("privacy.item.offlineApps", true);
pref("privacy.item.history", true);
pref("privacy.item.searchHistory", true);
pref("privacy.item.formdata", true);
pref("privacy.item.downloads", true);
pref("privacy.item.passwords", true);

Просмотреть файл

@ -2707,13 +2707,13 @@ public class BrowserApp extends GeckoApp
} else if (info.parent == GECKO_TOOLS_MENU) {
// The tools menu only exists in our -v11 resources.
if (Versions.feature11Plus) {
MenuItem tools = menu.findItem(R.id.tools);
final MenuItem tools = menu.findItem(R.id.tools);
destination = tools != null ? tools.getSubMenu() : menu;
} else {
destination = menu;
}
} else {
MenuItem parent = menu.findItem(info.parent);
final MenuItem parent = menu.findItem(info.parent);
if (parent == null) {
return;
}
@ -2731,7 +2731,7 @@ public class BrowserApp extends GeckoApp
}
}
MenuItem item = destination.add(Menu.NONE, info.id, Menu.NONE, info.label);
final MenuItem item = destination.add(Menu.NONE, info.id, Menu.NONE, info.label);
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
@ -2749,7 +2749,7 @@ public class BrowserApp extends GeckoApp
@Override
public void onBitmapFound(Drawable d) {
// TODO: why do we re-find the item?
MenuItem item = destination.findItem(id);
final MenuItem item = destination.findItem(id);
if (item == null) {
return;
}
@ -2800,7 +2800,7 @@ public class BrowserApp extends GeckoApp
if (mMenu == null)
return;
MenuItem menuItem = mMenu.findItem(id);
final MenuItem menuItem = mMenu.findItem(id);
if (menuItem != null)
mMenu.removeItem(id);
}
@ -2825,7 +2825,7 @@ public class BrowserApp extends GeckoApp
return;
}
MenuItem menuItem = mMenu.findItem(id);
final MenuItem menuItem = mMenu.findItem(id);
if (menuItem != null) {
menuItem.setTitle(options.optString("name", menuItem.getTitle().toString()));
menuItem.setCheckable(options.optBoolean("checkable", menuItem.isCheckable()));
@ -2947,18 +2947,18 @@ public class BrowserApp extends GeckoApp
}
Tab tab = Tabs.getInstance().getSelectedTab();
MenuItem bookmark = aMenu.findItem(R.id.bookmark);
final MenuItem bookmark = aMenu.findItem(R.id.bookmark);
final MenuItem reader = aMenu.findItem(R.id.reading_list);
MenuItem back = aMenu.findItem(R.id.back);
MenuItem forward = aMenu.findItem(R.id.forward);
MenuItem share = aMenu.findItem(R.id.share);
final MenuItem back = aMenu.findItem(R.id.back);
final MenuItem forward = aMenu.findItem(R.id.forward);
final MenuItem share = aMenu.findItem(R.id.share);
final MenuItem quickShare = aMenu.findItem(R.id.quickshare);
MenuItem saveAsPDF = aMenu.findItem(R.id.save_as_pdf);
MenuItem charEncoding = aMenu.findItem(R.id.char_encoding);
MenuItem findInPage = aMenu.findItem(R.id.find_in_page);
MenuItem desktopMode = aMenu.findItem(R.id.desktop_mode);
MenuItem enterGuestMode = aMenu.findItem(R.id.new_guest_session);
MenuItem exitGuestMode = aMenu.findItem(R.id.exit_guest_session);
final MenuItem saveAsPDF = aMenu.findItem(R.id.save_as_pdf);
final MenuItem charEncoding = aMenu.findItem(R.id.char_encoding);
final MenuItem findInPage = aMenu.findItem(R.id.find_in_page);
final MenuItem desktopMode = aMenu.findItem(R.id.desktop_mode);
final MenuItem enterGuestMode = aMenu.findItem(R.id.new_guest_session);
final MenuItem exitGuestMode = aMenu.findItem(R.id.exit_guest_session);
// Only show the "Quit" menu item on pre-ICS, television devices,
// or if the user has explicitly enabled the clear on shutdown pref.

Просмотреть файл

@ -523,12 +523,12 @@ public abstract class GeckoApp
outState.putString(SAVED_STATE_PRIVATE_SESSION, mPrivateBrowsingSession);
}
void handleClearHistory() {
void handleClearHistory(final boolean clearSearchHistory) {
final BrowserDB db = getProfile().getDB();
ThreadUtils.postToBackgroundThread(new Runnable() {
@Override
public void run() {
db.clearHistory(getContentResolver());
db.clearHistory(getContentResolver(), clearSearchHistory);
}
});
}
@ -626,7 +626,7 @@ public abstract class GeckoApp
mPrivateBrowsingSession = message.optString("session", null);
} else if ("Sanitize:ClearHistory".equals(event)) {
handleClearHistory();
handleClearHistory(message.optBoolean("clearSearchHistory", false));
callback.sendSuccess(true);
} else if ("Session:StatePurged".equals(event)) {

Просмотреть файл

@ -101,7 +101,7 @@ public interface BrowserDB {
public abstract void removeHistoryEntry(ContentResolver cr, String url);
public abstract void clearHistory(ContentResolver cr);
public abstract void clearHistory(ContentResolver cr, boolean clearSearchHistory);
public abstract String getUrlForKeyword(ContentResolver cr, String keyword);

Просмотреть файл

@ -720,9 +720,12 @@ public class LocalBrowserDB implements BrowserDB {
}
@Override
public void clearHistory(ContentResolver cr) {
cr.delete(mHistoryUriWithProfile, null, null);
cr.delete(mSearchHistoryUri, null, null);
public void clearHistory(ContentResolver cr, boolean clearSearchHistory) {
if (clearSearchHistory) {
cr.delete(mSearchHistoryUri, null, null);
} else {
cr.delete(mHistoryUriWithProfile, null, null);
}
}
@Override

Просмотреть файл

@ -217,7 +217,7 @@ public class StubBrowserDB implements BrowserDB {
public void removeHistoryEntry(ContentResolver cr, String url) {
}
public void clearHistory(ContentResolver cr) {
public void clearHistory(ContentResolver cr, boolean clearSearchHistory) {
}
@RobocopTarget

Просмотреть файл

@ -255,7 +255,8 @@ size. -->
<!ENTITY pref_import_android "Import from Android">
<!ENTITY pref_import_android_summary "Import bookmarks and history from the native browser">
<!ENTITY pref_private_data_history2 "Browsing history">
<!ENTITY pref_private_data_formdata "Form &amp; search history">
<!ENTITY pref_private_data_searchHistory "Search history">
<!ENTITY pref_private_data_formdata2 "Form history">
<!ENTITY pref_private_data_cookies2 "Cookies &amp; active logins">
<!ENTITY pref_private_data_passwords "Saved passwords">
<!ENTITY pref_private_data_cache "Cache">

Просмотреть файл

@ -73,8 +73,9 @@
</string-array>
<string-array name="pref_private_data_entries">
<item>@string/pref_private_data_history2</item>
<item>@string/pref_private_data_searchHistory</item>
<item>@string/pref_private_data_downloadFiles2</item>
<item>@string/pref_private_data_formdata</item>
<item>@string/pref_private_data_formdata2</item>
<item>@string/pref_private_data_cookies2</item>
<item>@string/pref_private_data_passwords</item>
<item>@string/pref_private_data_cache</item>
@ -90,9 +91,11 @@
<item>true</item>
<item>true</item>
<item>true</item>
<item>true</item>
</string-array>
<string-array name="pref_private_data_values">
<item>private.data.history</item>
<item>private.data.searchHistory</item>
<item>private.data.downloadFiles</item>
<item>private.data.formdata</item>
<item>private.data.cookies_sessions</item>
@ -103,6 +106,7 @@
</string-array>
<string-array name="pref_private_data_keys">
<item>private.data.history</item>
<item>private.data.searchHistory</item>
<item>private.data.downloadFiles</item>
<item>private.data.formdata</item>
<item>private.data.cookies_sessions</item>
@ -120,6 +124,7 @@
<item>false</item>
<item>false</item>
<item>false</item>
<item>false</item>
</string-array>
<string-array name="pref_restore_entries">
<item>@string/pref_restore_always</item>

Просмотреть файл

@ -823,17 +823,6 @@
<item name="android:paddingTop">0dp</item>
</style>
<!-- Make the share overlay activity appear like an overlay. -->
<style name="ShareOverlayActivity" parent="Gecko">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:backgroundDimEnabled">true</item>
<!-- We display the overlay on top of other Activities so show their status bar. -->
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
<style name="TextAppearance.FirstrunLight"/>
<style name="TextAppearance.FirstrunRegular"/>

Просмотреть файл

@ -106,4 +106,15 @@
<style name="GeckoStartPane" parent="GeckoBase"/>
<!-- Make the share overlay activity appear like an overlay. -->
<style name="ShareOverlayActivity">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:backgroundDimEnabled">true</item>
<!-- We display the overlay on top of other Activities so show their status bar. -->
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
</resources>

Просмотреть файл

@ -224,7 +224,8 @@
<string name="pref_sync_summary">&pref_sync_summary;</string>
<string name="pref_search_suggestions">&pref_search_suggestions;</string>
<string name="pref_private_data_history2">&pref_private_data_history2;</string>
<string name="pref_private_data_formdata">&pref_private_data_formdata;</string>
<string name="pref_private_data_searchHistory">&pref_private_data_searchHistory;</string>
<string name="pref_private_data_formdata2">&pref_private_data_formdata2;</string>
<string name="pref_private_data_cookies2">&pref_private_data_cookies2;</string>
<string name="pref_private_data_passwords">&pref_private_data_passwords;</string>
<string name="pref_private_data_cache">&pref_private_data_cache;</string>

Просмотреть файл

@ -67,7 +67,7 @@ public class testSettingsMenuItems extends PixelTest {
{ StringHelper.REMEMBER_PASSWORDS_LABEL },
MANAGE_LOGINS_ARR,
{ StringHelper.MASTER_PASSWORD_LABEL },
{ StringHelper.CLEAR_PRIVATE_DATA_LABEL, "", "Browsing history", "Downloads", "Form & search history", "Cookies & active logins", "Saved passwords", "Cache", "Offline website data", "Site settings", "Clear data" },
{ StringHelper.CLEAR_PRIVATE_DATA_LABEL, "", "Browsing history", "Search history", "Downloads", "Form history", "Cookies & active logins", "Saved passwords", "Cache", "Offline website data", "Site settings", "Clear data" },
};
// Mozilla/vendor menu items.

Просмотреть файл

@ -159,6 +159,19 @@ Sanitizer.prototype = {
}
},
searchHistory: {
clear: function ()
{
return Messaging.sendRequestForResult({ type: "Sanitize:ClearHistory", clearSearchHistory: true })
.catch(e => Cu.reportError("Java-side search history clearing failed: " + e))
},
get canClear()
{
return true;
}
},
formdata: {
clear: function ()
{

Просмотреть файл

@ -459,7 +459,8 @@ body {
/* desktop-only controls */
.close-button,
.list-button {
.list-button,
.footer {
display: none;
}

Просмотреть файл

@ -68,8 +68,11 @@ let AboutReader = function(mm, win, articlePromise) {
try {
if (Services.prefs.getBoolPref("browser.readinglist.enabled")) {
this._setupButton("toggle-button", this._onReaderToggle.bind(this), "aboutReader.toolbar.addToReadingList");
this._setupButton("toggle-button", this._onReaderToggle.bind(this, "button"), "aboutReader.toolbar.addToReadingList");
this._setupButton("list-button", this._onList.bind(this), "aboutReader.toolbar.openReadingList");
this._setupButton("remove-button", this._onReaderToggle.bind(this, "footer"),
"aboutReader.footer.deleteThisArticle", "aboutReader.footer.deleteThisArticle");
this._doc.getElementById("reader-footer").setAttribute('readinglist-enabled', "true");
}
} catch (e) {
// Pref doesn't exist.
@ -247,6 +250,7 @@ AboutReader.prototype = {
button.classList.remove("on");
button.setAttribute("title", gStrings.GetStringFromName("aboutReader.toolbar.addToReadingList"));
}
this._updateFooter();
},
_requestReadingListStatus: function Reader_requestReadingListStatus() {
@ -277,16 +281,16 @@ AboutReader.prototype = {
this._win.location.href = this._getOriginalUrl();
},
_onReaderToggle: function Reader_onToggle() {
_onReaderToggle: function Reader_onToggle(aMethod) {
if (!this._article)
return;
if (this._isReadingListItem == 0) {
this._mm.sendAsyncMessage("Reader:AddToList", { article: this._article });
UITelemetry.addEvent("save.1", "button", null, "reader");
UITelemetry.addEvent("save.1", aMethod, null, "reader");
} else {
this._mm.sendAsyncMessage("Reader:RemoveFromList", { url: this._article.url });
UITelemetry.addEvent("unsave.1", "button", null, "reader");
UITelemetry.addEvent("unsave.1", aMethod, null, "reader");
}
},
@ -421,6 +425,16 @@ AboutReader.prototype = {
}, true);
},
_updateFooter: function RupdateFooter() {
let footer = this._doc.getElementById("reader-footer");
if (!this._article || this._isReadingListItem == 0 ||
footer.getAttribute("readinglist-enabled") != "true") {
footer.style.display = "none";
return;
}
footer.style.display = null;
},
_handleDeviceLight: function Reader_handleDeviceLight(newLux) {
// Desired size of the this._luxValues array.
let luxValuesSize = 10;
@ -560,6 +574,7 @@ AboutReader.prototype = {
if (!visible) {
this._mm.sendAsyncMessage("Reader:ToolbarHidden");
}
this._updateFooter();
},
_toggleToolbarVisibility: function Reader_toggleToolbarVisibility() {
@ -821,10 +836,12 @@ AboutReader.prototype = {
}
},
_setupButton: function(id, callback, titleEntity) {
_setupButton: function(id, callback, titleEntity, textEntity) {
this._setButtonTip(id, titleEntity);
let button = this._doc.getElementById(id);
if (textEntity)
button.textContent = gStrings.GetStringFromName(textEntity);
button.removeAttribute("hidden");
button.addEventListener("click", function(aEvent) {
if (!aEvent.isTrusted)

Просмотреть файл

@ -24,6 +24,10 @@
<div id="reader-message" class="message">
</div>
<div id="reader-footer" class="footer">
<button id="remove-button" class="button remove-button"/>
</div>
</div>
<ul id="reader-toolbar" class="toolbar">

Просмотреть файл

@ -11,6 +11,8 @@ const { WebConsoleActor } = require("devtools/server/actors/webconsole");
const makeDebugger = require("devtools/server/actors/utils/make-debugger");
const { ActorPool } = require("devtools/server/main");
const Services = require("Services");
const { dbg_assert } = require("devtools/toolkit/DevToolsUtils");
const { TabSources } = require("./utils/TabSources");
function ChildProcessActor(aConnection) {
this.conn = aConnection;
@ -50,6 +52,14 @@ ChildProcessActor.prototype = {
return this._consoleScope;
},
get sources() {
if (!this._sources) {
dbg_assert(this._threadActor, "threadActor should exist when creating sources.");
this._sources = new TabSources(this._threadActor);
}
return this._sources;
},
form: function() {
if (!this._consoleActor) {
this._consoleActor = new WebConsoleActor(this.conn, this);

Просмотреть файл

@ -2046,7 +2046,7 @@ ThreadActor.prototype = {
let actor = _actor;
if (actor.isPending) {
promises.push(sourceActor._setBreakpoint(actor));
promises.push(actor.originalLocation.originalSourceActor._setBreakpoint(actor));
} else {
promises.push(this.sources.getGeneratedLocation(actor.originalLocation)
.then((generatedLocation) => {
@ -2751,23 +2751,17 @@ SourceActor.prototype = {
location,
condition
).then((actor) => {
if (actor.isPending) {
return {
error: "noCodeAtLocation",
actor: actor.actorID
};
} else {
let response = {
actor: actor.actorID
};
let response = {
actor: actor.actorID,
isPending: actor.isPending
};
let actualLocation = actor.originalLocation;
if (!actualLocation.equals(location)) {
response.actualLocation = actualLocation.toJSON();
}
return response;
let actualLocation = actor.originalLocation;
if (!actualLocation.equals(location)) {
response.actualLocation = actualLocation.toJSON();
}
return response;
});
},
@ -2885,7 +2879,7 @@ SourceActor.prototype = {
}
++actualLine;
}
if (actualLine === lineToEntryPointsMap.length) {
if (actualLine >= lineToEntryPointsMap.length) {
// We went past the last line in the map, so breakpoint sliding
// failed. Keep the BreakpointActor in the BreakpointActorMap as a
// pending breakpoint, so we can try again whenever a new script is

Просмотреть файл

@ -14,9 +14,6 @@ const { Task } = Cu.import("resource://gre/modules/Task.jsm", {});
const { promiseInvoke } = devtools.require("devtools/async-utils");
const Services = devtools.require("Services");
// Always log packets when running tests. runxpcshelltests.py will throw
// the output away anyway, unless you give it the --verbose flag.
Services.prefs.setBoolPref("devtools.debugger.log", true);
// Enable remote debugging for the relevant tests.
Services.prefs.setBoolPref("devtools.debugger.remote-enabled", true);
@ -24,6 +21,98 @@ const DevToolsUtils = devtools.require("devtools/toolkit/DevToolsUtils.js");
const { DebuggerServer } = devtools.require("devtools/server/main");
const { DebuggerServer: WorkerDebuggerServer } = worker.require("devtools/server/main");
let loadSubScript = Cc[
'@mozilla.org/moz/jssubscript-loader;1'
].getService(Ci.mozIJSSubScriptLoader).loadSubScript;
function createTestGlobal(name) {
let sandbox = Cu.Sandbox(
Cc["@mozilla.org/systemprincipal;1"].createInstance(Ci.nsIPrincipal)
);
sandbox.__name = name;
return sandbox;
}
function connect(client) {
dump("Connecting client.\n");
return new Promise(function (resolve) {
client.connect(function () {
resolve();
});
});
}
function close(client) {
dump("Closing client.\n");
return new Promise(function (resolve) {
client.close(function () {
resolve();
});
});
}
function listTabs(client) {
dump("Listing tabs.\n");
return rdpRequest(client, client.listTabs);
}
function findTab(tabs, title) {
dump("Finding tab with title '" + title + "'.\n");
for (let tab of tabs) {
if (tab.title === title) {
return tab;
}
}
return null;
}
function attachTab(client, tab) {
dump("Attaching to tab with title '" + tab.title + "'.\n");
return rdpRequest(client, client.attachTab, tab.actor);
}
function waitForNewSource(client, url) {
dump("Waiting for new source with url '" + url + "'.\n");
return waitForEvent(client, "newSource", function (packet) {
return packet.source.url === url;
});
}
function attachThread(tabClient, options = {}) {
dump("Attaching to thread.\n");
return rdpRequest(tabClient, tabClient.attachThread, options);
}
function resume(threadClient) {
dump("Resuming thread.\n");
return rdpRequest(threadClient, threadClient.resume);
}
function getSources(threadClient) {
dump("Getting sources.\n");
return rdpRequest(threadClient, threadClient.getSources);
}
function findSource(sources, url) {
dump("Finding source with url '" + url + "'.\n");
for (let source of sources) {
if (source.url === url) {
return source;
}
}
return null;
}
function waitForPause(threadClient) {
dump("Waiting for pause.\n");
return waitForEvent(threadClient, "paused");
}
function setBreakpoint(sourceClient, location) {
dump("Setting breakpoint.\n");
return rdpRequest(sourceClient, sourceClient.setBreakpoint, location);
}
function dumpn(msg) {
dump("DBG-TEST: " + msg + "\n");
}
@ -443,23 +532,27 @@ const assert = do_check_true;
*
* @param DebuggerClient client
* @param String event
* @param Function predicate
* @returns Promise
*/
function waitForEvent(client, event) {
dumpn("Waiting for event: " + event);
return new Promise((resolve, reject) => {
client.addOneTimeListener(event, (_, packet) => resolve(packet));
});
}
function waitForEvent(client, type, predicate) {
return new Promise(function (resolve) {
function listener(type, packet) {
if (!predicate(packet)) {
return;
}
client.removeListener(listener);
resolve(packet);
}
/**
* Create a promise that is resolved on the next pause.
*
* @param DebuggerClient client
* @returns Promise
*/
function waitForPause(client) {
return waitForEvent(client, "paused");
if (predicate) {
client.addListener(type, listener);
} else {
client.addOneTimeListener(type, function (type, packet) {
resolve(packet);
});
}
});
}
/**
@ -508,29 +601,6 @@ function rdpRequest(client, method, ...args) {
});
}
/**
* Set a breakpoint over the Remote Debugging Protocol.
*
* @param SourceClient sourceClient
* @param {url, line[, column[, condition]]} breakpointOptions
* @returns Promise
*/
function setBreakpoint(sourceClient, breakpointOptions) {
dumpn("Setting a breakpoint: " + JSON.stringify(breakpointOptions, null, 2));
return rdpRequest(sourceClient, sourceClient.setBreakpoint, breakpointOptions);
}
/**
* Resume JS execution for the specified thread.
*
* @param ThreadClient threadClient
* @returns Promise
*/
function resume(threadClient) {
dumpn("Resuming.");
return rdpRequest(threadClient, threadClient.resume);
}
/**
* Interrupt JS execution for the specified thread.
*
@ -555,17 +625,6 @@ function resumeAndWaitForPause(client, threadClient) {
return resume(threadClient).then(() => paused);
}
/**
* Get the list of sources for the specified thread.
*
* @param ThreadClient threadClient
* @returns Promise
*/
function getSources(threadClient) {
dumpn("Getting sources.");
return rdpRequest(threadClient, threadClient.getSources);
}
/**
* Resume JS execution for a single step and wait for the pause after the step
* has been taken.

Просмотреть файл

@ -0,0 +1,9 @@
"use strict";
function f() {}
(function () {
var a = 1;
var b = 2;
var c = 3;
})();

Просмотреть файл

@ -0,0 +1,7 @@
"use strict";
function f() {
for (var i = 0; i < 1; ++i) {
;
}
}

Просмотреть файл

@ -0,0 +1,5 @@
"use strict";
function f() {
var a = 1; var b = 2; var c = 3;
}

Просмотреть файл

@ -0,0 +1,11 @@
"use strict";
function f() {
function g() {
var a = 1;
var b = 2;
}
g();
}

Просмотреть файл

@ -0,0 +1,9 @@
"use strict";
function f() {}
(function () {
var a = 1;
var c = 3;
})();

Просмотреть файл

@ -0,0 +1,7 @@
"use strict";
function f() {
var a = 1;
var c = 3;
}

Просмотреть файл

@ -0,0 +1,7 @@
"use strict";
function f() {
var a = 1;
var b = 2;
var c = 3;
}

Просмотреть файл

@ -35,9 +35,9 @@ const testBlackBox = Task.async(function* () {
});
yield resume(gThreadClient);
const sourcesResponse = yield getSources(gThreadClient);
const { sources } = yield getSources(gThreadClient);
let sourceClient = gThreadClient.source(
sourcesResponse.sources.filter(s => s.url == BLACK_BOXED_URL)[0]);
sources.filter(s => s.url == BLACK_BOXED_URL)[0]);
do_check_true(!sourceClient.isBlackBoxed,
"By default the source is not black boxed.");

Просмотреть файл

@ -0,0 +1,57 @@
"use strict";
let SOURCE_URL = getFileUrl("setBreakpoint-on-line-in-gcd-script.js");
function run_test() {
return Task.spawn(function* () {
do_test_pending();
let global = createTestGlobal("test");
loadSubScript(SOURCE_URL, global);
Cu.forceGC(); Cu.forceGC(); Cu.forceGC();
DebuggerServer.registerModule("xpcshell-test/testactors");
DebuggerServer.init(() => true);
DebuggerServer.addTestGlobal(global);
let client = new DebuggerClient(DebuggerServer.connectPipe());
yield connect(client);
let { tabs } = yield listTabs(client);
let tab = findTab(tabs, "test");
let [, tabClient] = yield attachTab(client, tab);
let [, threadClient] = yield attachThread(tabClient);
yield resume(threadClient);
let { sources } = yield getSources(threadClient);
let source = findSource(sources, SOURCE_URL);
let sourceClient = threadClient.source(source);
let location = { line: 7 };
let [packet, breakpointClient] = yield setBreakpoint(sourceClient, location);
do_check_true(packet.isPending);
do_check_false("actualLocation" in packet);
packet = yield executeOnNextTickAndWaitForPause(function () {
reload(tabClient).then(function () {
loadSubScript(SOURCE_URL, global);
});
}, client);
do_check_eq(packet.type, "paused");
let why = packet.why;
do_check_eq(why.type, "breakpoint");
do_check_eq(why.actors.length, 1);
do_check_eq(why.actors[0], breakpointClient.actor);
let frame = packet.frame;
let where = frame.where;
do_check_eq(where.source.actor, source.actor);
do_check_eq(where.line, location.line);
let variables = frame.environment.bindings.variables;
do_check_eq(variables.a.value, 1);
do_check_eq(variables.b.value.type, "undefined");
do_check_eq(variables.c.value.type, "undefined");
yield resume(threadClient);
yield close(client);
do_test_finished();
});
}

Просмотреть файл

@ -0,0 +1,70 @@
"use strict";
let SOURCE_URL = getFileUrl("setBreakpoint-on-line-with-multiple-offsets.js");
function run_test() {
return Task.spawn(function* () {
do_test_pending();
DebuggerServer.registerModule("xpcshell-test/testactors");
DebuggerServer.init(() => true);
let global = createTestGlobal("test");
DebuggerServer.addTestGlobal(global);
let client = new DebuggerClient(DebuggerServer.connectPipe());
yield connect(client);
let { tabs } = yield listTabs(client);
let tab = findTab(tabs, "test");
let [, tabClient] = yield attachTab(client, tab);
let [, threadClient] = yield attachThread(tabClient);
yield resume(threadClient);
let promise = waitForNewSource(client, SOURCE_URL);
loadSubScript(SOURCE_URL, global);
let { source } = yield promise;
let sourceClient = threadClient.source(source);
let location = { line: 4 };
let [packet, breakpointClient] = yield setBreakpoint(sourceClient, location);
do_check_false(packet.isPending);
do_check_false("actualLocation" in packet);
packet = yield executeOnNextTickAndWaitForPause(function () {
Cu.evalInSandbox("f()", global);
}, client);
do_check_eq(packet.type, "paused");
let why = packet.why;
do_check_eq(why.type, "breakpoint");
do_check_eq(why.actors.length, 1);
do_check_eq(why.actors[0], breakpointClient.actor);
let frame = packet.frame;
let where = frame.where;
do_check_eq(where.source.actor, source.actor);
do_check_eq(where.line, location.line);
let variables = frame.environment.bindings.variables;
do_check_eq(variables.i.value.type, "undefined");
packet = yield executeOnNextTickAndWaitForPause(function () {
resume(threadClient);
}, client);
do_check_eq(packet.type, "paused");
why = packet.why;
do_check_eq(why.type, "breakpoint");
do_check_eq(why.actors.length, 1);
do_check_eq(why.actors[0], breakpointClient.actor);
frame = packet.frame;
where = frame.where;
do_check_eq(where.source.actor, source.actor);
do_check_eq(where.line, location.line);
variables = frame.environment.bindings.variables;
do_check_eq(variables.i.value, 0);
yield resume(threadClient);
yield close(client);
do_test_finished();
});
}

Просмотреть файл

@ -0,0 +1,57 @@
"use strict";
let SOURCE_URL = getFileUrl("setBreakpoint-on-line-with-multiple-statements.js");
function run_test() {
return Task.spawn(function* () {
do_test_pending();
DebuggerServer.registerModule("xpcshell-test/testactors");
DebuggerServer.init(() => true);
let global = createTestGlobal("test");
DebuggerServer.addTestGlobal(global);
let client = new DebuggerClient(DebuggerServer.connectPipe());
yield connect(client);
let { tabs } = yield listTabs(client);
let tab = findTab(tabs, "test");
let [, tabClient] = yield attachTab(client, tab);
let [, threadClient] = yield attachThread(tabClient);
yield resume(threadClient);
let promise = waitForNewSource(client, SOURCE_URL);
loadSubScript(SOURCE_URL, global);
let { source } = yield promise;
let sourceClient = threadClient.source(source);
let location = { line: 4 };
let [packet, breakpointClient] = yield setBreakpoint(sourceClient, location);
do_check_false(packet.isPending);
do_check_false("actualLocation" in packet);
packet = yield executeOnNextTickAndWaitForPause(function () {
Cu.evalInSandbox("f()", global);
}, client);
do_check_eq(packet.type, "paused");
let why = packet.why;
do_check_eq(why.type, "breakpoint");
do_check_eq(why.actors.length, 1);
do_check_eq(why.actors[0], breakpointClient.actor);
let frame = packet.frame;
let where = frame.where;
do_check_eq(where.source.actor, source.actor);
do_check_eq(where.line, location.line);
let variables = frame.environment.bindings.variables;
do_check_eq(variables.a.value.type, "undefined");
do_check_eq(variables.b.value.type, "undefined");
do_check_eq(variables.c.value.type, "undefined");
yield resume(threadClient);
yield close(client);
do_test_finished();
});
}

Просмотреть файл

@ -0,0 +1,54 @@
"use strict";
let SOURCE_URL = getFileUrl("setBreakpoint-on-line-with-no-offests-in-gcd-script.js");
function run_test() {
return Task.spawn(function* () {
do_test_pending();
let global = testGlobal("test");
loadSubScript(SOURCE_URL, global);
Cu.forceGC();
DebuggerServer.registerModule("xpcshell-test/testactors");
DebuggerServer.init(() => true);
DebuggerServer.addTestGlobal(global);
let client = new DebuggerClient(DebuggerServer.connectPipe());
yield connect(client);
let tab = yield findTab(client, "test");
let [, tabClient] = yield attachTab(client, tab);
let [, threadClient] = yield attachThread(tabClient);
yield resume(threadClient);
let source = yield findSource(threadClient, SOURCE_URL);
let sourceClient = threadClient.source(source);
let location = { line: 7 };
let [packet, breakpointClient] = yield setBreakpoint(sourceClient, location);
do_check_true(packet.isPending);
executeSoon(function () {
reload(tabClient).then(function () {
loadSubScript(SOURCE_URL, global);
});
});
packet = yield waitForPaused(threadClient);
do_check_eq(packet.type, "paused");
let why = packet.why;
do_check_eq(why.type, "breakpoint");
do_check_eq(why.actors.length, 1);
do_check_eq(why.actors[0], breakpointClient.actor);
let frame = packet.frame;
let where = frame.where;
do_check_eq(where.source.actor, source.actor);
do_check_eq(where.line, location.line + 1);
let variables = frame.environment.bindings.variables;
do_check_eq(variables.a.value, 1);
do_check_eq(variables.c.value.type, "undefined");
yield resume(threadClient);
yield close(client);
do_test_finished();
});
}

Просмотреть файл

@ -0,0 +1,53 @@
"use strict";
let SOURCE_URL = getFileUrl("setBreakpoint-on-line-with-no-offsets-at-end-of-script.js");
function run_test() {
return Task.spawn(function* () {
do_test_pending();
DebuggerServer.registerModule("xpcshell-test/testactors");
DebuggerServer.init(() => true);
let global = createTestGlobal("test");
DebuggerServer.addTestGlobal(global);
let client = new DebuggerClient(DebuggerServer.connectPipe());
yield connect(client);
let { tabs } = yield listTabs(client);
let tab = findTab(tabs, "test");
let [, tabClient] = yield attachTab(client, tab);
let [, threadClient] = yield attachThread(tabClient);
yield resume(threadClient);
let promise = waitForNewSource(client, SOURCE_URL);
loadSubScript(SOURCE_URL, global);
let { source } = yield promise;
let sourceClient = threadClient.source(source);
let location = { line: 7 };
let [packet, breakpointClient] = yield setBreakpoint(sourceClient, location);
do_check_false(packet.isPending); // NOTE: Change this when bug 1148356 lands
do_check_true("actualLocation" in packet);
let actualLocation = packet.actualLocation;
do_check_eq(actualLocation.line, 10);
packet = yield executeOnNextTickAndWaitForPause(function () {
Cu.evalInSandbox("f()", global);
}, client);
do_check_eq(packet.type, "paused");
let why = packet.why;
do_check_eq(why.type, "breakpoint");
do_check_eq(why.actors.length, 1);
do_check_eq(why.actors[0], breakpointClient.actor);
let where = packet.frame.where;
do_check_eq(where.source.actor, source.actor);
do_check_eq(where.line, actualLocation.line);
yield resume(threadClient);
yield close(client);
do_test_finished();
});
}

Просмотреть файл

@ -0,0 +1,58 @@
"use strict";
let SOURCE_URL = getFileUrl("setBreakpoint-on-line-with-no-offsets-in-gcd-script.js");
function run_test() {
return Task.spawn(function* () {
do_test_pending();
let global = createTestGlobal("test");
loadSubScript(SOURCE_URL, global);
Cu.forceGC(); Cu.forceGC(); Cu.forceGC();
DebuggerServer.registerModule("xpcshell-test/testactors");
DebuggerServer.init(() => true);
DebuggerServer.addTestGlobal(global);
let client = new DebuggerClient(DebuggerServer.connectPipe());
yield connect(client);
let { tabs } = yield listTabs(client);
let tab = findTab(tabs, "test");
let [, tabClient] = yield attachTab(client, tab);
let [, threadClient] = yield attachThread(tabClient);
yield resume(threadClient);
let { sources } = yield getSources(threadClient);
let source = findSource(sources, SOURCE_URL);
let sourceClient = threadClient.source(source);
let location = { line: 7 };
let [packet, breakpointClient] = yield setBreakpoint(sourceClient, location);
do_check_true(packet.isPending);
do_check_false("actualLocation" in packet);
packet = yield executeOnNextTickAndWaitForPause(function () {
reload(tabClient).then(function () {
loadSubScript(SOURCE_URL, global);
});
}, client);
do_check_eq(packet.type, "paused");
let why = packet.why;
do_check_eq(why.type, "breakpoint");
do_check_eq(why.actors.length, 1);
do_check_eq(why.actors[0], breakpointClient.actor);
let frame = packet.frame;
let where = frame.where;
do_check_eq(where.source.actor, source.actor);
do_check_eq(where.line, 8);
let variables = frame.environment.bindings.variables;
do_check_eq(variables.a.value, 1);
do_check_eq(variables.c.value.type, "undefined");
yield resume(threadClient);
yield close(client);
do_test_finished();
});
}

Просмотреть файл

@ -0,0 +1,57 @@
"use strict";
let SOURCE_URL = getFileUrl("setBreakpoint-on-line-with-no-offsets.js");
function run_test() {
return Task.spawn(function* () {
do_test_pending();
DebuggerServer.registerModule("xpcshell-test/testactors");
DebuggerServer.init(() => true);
let global = createTestGlobal("test");
DebuggerServer.addTestGlobal(global);
let client = new DebuggerClient(DebuggerServer.connectPipe());
yield connect(client);
let { tabs } = yield listTabs(client);
let tab = findTab(tabs, "test");
let [, tabClient] = yield attachTab(client, tab);
let [, threadClient] = yield attachThread(tabClient);
yield resume(threadClient);
let promise = waitForNewSource(client, SOURCE_URL);
loadSubScript(SOURCE_URL, global);
let { source } = yield promise;
let sourceClient = threadClient.source(source);
let location = { line: 5 };
let [packet, breakpointClient] = yield setBreakpoint(sourceClient, location);
do_check_false(packet.isPending);
do_check_true("actualLocation" in packet);
let actualLocation = packet.actualLocation;
do_check_eq(actualLocation.line, 6);
packet = yield executeOnNextTickAndWaitForPause(function () {
Cu.evalInSandbox("f()", global);
}, client);
do_check_eq(packet.type, "paused");
let why = packet.why;
do_check_eq(why.type, "breakpoint");
do_check_eq(why.actors.length, 1);
do_check_eq(why.actors[0], breakpointClient.actor);
let frame = packet.frame;
let where = frame.where;
do_check_eq(where.source.actor, source.actor);
do_check_eq(where.line, actualLocation.line);
let variables = frame.environment.bindings.variables;
do_check_eq(variables.a.value, 1);
do_check_eq(variables.c.value.type, "undefined");
yield resume(threadClient);
yield close(client);
do_test_finished();
});
}

Просмотреть файл

@ -0,0 +1,57 @@
"use strict";
let SOURCE_URL = getFileUrl("setBreakpoint-on-line.js");
function run_test() {
return Task.spawn(function* () {
do_test_pending();
DebuggerServer.registerModule("xpcshell-test/testactors");
DebuggerServer.init(() => true);
let global = createTestGlobal("test");
DebuggerServer.addTestGlobal(global);
let client = new DebuggerClient(DebuggerServer.connectPipe());
yield connect(client);
let { tabs } = yield listTabs(client);
let tab = findTab(tabs, "test");
let [, tabClient] = yield attachTab(client, tab);
let [, threadClient] = yield attachThread(tabClient);
yield resume(threadClient);
let promise = waitForNewSource(client, SOURCE_URL);
loadSubScript(SOURCE_URL, global);
let { source } = yield promise;
let sourceClient = threadClient.source(source);
let location = { line: 5 };
let [packet, breakpointClient] = yield setBreakpoint(sourceClient, location);
do_check_false(packet.isPending);
do_check_false("actualLocation" in packet);
packet = yield executeOnNextTickAndWaitForPause(function () {
Cu.evalInSandbox("f()", global);
}, client);
do_check_eq(packet.type, "paused");
let why = packet.why;
do_check_eq(why.type, "breakpoint");
do_check_eq(why.actors.length, 1);
do_check_eq(why.actors[0], breakpointClient.actor);
let frame = packet.frame;
let where = frame.where;
do_check_eq(where.source.actor, source.actor);
do_check_eq(where.line, location.line);
let variables = frame.environment.bindings.variables;
do_check_eq(variables.a.value, 1);
do_check_eq(variables.b.value.type, "undefined");
do_check_eq(variables.c.value.type, "undefined");
yield resume(threadClient);
yield close(client);
do_test_finished();
});
}

Просмотреть файл

@ -50,9 +50,9 @@ const testTraces = Task.async(function* () {
evalSetup();
// Blackbox source
const sourcesResponse = yield getSources(gThreadClient);
const { sources } = yield getSources(gThreadClient);
let sourceClient = gThreadClient.source(
sourcesResponse.sources.filter(s => s.url == BLACK_BOXED_URL)[0]);
sources.filter(s => s.url == BLACK_BOXED_URL)[0]);
do_check_true(!sourceClient.isBlackBoxed,
"By default the source is not black boxed.");
yield blackBox(sourceClient);

Просмотреть файл

@ -17,6 +17,13 @@ support-files =
testactors.js
tracerlocations.js
hello-actor.js
setBreakpoint-on-line.js
setBreakpoint-on-line-in-gcd-script.js
setBreakpoint-on-line-with-multiple-offsets.js
setBreakpoint-on-line-with-multiple-statements.js
setBreakpoint-on-line-with-no-offsets.js
setBreakpoint-on-line-with-no-offsets-at-end-of-script.js
setBreakpoint-on-line-with-no-offsets-in-gcd-script.js
[test_ScriptStore.js]
[test_actor-registry-actor.js]
@ -237,3 +244,10 @@ support-files = xpcshell_debugging_script.js
run-sequentially = measure memory, has to be run solo
skip-if = os != 'linux' || debug || asan
reason = bug 1014071
[test_setBreakpoint-on-line.js]
[test_setBreakpoint-on-line-in-gcd-script.js]
[test_setBreakpoint-on-line-with-multiple-offsets.js]
[test_setBreakpoint-on-line-with-multiple-statements.js]
[test_setBreakpoint-on-line-with-no-offsets.js]
[test_setBreakpoint-on-line-with-no-offsets-at-end-of-script.js]
[test_setBreakpoint-on-line-with-no-offsets-in-gcd-script.js]

Просмотреть файл

@ -9,9 +9,6 @@ toolkit.jar:
+ skin/classic/mozapps/extensions/extensions.css (extensions/extensions.css)
+ skin/classic/mozapps/extensions/category-search.png (extensions/category-search.png)
+ skin/classic/mozapps/extensions/category-discover.png (extensions/category-discover.png)
+ skin/classic/mozapps/extensions/category-languages.png (extensions/localeGeneric.png)
+ skin/classic/mozapps/extensions/category-extensions.png (extensions/extensionGeneric.png)
+ skin/classic/mozapps/extensions/category-themes.png (extensions/themeGeneric.png)
+ skin/classic/mozapps/extensions/category-plugins.png (extensions/category-plugins.png)
+ skin/classic/mozapps/extensions/category-service.png (extensions/category-service.png)
+ skin/classic/mozapps/extensions/category-dictionaries.png (extensions/category-dictionaries.png)
@ -28,17 +25,15 @@ toolkit.jar:
+ skin/classic/mozapps/extensions/localeGeneric.png (extensions/localeGeneric.png)
+ skin/classic/mozapps/extensions/newaddon.css (extensions/newaddon.css)
+ skin/classic/mozapps/extensions/selectAddons.css (extensions/selectAddons.css)
+ skin/classic/mozapps/passwordmgr/key.png (passwordmgr/key-16.png)
+ skin/classic/mozapps/passwordmgr/key-16.png (passwordmgr/key-16.png)
+ skin/classic/mozapps/passwordmgr/key-64.png (passwordmgr/key-64.png)
+ skin/classic/mozapps/plugins/notifyPluginCrashed.png (plugins/pluginGeneric-16.png)
+ skin/classic/mozapps/plugins/notifyPluginGeneric.png (plugins/pluginGeneric-16.png)
+ skin/classic/mozapps/plugins/pluginGeneric.png (plugins/pluginGeneric.png)
+ skin/classic/mozapps/plugins/pluginBlocked.png (plugins/pluginBlocked.png)
+ skin/classic/mozapps/plugins/pluginGeneric-16.png (plugins/pluginGeneric-16.png)
+ skin/classic/mozapps/profile/profileicon.png (profile/profileicon.png)
+ skin/classic/mozapps/viewsource/viewsource.css (viewsource/viewsource.css)
+ skin/classic/mozapps/xpinstall/xpinstallItemGeneric.png (extensions/extensionGeneric.png)
#ifdef MOZ_PLACES
+ skin/classic/mozapps/places/defaultFavicon.png (places/defaultFavicon.png)
#endif
% override chrome://mozapps/skin/passwordmgr/key.png chrome://mozapps/skin/passwordmgr/key-16.png

Просмотреть файл

@ -89,7 +89,6 @@ toolkit.jar:
* skin/classic/global/console/console.css (console/console.css)
skin/classic/global/dirListing/dirListing.css (dirListing/dirListing.css)
skin/classic/global/dirListing/folder.png (dirListing/folder.png)
skin/classic/global/dirListing/local.png (dirListing/folder.png)
skin/classic/global/dirListing/remote.png (dirListing/remote.png)
skin/classic/global/dirListing/up.png (dirListing/up.png)
skin/classic/global/icons/autocomplete-dropmarker.png (icons/autocomplete-dropmarker.png)
@ -215,3 +214,5 @@ toolkit.jar:
skin/classic/global/tree/columnpicker.gif (tree/columnpicker.gif)
skin/classic/global/tree/folder.png (tree/folder.png)
skin/classic/global/tree/folder@2x.png (tree/folder@2x.png)
% override chrome://global/skin/dirListing/local.png chrome://global/skin/dirListing/folder.png

Просмотреть файл

@ -10,10 +10,7 @@ toolkit.jar:
skin/classic/mozapps/downloads/unknownContentType.css (downloads/unknownContentType.css)
skin/classic/mozapps/extensions/category-search.png (extensions/category-search.png)
skin/classic/mozapps/extensions/category-discover.png (extensions/category-discover.png)
skin/classic/mozapps/extensions/category-languages.png (extensions/localeGeneric.png)
skin/classic/mozapps/extensions/category-searchengines.png (extensions/category-searchengines.png)
skin/classic/mozapps/extensions/category-extensions.png (extensions/extensionGeneric.png)
skin/classic/mozapps/extensions/category-themes.png (extensions/themeGeneric.png)
skin/classic/mozapps/extensions/category-plugins.png (extensions/category-plugins.png)
skin/classic/mozapps/extensions/category-service.png (extensions/category-service.png)
skin/classic/mozapps/extensions/category-dictionaries.png (extensions/category-dictionaries.png)
@ -67,7 +64,6 @@ toolkit.jar:
skin/classic/mozapps/plugins/contentPluginDownload.png (../../shared/plugins/contentPluginDownload.png)
skin/classic/mozapps/plugins/contentPluginMissing.png (../../shared/plugins/contentPluginMissing.png)
skin/classic/mozapps/plugins/contentPluginStripe.png (../../shared/plugins/contentPluginStripe.png)
skin/classic/mozapps/plugins/notifyPluginCrashed.png (plugins/notifyPluginGeneric.png)
skin/classic/mozapps/plugins/notifyPluginGeneric.png (plugins/notifyPluginGeneric.png)
skin/classic/mozapps/plugins/pluginGeneric.png (plugins/pluginGeneric.png)
skin/classic/mozapps/plugins/pluginBlocked.png (plugins/pluginBlocked.png)
@ -80,10 +76,15 @@ toolkit.jar:
skin/classic/mozapps/update/buttons.png (update/buttons.png)
* skin/classic/mozapps/update/updates.css (update/updates.css)
skin/classic/mozapps/viewsource/viewsource.css (viewsource/viewsource.css)
skin/classic/mozapps/xpinstall/xpinstallItemGeneric.png (extensions/extensionGeneric.png)
skin/classic/mozapps/xpinstall/xpinstallConfirm.css (extensions/xpinstallConfirm.css)
#ifdef MOZ_PLACES
skin/classic/mozapps/places/defaultFavicon.png (places/defaultFavicon.png)
skin/classic/mozapps/places/defaultFavicon@2x.png (places/defaultFavicon@2x.png)
#endif
skin/classic/mozapps/handling/handling.css (handling/handling.css)
% override chrome://mozapps/skin/extensions/category-extensions.png chrome://mozapps/skin/extensions/extensionGeneric.png
% override chrome://mozapps/skin/extensions/category-languages.png chrome://mozapps/skin/extensions/localeGeneric.png
% override chrome://mozapps/skin/extensions/category-themes.png chrome://mozapps/skin/extensions/themeGeneric.png
% override chrome://mozapps/skin/plugins/notifyPluginCrashed.png chrome://mozapps/skin/plugins/notifyPluginGeneric.png
% override chrome://mozapps/skin/xpinstall/xpinstallItemGeneric.png chrome://mozapps/skin/extensions/extensionGeneric.png

Просмотреть файл

@ -5,8 +5,7 @@
body {
padding: 64px 0;
max-width: 660px;
margin-left: auto;
margin-right: auto;
margin: 0 auto;
}
body.loaded {
@ -31,11 +30,13 @@ body.loaded {
background-color: #f0ece7;
}
.sans-serif {
.sans-serif,
.sans-serif .remove-button {
font-family: "Fira Sans", Helvetica, Arial, sans-serif;
}
.serif {
.serif,
.serif .remove-button {
font-family: "Charis SIL", Georgia, "Times New Roman", serif;
}
@ -246,30 +247,33 @@ body.loaded {
font-family: "Fira Sans", Helvetica, Arial, sans-serif;
position: fixed;
height: 100%;
top: 0px;
left: 0px;
top: 0;
left: 0;
margin: 0;
padding: 0;
list-style: none;
background-color: #FBFBFB;
background-color: #fbfbfb;
-moz-user-select: none;
border-right: 1px solid #B5B5B5;
border-right: 1px solid #b5b5b5;
}
.button {
color: white;
display: block;
background-position: center;
background-size: 24px 24px;
background-repeat: no-repeat;
background-color: transparent;
height: 40px;
padding: 0;
}
.toolbar .button {
color: white;
width: 40px;
background-position: center;
background-color: #fbfbfb;
border-top: 0;
border-left: 0;
border-right: 0;
border-bottom: 1px solid #c1c1c1;
padding: 0;
}
.button[hidden] {
@ -279,13 +283,13 @@ body.loaded {
.dropdown {
text-align: center;
list-style: none;
margin: 0px;
padding: 0px;
margin: 0;
padding: 0;
}
.dropdown li {
margin: 0px;
padding: 0px;
margin: 0;
padding: 0;
}
/*======= Font style popup =======*/
@ -296,18 +300,18 @@ body.loaded {
position: absolute;
left: 48px; /* offset to account for toolbar width */
z-index: 1000;
background-color: #FBFBFB;
background-color: #fbfbfb;
visibility: hidden;
border-radius: 4px;
border: 1px 1px 0 1px solid #B5B5B5;
box-shadow: 0px 1px 12px #666;
border: 1px 1px 0 1px solid #b5b5b5;
box-shadow: 0 1px 12px #666;
}
.dropdown-popup > hr {
width: 100%;
height: 0px;
border: 0px;
border-top: 1px solid #B5B5B5;
height: 0;
border: 0;
border-top: 1px solid #b5b5b5;
margin: 0;
}
@ -349,7 +353,7 @@ body.loaded {
#font-size-buttons > button,
#color-scheme-buttons > button {
text-align: center;
border-left: 1px solid #B5B5B5;
border-left: 1px solid #b5b5b5;
border-right: 0;
border-top: 0;
border-bottom: 0;
@ -370,7 +374,7 @@ body.loaded {
#font-type-buttons > button:first-child,
#font-size-buttons > button:first-child,
#color-scheme-buttons > button:first-child {
border-left: 0px;
border-left: 0;
}
#font-type-buttons > button {
@ -382,7 +386,7 @@ body.loaded {
#font-type-buttons > button.selected,
#color-scheme-buttons > button:active:hover,
#color-scheme-buttons > button.selected {
box-shadow: inset 0 -3px 0 0 #FC6420;
box-shadow: inset 0 -3px 0 0 #fc6420;
}
#font-type-buttons > button > div {
@ -393,14 +397,14 @@ body.loaded {
.button:hover,
#font-size-buttons > button:hover,
#font-type-buttons > button:hover {
background-color: #EBEBEB;
background-color: #ebebeb;
}
.dropdown.open,
.button:active,
#font-size-buttons > button:active,
#font-size-buttons > button.selected {
background-color: #DADADA;
background-color: #dadada;
}
/* Only used on Android */
@ -422,6 +426,39 @@ body.loaded {
background-position: center;
}
.footer {
height: 64px;
background-color: #ebebeb;
position: absolute;
left: 0;
width: 100%;
text-align: center;
padding: 12px 0;
box-sizing: border-box;
box-shadow: 0 9px 9px -9px #c1c1c1 inset;
}
.sepia .footer {
background-color: #dedad4;
}
.dark .footer {
background-color: #777;
}
.remove-button {
background-image: url("chrome://global/skin/reader/RM-Delete-24x24.svg");
margin: 0 auto;
border: 1px solid #c1c1c1;
background-position: 10px 7px;
padding-left: 42px;
padding-right: 10px;
border-radius: 2px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
font-size: 18px;
}
/*======= Toolbar icons =======*/
/* Android-only controls */
@ -472,4 +509,7 @@ body.loaded {
.toolbar {
display: none;
}
.footer {
display: none;
}
}

Просмотреть файл

@ -3,10 +3,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
toolkit.jar:
% skin global classic/1.0 %skin/classic/global/ os=WINNT osversion<6
% skin global classic/1.0 %skin/classic/global/ os!=WINNT
# NOTE: If you add a new file here, you'll need to add it to the aero
# section at the bottom of this file
% skin global classic/1.0 %skin/classic/global/
skin/classic/global/about.css
skin/classic/global/aboutCache.css
skin/classic/global/aboutCacheEntry.css
@ -70,12 +67,10 @@ toolkit.jar:
skin/classic/global/arrow/arrow-down.png (arrow/arrow-down.png)
skin/classic/global/arrow/arrow-lft.gif (arrow/arrow-lft.gif)
skin/classic/global/arrow/arrow-lft-dis.gif (arrow/arrow-lft-dis.gif)
skin/classic/global/arrow/arrow-lft-hov.gif (arrow/arrow-lft.gif)
skin/classic/global/arrow/arrow-lft-sharp.gif (arrow/arrow-lft-sharp.gif)
skin/classic/global/arrow/arrow-lft-sharp-end.gif (arrow/arrow-lft-sharp-end.gif)
skin/classic/global/arrow/arrow-rit.gif (arrow/arrow-rit.gif)
skin/classic/global/arrow/arrow-rit-dis.gif (arrow/arrow-rit-dis.gif)
skin/classic/global/arrow/arrow-rit-hov.gif (arrow/arrow-rit.gif)
skin/classic/global/arrow/arrow-rit-sharp.gif (arrow/arrow-rit-sharp.gif)
skin/classic/global/arrow/arrow-rit-sharp-end.gif (arrow/arrow-rit-sharp-end.gif)
skin/classic/global/arrow/arrow-up.gif (arrow/arrow-up.gif)
@ -194,7 +189,6 @@ toolkit.jar:
skin/classic/global/reader/RM-Reading-List-24x24.svg (../../shared/reader/RM-Reading-List-24x24.svg)
skin/classic/global/reader/RM-Type-Controls-24x24.svg (../../shared/reader/RM-Type-Controls-24x24.svg)
skin/classic/global/reader/RM-Type-Controls-Arrow.svg (../../shared/reader/RM-Type-Controls-Arrow.svg)
skin/classic/global/scrollbar/slider.gif (scrollbar/slider.gif)
skin/classic/global/splitter/grip-bottom.gif (splitter/grip-bottom.gif)
skin/classic/global/splitter/grip-top.gif (splitter/grip-top.gif)
@ -212,211 +206,136 @@ toolkit.jar:
skin/classic/global/tree/twisty-open.png (tree/twisty-open.png)
#ifdef XP_WIN
toolkit.jar:
% skin global classic/1.0 %skin/classic/aero/global/ os=WINNT osversion>=6
skin/classic/aero/global/about.css
skin/classic/aero/global/aboutCache.css
skin/classic/aero/global/aboutCacheEntry.css
skin/classic/aero/global/aboutMemory.css
skin/classic/aero/global/aboutReader.css
skin/classic/aero/global/aboutSupport.css
skin/classic/aero/global/appPicker.css
skin/classic/aero/global/arrow.css
* skin/classic/aero/global/autocomplete.css (autocomplete-aero.css)
skin/classic/aero/global/button.css
skin/classic/aero/global/checkbox.css
skin/classic/aero/global/colorpicker.css
skin/classic/aero/global/commonDialog.css
skin/classic/aero/global/config.css (../../shared/config.css)
skin/classic/aero/global/customizeToolbar.css
skin/classic/aero/global/datetimepicker.css
skin/classic/aero/global/dialog.css
skin/classic/aero/global/dropmarker.css
skin/classic/aero/global/expander.css
skin/classic/aero/global/filefield.css
skin/classic/aero/global/filepicker.css
skin/classic/aero/global/findBar.css
* skin/classic/aero/global/global.css
skin/classic/aero/global/globalBindings.xml
skin/classic/aero/global/groupbox.css
* skin/classic/aero/global/inContentUI.css (inContentUI-aero.css)
skin/classic/aero/global/linkTree.css
* skin/classic/aero/global/listbox.css (listbox-aero.css)
* skin/classic/aero/global/menu.css (menu-aero.css)
* skin/classic/aero/global/menulist.css (menulist-aero.css)
skin/classic/aero/global/netError.css
skin/classic/aero/global/numberbox.css
* skin/classic/aero/global/notification.css (notification-aero.css)
skin/classic/aero/global/passwordmgr.css
* skin/classic/aero/global/popup.css (popup-aero.css)
skin/classic/aero/global/preferences.css
skin/classic/aero/global/printPageSetup.css
skin/classic/aero/global/printPreview.css
skin/classic/aero/global/progressmeter.css
skin/classic/aero/global/radio.css
skin/classic/aero/global/resizer.css
skin/classic/aero/global/richlistbox.css
skin/classic/aero/global/scale.css
skin/classic/aero/global/scrollbars.css (xulscrollbars.css)
skin/classic/aero/global/scrollbox.css
skin/classic/aero/global/spinbuttons.css
skin/classic/aero/global/splitter.css
skin/classic/aero/global/tabbox.css
skin/classic/aero/global/tabprompts.css
* skin/classic/aero/global/textbox.css (textbox-aero.css)
skin/classic/aero/global/toolbar.css
* skin/classic/aero/global/toolbarbutton.css (toolbarbutton-aero.css)
* skin/classic/aero/global/tree.css (tree-aero.css)
skin/classic/aero/global/wizard.css
skin/classic/aero/global/alerts/alert.css (alerts/alert.css)
skin/classic/aero/global/alerts/notification-48.png (alerts/notification-48.png)
skin/classic/aero/global/arrow/arrow-dn.gif (arrow/arrow-dn.gif)
skin/classic/aero/global/arrow/arrow-dn-dis.gif (arrow/arrow-dn-dis.gif)
skin/classic/aero/global/arrow/arrow-dn-hov.gif (arrow/arrow-dn-hov.gif)
skin/classic/aero/global/arrow/arrow-dn-sharp.gif (arrow/arrow-dn-sharp.gif)
skin/classic/aero/global/arrow/arrow-down.png (arrow/arrow-down.png)
skin/classic/aero/global/arrow/arrow-lft.gif (arrow/arrow-lft.gif)
skin/classic/aero/global/arrow/arrow-lft-dis.gif (arrow/arrow-lft-dis.gif)
skin/classic/aero/global/arrow/arrow-lft-hov.gif (arrow/arrow-lft.gif)
skin/classic/aero/global/arrow/arrow-lft-sharp.gif (arrow/arrow-lft-sharp.gif)
skin/classic/aero/global/arrow/arrow-lft-sharp-end.gif (arrow/arrow-lft-sharp-end.gif)
skin/classic/aero/global/arrow/arrow-rit.gif (arrow/arrow-rit.gif)
skin/classic/aero/global/arrow/arrow-rit-dis.gif (arrow/arrow-rit-dis.gif)
skin/classic/aero/global/arrow/arrow-rit-hov.gif (arrow/arrow-rit.gif)
skin/classic/aero/global/arrow/arrow-rit-sharp.gif (arrow/arrow-rit-sharp.gif)
skin/classic/aero/global/arrow/arrow-rit-sharp-end.gif (arrow/arrow-rit-sharp-end.gif)
skin/classic/aero/global/arrow/arrow-up.gif (arrow/arrow-up.gif)
skin/classic/aero/global/arrow/arrow-up-dis.gif (arrow/arrow-up-dis.gif)
skin/classic/aero/global/arrow/arrow-up-hov.gif (arrow/arrow-up-hov.gif)
skin/classic/aero/global/arrow/arrow-up-sharp.gif (arrow/arrow-up-sharp.gif)
skin/classic/aero/global/arrow/panelarrow-horizontal.svg (arrow/panelarrow-horizontal.svg)
skin/classic/aero/global/arrow/panelarrow-vertical.svg (arrow/panelarrow-vertical.svg)
skin/classic/aero/global/arrow/panelarrow-horizontal-themed.svg (arrow/panelarrow-horizontal-themed.svg)
skin/classic/aero/global/arrow/panelarrow-vertical-themed.svg (arrow/panelarrow-vertical-themed.svg)
skin/classic/aero/global/checkbox/cbox-check.gif (checkbox/cbox-check.gif)
skin/classic/aero/global/checkbox/cbox-check-dis.gif (checkbox/cbox-check-dis.gif)
* skin/classic/aero/global/console/console.css (console/console-aero.css)
skin/classic/aero/global/console/console-toolbar.png (console/console-toolbar-aero.png)
skin/classic/aero/global/console/console-error-caret.gif (console/console-error-caret.gif)
skin/classic/aero/global/console/console-error-dash.gif (console/console-error-dash.gif)
skin/classic/aero/global/console/itemSelected.png (console/itemSelected.png)
* skin/classic/aero/global/dirListing/dirListing.css (dirListing/dirListing.css)
skin/classic/aero/global/dirListing/folder.png (dirListing/folder-aero.png)
skin/classic/aero/global/dirListing/local.png (dirListing/local-aero.png)
skin/classic/aero/global/dirListing/remote.png (dirListing/remote-aero.png)
skin/classic/aero/global/dirListing/up.png (dirListing/up-aero.png)
skin/classic/aero/global/Filepicker.png (filepicker/Filepicker.png)
skin/classic/aero/global/icons/autoscroll.png (icons/autoscroll-aero.png)
skin/classic/aero/global/icons/autocomplete-search.svg (icons/autocomplete-search.svg)
skin/classic/aero/global/icons/blacklist_favicon.png (icons/blacklist_favicon-aero.png)
skin/classic/aero/global/icons/blacklist_large.png (icons/blacklist_large-aero.png)
skin/classic/aero/global/icons/Close.gif (icons/Close.gif)
skin/classic/aero/global/icons/close.png (icons/close.png)
skin/classic/aero/global/icons/collapse.png (icons/collapse.png)
skin/classic/aero/global/icons/Error.png (icons/Error-aero.png)
skin/classic/aero/global/icons/error-16.png (icons/error-16-aero.png)
skin/classic/aero/global/icons/error-24.png (icons/error-24-aero.png)
skin/classic/aero/global/icons/error-48.png (icons/error-48-aero.png)
skin/classic/aero/global/icons/error-64.png (icons/error-64-aero.png)
skin/classic/aero/global/icons/expand.png (icons/expand.png)
skin/classic/aero/global/icons/find.png (icons/find-aero.png)
skin/classic/aero/global/icons/find-arrows.png (icons/find-arrows.png)
skin/classic/aero/global/icons/folder-item.png (icons/folder-item-aero.png)
skin/classic/aero/global/icons/information-16.png (icons/information-16-aero.png)
skin/classic/aero/global/icons/information-24.png (icons/information-24-aero.png)
skin/classic/aero/global/icons/information-32.png (icons/information-32-aero.png)
skin/classic/aero/global/icons/information-48.png (icons/information-48-aero.png)
skin/classic/aero/global/icons/information-64.png (icons/information-64-aero.png)
skin/classic/aero/global/icons/loading_16.png (icons/loading_16.png)
skin/classic/aero/global/icons/Minimize.gif (icons/Minimize.gif)
skin/classic/aero/global/icons/Print-preview.png (icons/Print-preview-aero.png)
skin/classic/aero/global/icons/Portrait.png (icons/Portrait-aero.png)
skin/classic/aero/global/icons/Landscape.png (icons/Landscape-aero.png)
skin/classic/aero/global/icons/Question.png (icons/Question-aero.png)
skin/classic/aero/global/icons/question-16.png (icons/question-16-aero.png)
skin/classic/aero/global/icons/question-24.png (icons/question-24-aero.png)
skin/classic/aero/global/icons/question-48.png (icons/question-48-aero.png)
skin/classic/aero/global/icons/question-64.png (icons/question-64-aero.png)
skin/classic/aero/global/icons/resizer.png (icons/resizer.png)
skin/classic/aero/global/icons/resizer-rtl.png (icons/resizer-rtl.png)
skin/classic/aero/global/icons/Restore.gif (icons/Restore.gif)
skin/classic/aero/global/icons/Search-close.png (icons/Search-close-aero.png)
skin/classic/aero/global/icons/Search-glass.png (icons/Search-glass-aero.png)
skin/classic/aero/global/icons/sslWarning.png (icons/sslWarning-aero.png)
skin/classic/aero/global/icons/tabprompts-bgtexture.png (icons/tabprompts-bgtexture.png)
skin/classic/aero/global/icons/warning.svg (../../shared/incontent-icons/warning.svg)
skin/classic/aero/global/icons/Warning.png (icons/Warning-aero.png)
skin/classic/aero/global/icons/warning-large.png (icons/warning-large-aero.png)
skin/classic/aero/global/icons/warning-16.png (icons/warning-16-aero.png)
skin/classic/aero/global/icons/warning-24.png (icons/warning-24-aero.png)
skin/classic/aero/global/icons/warning-64.png (icons/warning-64-aero.png)
skin/classic/aero/global/icons/windowControls.png (icons/windowControls-aero.png)
skin/classic/aero/global/icons/wrap.png (icons/wrap-aero.png)
skin/classic/aero/global/icons/webapps-16.png (icons/webapps-16.png)
skin/classic/aero/global/icons/webapps-64.png (icons/webapps-64.png)
skin/classic/aero/global/inContentUI/background-texture.png (inContentUI/background-texture.png)
skin/classic/aero/global/media/TopLevelImageDocument.css (media/TopLevelImageDocument.css)
skin/classic/aero/global/media/TopLevelVideoDocument.css (media/TopLevelVideoDocument.css)
skin/classic/aero/global/media/imagedoc-lightnoise.png (media/imagedoc-lightnoise.png)
skin/classic/aero/global/media/imagedoc-darknoise.png (media/imagedoc-darknoise.png)
skin/classic/aero/global/media/videocontrols.css (media/videocontrols.css)
skin/classic/aero/global/media/pauseButton.png (media/pauseButton.png)
skin/classic/aero/global/media/playButton.png (media/playButton.png)
skin/classic/aero/global/media/muteButton.png (media/muteButton.png)
skin/classic/aero/global/media/unmuteButton.png (media/unmuteButton.png)
skin/classic/aero/global/media/noAudio.png (media/noAudio.png)
skin/classic/aero/global/media/fullscreenButton.png (media/fullscreenButton.png)
skin/classic/aero/global/media/scrubberThumb.png (media/scrubberThumb.png)
skin/classic/aero/global/media/scrubberThumbWide.png (media/scrubberThumbWide.png)
skin/classic/aero/global/media/throbber.png (media/throbber.png)
skin/classic/aero/global/media/stalled.png (media/stalled.png)
skin/classic/aero/global/media/volume-empty.png (media/volume-empty.png)
skin/classic/aero/global/media/volume-full.png (media/volume-full.png)
skin/classic/aero/global/media/error.png (media/error.png)
skin/classic/aero/global/media/clicktoplay-bgtexture.png (media/clicktoplay-bgtexture.png)
skin/classic/aero/global/media/videoClickToPlayButton.svg (media/videoClickToPlayButton.svg)
skin/classic/aero/global/menu/shared-menu-check.png (../../shared/menu-check.png)
* skin/classic/aero/global/in-content/common.css (in-content/common.css)
* skin/classic/aero/global/in-content/info-pages.css (in-content/info-pages.css)
skin/classic/aero/global/in-content/check.svg (../../shared/in-content/check.svg)
skin/classic/aero/global/in-content/check-partial.svg (../../shared/in-content/check-partial.svg)
skin/classic/aero/global/in-content/dropdown.svg (../../shared/in-content/dropdown.svg)
skin/classic/aero/global/in-content/help-glyph.svg (../../shared/in-content/help-glyph.svg)
skin/classic/aero/global/in-content/radio.svg (../../shared/in-content/radio.svg)
skin/classic/aero/global/printpreview/arrow-left.png (printpreview/arrow-left-aero.png)
skin/classic/aero/global/printpreview/arrow-left-end.png (printpreview/arrow-left-end-aero.png)
skin/classic/aero/global/printpreview/arrow-right.png (printpreview/arrow-right-aero.png)
skin/classic/aero/global/printpreview/arrow-right-end.png (printpreview/arrow-right-end-aero.png)
skin/classic/aero/global/radio/radio-check.gif (radio/radio-check.gif)
skin/classic/aero/global/radio/radio-check-dis.gif (radio/radio-check-dis.gif)
skin/classic/aero/global/reader/RM-Add-24x24.svg (../../shared/reader/RM-Add-24x24.svg)
skin/classic/aero/global/reader/RM-Close-24x24.svg (../../shared/reader/RM-Close-24x24.svg)
skin/classic/aero/global/reader/RM-Close-hover-24x24.svg (../../shared/reader/RM-Close-hover-24x24.svg)
skin/classic/aero/global/reader/RM-Delete-24x24.svg (../../shared/reader/RM-Delete-24x24.svg)
skin/classic/aero/global/reader/RM-Minus-24x24.svg (../../shared/reader/RM-Minus-24x24.svg)
skin/classic/aero/global/reader/RM-Plus-24x24.svg (../../shared/reader/RM-Plus-24x24.svg)
skin/classic/aero/global/reader/RM-Reading-List-24x24.svg (../../shared/reader/RM-Reading-List-24x24.svg)
skin/classic/aero/global/reader/RM-Type-Controls-24x24.svg (../../shared/reader/RM-Type-Controls-24x24.svg)
skin/classic/aero/global/reader/RM-Type-Controls-Arrow.svg (../../shared/reader/RM-Type-Controls-Arrow.svg)
skin/classic/aero/global/scrollbar/slider.gif (scrollbar/slider.gif)
skin/classic/aero/global/splitter/grip-bottom.gif (splitter/grip-bottom.gif)
skin/classic/aero/global/splitter/grip-top.gif (splitter/grip-top.gif)
skin/classic/aero/global/splitter/grip-left.gif (splitter/grip-left.gif)
skin/classic/aero/global/splitter/grip-right.gif (splitter/grip-right.gif)
skin/classic/aero/global/toolbar/chevron.gif (toolbar/chevron.gif)
skin/classic/aero/global/toolbar/chevron-inverted.png (toolbar/chevron-inverted.png)
skin/classic/aero/global/toolbar/spring.png (toolbar/spring-aero.png)
skin/classic/aero/global/tree/columnpicker.gif (tree/columnpicker.gif)
skin/classic/aero/global/tree/sort-asc.png (tree/sort-asc-aero.png)
skin/classic/aero/global/tree/sort-dsc.png (tree/sort-dsc-aero.png)
skin/classic/aero/global/tree/sort-asc-classic.png (tree/sort-asc-classic.png)
skin/classic/aero/global/tree/sort-dsc-classic.png (tree/sort-dsc-classic.png)
skin/classic/aero/global/tree/twisty-clsd.png (tree/twisty-clsd-aero.png)
skin/classic/aero/global/tree/twisty-clsd-rtl.png (tree/twisty-clsd-rtl-aero.png)
skin/classic/aero/global/tree/twisty-clsd-hover.png (tree/twisty-clsd-hover-aero.png)
skin/classic/aero/global/tree/twisty-clsd-hover-rtl.png (tree/twisty-clsd-hover-rtl-aero.png)
skin/classic/aero/global/tree/twisty-open.png (tree/twisty-open-aero.png)
skin/classic/aero/global/tree/twisty-open-rtl.png (tree/twisty-open-rtl-aero.png)
skin/classic/aero/global/tree/twisty-open-hover.png (tree/twisty-open-hover-aero.png)
skin/classic/aero/global/tree/twisty-open-hover-rtl.png (tree/twisty-open-hover-rtl-aero.png)
* skin/classic/global/autocomplete-aero.css (autocomplete-aero.css)
* skin/classic/global/inContentUI-aero.css (inContentUI-aero.css)
* skin/classic/global/listbox-aero.css (listbox-aero.css)
* skin/classic/global/menu-aero.css (menu-aero.css)
* skin/classic/global/menulist-aero.css (menulist-aero.css)
* skin/classic/global/notification-aero.css (notification-aero.css)
* skin/classic/global/popup-aero.css (popup-aero.css)
* skin/classic/global/textbox-aero.css (textbox-aero.css)
* skin/classic/global/toolbarbutton-aero.css (toolbarbutton-aero.css)
* skin/classic/global/tree-aero.css (tree-aero.css)
* skin/classic/global/console/console-aero.css (console/console-aero.css)
skin/classic/global/console/console-toolbar-aero.png (console/console-toolbar-aero.png)
skin/classic/global/dirListing/folder-aero.png (dirListing/folder-aero.png)
skin/classic/global/dirListing/local-aero.png (dirListing/local-aero.png)
skin/classic/global/dirListing/remote-aero.png (dirListing/remote-aero.png)
skin/classic/global/dirListing/up-aero.png (dirListing/up-aero.png)
skin/classic/global/icons/autoscroll-aero.png (icons/autoscroll-aero.png)
skin/classic/global/icons/blacklist_favicon-aero.png (icons/blacklist_favicon-aero.png)
skin/classic/global/icons/blacklist_large-aero.png (icons/blacklist_large-aero.png)
skin/classic/global/icons/Error-aero.png (icons/Error-aero.png)
skin/classic/global/icons/error-16-aero.png (icons/error-16-aero.png)
skin/classic/global/icons/error-24-aero.png (icons/error-24-aero.png)
skin/classic/global/icons/error-48-aero.png (icons/error-48-aero.png)
skin/classic/global/icons/error-64-aero.png (icons/error-64-aero.png)
skin/classic/global/icons/find-aero.png (icons/find-aero.png)
skin/classic/global/icons/folder-item-aero.png (icons/folder-item-aero.png)
skin/classic/global/icons/information-16-aero.png (icons/information-16-aero.png)
skin/classic/global/icons/information-24-aero.png (icons/information-24-aero.png)
skin/classic/global/icons/information-32-aero.png (icons/information-32-aero.png)
skin/classic/global/icons/information-48-aero.png (icons/information-48-aero.png)
skin/classic/global/icons/information-64-aero.png (icons/information-64-aero.png)
skin/classic/global/icons/Print-preview-aero.png (icons/Print-preview-aero.png)
skin/classic/global/icons/Portrait-aero.png (icons/Portrait-aero.png)
skin/classic/global/icons/Landscape-aero.png (icons/Landscape-aero.png)
skin/classic/global/icons/Question-aero.png (icons/Question-aero.png)
skin/classic/global/icons/question-16-aero.png (icons/question-16-aero.png)
skin/classic/global/icons/question-24-aero.png (icons/question-24-aero.png)
skin/classic/global/icons/question-48-aero.png (icons/question-48-aero.png)
skin/classic/global/icons/question-64-aero.png (icons/question-64-aero.png)
skin/classic/global/icons/Search-close-aero.png (icons/Search-close-aero.png)
skin/classic/global/icons/Search-glass-aero.png (icons/Search-glass-aero.png)
skin/classic/global/icons/sslWarning-aero.png (icons/sslWarning-aero.png)
skin/classic/global/icons/Warning-aero.png (icons/Warning-aero.png)
skin/classic/global/icons/warning-large-aero.png (icons/warning-large-aero.png)
skin/classic/global/icons/warning-16-aero.png (icons/warning-16-aero.png)
skin/classic/global/icons/warning-24-aero.png (icons/warning-24-aero.png)
skin/classic/global/icons/warning-64-aero.png (icons/warning-64-aero.png)
skin/classic/global/icons/windowControls-aero.png (icons/windowControls-aero.png)
skin/classic/global/icons/wrap-aero.png (icons/wrap-aero.png)
skin/classic/global/printpreview/arrow-left-aero.png (printpreview/arrow-left-aero.png)
skin/classic/global/printpreview/arrow-left-end-aero.png (printpreview/arrow-left-end-aero.png)
skin/classic/global/printpreview/arrow-right-aero.png (printpreview/arrow-right-aero.png)
skin/classic/global/printpreview/arrow-right-end-aero.png (printpreview/arrow-right-end-aero.png)
skin/classic/global/toolbar/spring-aero.png (toolbar/spring-aero.png)
skin/classic/global/tree/sort-asc-aero.png (tree/sort-asc-aero.png)
skin/classic/global/tree/sort-dsc-aero.png (tree/sort-dsc-aero.png)
skin/classic/global/tree/twisty-clsd-aero.png (tree/twisty-clsd-aero.png)
skin/classic/global/tree/twisty-clsd-rtl-aero.png (tree/twisty-clsd-rtl-aero.png)
skin/classic/global/tree/twisty-clsd-hover-aero.png (tree/twisty-clsd-hover-aero.png)
skin/classic/global/tree/twisty-clsd-hover-rtl-aero.png (tree/twisty-clsd-hover-rtl-aero.png)
skin/classic/global/tree/twisty-open-aero.png (tree/twisty-open-aero.png)
skin/classic/global/tree/twisty-open-rtl-aero.png (tree/twisty-open-rtl-aero.png)
skin/classic/global/tree/twisty-open-hover-aero.png (tree/twisty-open-hover-aero.png)
skin/classic/global/tree/twisty-open-hover-rtl-aero.png (tree/twisty-open-hover-rtl-aero.png)
% override chrome://global/skin/autocomplete.css chrome://global/skin/autocomplete-aero.css osversion>=6
% override chrome://global/skin/inContentUI.css chrome://global/skin/inContentUI-aero.css osversion>=6
% override chrome://global/skin/listbox.css chrome://global/skin/listbox-aero.css osversion>=6
% override chrome://global/skin/menu.css chrome://global/skin/menu-aero.css osversion>=6
% override chrome://global/skin/menulist.css chrome://global/skin/menulist-aero.css osversion>=6
% override chrome://global/skin/notification.css chrome://global/skin/notification-aero.css osversion>=6
% override chrome://global/skin/popup.css chrome://global/skin/popup-aero.css osversion>=6
% override chrome://global/skin/textbox.css chrome://global/skin/textbox-aero.css osversion>=6
% override chrome://global/skin/toolbarbutton.css chrome://global/skin/toolbarbutton-aero.css osversion>=6
% override chrome://global/skin/tree.css chrome://global/skin/tree-aero.css osversion>=6
% override chrome://global/skin/console/console.css chrome://global/skin/console/console-aero.css osversion>=6
% override chrome://global/skin/console/console-toolbar.png chrome://global/skin/console/console-toolbar-aero.png osversion>=6
% override chrome://global/skin/dirListing/folder.png chrome://global/skin/dirListing/folder-aero.png osversion>=6
% override chrome://global/skin/dirListing/local.png chrome://global/skin/dirListing/local-aero.png osversion>=6
% override chrome://global/skin/dirListing/remote.png chrome://global/skin/dirListing/remote-aero.png osversion>=6
% override chrome://global/skin/dirListing/up.png chrome://global/skin/dirListing/up-aero.png osversion>=6
% override chrome://global/skin/icons/autoscroll.png chrome://global/skin/icons/autoscroll-aero.png osversion>=6
% override chrome://global/skin/icons/blacklist_favicon.png chrome://global/skin/icons/blacklist_favicon-aero.png osversion>=6
% override chrome://global/skin/icons/blacklist_large.png chrome://global/skin/icons/blacklist_large-aero.png osversion>=6
% override chrome://global/skin/icons/Error.png chrome://global/skin/icons/Error-aero.png osversion>=6
% override chrome://global/skin/icons/error-16.png chrome://global/skin/icons/error-16-aero.png osversion>=6
% override chrome://global/skin/icons/error-24.png chrome://global/skin/icons/error-24-aero.png osversion>=6
% override chrome://global/skin/icons/error-48.png chrome://global/skin/icons/error-48-aero.png osversion>=6
% override chrome://global/skin/icons/error-64.png chrome://global/skin/icons/error-64-aero.png osversion>=6
% override chrome://global/skin/icons/find.png chrome://global/skin/icons/find-aero.png osversion>=6
% override chrome://global/skin/icons/folder-item.png chrome://global/skin/icons/folder-item-aero.png osversion>=6
% override chrome://global/skin/icons/information-16.png chrome://global/skin/icons/information-16-aero.png osversion>=6
% override chrome://global/skin/icons/information-24.png chrome://global/skin/icons/information-24-aero.png osversion>=6
% override chrome://global/skin/icons/information-32.png chrome://global/skin/icons/information-32-aero.png osversion>=6
% override chrome://global/skin/icons/information-48.png chrome://global/skin/icons/information-48-aero.png osversion>=6
% override chrome://global/skin/icons/information-64.png chrome://global/skin/icons/information-64-aero.png osversion>=6
% override chrome://global/skin/icons/Print-preview.png chrome://global/skin/icons/Print-preview-aero.png osversion>=6
% override chrome://global/skin/icons/Portrait.png chrome://global/skin/icons/Portrait-aero.png osversion>=6
% override chrome://global/skin/icons/Landscape.png chrome://global/skin/icons/Landscape-aero.png osversion>=6
% override chrome://global/skin/icons/Question.png chrome://global/skin/icons/Question-aero.png osversion>=6
% override chrome://global/skin/icons/question-16.png chrome://global/skin/icons/question-16-aero.png osversion>=6
% override chrome://global/skin/icons/question-24.png chrome://global/skin/icons/question-24-aero.png osversion>=6
% override chrome://global/skin/icons/question-48.png chrome://global/skin/icons/question-48-aero.png osversion>=6
% override chrome://global/skin/icons/question-64.png chrome://global/skin/icons/question-64-aero.png osversion>=6
% override chrome://global/skin/icons/Search-close.png chrome://global/skin/icons/Search-close-aero.png osversion>=6
% override chrome://global/skin/icons/Search-glass.png chrome://global/skin/icons/Search-glass-aero.png osversion>=6
% override chrome://global/skin/icons/sslWarning.png chrome://global/skin/icons/sslWarning-aero.png osversion>=6
% override chrome://global/skin/icons/Warning.png chrome://global/skin/icons/Warning-aero.png osversion>=6
% override chrome://global/skin/icons/warning-large.png chrome://global/skin/icons/warning-large-aero.png osversion>=6
% override chrome://global/skin/icons/warning-16.png chrome://global/skin/icons/warning-16-aero.png osversion>=6
% override chrome://global/skin/icons/warning-24.png chrome://global/skin/icons/warning-24-aero.png osversion>=6
% override chrome://global/skin/icons/warning-64.png chrome://global/skin/icons/warning-64-aero.png osversion>=6
% override chrome://global/skin/icons/windowControls.png chrome://global/skin/icons/windowControls-aero.png osversion>=6
% override chrome://global/skin/icons/wrap.png chrome://global/skin/icons/wrap-aero.png osversion>=6
% override chrome://global/skin/printpreview/arrow-left.png chrome://global/skin/printpreview/arrow-left-aero.png osversion>=6
% override chrome://global/skin/printpreview/arrow-left-end.png chrome://global/skin/printpreview/arrow-left-end-aero.png osversion>=6
% override chrome://global/skin/printpreview/arrow-right.png chrome://global/skin/printpreview/arrow-right-aero.png osversion>=6
% override chrome://global/skin/printpreview/arrow-right-end.png chrome://global/skin/printpreview/arrow-right-end-aero.png osversion>=6
% override chrome://global/skin/toolbar/spring.png chrome://global/skin/toolbar/spring-aero.png osversion>=6
% override chrome://global/skin/tree/sort-asc.png chrome://global/skin/tree/sort-asc-aero.png osversion>=6
% override chrome://global/skin/tree/sort-dsc.png chrome://global/skin/tree/sort-dsc-aero.png osversion>=6
% override chrome://global/skin/tree/twisty-clsd.png chrome://global/skin/tree/twisty-clsd-aero.png osversion>=6
% override chrome://global/skin/tree/twisty-clsd-rtl.png chrome://global/skin/tree/twisty-clsd-rtl-aero.png osversion>=6
% override chrome://global/skin/tree/twisty-clsd-hover.png chrome://global/skin/tree/twisty-clsd-hover-aero.png osversion>=6
% override chrome://global/skin/tree/twisty-clsd-hover-rtl.png chrome://global/skin/tree/twisty-clsd-hover-rtl-aero.png osversion>=6
% override chrome://global/skin/tree/twisty-open.png chrome://global/skin/tree/twisty-open-aero.png osversion>=6
% override chrome://global/skin/tree/twisty-open-rtl.png chrome://global/skin/tree/twisty-open-rtl-aero.png osversion>=6
% override chrome://global/skin/tree/twisty-open-hover.png chrome://global/skin/tree/twisty-open-hover-aero.png osversion>=6
% override chrome://global/skin/tree/twisty-open-hover-rtl.png chrome://global/skin/tree/twisty-open-hover-rtl-aero.png osversion>=6
#endif
% override chrome://global/skin/arrow/arrow-lft-hov.gif chrome://global/skin/arrow/arrow-lft.gif
% override chrome://global/skin/arrow/arrow-rit-hov.gif chrome://global/skin/arrow/arrow-rit.gif

Просмотреть файл

@ -3,10 +3,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
toolkit.jar:
% skin mozapps classic/1.0 %skin/classic/mozapps/ os=WINNT osversion<6
% skin mozapps classic/1.0 %skin/classic/mozapps/ os!=WINNT
# NOTE: If you add a new file here, you'll need to add it to the aero
# section at the bottom of this file
% skin mozapps classic/1.0 %skin/classic/mozapps/
skin/classic/mozapps/downloads/downloadButtons.png (downloads/downloadButtons.png)
skin/classic/mozapps/downloads/downloadIcon.png (downloads/downloadIcon.png)
skin/classic/mozapps/downloads/downloads.css (downloads/downloads.css)
@ -18,10 +15,7 @@ toolkit.jar:
skin/classic/mozapps/extensions/update.css (extensions/update.css)
skin/classic/mozapps/extensions/category-search.png (extensions/category-search.png)
skin/classic/mozapps/extensions/category-discover.png (extensions/category-discover.png)
skin/classic/mozapps/extensions/category-languages.png (extensions/localeGeneric.png)
skin/classic/mozapps/extensions/category-searchengines.png (extensions/category-searchengines.png)
skin/classic/mozapps/extensions/category-extensions.png (extensions/extensionGeneric.png)
skin/classic/mozapps/extensions/category-themes.png (extensions/themeGeneric.png)
skin/classic/mozapps/extensions/category-plugins.png (extensions/category-plugins.png)
skin/classic/mozapps/extensions/category-service.png (extensions/category-service.png)
skin/classic/mozapps/extensions/category-dictionaries.png (extensions/category-dictionaries.png)
@ -71,8 +65,6 @@ toolkit.jar:
skin/classic/mozapps/plugins/contentPluginDownload.png (../../shared/plugins/contentPluginDownload.png)
skin/classic/mozapps/plugins/contentPluginMissing.png (../../shared/plugins/contentPluginMissing.png)
skin/classic/mozapps/plugins/contentPluginStripe.png (../../shared/plugins/contentPluginStripe.png)
skin/classic/mozapps/plugins/notifyPluginCrashed.png (plugins/pluginGeneric-16.png)
skin/classic/mozapps/plugins/notifyPluginGeneric.png (plugins/pluginGeneric-16.png)
skin/classic/mozapps/plugins/pluginGeneric.png (plugins/pluginGeneric.png)
skin/classic/mozapps/plugins/pluginBlocked.png (plugins/pluginBlocked.png)
skin/classic/mozapps/plugins/pluginBlocked-64.png (plugins/pluginBlocked-64.png)
@ -84,87 +76,63 @@ toolkit.jar:
skin/classic/mozapps/update/updates.css (update/updates.css)
skin/classic/mozapps/viewsource/viewsource.css (viewsource/viewsource.css)
* skin/classic/mozapps/xpinstall/xpinstallConfirm.css (extensions/xpinstallConfirm.css)
skin/classic/mozapps/xpinstall/xpinstallItemGeneric.png (extensions/extensionGeneric.png)
#ifdef XP_WIN
toolkit.jar:
% skin mozapps classic/1.0 %skin/classic/aero/mozapps/ os=WINNT osversion>=6
skin/classic/aero/mozapps/downloads/downloadButtons.png (downloads/downloadButtons-aero.png)
skin/classic/aero/mozapps/downloads/downloadIcon.png (downloads/downloadIcon-aero.png)
* skin/classic/aero/mozapps/downloads/downloads.css (downloads/downloads-aero.css)
skin/classic/aero/mozapps/downloads/unknownContentType.css (downloads/unknownContentType.css)
skin/classic/aero/mozapps/extensions/about.css (extensions/about.css)
skin/classic/aero/mozapps/extensions/blocklist.css (extensions/blocklist.css)
* skin/classic/aero/mozapps/extensions/extensions.css (extensions/extensions-aero.css)
* skin/classic/aero/mozapps/extensions/selectAddons.css (extensions/selectAddons-aero.css)
skin/classic/aero/mozapps/extensions/update.css (extensions/update.css)
skin/classic/aero/mozapps/extensions/category-search.png (extensions/category-search.png)
skin/classic/aero/mozapps/extensions/category-discover.png (extensions/category-discover-aero.png)
skin/classic/aero/mozapps/extensions/category-languages.png (extensions/localeGeneric-aero.png)
skin/classic/aero/mozapps/extensions/category-searchengines.png (extensions/category-searchengines.png)
skin/classic/aero/mozapps/extensions/category-extensions.png (extensions/extensionGeneric-aero.png)
skin/classic/aero/mozapps/extensions/category-themes.png (extensions/themeGeneric-aero.png)
skin/classic/aero/mozapps/extensions/category-plugins.png (extensions/category-plugins-aero.png)
skin/classic/aero/mozapps/extensions/category-service.png (extensions/category-service.png)
skin/classic/aero/mozapps/extensions/category-dictionaries.png (extensions/category-dictionaries-aero.png)
skin/classic/aero/mozapps/extensions/category-experiments.png (extensions/category-experiments-aero.png)
skin/classic/aero/mozapps/extensions/category-recent.png (extensions/category-recent-aero.png)
skin/classic/aero/mozapps/extensions/category-available.png (extensions/category-available-aero.png)
skin/classic/aero/mozapps/extensions/discover-logo.png (extensions/discover-logo.png)
skin/classic/aero/mozapps/extensions/extensionGeneric.png (extensions/extensionGeneric-aero.png)
skin/classic/aero/mozapps/extensions/extensionGeneric-16.png (extensions/extensionGeneric-16-aero.png)
skin/classic/aero/mozapps/extensions/themeGeneric.png (extensions/themeGeneric-aero.png)
skin/classic/aero/mozapps/extensions/themeGeneric-16.png (extensions/themeGeneric-16-aero.png)
skin/classic/aero/mozapps/extensions/dictionaryGeneric.png (extensions/dictionaryGeneric-aero.png)
skin/classic/aero/mozapps/extensions/dictionaryGeneric-16.png (extensions/dictionaryGeneric-16-aero.png)
skin/classic/aero/mozapps/extensions/localeGeneric.png (extensions/localeGeneric-aero.png)
skin/classic/aero/mozapps/extensions/experimentGeneric.png (extensions/experimentGeneric-aero.png)
skin/classic/aero/mozapps/extensions/rating-won.png (extensions/rating-won.png)
skin/classic/aero/mozapps/extensions/rating-not-won.png (extensions/rating-not-won.png)
skin/classic/aero/mozapps/extensions/cancel.png (extensions/cancel.png)
skin/classic/aero/mozapps/extensions/utilities.svg (../../shared/extensions/utilities.svg)
skin/classic/aero/mozapps/extensions/heart.png (extensions/heart.png)
skin/classic/aero/mozapps/extensions/navigation.png (extensions/navigation.png)
skin/classic/aero/mozapps/extensions/stripes-warning.png (extensions/stripes-warning.png)
skin/classic/aero/mozapps/extensions/stripes-error.png (extensions/stripes-error.png)
skin/classic/aero/mozapps/extensions/stripes-info-positive.png (extensions/stripes-info-positive.png)
skin/classic/aero/mozapps/extensions/stripes-info-negative.png (extensions/stripes-info-negative.png)
skin/classic/aero/mozapps/extensions/alerticon-warning.png (extensions/alerticon-warning.png)
skin/classic/aero/mozapps/extensions/alerticon-error.png (extensions/alerticon-error.png)
skin/classic/aero/mozapps/extensions/alerticon-info-positive.png (extensions/alerticon-info-positive.png)
skin/classic/aero/mozapps/extensions/alerticon-info-negative.png (extensions/alerticon-info-negative.png)
skin/classic/aero/mozapps/extensions/eula.css (extensions/eula.css)
* skin/classic/aero/mozapps/extensions/newaddon.css (extensions/newaddon-aero.css)
skin/classic/aero/mozapps/handling/handling.css (handling/handling.css)
skin/classic/aero/mozapps/passwordmgr/key.png (passwordmgr/key.png)
skin/classic/aero/mozapps/passwordmgr/key-16.png (passwordmgr/key-16.png)
skin/classic/aero/mozapps/passwordmgr/key-64.png (passwordmgr/key-64.png)
#ifdef MOZ_PLACES
skin/classic/aero/mozapps/places/defaultFavicon.png (places/defaultFavicon.png)
#endif
skin/classic/aero/mozapps/formautofill/requestAutocomplete.css (../../shared/formautofill/requestAutocomplete.css)
skin/classic/aero/mozapps/plugins/pluginProblem.css (../../shared/plugins/pluginProblem.css)
skin/classic/aero/mozapps/aboutNetworking.css (../../shared/aboutNetworking.css)
skin/classic/aero/mozapps/plugins/contentPluginActivate.png (../../shared/plugins/contentPluginActivate.png)
skin/classic/aero/mozapps/plugins/contentPluginBlocked.png (../../shared/plugins/contentPluginBlocked.png)
skin/classic/aero/mozapps/plugins/contentPluginClose.png (../../shared/plugins/contentPluginClose.png)
skin/classic/aero/mozapps/plugins/contentPluginCrashed.png (../../shared/plugins/contentPluginCrashed.png)
skin/classic/aero/mozapps/plugins/contentPluginDisabled.png (../../shared/plugins/contentPluginDisabled.png)
skin/classic/aero/mozapps/plugins/contentPluginDownload.png (../../shared/plugins/contentPluginDownload.png)
skin/classic/aero/mozapps/plugins/contentPluginMissing.png (../../shared/plugins/contentPluginMissing.png)
skin/classic/aero/mozapps/plugins/contentPluginStripe.png (../../shared/plugins/contentPluginStripe.png)
skin/classic/aero/mozapps/plugins/notifyPluginCrashed.png (plugins/pluginGeneric-16-aero.png)
skin/classic/aero/mozapps/plugins/notifyPluginGeneric.png (plugins/pluginGeneric-16-aero.png)
skin/classic/aero/mozapps/plugins/pluginGeneric.png (plugins/pluginGeneric-aero.png)
skin/classic/aero/mozapps/plugins/pluginBlocked.png (plugins/pluginBlocked-aero.png)
skin/classic/aero/mozapps/plugins/pluginBlocked-64.png (plugins/pluginBlocked-64.png)
skin/classic/aero/mozapps/plugins/pluginGeneric-16.png (plugins/pluginGeneric-16-aero.png)
skin/classic/aero/mozapps/plugins/pluginHelp-16.png (plugins/pluginHelp-16.png)
skin/classic/aero/mozapps/profile/profileicon.png (profile/profileicon-aero.png)
skin/classic/aero/mozapps/profile/profileSelection.css (profile/profileSelection.css)
skin/classic/aero/mozapps/update/downloadButtons.png (update/downloadButtons-aero.png)
skin/classic/aero/mozapps/update/updates.css (update/updates.css)
skin/classic/aero/mozapps/viewsource/viewsource.css (viewsource/viewsource.css)
* skin/classic/aero/mozapps/xpinstall/xpinstallConfirm.css (extensions/xpinstallConfirm.css)
skin/classic/aero/mozapps/xpinstall/xpinstallItemGeneric.png (extensions/extensionGeneric-aero.png)
skin/classic/mozapps/downloads/downloadButtons-aero.png (downloads/downloadButtons-aero.png)
skin/classic/mozapps/downloads/downloadIcon-aero.png (downloads/downloadIcon-aero.png)
* skin/classic/mozapps/downloads/downloads-aero.css (downloads/downloads-aero.css)
* skin/classic/mozapps/extensions/extensions-aero.css (extensions/extensions-aero.css)
* skin/classic/mozapps/extensions/selectAddons-aero.css (extensions/selectAddons-aero.css)
skin/classic/mozapps/extensions/category-discover-aero.png (extensions/category-discover-aero.png)
skin/classic/mozapps/extensions/category-plugins-aero.png (extensions/category-plugins-aero.png)
skin/classic/mozapps/extensions/category-dictionaries-aero.png (extensions/category-dictionaries-aero.png)
skin/classic/mozapps/extensions/category-experiments-aero.png (extensions/category-experiments-aero.png)
skin/classic/mozapps/extensions/category-recent-aero.png (extensions/category-recent-aero.png)
skin/classic/mozapps/extensions/category-available-aero.png (extensions/category-available-aero.png)
skin/classic/mozapps/extensions/extensionGeneric-aero.png (extensions/extensionGeneric-aero.png)
skin/classic/mozapps/extensions/extensionGeneric-16-aero.png (extensions/extensionGeneric-16-aero.png)
skin/classic/mozapps/extensions/themeGeneric-aero.png (extensions/themeGeneric-aero.png)
skin/classic/mozapps/extensions/themeGeneric-16-aero.png (extensions/themeGeneric-16-aero.png)
skin/classic/mozapps/extensions/dictionaryGeneric-aero.png (extensions/dictionaryGeneric-aero.png)
skin/classic/mozapps/extensions/dictionaryGeneric-16-aero.png (extensions/dictionaryGeneric-16-aero.png)
skin/classic/mozapps/extensions/localeGeneric-aero.png (extensions/localeGeneric-aero.png)
skin/classic/mozapps/extensions/experimentGeneric-aero.png (extensions/experimentGeneric-aero.png)
* skin/classic/mozapps/extensions/newaddon-aero.css (extensions/newaddon-aero.css)
skin/classic/mozapps/plugins/pluginGeneric-aero.png (plugins/pluginGeneric-aero.png)
skin/classic/mozapps/plugins/pluginBlocked-aero.png (plugins/pluginBlocked-aero.png)
skin/classic/mozapps/plugins/pluginGeneric-16-aero.png (plugins/pluginGeneric-16-aero.png)
skin/classic/mozapps/profile/profileicon-aero.png (profile/profileicon-aero.png)
skin/classic/mozapps/update/downloadButtons-aero.png (update/downloadButtons-aero.png)
% override chrome://mozapps/skin/downloads/downloadButtons.png chrome://mozapps/skin/downloads/downloadButtons-aero.png osversion>=6
% override chrome://mozapps/skin/downloads/downloadIcon.png chrome://mozapps/skin/downloads/downloadIcon-aero.png osversion>=6
% override chrome://mozapps/skin/downloads/downloads.css chrome://mozapps/skin/downloads/downloads-aero.css osversion>=6
% override chrome://mozapps/skin/extensions/extensions.css chrome://mozapps/skin/extensions/extensions-aero.css osversion>=6
% override chrome://mozapps/skin/extensions/selectAddons.css chrome://mozapps/skin/extensions/selectAddons-aero.css osversion>=6
% override chrome://mozapps/skin/extensions/category-discover.png chrome://mozapps/skin/extensions/category-discover-aero.png osversion>=6
% override chrome://mozapps/skin/extensions/category-plugins.png chrome://mozapps/skin/extensions/category-plugins-aero.png osversion>=6
% override chrome://mozapps/skin/extensions/category-dictionaries.png chrome://mozapps/skin/extensions/category-dictionaries-aero.png osversion>=6
% override chrome://mozapps/skin/extensions/category-experiments.png chrome://mozapps/skin/extensions/category-experiments-aero.png osversion>=6
% override chrome://mozapps/skin/extensions/category-recent.png chrome://mozapps/skin/extensions/category-recent-aero.png osversion>=6
% override chrome://mozapps/skin/extensions/category-available.png chrome://mozapps/skin/extensions/category-available-aero.png osversion>=6
% override chrome://mozapps/skin/extensions/extensionGeneric.png chrome://mozapps/skin/extensions/extensionGeneric-aero.png osversion>=6
% override chrome://mozapps/skin/extensions/extensionGeneric-16.png chrome://mozapps/skin/extensions/extensionGeneric-16-aero.png osversion>=6
% override chrome://mozapps/skin/extensions/themeGeneric.png chrome://mozapps/skin/extensions/themeGeneric-aero.png osversion>=6
% override chrome://mozapps/skin/extensions/themeGeneric-16.png chrome://mozapps/skin/extensions/themeGeneric-16-aero.png osversion>=6
% override chrome://mozapps/skin/extensions/dictionaryGeneric.png chrome://mozapps/skin/extensions/dictionaryGeneric-aero.png osversion>=6
% override chrome://mozapps/skin/extensions/dictionaryGeneric-16.png chrome://mozapps/skin/extensions/dictionaryGeneric-16-aero.png osversion>=6
% override chrome://mozapps/skin/extensions/localeGeneric.png chrome://mozapps/skin/extensions/localeGeneric-aero.png osversion>=6
% override chrome://mozapps/skin/extensions/experimentGeneric.png chrome://mozapps/skin/extensions/experimentGeneric-aero.png osversion>=6
% override chrome://mozapps/skin/extensions/newaddon.css chrome://mozapps/skin/extensions/newaddon-aero.css osversion>=6
% override chrome://mozapps/skin/plugins/pluginGeneric.png chrome://mozapps/skin/plugins/pluginGeneric-aero.png osversion>=6
% override chrome://mozapps/skin/plugins/pluginBlocked.png chrome://mozapps/skin/plugins/pluginBlocked-aero.png osversion>=6
% override chrome://mozapps/skin/plugins/pluginGeneric-16.png chrome://mozapps/skin/plugins/pluginGeneric-16-aero.png osversion>=6
% override chrome://mozapps/skin/profile/profileicon.png chrome://mozapps/skin/profile/profileicon-aero.png osversion>=6
% override chrome://mozapps/skin/update/downloadButtons.png chrome://mozapps/skin/update/downloadButtons-aero.png osversion>=6
#endif
% override chrome://mozapps/skin/extensions/category-extensions.png chrome://mozapps/skin/extensions/extensionGeneric.png
% override chrome://mozapps/skin/extensions/category-languages.png chrome://mozapps/skin/extensions/localeGeneric.png
% override chrome://mozapps/skin/extensions/category-themes.png chrome://mozapps/skin/extensions/themeGeneric.png
% override chrome://mozapps/skin/plugins/notifyPluginCrashed.png chrome://mozapps/skin/plugins/pluginGeneric-16.png
% override chrome://mozapps/skin/plugins/notifyPluginGeneric.png chrome://mozapps/skin/plugins/pluginGeneric-16.png
% override chrome://mozapps/skin/xpinstall/xpinstallItemGeneric.png chrome://mozapps/skin/extensions/extensionGeneric.png

Просмотреть файл

@ -535,8 +535,8 @@ NS_InitXPCOM2(nsIServiceManager** aResult,
sMessageLoop = new MessageLoopForUI(MessageLoop::TYPE_MOZILLA_UI);
sMessageLoop->set_thread_name("Gecko");
// Set experimental values for main thread hangs:
// 512ms for transient hangs and 8192ms for permanent hangs
sMessageLoop->set_hang_timeouts(512, 8192);
// 128ms for transient hangs and 8192ms for permanent hangs
sMessageLoop->set_hang_timeouts(128, 8192);
}
if (XRE_GetProcessType() == GeckoProcessType_Default &&