Merge m-c to inbound a=merge CLOSED TREE

This commit is contained in:
Wes Kocher 2014-11-20 18:03:29 -08:00
commit a6d238257b
55 changed files with 900 additions and 1205 deletions

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="3ab0d9c70f0b2e1ededc679112c392303f037361">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1abe09b4925547699dfdb2d358aed019137c3aa6"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="d695e7cdcd162e779e15594054931c84dec34a95"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="45c54a55e31758f7e54e5eafe0d01d387f35897a"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
@ -111,7 +111,7 @@
<project name="platform/libcore" path="libcore" revision="e195beab082c09217318fc19250caeaf4c1bd800"/>
<project name="platform/libnativehelper" path="libnativehelper" revision="feeb36c2bd4adfe285f98f5de92e0f3771b2c115"/>
<project name="platform/ndk" path="ndk" revision="e58ef003be4306bb53a8c11331146f39e4eab31f"/>
<project name="platform/prebuilts/misc" path="prebuilts/misc" revision="ee724654c72825f8d732ba45caf75ca59e06975d"/>
<project name="platform_prebuilts_misc" path="prebuilts/misc" remote="b2g" revision="0e7c060db684b409616fe67ea433ef19f5634c60"/>
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="c792f0bd9fff7aea2887c60bbb3a9bbdb534ffa3"/>
<project name="platform_prebuilts_qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="c24c8871173bf6aedcf236cab075edf092a7015c"/>
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="cfcef469537869947abb9aa1d656774cc2678d4c"/>

View File

@ -19,7 +19,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="1abe09b4925547699dfdb2d358aed019137c3aa6"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="d695e7cdcd162e779e15594054931c84dec34a95"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="45c54a55e31758f7e54e5eafe0d01d387f35897a"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="d5d3f93914558b6f168447b805cd799c8233e300"/>

View File

@ -17,7 +17,7 @@
</project>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1abe09b4925547699dfdb2d358aed019137c3aa6"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="d695e7cdcd162e779e15594054931c84dec34a95"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="45c54a55e31758f7e54e5eafe0d01d387f35897a"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="6a8f8bd05043e7b8f8e26ad390c82021b995ee4d"/>

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="3ab0d9c70f0b2e1ededc679112c392303f037361">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1abe09b4925547699dfdb2d358aed019137c3aa6"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="d695e7cdcd162e779e15594054931c84dec34a95"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="45c54a55e31758f7e54e5eafe0d01d387f35897a"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
@ -111,7 +111,7 @@
<project name="platform/libcore" path="libcore" revision="9877ade9617bb0db6e59aa2a54719a9bc92600f3"/>
<project name="platform/libnativehelper" path="libnativehelper" revision="46c96ace65eb1ccab05bf15b9bf8e53e443039af"/>
<project name="platform/ndk" path="ndk" revision="cb5519af32ae7b4a9c334913a612462ecd04c5d0"/>
<project name="platform/prebuilts/misc" path="prebuilts/misc" revision="99c9a644e84a1b0e0a5d240406753b6bc4caca54"/>
<project name="platform_prebuilts_misc" path="prebuilts/misc" remote="b2g" revision="0e7c060db684b409616fe67ea433ef19f5634c60"/>
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="6aa61f8557a22039a30b42b7f283996381fd625d"/>
<project name="platform_prebuilts_qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="c24c8871173bf6aedcf236cab075edf092a7015c"/>
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="b562b01c93de9578d5db537b6a602a38e1aaa0ce"/>

View File

@ -19,7 +19,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="1abe09b4925547699dfdb2d358aed019137c3aa6"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="d695e7cdcd162e779e15594054931c84dec34a95"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="45c54a55e31758f7e54e5eafe0d01d387f35897a"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="d5d3f93914558b6f168447b805cd799c8233e300"/>

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="3ab0d9c70f0b2e1ededc679112c392303f037361">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1abe09b4925547699dfdb2d358aed019137c3aa6"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="d695e7cdcd162e779e15594054931c84dec34a95"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="45c54a55e31758f7e54e5eafe0d01d387f35897a"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
@ -111,7 +111,7 @@
<project name="platform/libcore" path="libcore" revision="baf7d8068dd501cfa338d3a8b1b87216d6ce0571"/>
<project name="platform/libnativehelper" path="libnativehelper" revision="50c4430e32849530ced32680fd6ee98963b3f7ac"/>
<project name="platform/ndk" path="ndk" revision="e58ef003be4306bb53a8c11331146f39e4eab31f"/>
<project name="platform/prebuilts/misc" path="prebuilts/misc" revision="a094aa8f160e211fb4994fdfaaac8a78aa6cc897"/>
<project name="platform_prebuilts_misc" path="prebuilts/misc" remote="b2g" revision="0e7c060db684b409616fe67ea433ef19f5634c60"/>
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="c792f0bd9fff7aea2887c60bbb3a9bbdb534ffa3"/>
<project name="platform_prebuilts_qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="c24c8871173bf6aedcf236cab075edf092a7015c"/>
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="69d524e80cdf3981006627c65ac85f3a871238a3"/>

View File

@ -17,7 +17,7 @@
</project>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1abe09b4925547699dfdb2d358aed019137c3aa6"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="d695e7cdcd162e779e15594054931c84dec34a95"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="45c54a55e31758f7e54e5eafe0d01d387f35897a"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="6a8f8bd05043e7b8f8e26ad390c82021b995ee4d"/>

View File

@ -4,6 +4,6 @@
"remote": "",
"branch": ""
},
"revision": "936d69a5e13f39fcf9cc99bceb50c8c0de6aa0fa",
"revision": "830d094e31350d07d6354deafbd58a19b2ac0236",
"repo_path": "integration/gaia-central"
}

View File

@ -17,7 +17,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="1abe09b4925547699dfdb2d358aed019137c3aa6"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="d695e7cdcd162e779e15594054931c84dec34a95"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="45c54a55e31758f7e54e5eafe0d01d387f35897a"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>

View File

@ -15,7 +15,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="1abe09b4925547699dfdb2d358aed019137c3aa6"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="d695e7cdcd162e779e15594054931c84dec34a95"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="45c54a55e31758f7e54e5eafe0d01d387f35897a"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>

View File

@ -17,7 +17,7 @@
</project>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1abe09b4925547699dfdb2d358aed019137c3aa6"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="d695e7cdcd162e779e15594054931c84dec34a95"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="45c54a55e31758f7e54e5eafe0d01d387f35897a"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="6a8f8bd05043e7b8f8e26ad390c82021b995ee4d"/>

View File

@ -17,7 +17,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="1abe09b4925547699dfdb2d358aed019137c3aa6"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="d695e7cdcd162e779e15594054931c84dec34a95"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="45c54a55e31758f7e54e5eafe0d01d387f35897a"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>

View File

@ -3465,7 +3465,7 @@
return;
var tab = this._getTabForContentWindow(contentWin);
if (tab.hasAttribute("pending"))
if (!tab || tab.hasAttribute("pending"))
return;
var titleChanged = this.setTabTitle(tab);

View File

@ -179,7 +179,6 @@ skip-if = e10s # Bug 1093206 - need to re-enable tests relying on swapFrameLoade
[browser_bug479408.js]
skip-if = buildapp == 'mulet'
[browser_bug481560.js]
skip-if = e10s # Bug 1102018 - This bug attaches an event listener directly to the content, which then never gets called.
[browser_bug484315.js]
skip-if = e10s
[browser_bug491431.js]
@ -189,7 +188,6 @@ skip-if = e10s # Bug 1093206 - need to re-enable tests relying on swapFrameLoade
[browser_bug517902.js]
skip-if = e10s # Bug 866413 - PageInfo doesn't work in e10s
[browser_bug519216.js]
skip-if = e10s # Bug ?????? - some weird timing issue with progress listeners that fails intermittently
[browser_bug520538.js]
[browser_bug521216.js]
[browser_bug533232.js]
@ -247,11 +245,9 @@ skip-if = e10s # Bug 1093677 - automated form submission from the test doesn't s
[browser_bug597218.js]
[browser_bug609700.js]
[browser_bug623155.js]
skip-if = e10s # Bug ?????? - URLBar issues (apparently issues with redirection)
[browser_bug623893.js]
[browser_bug624734.js]
[browser_bug633691.js]
skip-if = e10s # Bug ?????? - test directly manipulates content (eg, var expertDiv = gBrowser.contentDocument.getElementById("expertContent");)
[browser_bug647886.js]
skip-if = buildapp == 'mulet' || e10s # Bug 1093373 - Relies on browser.sessionHistory
[browser_bug655584.js]
@ -260,7 +256,7 @@ skip-if = e10s
[browser_bug676619.js]
skip-if = buildapp == 'mulet' || os == "mac" # mac: Intermittent failures, bug 925225
[browser_bug678392.js]
skip-if = e10s # Bug ?????? - Obscure non-windows failures ("Snapshot array has correct length of 1 after loading one page. - Got 0, expected 1" and more)
skip-if = e10s # bug 1102331 - does focus things on the content window which break in e10s mode
[browser_bug710878.js]
skip-if = e10s # Bug 1100653 - test uses waitForFocus on content
[browser_bug719271.js]
@ -274,7 +270,6 @@ skip-if = e10s # Bug 921935 - focusmanager issues with e10s
[browser_bug763468_perwindowpb.js]
skip-if = e10s
[browser_bug767836_perwindowpb.js]
skip-if = e10s # Bug ?????? - test reports a leaked nsGlobalWindow with e10s enabled.
[browser_bug771331.js]
[browser_bug783614.js]
[browser_bug816527.js]
@ -329,7 +324,6 @@ skip-if = e10s # Bug 863514 - no gesture support.
[browser_homeDrop.js]
skip-if = buildapp == 'mulet'
[browser_identity_UI.js]
skip-if = e10s # Bug ?????? - this test fails for obscure reasons on non-windows builds only.
[browser_keywordBookmarklets.js]
skip-if = e10s # Bug 1102025 - different principals for the bookmarklet only in e10s mode (unclear if test or 'real' issue)
[browser_keywordSearch.js]
@ -408,9 +402,7 @@ support-files =
searchSuggestionUI.html
searchSuggestionUI.js
[browser_selectTabAtIndex.js]
skip-if = e10s # Bug ?????? - no idea! "Accel+9 selects expected tab - Got 0, expected 9"
[browser_star_hsts.js]
skip-if = e10s # Bug ?????? - timeout after logging "Error: Channel closing: too late to send/recv, messages will be lost"
[browser_subframe_favicons_not_used.js]
[browser_tabDrop.js]
skip-if = buildapp == 'mulet' || e10s
@ -430,7 +422,6 @@ skip-if = e10s # Bug 921935 - focusmanager issues with e10s (test calls getFocus
[browser_tabkeynavigation.js]
skip-if = e10s
[browser_tabopen_reflows.js]
skip-if = e10s # Bug ?????? - test needs to be updated for e10s (captures a stack that isn't correct in e10s)
[browser_tabs_isActive.js]
skip-if = e10s # Bug 1100664 - test relies on linkedBrowser.docShell
[browser_tabs_owner.js]

View File

@ -1,14 +1,8 @@
function test() {
waitForExplicitFinish();
var win = openDialog(getBrowserURL(), "_blank", "chrome,all,dialog=no");
win.addEventListener("load", function () {
win.removeEventListener("load", arguments.callee, false);
win.content.addEventListener("focus", function () {
win.content.removeEventListener("focus", arguments.callee, false);
whenNewWindowLoaded(null, function (win) {
waitForFocus(function () {
function onTabClose() {
ok(false, "shouldn't have gotten the TabClose event for the last tab");
}
@ -22,6 +16,6 @@ function test() {
tab.removeEventListener("TabClose", onTabClose, false);
finish();
}, false);
}, false);
}, win);
});
}

View File

@ -6,12 +6,15 @@ function test() {
waitForExplicitFinish();
gBrowser.selectedTab = gBrowser.addTab();
// Open a html page with about:certerror in an iframe
window.content.addEventListener("load", testIframeCert, true);
gBrowser.selectedBrowser.addEventListener("load", testIframeCert, true);
content.location = "data:text/html,<iframe width='700' height='700' src='about:certerror'></iframe>";
}
function testIframeCert() {
window.content.removeEventListener("load", testIframeCert, true);
function testIframeCert(e) {
if (e.target.location.href == "about:blank") {
return;
}
gBrowser.selectedBrowser.removeEventListener("load", testIframeCert, true);
// Confirm that the expert section is hidden
var doc = gBrowser.contentDocument.getElementsByTagName('iframe')[0].contentDocument;
var eC = doc.getElementById("expertContent");

View File

@ -106,7 +106,7 @@ function getJSONPref(aName) {
}
let gHawkClient = null;
let gLocalizedStrings = null;
let gLocalizedStrings = new Map();
let gFxAEnabled = true;
let gFxAOAuthClientPromise = null;
let gFxAOAuthClient = null;
@ -295,12 +295,12 @@ let MozLoopServiceInternal = {
messageString = "generic_failure_title";
}
error.friendlyMessage = this.localizedStrings[messageString].textContent;
error.friendlyMessage = this.localizedStrings.get(messageString);
error.friendlyDetails = detailsString ?
this.localizedStrings[detailsString].textContent :
this.localizedStrings.get(detailsString) :
null;
error.friendlyDetailsButtonLabel = detailsButtonLabelString ?
this.localizedStrings[detailsButtonLabelString].textContent :
this.localizedStrings.get(detailsButtonLabelString) :
null;
error.friendlyDetailsButtonCallback = actionCallback || detailsButtonCallback || null;
@ -682,33 +682,22 @@ let MozLoopServiceInternal = {
* A getter to obtain and store the strings for loop. This is structured
* for use by l10n.js.
*
* @returns {Object} a map of element ids with attributes to set.
* @returns {Map} a map of element ids with localized string values
*/
get localizedStrings() {
if (gLocalizedStrings)
if (gLocalizedStrings.size)
return gLocalizedStrings;
var stringBundle =
Services.strings.createBundle('chrome://browser/locale/loop/loop.properties');
let stringBundle =
Services.strings.createBundle("chrome://browser/locale/loop/loop.properties");
var map = {};
var enumerator = stringBundle.getSimpleEnumeration();
let enumerator = stringBundle.getSimpleEnumeration();
while (enumerator.hasMoreElements()) {
var string = enumerator.getNext().QueryInterface(Ci.nsIPropertyElement);
// 'textContent' is the default attribute to set if none are specified.
var key = string.key, property = 'textContent';
var i = key.lastIndexOf('.');
if (i >= 0) {
property = key.substring(i + 1);
key = key.substring(0, i);
}
if (!(key in map))
map[key] = {};
map[key][property] = string.value;
let string = enumerator.getNext().QueryInterface(Ci.nsIPropertyElement);
gLocalizedStrings.set(string.key, string.value);
}
return gLocalizedStrings = map;
return gLocalizedStrings;
},
/**
@ -1152,21 +1141,20 @@ this.MozLoopService = {
},
/**
* Returns the strings for the specified element. Designed for use
* with l10n.js.
* Returns the strings for the specified element. Designed for use with l10n.js.
*
* @param {key} The element id to get strings for.
* @return {String} A JSON string containing the localized
* attribute/value pairs for the element.
* @return {String} A JSON string containing the localized attribute/value pairs
* for the element.
*/
getStrings: function(key) {
var stringData = MozLoopServiceInternal.localizedStrings;
if (!(key in stringData)) {
if (!stringData.has(key)) {
log.error("No string found for key: ", key);
return "";
}
return JSON.stringify(stringData[key]);
return JSON.stringify({ textContent: stringData.get(key) });
},
/**

View File

@ -42,7 +42,7 @@
.contact-separator {
height: 24px;
background: #eee;
background-color: #eee;
color: #888;
}
@ -55,7 +55,7 @@
}
.contact:hover {
background: #eee;
background-color: #eee;
}
.contact:hover > .icons {
@ -80,7 +80,7 @@
.contact > .avatar {
width: 40px;
height: 40px;
background: #ccc;
background-color: #ccc;
border-radius: 50%;
margin-right: 10px;
overflow: hidden;
@ -145,9 +145,9 @@
cursor: pointer;
display: none;
margin-left: auto;
padding: 12px 10px;
padding: 10px;
border-radius: 2px;
background: #5bc0a4;
background-color: #5bc0a4;
color: #fff;
-moz-user-select: none;
}

View File

@ -96,6 +96,8 @@ browser.jar:
content/browser/loop/shared/sounds/connected.ogg (content/shared/sounds/connected.ogg)
content/browser/loop/shared/sounds/terminated.ogg (content/shared/sounds/terminated.ogg)
content/browser/loop/shared/sounds/room-joined.ogg (content/shared/sounds/room-joined.ogg)
content/browser/loop/shared/sounds/room-joined-in.org (content/shared/sounds/room-joined-in.ogg)
content/browser/loop/shared/sounds/room-left.org (content/shared/sounds/room-left.ogg)
content/browser/loop/shared/sounds/failure.ogg (content/shared/sounds/failure.ogg)
# Partner SDK assets

View File

@ -188,7 +188,7 @@ function promiseOAuthGetRegistration(baseURL) {
}
function getLoopString(stringID) {
return MozLoopServiceInternal.localizedStrings[stringID].textContent;
return MozLoopServiceInternal.localizedStrings.get(stringID);
}
/**

View File

@ -73,7 +73,7 @@ function waitForCondition(aConditionFn, aMaxTries=50, aCheckInterval=100) {
}
function getLoopString(stringID) {
return MozLoopServiceInternal.localizedStrings[stringID].textContent;
return MozLoopServiceInternal.localizedStrings.get(stringID);
}
/**

View File

@ -74,6 +74,16 @@ const FMM_MESSAGES = [
"SessionStore:reloadPendingTab",
];
// The list of messages we accept from <xul:browser>s that have no tab
// assigned. Those are for example the ones that preload about:newtab pages.
const FMM_NOTAB_MESSAGES = new Set([
// For a description see above.
"SessionStore:setupSyncHandler",
// For a description see above.
"SessionStore:update",
]);
// Messages that will be received via the Parent Process Message Manager.
const PPMM_MESSAGES = [
// A tab is being revived from the crashed state. The sender of this
@ -605,9 +615,12 @@ let SessionStoreInternal = {
var browser = aMessage.target;
var win = browser.ownerDocument.defaultView;
let tab = win.gBrowser.getTabForBrowser(browser);
if (!tab) {
// Ignore messages from <browser> elements that are not tabs.
return;
// Ensure we receive only specific messages from <xul:browser>s that
// have no tab assigned, e.g. the ones that preload aobut:newtab pages.
if (!tab && !FMM_NOTAB_MESSAGES.has(aMessage.name)) {
throw new Error(`received unexpected message '${aMessage.name}' ` +
`from a browser that has no tab`);
}
switch (aMessage.name) {
@ -691,7 +704,7 @@ let SessionStoreInternal = {
}
break;
default:
debug(`received unknown message '${aMessage.name}'`);
throw new Error(`received unknown message '${aMessage.name}'`);
break;
}
},

View File

@ -293,13 +293,7 @@ OptionsPanel.prototype = {
let checkbox = this.panelDoc.getElementById("devtools-browser-theme");
checkbox.addEventListener("command", function() {
let data = {
pref: DEVEDITION_THEME_PREF,
newValue: this.checked
};
data.oldValue = GetPref(data.pref);
SetPref(data.pref, data.newValue);
gDevTools.emit("pref-changed", data);
setPrefAndEmit(DEVEDITION_THEME_PREF, this.checked);
}.bind(checkbox));
this.updateBrowserThemeButton();
@ -342,13 +336,7 @@ OptionsPanel.prototype = {
for (let checkbox of prefCheckboxes) {
checkbox.checked = GetPref(checkbox.getAttribute("data-pref"));
checkbox.addEventListener("command", function() {
let data = {
pref: this.getAttribute("data-pref"),
newValue: this.checked
};
data.oldValue = GetPref(data.pref);
SetPref(data.pref, data.newValue);
gDevTools.emit("pref-changed", data);
setPrefAndEmit(this.getAttribute("data-pref"), this.checked);
}.bind(checkbox));
}
let prefRadiogroups = this.panelDoc.querySelectorAll("radiogroup[data-pref]");
@ -362,17 +350,7 @@ OptionsPanel.prototype = {
}
}
radiogroup.addEventListener("select", function() {
let data = {
pref: this.getAttribute("data-pref"),
newValue: this.selectedItem.getAttribute("value")
};
data.oldValue = GetPref(data.pref);
SetPref(data.pref, data.newValue);
if (data.newValue != data.oldValue) {
gDevTools.emit("pref-changed", data);
}
setPrefAndEmit(this.getAttribute("data-pref"), this.selectedItem.getAttribute("value"));
}.bind(radiogroup));
}
let prefMenulists = this.panelDoc.querySelectorAll("menulist[data-pref]");
@ -387,13 +365,7 @@ OptionsPanel.prototype = {
}
}
menulist.addEventListener("command", function() {
let data = {
pref: this.getAttribute("data-pref"),
newValue: this.value
};
data.oldValue = GetPref(data.pref);
SetPref(data.pref, data.newValue);
gDevTools.emit("pref-changed", data);
setPrefAndEmit(this.getAttribute("data-pref"), this.value);
}.bind(menulist));
}
@ -498,3 +470,17 @@ OptionsPanel.prototype = {
return deferred.promise;
}
};
/* Set a pref and emit the pref-changed event if needed. */
function setPrefAndEmit(prefName, newValue) {
let data = {
pref: prefName,
newValue: newValue
};
data.oldValue = GetPref(data.pref);
SetPref(data.pref, data.newValue);
if (data.newValue != data.oldValue) {
gDevTools.emit("pref-changed", data);
}
}

View File

@ -574,7 +574,10 @@ CssHtmlTree.prototype = {
let mozProps = [];
for (let i = 0, numStyles = styles.length; i < numStyles; i++) {
let prop = styles.item(i);
if (prop.charAt(0) == "-") {
if (prop.startsWith("--")) {
// Skip any CSS variables used inside of browser CSS files
continue;
} else if (prop.startsWith("-")) {
mozProps.push(prop);
} else {
CssHtmlTree.propertyNames.push(prop);

View File

@ -15,16 +15,8 @@
.notice-container {
margin-top: -50vh;
font-size: 120%;
}
.theme-dark .notice-container {
background-color: #343c45; /* Toolbars */
color: #f5f7fa; /* Light foreground text */
}
.theme-light .notice-container {
background-color: #f0f1f2; /* Toolbars */
color: #585959; /* Grey foreground text */
background-color: var(--theme-toolbar-background);
color: var(--theme-body-color-alt);
}
#empty-notice > button {
@ -112,14 +104,9 @@
font-size: 90%;
}
.theme-dark .snapshot-item-calls,
.theme-dark .snapshot-item-save {
color: #b6babf; /* Foreground (Text) - Grey */
}
.theme-light .snapshot-item-calls,
.theme-light .snapshot-item-save {
color: #585959; /* Foreground (Text) - Grey */
.snapshot-item-calls,
.snapshot-item-save {
color: var(--theme-body-color-alt);
}
.snapshot-item-save {
@ -282,36 +269,22 @@
}
}
.theme-dark .call-item-gutter {
background-color: #181d20;
color: #5f7387;
border-color: #000;
}
.theme-light .call-item-gutter {
background-color: #f7f7f7;
color: #667380;
border-color: #aaa;
.call-item-gutter {
background-color: var(--theme-sidebar-background);
color: var(--theme-content-color3);
border-color: var(--theme-splitter-color);
}
.call-item-index {
text-align: end;
}
.theme-dark .call-item-context {
color: #eb5368; /* Highlight Orange */
.call-item-context {
color: var(--theme-highlight-orange);
}
.theme-light .call-item-context {
color: #f13c00; /* Highlight Orange */
}
.theme-dark .call-item-name {
color: #46afe3; /* Highlight Blue */
}
.theme-light .call-item-name {
color: #0088cc; /* Highlight Blue */
.call-item-name {
color: var(--theme-highlight-blue);
}
.call-item-location {
@ -319,14 +292,11 @@
-moz-padding-end: 6px;
text-align: end;
cursor: pointer;
color: var(--theme-highlight-bluegrey);
}
.theme-dark .call-item-location:hover {
color: #0088cc; /* Highlight Blue */
}
.theme-light .call-item-location:hover {
color: #46afe3; /* Highlight Blue */
.call-item-location:hover {
color: var(--theme-highlight-blue);
}
.call-item-view:hover .call-item-location,
@ -336,12 +306,10 @@
.theme-dark .call-item-location {
border-color: #111;
color: #5e88b0; /* Highlight Blue-Grey */
}
.theme-light .call-item-location {
border-color: #eee;
color: #5f88b0; /* Highlight Blue-Grey */
}
.call-item-stack {
@ -370,28 +338,16 @@
text-decoration: underline;
}
.theme-dark .call-item-stack-fn-name {
color: #a9bacb; /* Content (Text) - Light */
.call-item-stack-fn-name {
color: var(--theme-content-color3);
}
.theme-light .call-item-stack-fn-name {
color: #667380; /* Content (Text) - Dark Grey */
.call-item-stack-fn-location {
color: var(--theme-highlight-bluegrey);
}
.theme-dark .call-item-stack-fn-location {
color: #5e88b0; /* Highlight Blue-Grey */
}
.theme-light .call-item-stack-fn-location {
color: #5e88b0; /* Highlight Blue-Grey */
}
.theme-dark .call-item-stack-fn-location:hover {
color: #0088cc; /* Highlight Blue */
}
.theme-light .call-item-stack-fn-location:hover {
color: #46afe3; /* Highlight Blue */
.call-item-stack-fn-location:hover {
color: var(--theme-highlight-blue);
}
#calls-list .selected .call-item-contents > label:not(.call-item-gutter) {
@ -465,12 +421,12 @@
.theme-dark #snapshot-filmstrip {
border-top: 1px solid #000;
color: #f5f7fa; /* Light foreground text */
color: var(--theme-selection-color);
}
.theme-light #snapshot-filmstrip {
border-top: 1px solid #aaa;
color: #585959; /* Grey foreground text */
color: var(--theme-body-color-alt);
}
.filmstrip-thumbnail {
@ -498,25 +454,13 @@
background-color: @lightCheckerboardBackground@;
}
.theme-dark .filmstrip-thumbnail {
-moz-border-end: 1px solid #000;
.filmstrip-thumbnail {
-moz-border-end: 1px solid var(--theme-splitter-color)
}
.theme-light .filmstrip-thumbnail {
-moz-border-end: 1px solid #aaa;
}
.theme-dark #snapshot-filmstrip > .filmstrip-thumbnail:hover,
.theme-dark #snapshot-filmstrip:not(:hover) > .filmstrip-thumbnail[highlighted] {
border: 1px solid #46afe3; /* Highlight Blue */
margin: 0 0 0 -1px;
padding: 0;
opacity: 0.66;
}
.theme-light #snapshot-filmstrip > .filmstrip-thumbnail:hover,
.theme-light #snapshot-filmstrip:not(:hover) > .filmstrip-thumbnail[highlighted] {
border: 1px solid #0088cc; /* Highlight Blue */
#snapshot-filmstrip > .filmstrip-thumbnail:hover,
#snapshot-filmstrip:not(:hover) > .filmstrip-thumbnail[highlighted] {
border: 1px solid var(--theme-highlight-blue);
margin: 0 0 0 -1px;
padding: 0;
opacity: 0.66;

View File

@ -6,19 +6,47 @@
/* According to:
* https://bugzilla.mozilla.org/show_bug.cgi?id=715472#c17
*/
:root {
--theme-body-background: #14171a;
--theme-sidebar-background: #181d20;
--theme-contrast-background: #b28025;
--theme-tab-toolbar-background: #252c33;
--theme-toolbar-background: #343c45;
--theme-selection-background: #1d4f73;
--theme-selection-color: #f5f7fa;
--theme-splitter-color: black;
--theme-comment: #5c6773;
--theme-body-color: #a9bacb;
--theme-body-color-alt: #b6babf;
--theme-content-color1: #a9bacb;
--theme-content-color2: #8fa1b2;
--theme-content-color3: #667380;
--theme-highlight-green: #5c9966;
--theme-highlight-blue: #3689b2;
--theme-highlight-bluegrey: #5e88b0;
--theme-highlight-purple: #6270b2;
--theme-highlight-lightorange: #a18650;
--theme-highlight-orange: #b26b47;
--theme-highlight-red: #bf5656;
--theme-highlight-pink: #a673bf;
}
.theme-body {
background: #14171a;
color: #a9bacb;
background: var(--theme-body-background);
color: var(--theme-body-color);
}
.theme-sidebar {
background: #181d20;
color: #a9bacb;
background: var(--theme-sidebar-background);
color: var(--theme-content-color1);
}
::-moz-selection {
background-color: #1d4f73;
color: #f5f7fa;
background-color: var(--theme-selection-background);
color: var(--theme-selection-color);
}
.theme-bg-darker {
@ -27,18 +55,18 @@
.theme-selected,
.CodeMirror-hint-active {
background-color: #1d4f73;
color: #f5f7fa; /* Light foreground text */
background-color: var(--theme-selection-background);
color: var(--theme-selection-color);
}
.theme-bg-contrast,
.variable-or-property:not([overridden])[changed] { /* contrast bg color to attract attention on a container */
background: #B28025; /* Background - Attention */
.variable-or-property:not([overridden])[changed] {
background: var(--theme-contrast-background);
}
.theme-link,
.cm-s-mozilla .cm-link { /* blue */
color: #3689b2;
.cm-s-mozilla .cm-link {
color: var(--theme-highlight-blue);
}
/*
@ -47,8 +75,8 @@
*/
.theme-link:visited,
.cm-s-mozilla .cm-link:visited,
.CodeMirror-Tern-type { /* blue */
color: #3689b2;
.CodeMirror-Tern-type {
color: var(--theme-highlight-blue);
}
@ -57,17 +85,14 @@
.cm-s-mozilla .cm-hr,
.cm-s-mozilla .cm-comment,
.variable-or-property .token-undefined,
.variable-or-property .token-null { /* grey */
color: #5c6773;
}
.variable-or-property .token-null,
.CodeMirror-Tern-completion-unknown:before {
background-color: #5c6773;
color: var(--theme-comment);
}
.theme-gutter {
background-color: #0f171f;
color: #667380;
color: var(--theme-content-color3);
border-color: #303b47;
}
@ -79,8 +104,8 @@
.cm-s-mozilla .cm-number,
.variable-or-property .token-number,
.variable-or-property[return] > .title > .name,
.variable-or-property[scope] > .title > .name { /* green */
color: #5c9966;
.variable-or-property[scope] > .title > .name {
color: var(--theme-highlight-green);
}
.CodeMirror-Tern-completion-number:before {
@ -93,8 +118,8 @@
.cm-s-mozilla .cm-def,
.cm-s-mozilla .cm-property,
.cm-s-mozilla .cm-qualifier,
.variables-view-variable > .title > .name { /* blue */
color: #3689b2;
.variables-view-variable > .title > .name {
color: var(--theme-highlight-blue);
}
.CodeMirror-Tern-completion-object:before {
@ -114,30 +139,30 @@
.cm-s-mozilla .cm-builtin,
.cm-s-mozilla .cm-tag,
.cm-s-mozilla .cm-header,
.variables-view-property > .title > .name { /* pink/lavender */
color: #a673bf;
.cm-s-mozilla .cm-bracket,
.variables-view-property > .title > .name {
color: var(--theme-highlight-pink);
}
.CodeMirror-Tern-completion-array:before {
background-color: #a673bf;
background-color: var(--theme-highlight-bluegrey);
}
.theme-fg-color4 { /* purple/violet */
color: #6270b2;
.theme-fg-color4 {
color: var(--theme-highlight-purple);
}
.theme-fg-color5,
.cm-s-mozilla .cm-bracket,
.cm-s-mozilla .cm-keyword { /* Yellow */
color: #a18650;
.cm-s-mozilla .cm-keyword {
color: var(--theme-highlight-lightorange);
}
.theme-fg-color6,
.cm-s-mozilla .cm-string,
.cm-s-mozilla .cm-string-2,
.variable-or-property .token-string,
.CodeMirror-Tern-farg { /* Orange */
color: #b26b47;
.CodeMirror-Tern-farg {
color: var(--theme-highlight-orange);
}
.CodeMirror-Tern-completion-string:before,
@ -151,8 +176,8 @@
.cm-s-mozilla .cm-error,
.variable-or-property .token-boolean,
.variable-or-property .token-domnode,
.variable-or-property[exception] > .title > .name { /* Red */
color: #bf5656;
.variable-or-property[exception] > .title > .name {
color: var(--theme-highlight-red);
}
.CodeMirror-Tern-completion-bool:before {
@ -167,8 +192,8 @@
.devtools-toolbar,
.devtools-sidebar-tabs > tabs,
.CodeMirror-dialog { /* General toolbar styling */
color: #b6babf;
background-color: #343c45;
color: var(--theme-body-color-alt);
background-color: var(--theme-toolbar-background);
border-color: hsla(210,8%,5%,.6);
}
@ -196,8 +221,8 @@
.cm-s-mozilla .cm-variable-2,
.cm-s-mozilla .cm-variable-3,
.cm-s-mozilla .cm-operator,
.cm-s-mozilla .cm-special { /* theme-body color */
color: #a9bacb;
.cm-s-mozilla .cm-special {
color: var(--theme-content-color1);
}
.cm-s-mozilla .CodeMirror-lines .CodeMirror-cursor {
@ -248,12 +273,12 @@ div.CodeMirror span.eval-text {
}
.cm-s-mozilla .CodeMirror-linenumber { /* line number text */
color: #5f7387;
color: var(--theme-content-color3);
}
.cm-s-mozilla .CodeMirror-gutters { /* vertical line next to line numbers */
border-right-color: #343c45;
background-color: #181d20;
border-right-color: var(--theme-toolbar-background);
background-color: var(--theme-sidebar-background);
}
.cm-s-markup-view pre {
@ -359,12 +384,12 @@ div.CodeMirror span.eval-text {
}
.devtools-horizontal-splitter {
border-bottom: 1px solid black;
border-bottom: 1px solid var(--theme-splitter-color);
}
.devtools-side-splitter {
-moz-border-end: 1px solid black;
border-color: black; /* Needed for responsive container at low width. */
-moz-border-end: 1px solid var(--theme-splitter-color);
border-color: var(--theme-splitter-color); /* Needed for responsive container at low width. */
}
.devtools-textinput,
@ -381,7 +406,7 @@ div.CodeMirror span.eval-text {
.CodeMirror-Tern-tooltip {
box-shadow: 0 0 4px rgba(255, 255, 255, .3);
background-color: #0f171f;
color: #8fa1b2;
color: var(--theme-body-color);
}

View File

@ -18,14 +18,9 @@
-moz-border-end: 1px solid;
}
.theme-dark #sources-pane > tabs,
.theme-dark #sources-pane .devtools-toolbar {
-moz-border-end-color: black; /* Match the splitter color. */
}
.theme-light #sources-pane > tabs,
.theme-light #sources-pane .devtools-toolbar {
-moz-border-end-color: #aaa; /* Match the splitter color. */
#sources-pane > tabs,
#sources-pane .devtools-toolbar {
-moz-border-end-color: var(--theme-splitter-color);
}
/* Sources and breakpoints list */
@ -189,28 +184,16 @@
text-align: end;
}
.theme-dark .dbg-classic-stackframe-details-url {
color: #a9bacb; /* Light content text */
.dbg-classic-stackframe-details-url {
color: var(--theme-content-color1);
}
.theme-light .dbg-classic-stackframe-details-url {
color: #667380; /* Dark grey content text */
.dbg-classic-stackframe-details-sep {
color: var(--theme-body-color-alt)
}
.theme-dark .dbg-classic-stackframe-details-sep {
color: #b6babf; /* Grey foreground text */
}
.theme-light .dbg-classic-stackframe-details-sep {
color: #585959; /* Grey foreground text */
}
.theme-dark .dbg-classic-stackframe-details-line {
color: #5e88b0; /* Highlight blue grey */
}
.theme-light .dbg-classic-stackframe-details-line {
color: #5f88b0; /* Highlight blue grey */
.dbg-classic-stackframe-details-line {
color: var(--theme-highlight-bluegrey);
}
#callstack-list .selected label {
@ -252,7 +235,7 @@
/* Tracer dark theme */
.theme-dark .trace-item {
color: #f5f7fa; /* Light foreground text */
color: var(--theme-selection-color);
}
.theme-dark .trace-item.black-boxed {
@ -267,31 +250,30 @@
background-color: rgba(29,79,115,.6); /* Select highlight blue at 60% alpha */
}
.theme-dark .trace-call {
color: #46afe3; /* Highlight blue */
.trace-call {
color: var(--theme-highlight-blue);
}
.theme-dark .trace-return,
.theme-dark .trace-yield {
color: #70bf53; /* Highlight green */
.trace-return,
.trace-yield {
color: var(--theme-highlight-green);
}
.theme-dark .trace-throw {
color: #eb5368; /* Highlight red */
.trace-throw {
color: var(--theme-highlight-red);
}
.theme-dark .trace-param {
color: #a9bacb; /* Content text light */
.trace-param {
color: var(--theme-content-color1);
}
.theme-dark .trace-syntax {
color: #8fa1b2; /* Content text grey */
color: var(--theme-content-color2);
}
/* Tracer light theme */
.theme-light .trace-item {
color: #292e33; /* Dark foreground text */
color: var(--theme-content-color1);
}
.theme-light .trace-item.black-boxed {
@ -306,27 +288,6 @@
background-color: rgba(76,158,217,.6); /* Select highlight blue at 60% alpha */
}
.theme-light .trace-call {
color: #0088cc; /* Highlight blue */
}
.theme-light .trace-return,
.theme-light .trace-yield {
color: #2cbb0f; /* Highlight green */
}
.theme-light .trace-throw {
color: #ed2655; /* Highlight red */
}
.theme-light .trace-param {
color: #667380; /* Content text dark grey */
}
.theme-light .trace-syntax {
color: #8fa1b2; /* Content text grey */
}
#tracer-traces .selected label {
/* Text inside a selected item should not be custom colored. */
color: inherit !important;
@ -371,12 +332,8 @@
cursor: pointer;
}
.theme-dark .dbg-expression-button {
color: #46afe3; /* Blue highlight color */
}
.theme-light .dbg-expression-button {
color: #0088cc; /* Blue highlight color */
.dbg-expression-button {
color: var(--theme-highlight-blue);
}
/* Event listeners view */
@ -385,28 +342,16 @@
font-weight: 600;
}
.theme-dark .dbg-event-listener-location {
color: #a9bacb; /* Light content text */
.dbg-event-listener-location {
color: var(--theme-content-color1);
}
.theme-light .dbg-event-listener-location {
color: #667380; /* Dark grey content text */
.dbg-event-listener-separator {
color: var(--theme-body-color-alt);
}
.theme-dark .dbg-event-listener-separator {
color: #b6babf; /* Grey foreground text */
}
.theme-light .dbg-event-listener-separator {
color: #585959; /* Grey foreground text */
}
.theme-dark .dbg-event-listener-targets {
color: #5e88b0; /* Highlight blue grey */
}
.theme-light .dbg-event-listener-targets {
color: #5f88b0; /* Highlight blue grey */
.dbg-event-listener-targets {
color: var(--theme-highlight-bluegrey);
}
.theme-dark #event-listeners .selected {
@ -475,27 +420,19 @@
}
.theme-dark .results-panel-item-label {
color: #f5f7fa; /* Light foreground text */
color: var(--theme-selection-color);
}
.theme-light .results-panel-item-label {
color: #18191a; /* Dark foreground text */
color: var(--theme-body-color);
}
.theme-dark .results-panel-item-label-before {
color: #5e88b0; /* Highlight blue grey */
.results-panel-item-label-before {
color: var(--theme-highlight-bluegrey);
}
.theme-light .results-panel-item-label-before {
color: #5f88b0; /* Highlight blue grey */
}
.theme-dark .results-panel-item-label-below {
color: #5f7387; /* Dark grey content text */
}
.theme-light .results-panel-item-label-below {
color: #667380; /* Dark grey content text */
.results-panel-item-label-below {
color: var(--theme-content-color3);
}
#results-panel .selected label {
@ -551,22 +488,20 @@
transform: scale(1.75, 1.75);
}
.theme-dark .dbg-source-results:not(.selected):hover {
background-color: #181d20; /* Sidebar background */
.dbg-source-results:not(.selected):hover {
background-color: var(--theme-sidebar-background);
}
.theme-light .dbg-source-results:not(.selected):hover {
background-color: #f7f7f7; /* Sidebar background */
.dbg-results-header {
background-color: var(--theme-tab-toolbar-background);
}
.theme-dark .dbg-results-header {
background-color: #252c33; /* Tab toolbar */
color: #a9bacb; /* Light content text */
color: var(--theme-content-color1);
}
.theme-light .dbg-results-header {
background-color: #ebeced; /* Tab toolbar */
color: #667380; /* Dark grey content text */
color: var(--theme-content-color3);
}
.theme-dark .dbg-search-result:hover {
@ -577,38 +512,25 @@
background-color: rgba(76,158,217,.2); /* Select highlight blue at 40% alpha */
}
.theme-dark .dbg-results-header-match-count {
color: #5f7387; /* Dark grey content text */
.dbg-results-header-match-count {
color: var(--theme-content-color3);
}
.theme-light .dbg-results-header-match-count {
color: #667380; /* Dark grey content text */
.dbg-results-line-number {
background-color: var(--theme-tab-toolbar-background);
color: var(--theme-body-color-alt);
}
.theme-dark .dbg-results-line-number {
background-color: #252c33; /* Tab toolbars */
color: #b6babf; /* Grey foreground text */
}
.theme-light .dbg-results-line-number {
background-color: #ebeced; /* Tab toolbars */
color: #585959; /* Grey foreground text */
}
.theme-dark .dbg-results-line-contents-string {
color: #b6babf; /* Grey foreground text */
}
.theme-light .dbg-results-line-contents-string {
color: #585959; /* Grey foreground text */
.dbg-results-line-contents-string {
color: var(--theme-body-color-alt);
}
.theme-dark .dbg-results-line-contents-string[match=true] {
color: #f5f7fa; /* Light foreground text */
color: var(--theme-selection-color);
}
.theme-light .dbg-results-line-contents-string[match=true] {
color: #18191a; /* Dark foreground text */
color: var(--theme-body-color);
}
/* Toolbar controls */

View File

@ -105,11 +105,6 @@
margin-bottom: 0;
}
.theme-dark .event-tooltip-attributes-box {
background-color: #B6BABF;
color: #343C45;
}
.event-tooltip-attributes-container {
display: flex;
flex-shrink: 0;
@ -124,6 +119,8 @@
border-radius: 3px;
padding: 2px;
-moz-margin-start: 5px;
background-color: var(--theme-body-color-alt);
color: var(--theme-toolbar-background);
}
.event-tooltip-attributes {
@ -131,8 +128,3 @@
font-size: 9px;
padding-top: 2px;
}
.theme-light .event-tooltip-attributes-box {
background-color: #585959;
color: #F0F1F2;
}

View File

@ -6,19 +6,47 @@
/* According to:
* https://bugzilla.mozilla.org/show_bug.cgi?id=715472#c17
*/
:root {
--theme-body-background: #fcfcfc;
--theme-sidebar-background: #f7f7f7;
--theme-contrast-background: #e6b064;
--theme-tab-toolbar-background: #ebeced;
--theme-toolbar-background: #f0f1f2;
--theme-selection-background: #4c9ed9;
--theme-selection-color: #f5f7fa;
--theme-splitter-color: #aaaaaa;
--theme-comment: hsl(90,2%,46%);
--theme-body-color: #18191a;
--theme-body-color-alt: #585959;
--theme-content-color1: #292e33;
--theme-content-color2: #8fa1b2;
--theme-content-color3: #667380;
--theme-highlight-green: hsl(72,100%,27%);
--theme-highlight-blue: hsl(208,56%,40%);
--theme-highlight-bluegrey: hsl(208,81%,21%);
--theme-highlight-purple: #5b5fff;
--theme-highlight-lightorange: #a18650;
--theme-highlight-orange: hsl(24,85%,39%);
--theme-highlight-red: #bf5656;
--theme-highlight-pink: #b82ee5;
}
.theme-body {
background: #fcfcfc; /* Background - Editor */
color: #18191a;
background: var(--theme-body-background);
color: var(--theme-body-color);
}
.theme-sidebar {
background: #f7f7f7; /* Background - Sidebars */
color: #18191a;
background: var(--theme-sidebar-background);
color: var(--theme-body-color);
}
::-moz-selection {
background-color: #4c9ed9;
color: #f5f7fa;
background-color: var(--theme-selection-background);
color: var(--theme-selection-color);
}
.theme-bg-darker {
@ -27,19 +55,19 @@
.theme-selected,
.CodeMirror-hint-active {
background-color: #4c9ed9;
color: #f5f7fa; /* Light foreground text */
background-color: var(--theme-selection-background);
color: var(--theme-selection-color);
}
.theme-bg-contrast,
.variable-or-property:not([overridden])[changed] { /* contrast bg color to attract attention on a container */
background: #E8B671; /* Background - Attention */
.variable-or-property:not([overridden])[changed] {
background: var(--theme-contrast-background);
}
.theme-link,
.cm-s-mozilla .cm-link,
.CodeMirror-Tern-type { /* blue */
color: hsl(208,56%,40%);
.CodeMirror-Tern-type {
color: var(--theme-highlight-blue);
}
/*
@ -47,8 +75,8 @@
* failures in debug builds.
*/
.theme-link:visited,
.cm-s-mozilla .cm-link:visited { /* blue */
color: hsl(208,56%,40%);
.cm-s-mozilla .cm-link:visited {
color: var(--theme-highlight-blue);
}
.theme-comment,
@ -56,17 +84,14 @@
.cm-s-mozilla .cm-hr,
.cm-s-mozilla .cm-comment,
.variable-or-property .token-undefined,
.variable-or-property .token-null { /* grey */
color: hsl(90,2%,46%);
}
.variable-or-property .token-null,
.CodeMirror-Tern-completion-unknown:before {
background-color: hsl(90,2%,46%);
color: var(--theme-comment);
}
.theme-gutter {
background-color: hsl(0,0%,90%);
color: #667380;
color: var(--theme-content-color3);
border-color: hsl(0,0%,65%);
}
@ -76,7 +101,7 @@
.cm-s-mozilla .cm-unused-line {
text-decoration: line-through;
text-decoration-color: #5f88b0;
text-decoration-color: var(--theme-highlight-bluegrey);
}
.cm-s-mozilla .cm-executed-line {
@ -87,8 +112,8 @@
.cm-s-mozilla .cm-number,
.variable-or-property .token-number,
.variable-or-property[return] > .title > .name,
.variable-or-property[scope] > .title > .name { /* green */
color: hsl(72,100%,27%);
.variable-or-property[scope] > .title > .name {
color: var(--theme-highlight-green);
}
.CodeMirror-Tern-completion-number:before {
@ -101,8 +126,8 @@
.cm-s-mozilla .cm-def,
.cm-s-mozilla .cm-property,
.cm-s-mozilla .cm-qualifier,
.variables-view-variable > .title > .name { /* blue */
color: hsl(208,56%,40%);
.variables-view-variable > .title > .name {
color: var(--theme-highlight-blue);
}
.CodeMirror-Tern-completion-object:before {
@ -113,30 +138,30 @@
.cm-s-mozilla .cm-variable,
.cm-s-mozilla .cm-tag,
.cm-s-mozilla .cm-header,
.variables-view-property > .title > .name { /* dark blue */
color: hsl(208,81%,21%);
.cm-s-mozilla .cm-bracket,
.variables-view-property > .title > .name {
color: var(--theme-highlight-bluegrey);
}
.CodeMirror-Tern-completion-array:before { /* dark blue */
background-color: hsl(208,81%,21%);
.CodeMirror-Tern-completion-array:before {
background-color: var(--theme-highlight-bluegrey);
}
.theme-fg-color4 { /* Orange */
color: hsl(24,85%,39%);
.theme-fg-color4 {
color: var(--theme-highlight-orange);
}
.theme-fg-color5,
.cm-s-mozilla .cm-bracket,
.cm-s-mozilla .cm-keyword { /* Yellow */
color: #a18650;
.cm-s-mozilla .cm-keyword {
color: var(--theme-highlight-lightorange);
}
.theme-fg-color6,
.cm-s-mozilla .cm-string,
.cm-s-mozilla .cm-string-2,
.variable-or-property .token-string,
.CodeMirror-Tern-farg { /* Orange */
color: hsl(24,85%,39%);
.CodeMirror-Tern-farg {
color: var(--theme-highlight-orange);
}
.CodeMirror-Tern-completion-string:before,
@ -150,8 +175,8 @@
.cm-s-mozilla .cm-error,
.variable-or-property .token-boolean,
.variable-or-property .token-domnode,
.variable-or-property[exception] > .title > .name { /* Red */
color: #bf5656;
.variable-or-property[exception] > .title > .name {
color: var(--theme-highlight-red);
}
.CodeMirror-Tern-completion-bool:before {
@ -170,9 +195,9 @@
.devtools-toolbar,
.devtools-sidebar-tabs > tabs,
.CodeMirror-dialog { /* General toolbar styling */
color: #585959;
background-color: #f0f1f2;
border-color: #aaa;
color: var(--theme-body-color-alt);
background-color: var(--theme-toolbar-background);
border-color: var(--theme-splitter-color);
}
.ruleview-colorswatch,
@ -195,8 +220,8 @@
.cm-s-mozilla .cm-variable-2,
.cm-s-mozilla .cm-variable-3,
.cm-s-mozilla .cm-operator,
.cm-s-mozilla .cm-special { /* theme-body color */
color: black;
.cm-s-mozilla .cm-special {
color: var(--theme-body-color);
}
.cm-s-mozilla .CodeMirror-lines .CodeMirror-cursor {
@ -247,12 +272,12 @@ div.CodeMirror span.eval-text {
}
.cm-s-mozilla .CodeMirror-linenumber { /* line number text */
color: #667380;
color: var(--theme-content-color3);
}
.cm-s-mozilla .CodeMirror-gutters { /* vertical line next to line numbers */
border-right-color: #a6a6a6;
background-color: #f7f7f7;
border-right-color: var(--theme-splitter-color);
background-color: var(--theme-sidebar-background);
}
.cm-s-markup-view pre {
@ -368,18 +393,18 @@ div.CodeMirror span.eval-text {
}
.devtools-horizontal-splitter {
border-bottom: 1px solid #aaa;
border-bottom: 1px solid var(--theme-splitter-color);
}
.devtools-side-splitter {
-moz-border-end: 1px solid #aaa;
border-color: #aaa; /* Needed for responsive container at low width. */
-moz-border-end: 1px solid var(--theme-splitter-color);
border-color: var(--theme-splitter-color); /* Needed for responsive container at low width. */
}
.CodeMirror-hints,
.CodeMirror-Tern-tooltip {
box-shadow: 0 0 4px rgba(128, 128, 128, .5);
background-color: #f7f7f7;
background-color: var(--theme-sidebar-background);
}

View File

@ -27,7 +27,7 @@
.theme-selected ~ .editor .theme-fg-color5,
.theme-selected ~ .editor .theme-fg-color6,
.theme-selected ~ .editor .theme-fg-color7 {
color: #f5f7fa; /* Light foreground text */
color: var(--theme-selection-color);
}
/* In case a node isn't displayed in the page, we fade the syntax highlighting */
@ -53,14 +53,9 @@
overflow: hidden;
}
.theme-dark #previewbar {
background: #252c33; /* Tab Toolbar */
border-color: #000; /* Splitters */
}
.theme-light #previewbar {
background: #ebeced; /* Tab Toolbar */
border-color: #aaa; /* Splitters */
#previewbar {
background: var(--theme-tab-toolbar-background);
border-color: var(--theme-splitter-color);
}
#preview {
@ -99,12 +94,7 @@
-moz-user-select: none;
}
.theme-dark .markupview-events {
background-color: #b6babf;
color: #14171a;
}
.theme-light .markupview-events {
background-color: #585959;
color: #fcfcfc;
.markupview-events {
background-color: var(--theme-body-color-alt);
color: var(--theme-body-background);
}

View File

@ -9,14 +9,6 @@
font-size: 120%;
}
.theme-dark #requests-menu-empty-notice {
color: #f5f7fa; /* Light foreground text */
}
.theme-light #requests-menu-empty-notice {
color: #585959; /* Grey foreground text */
}
#notice-perf-message {
margin-top: 2px;
}
@ -288,30 +280,30 @@ label.requests-menu-status-code {
}
.theme-dark .requests-menu-timings-division[division-scale=millisecond] {
-moz-border-start-color: #f5f7fa !important; /* Light foreground text */
-moz-border-start-color: var(--theme-selection-color) !important;
}
.theme-light .requests-menu-timings-division[division-scale=millisecond] {
-moz-border-start-color: #585959 !important; /* Grey foreground text */
-moz-border-start-color: var(--theme-body-color-alt) !important;
}
.theme-dark .requests-menu-timings-division[division-scale=second] {
-moz-border-start-color: #f5f7fa !important; /* Light foreground text */
-moz-border-start-color: var(--theme-selection-color) !important;
font-weight: 600;
}
.theme-light .requests-menu-timings-division[division-scale=second] {
-moz-border-start-color: #585959 !important; /* Grey foreground text */
-moz-border-start-color: var(--theme-body-color-alt) !important;
font-weight: 600;
}
.theme-dark .requests-menu-timings-division[division-scale=minute] {
-moz-border-start-color: #f5f7fa !important; /* Light foreground text */
-moz-border-start-color: var(--theme-selection-color) !important;
font-weight: 600;
}
.theme-light .requests-menu-timings-division[division-scale=minute] {
-moz-border-start-color: #585959 !important; /* Grey foreground text */
-moz-border-start-color: var(--theme-body-color-alt) !important;
font-weight: 600;
}
@ -449,8 +441,8 @@ label.requests-menu-status-code {
/* Network request details tabpanels */
.theme-dark .tabpanel-content {
background-color: #343c45; /* Toolbars */
color: #f5f7fa; /* Light foreground text */
background-color: var(--theme-toolbar-background);
color: var(--theme-selection-color);
}
/* Summary tabpanel */
@ -499,16 +491,8 @@ label.requests-menu-status-code {
#response-content-info-header {
margin: 0;
padding: 3px 8px;
}
.theme-dark #response-content-info-header {
background-color: #eb5368; /* Red highlight */
color: #f5f7fa; /* Light foreground text */
}
.theme-light #response-content-info-header {
background-color: #ed2655; /* Red highlight */
color: #f5f7fa; /* Light foreground text */
background-color: var(--theme-highlight-red);
color: var(--theme-selection-color);
}
#response-content-image-box {
@ -572,13 +556,13 @@ label.requests-menu-status-code {
.theme-dark #requests-menu-footer {
border-top: 1px solid @table_itemDarkStartBorder@;
box-shadow: 0 1px 0 @table_itemDarkEndBorder@ inset;
background-color: #343c45; /* Toolbars */
background-color: var(--theme-toolbar-background);
}
.theme-light #requests-menu-footer {
border-top: 1px solid @table_itemLightStartBorder@;
box-shadow: 0 1px 0 @table_itemLightEndBorder@ inset;
background-color: #f0f1f2; /* Toolbars */
background-color: var(--theme-toolbar-background);
}
.requests-menu-footer-button,
@ -591,12 +575,12 @@ label.requests-menu-status-code {
.theme-dark .requests-menu-footer-button,
.theme-dark .requests-menu-footer-label {
color: #f5f7fa; /* Light foreground text */
color: var(--theme-selection-color);
}
.theme-light .requests-menu-footer-button,
.theme-light .requests-menu-footer-label {
color: #18191a; /* Dark foreground text */
color: var(--theme-body-color);
}
.requests-menu-footer-spacer {
@ -696,12 +680,8 @@ label.requests-menu-status-code {
min-height: 1px;
}
.theme-dark #network-statistics-charts {
background-color: #343c45; /* Toolbars */
}
.theme-light #network-statistics-charts {
background-color: #f0f1f2; /* Toolbars */
#network-statistics-charts {
background-color: var(--theme-toolbar-background);
}
#network-statistics-charts .pie-chart-container {
@ -714,84 +694,44 @@ label.requests-menu-status-code {
-moz-margin-end: 3vw;
}
.theme-dark .chart-colored-blob[name=html] {
fill: #5e88b0; /* Blue-Grey highlight */
background: #5e88b0;
.chart-colored-blob[name=html] {
fill: var(--theme-highlight-bluegrey);
background: var(--theme-highlight-bluegrey);
}
.theme-light .chart-colored-blob[name=html] {
fill: #5f88b0; /* Blue-Grey highlight */
background: #5f88b0;
.chart-colored-blob[name=css] {
fill: var(--theme-highlight-blue);
background: var(--theme-highlight-blue);
}
.theme-dark .chart-colored-blob[name=css] {
fill: #46afe3; /* Blue highlight */
background: #46afe3;
.chart-colored-blob[name=js] {
fill: var(--theme-highlight-lightorange);
background: var(--theme-highlight-lightorange);
}
.theme-light .chart-colored-blob[name=css] {
fill: #0088cc; /* Blue highlight */
background: #0088cc;
.chart-colored-blob[name=xhr] {
fill: var(--theme-highlight-orange);
background: var(--theme-highlight-orange);
}
.theme-dark .chart-colored-blob[name=js] {
fill: #d99b28; /* Light Orange highlight */
background: #d99b28;
.chart-colored-blob[name=fonts] {
fill: var(--theme-highlight-purple);
background: var(--theme-highlight-purple);
}
.theme-light .chart-colored-blob[name=js] {
fill: #d97e00; /* Light Orange highlight */
background: #d97e00;
.chart-colored-blob[name=images] {
fill: var(--theme-highlight-pink);
background: var(--theme-highlight-pink);
}
.theme-dark .chart-colored-blob[name=xhr] {
fill: #d96629; /* Orange highlight */
background: #d96629;
.chart-colored-blob[name=media] {
fill: var(--theme-highlight-green);
background: var(--theme-highlight-green);
}
.theme-light .chart-colored-blob[name=xhr] {
fill: #f13c00; /* Orange highlight */
background: #f13c00;
}
.theme-dark .chart-colored-blob[name=fonts] {
fill: #6b7abb; /* Purple highlight */
background: #6b7abb;
}
.theme-light .chart-colored-blob[name=fonts] {
fill: #5b5fff; /* Purple highlight */
background: #5b5fff;
}
.theme-dark .chart-colored-blob[name=images] {
fill: #df80ff; /* Pink highlight */
background: #df80ff;
}
.theme-light .chart-colored-blob[name=images] {
fill: #b82ee5; /* Pink highlight */
background: #b82ee5;
}
.theme-dark .chart-colored-blob[name=media] {
fill: #70bf53; /* Green highlight */
background: #70bf53;
}
.theme-light .chart-colored-blob[name=media] {
fill: #2cbb0f; /* Green highlight */
background: #2cbb0f;
}
.theme-dark .chart-colored-blob[name=flash] {
fill: #eb5368; /* Red highlight */
background: #eb5368;
}
.theme-light .chart-colored-blob[name=flash] {
fill: #ed2655; /* Red highlight */
background: #ed2655;
.chart-colored-blob[name=flash] {
fill: var(--theme-highlight-red);
background: var(--theme-highlight-red);
}
.table-chart-row-label[name=cached] {

View File

@ -8,16 +8,8 @@
.notice-container {
margin-top: -50vh;
font-size: 120%;
}
.theme-dark .notice-container {
background: #343c45; /* Toolbars */
color: #f5f7fa; /* Light foreground text */
}
.theme-light .notice-container {
background: #f0f1f2; /* Toolbars */
color: #585959; /* Grey foreground text */
background-color: var(--theme-toolbar-background);
color: var(--theme-body-color-alt);
}
#empty-notice button,
@ -55,14 +47,9 @@
-moz-border-end-width: 1px;
}
.theme-dark #recordings-pane > tabs,
.theme-dark #recordings-pane .devtools-toolbar {
-moz-border-end-color: #000; /* Splitters */
}
.theme-light #recordings-pane > tabs,
.theme-light #recordings-pane .devtools-toolbar {
-moz-border-end-color: #aaa; /* Splitters */
#recordings-pane > tabs,
#recordings-pane .devtools-toolbar {
-moz-border-end-color: var(--theme-splitter-color);
}
#record-button {
@ -97,14 +84,9 @@
cursor: pointer;
}
.theme-dark .recording-item-duration,
.theme-dark .recording-item-save {
color: #b6babf; /* Foreground (Text) - Grey */
}
.theme-light .recording-item-duration,
.theme-light .recording-item-save {
color: #585959; /* Foreground (Text) - Grey */
.recording-item-duration,
.recording-item-save {
color: var(--theme-body-color-alt);
}
#recordings-list .selected label {
@ -132,12 +114,8 @@
transition-property: opacity, transform;
}
.theme-dark #profile-content tab {
color: #8fa1b2; /* Body Text */
}
.theme-light #profile-content tab {
color: #18191a; /* Body Text */
#profile-content tab {
color: var(--theme-body-color);
}
#profile-content tab:not([selected]) {
@ -149,14 +127,9 @@
transform: translateY(100%);
}
.theme-dark #profile-content tab {
#profile-content tab {
-moz-appearance: none;
-moz-border-end: 1px solid #000; /* Splitters */
}
.theme-light #profile-content tab {
-moz-appearance: none;
-moz-border-end: 1px solid #aaa; /* Splitters */
-moz-border-end: 1px solid var(--theme-splitter-color);
}
.theme-dark #profile-content tab:hover {
@ -167,14 +140,9 @@
background-color: rgba(255,255,255,0.8);
}
.theme-dark #profile-content tab[selected] {
background-color: #1d4f73; /* Select Highlight Blue */
color: #f5f7fa; /* Light foreground text */
}
.theme-light #profile-content tab[selected] {
background-color: #4c9ed9; /* Select Highlight Blue */
color: #f5f7fa; /* Light foreground text */
#profile-content tab[selected] {
background-color: var(--theme-selection-background);
color: var(--theme-selection-color);
}
#profile-content tabpanel {
@ -229,12 +197,8 @@
/* Profile call tree */
.theme-dark .call-tree-headers-container {
border-top: 1px solid #000;
}
.theme-light .call-tree-headers-container {
border-top: 1px solid #aaa;
.call-tree-headers-container {
border-top: 1px solid var(--theme-splitter-color);
}
.call-tree-cells-container {
@ -276,6 +240,7 @@
-moz-box-align: center;
overflow: hidden;
padding: 1px 4px;
color: var(--theme-body-color);
}
.call-tree-header:not(:last-child),
@ -286,13 +251,11 @@
.theme-dark .call-tree-header,
.theme-dark .call-tree-cell {
-moz-border-end-color: rgba(255,255,255,0.15);
color: #8fa1b2; /* Body Text */
}
.theme-light .call-tree-header,
.theme-light .call-tree-cell {
-moz-border-end-color: rgba(0,0,0,0.15);
color: #18191a; /* Body Text */
}
.call-tree-header:not(:last-child) {
@ -303,12 +266,8 @@
text-align: end;
}
.theme-dark .call-tree-header {
background-color: #252c33; /* Tab Toolbar */
}
.theme-light .call-tree-header {
background-color: #ebeced; /* Tab Toolbar */
.call-tree-header {
background-color: var(--theme-tab-toolbar-background);
}
.theme-dark .call-tree-item:last-child:not(:focus) {
@ -335,16 +294,12 @@
background-color: rgba(76,158,217,0.2);
}
.theme-dark .call-tree-item:focus {
background-color: #1d4f73; /* Select Highlight Blue */
}
.theme-light .call-tree-item:focus {
background-color: #4c9ed9; /* Select Highlight Blue */
.call-tree-item:focus {
background-color: var(--theme-selection-background);
}
.call-tree-item:focus label {
color: #f5f7fa !important; /* Light foreground text */
color: var(--theme-selection-color) !important;
}
.theme-dark .call-tree-item:focus .call-tree-cell {
@ -371,33 +326,19 @@
text-decoration: underline;
}
.theme-dark .call-tree-url {
color: #46afe3;
.call-tree-url {
color: var(--theme-highlight-blue);
}
.theme-light .call-tree-url {
color: #0088cc;
}
.theme-dark .call-tree-line {
color: #d96629;
}
.theme-light .call-tree-line {
color: #f13c00;
.call-tree-line {
color: var(--theme-highlight-orange);
}
.call-tree-host {
-moz-margin-start: 8px !important;
font-size: 90%;
}
.theme-dark .call-tree-host {
color: #8fa1b2;
}
.theme-light .call-tree-host {
color: #8fa1b2;
color: var(--theme-content-color2);
}
.call-tree-url[value=""],

View File

@ -51,12 +51,8 @@
}
/* User agent styles are not editable, display them differently */
.theme-light .ruleview-rule[uneditable=true] {
background: #ebeced; /* Tab Toolbar */
}
.theme-dark .ruleview-rule[uneditable=true] {
background: #252c33; /* Tab Toolbar */
.ruleview-rule[uneditable=true] {
background: var(--theme-tab-toolbar-background);
}
.ruleview-rule[uneditable=true] :focus {
@ -64,7 +60,7 @@
}
.ruleview-rule[uneditable=true] .theme-link {
color: #5f88b0; /* Blue - Grey */
color: var(--theme-highlight-bluegrey);
}
.ruleview-rule[uneditable=true] .ruleview-enableproperty {
@ -198,7 +194,7 @@
}
.theme-light .ruleview-overridden {
text-decoration-color: #667380; /* Content (Text) - Dark Grey */
text-decoration-color: var(--theme-content-color3);
}
.styleinspector-propertyeditor {
@ -215,12 +211,8 @@
vertical-align: middle;
}
.theme-dark .ruleview-property[dirty] {
border-left-color: #70bf53; /* Green */
}
.theme-light .ruleview-property[dirty] {
border-left-color: #2cbb0f; /* Green */
.ruleview-property[dirty] {
border-left-color: var(--theme-highlight-green);
}
.ruleview-namecontainer > .ruleview-propertyname,

View File

@ -6,16 +6,8 @@
.notice-container {
margin-top: -50vh;
}
.theme-dark .notice-container {
background-color: #343c45; /* Toolbars */
color: #f5f7fa; /* Light foreground text */
}
.theme-light .notice-container {
background-color: #f0f1f2; /* Toolbars */
color: #585959; /* Grey foreground text */
background-color: var(--theme-toolbar-background);
color: var(--theme-body-color-alt);
}
#reload-notice {
@ -99,26 +91,15 @@
border-top: 1px solid;
}
.theme-dark .editor-label {
background: #343c45; /* Dark toolbars */
border-color: #000; /* Match the splitter color. */
color: #f5f7fa; /* Light foreground text */
.editor-label {
background: var(--theme-toolbar-background);
border-color: var(--theme-splitter-color);
color: var(--theme-body-color-alt);
}
.theme-light .editor-label {
background: #f0f1f2; /* Light toolbars */
border-color: #aaa; /* Match the splitter color. */
color: #585959; /* Grey foreground text */
}
.theme-dark .editor-label[selected] {
background-color: #1d4f73; /* Select Highlight Blue */
color: #f5f7fa; /* Light foreground text */
}
.theme-light .editor-label[selected] {
background-color: #4c9ed9; /* Select Highlight Blue */
color: #f5f7fa; /* Light foreground text */
.editor-label[selected] {
background-color: var(--theme-selection-background);
color: var(--theme-selection-color);
}
/* Responsive sidebar */

View File

@ -18,7 +18,7 @@
}
.theme-dark .splitview-nav-container {
background-color: #343c45; /* Toolbars */
background-color: var(--theme-toolbar-background);
}
.splitview-nav {

View File

@ -14,24 +14,24 @@
.theme-dark .stylesheet-title,
.theme-dark .stylesheet-name {
color: #f5f7fa;
color: var(--theme-selection-color);
}
.theme-dark .stylesheet-rule-count,
.theme-dark .stylesheet-linked-file,
.theme-dark .stylesheet-saveButton {
color: #b6babf;
color: var(--theme-body-color-alt);
}
.theme-light .stylesheet-title,
.theme-light .stylesheet-name {
color: #585959;
color: var(--theme-body-color-alt);
}
.theme-light .stylesheet-rule-count,
.theme-light .stylesheet-linked-file,
.theme-light .stylesheet-saveButton {
color: #18191a;
color: var(--theme-body-color);
}
.stylesheet-saveButton {
@ -44,7 +44,7 @@
.theme-light .splitview-active .stylesheet-rule-count,
.theme-light .splitview-active .stylesheet-linked-file,
.theme-light .splitview-active .stylesheet-saveButton {
color: #f5f7fa;
color: var(--theme-selection-color);
}
.splitview-nav:focus {
@ -205,12 +205,8 @@ h3 {
}
}
.theme-light .csscoverage-report {
background-color: #f0f1f2; /* Toolbars */
}
.theme-dark .csscoverage-report {
background-color: #343c45; /* Toolbars */
.csscoverage-report {
background-color: var(--theme-toolbar-background);
}
.csscoverage-report-container {
@ -274,34 +270,19 @@ h3 {
-moz-border-start: none;
}
.theme-dark .chart-colored-blob[name="Used Preload"] {
fill: #df80ff; /* Pink highlight */
background: #df80ff;
.chart-colored-blob[name="Used Preload"] {
fill: var(--theme-highlight-pink);
background: var(--theme-highlight-pink);;
}
.theme-light .chart-colored-blob[name="Used Preload"] {
fill: #b82ee5; /* Pink highlight */
background: #b82ee5;
.chart-colored-blob[name=Used] {
fill: var(--theme-highlight-green);
background: var(--theme-highlight-green);
}
.theme-dark .chart-colored-blob[name=Used] {
fill: #70bf53; /* Green highlight */
background: #70bf53;
}
.theme-light .chart-colored-blob[name=Used] {
fill: #2cbb0f; /* Green highlight */
background: #2cbb0f;
}
.theme-dark .chart-colored-blob[name=Unused] {
fill: #d99b28; /* Light Orange highlight */
background: #d99b28;
}
.theme-light .chart-colored-blob[name=Unused] {
fill: #d97e00; /* Light Orange highlight */
background: #d97e00;
.chart-colored-blob[name=Unused] {
fill: var(--theme-highlight-lightorange);
background: var(--theme-highlight-lightorange);
}
/* Undo 'largest' customization */

View File

@ -57,6 +57,8 @@
margin: 2px 3px;
color: inherit;
transition: background 0.05s ease-in-out;
color: var(--theme-content-color1);
background-color: var(--theme-toolbar-background);
}
.devtools-menulist:-moz-focusring,
@ -141,14 +143,10 @@
.theme-dark .devtools-menulist,
.theme-dark .devtools-toolbarbutton {
color: #a9bacb; /* Body text - high contrast */
background-color: #343c45; /* Toolbars */
border-color: rgba(0, 0, 0, .4); /* Splitters */
}
.theme-light .devtools-menulist,
.theme-light .devtools-toolbarbutton {
color: #292e33; /* Body text - high contrast */
background-color: #f0f1f2; /* Toolbars */
border-color: rgba(170, 170, 170, .5); /* Splitters */
}
@ -189,7 +187,7 @@
.theme-dark .devtools-toolbarbutton[checked=true],
.theme-dark #toolbox-buttons .devtools-toolbarbutton[text-as-image][checked] {
background: rgba(29, 79, 115, .7); /* Select highlight blue */
color: #f5f7fa;
color: var(--theme-selection-color);
}
.theme-light .devtools-toolbarbutton[checked=true],
@ -203,7 +201,7 @@
.theme-dark .devtools-toolbarbutton[open=true]:hover:active,
.theme-dark .devtools-toolbarbutton[checked=true]:hover {
background: rgba(29, 79, 115, .8); /* Select highlight blue */
color: #f5f7fa;
color: var(--theme-selection-color);
}
.theme-light .devtools-menulist[open=true],
@ -259,16 +257,7 @@
border-radius: 2px;
%endif
padding: 4px 6px;
}
.theme-dark .devtools-textinput,
.theme-dark .devtools-searchinput {
border-color: rgb(88, 94, 101);
}
.theme-light .devtools-textinput,
.theme-light .devtools-searchinput {
border-color: #aaa; /* Match the splitter color */
border-color: var(--theme-splitter-color);
}
.devtools-searchinput {
@ -310,7 +299,7 @@
}
.devtools-no-search-result {
border-color: #eb5368 !important;
border-color: var(--theme-highlight-red) !important;
}
/* Close button */
@ -349,7 +338,6 @@
}
/* In-tools sidebar */
.devtools-sidebar-tabs {
-moz-appearance: none;
margin: 0;
@ -363,8 +351,8 @@
}
.theme-light .devtools-sidebar-tabs > tabpanels {
background: #f7f7f7;
color: #18191a;
background: var(--theme-sidebar-background);
color: var(--theme-body-color);
}
.devtools-sidebar-tabs > tabs {
@ -434,7 +422,7 @@
.theme-dark .devtools-sidebar-tabs > tabs > tab[selected],
.theme-dark .devtools-sidebar-tabs > tabs > tab[selected]:hover:active {
color: #f5f7fa;
color: var(--theme-selection-color);
background: #1d4f73;
border-image: @solidSeparatorDark@ 1 1;
}
@ -464,7 +452,7 @@
.theme-light .devtools-sidebar-tabs > tabs > tab[selected],
.theme-light .devtools-sidebar-tabs > tabs > tab[selected]:hover:active {
color: #f5f7fa;
color: var(--theme-selection-color);
background: #4c9ed9;
border-image: @solidSeparatorLight@;
}
@ -663,18 +651,16 @@
border: 0px solid;
border-bottom-width: 1px;
padding: 0;
background: var(--theme-tab-toolbar-background);
border-bottom-color: var(--theme-splitter-color);
}
.theme-light .devtools-tabbar {
box-shadow: 0 -2px 0 rgba(170,170,170,.1) inset;
background: #ebeced;
border-bottom-color: #aaa;
}
.theme-dark .devtools-tabbar {
box-shadow: 0 -2px 0 rgba(0,0,0,.1) inset;
background: #252c33;
border-bottom-color: #000;
}
#toolbox-tabs {
@ -697,13 +683,13 @@
}
.theme-dark .devtools-tab {
color: #b6babf;
color: var(--theme-body-color-alt);
border-color: #42484f;
}
.theme-light .devtools-tab {
color: #18191a;
border-color: #aaa;
color: var(--theme-body-color);
border-color: var(--theme-splitter-color);
}
.theme-dark .devtools-tab:hover {
@ -717,7 +703,7 @@
.theme-dark .devtools-tab:hover:active {
background-color: hsla(206,37%,4%,.4);
color: #f5f7fa;
color: var(--theme-selection-color);
}
.theme-light .devtools-tab:hover:active {
@ -755,17 +741,18 @@
opacity: 1;
}
.devtools-tabbar .devtools-tab[selected] {
color: var(--theme-selection-color);
background-color: var(--theme-selection-background);
}
.theme-dark .devtools-tabbar .devtools-tab[selected] {
color: #f5f7fa;
background-color: #1a4666;
box-shadow: 0 2px 0 #d7f1ff inset,
0 8px 3px -5px #2b82bf inset,
0 -2px 0 rgba(0,0,0,.2) inset;
}
.theme-light .devtools-tabbar .devtools-tab[selected] {
color: #f5f7fa;
background-color: #4c9ed9;
box-shadow: 0 2px 0 #d7f1ff inset,
0 8px 3px -5px #2b82bf inset,
0 -2px 0 rgba(0,0,0,.06) inset;

View File

@ -5,16 +5,8 @@
/* Reload and waiting notices */
.notice-container {
margin-top: -50vh;
}
.theme-dark .notice-container {
background-color: #343c45; /* Toolbars */
color: #f5f7fa; /* Light foreground text */
}
.theme-light .notice-container {
background-color: #f0f1f2; /* Toolbars */
color: #585959; /* Grey foreground text */
background-color: var(--theme-toolbar-background);
color: var(--theme-body-color-alt);
}
#reload-notice {
@ -75,7 +67,7 @@ g.edgePath.param-connection {
fill: #fcfcfc; /* Background - Editor */
}
.theme-dark g.edgeLabel tspan {
fill: #b6babf; /* Grey foreground text */
fill: var(--theme-body-color-alt);
}
.theme-light g.edgeLabel tspan {
fill: #585959; /* Grey foreground text */
@ -87,22 +79,13 @@ g.edgePath.param-connection {
cursor: pointer;
}
.theme-dark .nodes rect {
stroke: #252c33; /* Tab toolbar */
fill: #343c45; /* Toolbars */
.nodes rect {
stroke: var(--theme-tab-toolbar-background);
fill: var(--theme-toolbar-background);
}
.theme-light .nodes rect {
stroke: #ebeced; /* Tab toolbar */
fill: #f0f1f2; /* Toolbar */
}
.theme-dark .nodes g.selected rect {
fill: #1d4f73; /* Select Highlight Blue */
}
.theme-light .nodes g.selected rect {
fill: #4c9ed9; /* Select Highlight Blue */
.nodes g.selected rect {
fill: var(--theme-selection-background);
}
/* Text in nodes and edges */
@ -113,14 +96,12 @@ text {
font-size: 14px;
}
.theme-dark text {
fill: #b6babf; /* Grey foreground text */
}
.theme-light text {
fill: #585959; /* Grey foreground text */
text {
fill: var(--theme-body-color-alt);
}
.theme-light g.selected text {
fill: #f0f1f2; /* Toolbars */
fill: var(--theme-toolbar-background);
}
.nodes text {

View File

@ -160,12 +160,8 @@ a {
display: none;
}
.theme-dark #output-container.hideTimestamps > .message > .indent {
background-color: #14171a; /* .theme-body */
}
.theme-light #output-container.hideTimestamps > .message > .indent {
background-color: #fcfcfc; /* .theme-body */
#output-container.hideTimestamps > .message > .indent {
background-color: var(--theme-body-background);
}
.filtered-by-type,
@ -219,12 +215,8 @@ a {
background-color: rgba(235, 83, 104, 0.17);
}
.theme-dark .console-string {
color: #d99b28;
}
.theme-light .console-string {
color: hsl(24,85%,39%);
.console-string {
color: var(--theme-highlight-lightorange);
}
.theme-selected .console-string,
@ -499,22 +491,21 @@ a {
background-position: -16px 0;
}
/* Replace these values with CSS variables as available */
.theme-dark .jsterm-input-container {
background-color: #252c33; /* tabToolbarBackgroundColor */
border-color: #14171a; /* mainBackgroundColor */
.jsterm-input-container {
background-color: var(--theme-tab-toolbar-background);
border-color: var(--theme-body-background);
}
.theme-dark .jsterm-input-node {
color: #a9bacb; /* textColor */
.jsterm-input-node {
color: var(--theme-content-color1);
}
.theme-dark .jsterm-complete-node {
color: #5c6773; /* commentColor */
.jsterm-complete-node {
color: var(--theme-comment);
}
.theme-dark .navigation-marker .url {
background: #14171a; /* mainBackgroundColor */
.navigation-marker .url {
background: var(--theme-body-background);
}
.theme-dark .inlined-variables-view iframe {
@ -526,20 +517,13 @@ a {
}
.theme-light .jsterm-input-container {
background-color: #fff; /* mainBackgroundColor */
/* For light theme use a white background for the input - it looks better
than off-white */
background-color: #fff;
border-color: ThreeDShadow;
}
.theme-light .jsterm-input-node {
color: black; /* textColor */
}
.theme-light .jsterm-complete-node {
color: hsl(90,2%,46%); /* commentColor */
}
.theme-light .navigation-marker .url {
background: #fff; /* mainBackgroundColor */
background: #fff;
}
.theme-light .inlined-variables-view iframe {

View File

@ -122,14 +122,14 @@
.scrollbutton-down:-moz-locale-dir(rtl) {
border-right: solid 1px rgba(255, 255, 255, .1);
border-left: solid 1px transparent;
box-shadow: 3px 0px 3px -3px #181d20;
box-shadow: 3px 0px 3px -3px var(--theme-sidebar-background);
}
.scrollbutton-down:-moz-locale-dir(ltr),
.scrollbutton-up:-moz-locale-dir(rtl) {
border-right: solid 1px transparent;
border-left: solid 1px rgba(255, 255, 255, .1);
box-shadow: -3px 0px 3px -3px #181d20;
box-shadow: -3px 0px 3px -3px var(--theme-sidebar-background);
}
.scrollbutton-up[disabled],
@ -161,24 +161,14 @@
overflow: hidden;
}
.theme-dark #breadcrumb-separator-before,
.theme-dark #breadcrumb-separator-after:after {
background: #1d4f73; /* Select Highlight Blue */
#breadcrumb-separator-before,
#breadcrumb-separator-after:after {
background: var(--theme-selection-background);
}
.theme-dark #breadcrumb-separator-after,
.theme-dark #breadcrumb-separator-before:after {
background: #343c45; /* Toolbars */
}
.theme-light #breadcrumb-separator-before,
.theme-light #breadcrumb-separator-after:after {
background: #4c9ed9; /* Select Highlight Blue */
}
.theme-light #breadcrumb-separator-after,
.theme-light #breadcrumb-separator-before:after {
background: #f0f1f2; /* Toolbars */
#breadcrumb-separator-after,
#breadcrumb-separator-before:after {
background: var(--theme-toolbar-background);
}
/* This chevron arrow cannot be replicated easily in CSS, so we are using
@ -231,12 +221,8 @@
background: -moz-element(#breadcrumb-separator-before) no-repeat 0 0;
}
.theme-dark .breadcrumbs-widget-item[checked] {
background-color: #1d4f73; /* Select Highlight Blue */
}
.theme-light .breadcrumbs-widget-item[checked] {
background-color: #4c9ed9; /* Select Highlight Blue */
.breadcrumbs-widget-item[checked] {
background-color: var(--theme-selection-background);
}
.breadcrumbs-widget-item:first-child {
@ -270,39 +256,27 @@
.breadcrumbs-widget-item[checked] .breadcrumbs-widget-item-tag,
.breadcrumbs-widget-item[checked] .breadcrumbs-widget-item-pseudo-classes,
.breadcrumbs-widget-item[checked] .breadcrumbs-widget-item-classes {
color: #f5f7fa; /* Foreground (Text) - Light */
color: var(--theme-selection-color);
}
.theme-dark .breadcrumbs-widget-item {
color: #f5f7fa; /* Foreground (Text) - Light */
color: var(--theme-selection-color);
}
.theme-light .breadcrumbs-widget-item {
color: #18191a; /* Foreground (Text) - Dark */
color: var(--theme-body-color);
}
.theme-dark .breadcrumbs-widget-item-id {
color: #b6babf; /* Foreground (Text) - Grey */
.breadcrumbs-widget-item-id {
color: var(--theme-body-color-alt);
}
.theme-light .breadcrumbs-widget-item-id {
color: #585959; /* Foreground (Text) - Grey */
.breadcrumbs-widget-item-classes {
color: var(--theme-content-color1);
}
.theme-dark .breadcrumbs-widget-item-classes {
color: #a9bacb; /* Content (Text) - Light */
}
.theme-light .breadcrumbs-widget-item-classes {
color: #667380; /* Content (Text) - Dark Grey */
}
.theme-dark .breadcrumbs-widget-item-pseudo-classes {
color: #d99b28; /* Light Orange */
}
.theme-light .breadcrumbs-widget-item-pseudo-classes {
color: #d97e00; /* Light Orange */
.breadcrumbs-widget-item-pseudo-classes {
color: var(--theme-highlight-lightorange);
}
.theme-dark .breadcrumbs-widget-item:not([checked]):hover label {
@ -320,14 +294,9 @@
transform: translateZ(1px);
}
.theme-dark .simple-list-widget-item.selected {
background-color: #1d4f73; /* Select Highlight Blue */
color: #f5f7fa; /* Light foreground text */
}
.theme-light .simple-list-widget-item.selected {
background-color: #4c9ed9; /* Select Highlight Blue */
color: #f5f7fa; /* Light foreground text */
.simple-list-widget-item.selected {
background-color: var(--theme-selection-background);
color: var(--theme-selection-color);
}
.theme-dark .simple-list-widget-item:not(.selected):hover {
@ -343,14 +312,9 @@
padding: 4px 8px;
}
.theme-dark .simple-list-widget-empty-text,
.theme-dark .simple-list-widget-perma-text {
color: #b6babf; /* Light foreground text */
}
.theme-light .simple-list-widget-empty-text,
.theme-light .simple-list-widget-perma-text {
color: #585959; /* Grey foreground text */
.simple-list-widget-empty-text,
.simple-list-widget-perma-text {
color: var(--theme-body-color-alt);
}
/* FastListWidget */
@ -364,12 +328,8 @@
padding: 4px 8px;
}
.theme-dark .fast-list-widget-empty-text {
color: #b6babf; /* Light foreground text */
}
.theme-light .fast-list-widget-empty-text {
color: #585959; /* Grey foreground text */
.fast-list-widget-empty-text {
color: var(--theme-body-color-alt);
}
/* SideMenuWidget */
@ -381,11 +341,6 @@
/* SideMenuWidget container */
.theme-dark .side-menu-widget-container,
.theme-dark .side-menu-widget-empty-text {
background-color: #343c45; /* Toolbars */
}
.theme-dark .side-menu-widget-container:-moz-locale-dir(ltr),
.theme-dark .side-menu-widget-empty-text:-moz-locale-dir(ltr) {
box-shadow: inset -1px 0 0 @smw_marginDark@;
@ -420,16 +375,15 @@
.side-menu-widget-group-title {
padding: 4px;
background-color: var(--theme-tab-toolbar-background);
}
.theme-dark .side-menu-widget-group-title {
background-color: #252c33; /* Tab toolbar */
color: #a9bacb; /* Light content text */
color: var(--theme-content-color1);
}
.theme-light .side-menu-widget-group-title {
background-color: #ebeced; /* Tab toolbar */
color: #667380; /* Dark grey content text */
color: var(--theme-content-color3);
}
/* SideMenuWidget items */
@ -444,7 +398,7 @@
.theme-dark .side-menu-widget-item {
border-top: 1px solid @smw_itemDarkTopBorder@;
border-bottom: 1px solid @smw_itemDarkBottomBorder@;
color: #f5f7fa; /* Light foreground text */
color: var(--theme-selection-color);
}
.theme-dark .side-menu-widget-item:last-of-type {
@ -454,21 +408,16 @@
.theme-light .side-menu-widget-item {
border-top: 1px solid @smw_itemLightTopBorder@;
border-bottom: 1px solid @smw_itemLightBottomBorder@;
color: #18191a; /* Dark foreground text */
color: var(--theme-body-color);
}
.theme-light .side-menu-widget-item:last-of-type {
box-shadow: inset 0 -1px 0 @smw_itemLightTopBorder@;
}
.theme-dark .side-menu-widget-item.selected {
background-color: #1d4f73; /* Select Highlight Blue */
color: #f5f7fa; /* Light foreground text */
}
.theme-light .side-menu-widget-item.selected {
background-color: #4c9ed9; /* Select Highlight Blue */
color: #f5f7fa; /* Light foreground text */
.side-menu-widget-item.selected {
background-color: var(--theme-selection-background);
color: var(--theme-selection-color);
}
.side-menu-widget-item-arrow {
@ -542,22 +491,17 @@
.theme-dark .side-menu-widget-item.selected .side-menu-widget-item-other {
background-color: rgba(0,0,0,.2); /* Darken the selection by 20% */
color: #f5f7fa; /* Light foreground text */
color: var(--theme-selection-color);
}
.theme-light .side-menu-widget-item.selected .side-menu-widget-item-other {
background-color: rgba(255,255,255,.8); /* Lighten the selection by 20% */
color: #18191a; /* Dark foreground text */
color: var(--theme-body-color);
}
.theme-dark .side-menu-widget-item.selected .side-menu-widget-item-other.selected {
.side-menu-widget-item.selected .side-menu-widget-item-other.selected {
background-color: transparent;
color: #f5f7fa; /* Light foreground text */
}
.theme-light .side-menu-widget-item.selected .side-menu-widget-item-other.selected {
background-color: transparent;
color: #f5f7fa; /* Light foreground text */
color: var(--theme-selection-color);
}
/* SideMenuWidget checkboxes */
@ -574,20 +518,15 @@
/* SideMenuWidget misc */
.theme-dark .side-menu-widget-container,
.theme-dark .side-menu-widget-empty-text {
background-color: var(--theme-toolbar-background);
}
.side-menu-widget-empty-text {
padding: 4px 8px;
}
.theme-dark .side-menu-widget-empty-text {
background-color: #343c45; /* Toolbars */
color: #b6babf; /* Foreground (Text) - Grey */
}
.theme-light .side-menu-widget-empty-text {
background: #f7f7f7; /* Toolbars */
color: #585959; /* Grey foreground text */
}
/* VariablesView */
.variables-view-container {
@ -599,24 +538,14 @@
padding: 2px;
}
.theme-dark .variables-view-empty-notice {
color: #b6babf; /* Foreground (Text) - Grey */
.variables-view-empty-notice {
color: var(--theme-body-color-alt);
}
.theme-light .variables-view-empty-notice {
color: #585959; /* Grey foreground text */
}
.theme-dark .variables-view-scope:focus > .title,
.theme-dark .variable-or-property:focus > .title {
background-color: #1d4f73; /* Selection colors */
color: #f5f7fa;
}
.theme-light .variables-view-scope:focus > .title,
.theme-light .variable-or-property:focus > .title {
background-color: #4c9ed9; /* Selection colors */
color: #f5f7fa;
.variables-view-scope:focus > .title,
.variable-or-property:focus > .title {
background-color: var(--theme-selection-background);
color: var(--theme-selection-color);
}
.variables-view-scope > .title {
@ -1106,21 +1035,16 @@
}
.theme-dark .generic-chart-container {
color: #f5f7fa; /* Light foreground text */
color: var(--theme-selection-color);
}
.theme-light .generic-chart-container {
color: #585959; /* Grey foreground text */
color: var(--theme-body-color-alt);
}
.theme-dark .chart-colored-blob {
fill: #a9bacb; /* Light content text */
background: #a9bacb;
}
.theme-light .chart-colored-blob {
fill: #8fa1b2; /* Grey content text */
background: #8fa1b2;
.chart-colored-blob {
fill: var(--theme-content-color2);
background: var(--theme-content-color2);
}
/* Charts: Pie */
@ -1218,12 +1142,8 @@
padding-top: 6px;
}
.theme-dark .table-chart-totals {
border-top: 1px solid #b6babf; /* Grey foreground text */
}
.theme-light .table-chart-totals {
border-top: 1px solid #585959; /* Grey foreground text */
.table-chart-totals {
border-top: 1px solid var(--theme-body-color-alt); /* Grey foreground text */
}
.table-chart-summary-label {
@ -1232,11 +1152,11 @@
}
.theme-dark .table-chart-summary-label {
color: #f5f7fa; /* Light foreground text */
color: var(--theme-selection-color);
}
.theme-light .table-chart-summary-label {
color: #18191a; /* Dark foreground text */
color: var(--theme-body-color);
}
/* Table Widget */
@ -1252,12 +1172,12 @@
}
.theme-light .table-widget-body {
background: #F7F7F7; /* Background-Sidebar */
background: var(--theme-sidebar-background);
}
.theme-dark .table-widget-body,
.theme-dark .table-widget-empty-text {
background-color: #343c45; /* Toolbars */
background-color: var(--theme-toolbar-background);
}
.theme-dark .table-widget-body:-moz-locale-dir(ltr) {
@ -1347,7 +1267,7 @@
.theme-dark .table-widget-cell {
border-top: 1px solid @smw_itemDarkTopBorder@;
border-bottom: 1px solid @smw_itemDarkBottomBorder@;
color: #f5f7fa; /* Light foreground text */
color: var(--theme-selection-color);
}
.theme-dark:not(.filtering) .table-widget-cell:nth-child(odd):not(.theme-selected),
@ -1365,7 +1285,7 @@
}
.theme-light .table-widget-cell:not(.theme-selected) {
color: #18191a; /* Dark foreground text */
color: var(--theme-body-color);
}
.theme-light:not(.filtering) .table-widget-cell:nth-child(odd):not(.theme-selected),
@ -1377,23 +1297,13 @@
box-shadow: inset 0 -1px 0 @smw_itemLightTopBorder@;
}
.theme-light .table-widget-cell.flash-out {
animation: light-flash-out 0.5s ease-in;
.table-widget-cell.flash-out {
animation: flash-out 0.5s ease-in;
}
@keyframes light-flash-out {
@keyframes flash-out {
to {
background: #E8B671;
}
}
.theme-dark .table-widget-cell.flash-out {
animation: dark-flash-out 0.5s ease-in;
}
@keyframes dark-flash-out {
to {
background: #B28025;
background: var(--theme-contrast-background);
}
}

View File

@ -146,41 +146,7 @@ BluetoothService::ToggleBtAck::ToggleBtAck(bool aEnabled)
NS_METHOD
BluetoothService::ToggleBtAck::Run()
{
MOZ_ASSERT(NS_IsMainThread());
// This is requested in Bug 836516. With settings this property, WLAN
// firmware could be aware of Bluetooth has been turned on/off, so that the
// mecahnism of handling coexistence of WIFI and Bluetooth could be started.
//
// In the future, we may have our own way instead of setting a system
// property to let firmware developers be able to sense that Bluetooth has
// been toggled.
#if defined(MOZ_WIDGET_GONK)
if (property_set(PROP_BLUETOOTH_ENABLED, mEnabled ? "true" : "false") != 0) {
BT_WARNING("Failed to set bluetooth enabled property");
}
#endif
NS_ENSURE_TRUE(sBluetoothService, NS_OK);
if (sInShutdown) {
sBluetoothService = nullptr;
return NS_OK;
}
// Update mEnabled of BluetoothService object since
// StartInternal/StopInternal have been already done.
sBluetoothService->SetEnabled(mEnabled);
sToggleInProgress = false;
nsAutoString signalName;
signalName = mEnabled ? NS_LITERAL_STRING("Enabled")
: NS_LITERAL_STRING("Disabled");
BluetoothSignal signal(signalName, NS_LITERAL_STRING(KEY_MANAGER), true);
sBluetoothService->DistributeSignal(signal);
// Event 'AdapterAdded' has to be fired after firing 'Enabled'
sBluetoothService->TryFiringAdapterAdded();
BluetoothService::AcknowledgeToggleBt(mEnabled);
return NS_OK;
}
@ -803,3 +769,53 @@ BluetoothService::Notify(const BluetoothSignal& aData)
systemMessenger->BroadcastMessage(type, value,
JS::UndefinedHandleValue);
}
void
BluetoothService::AcknowledgeToggleBt(bool aEnabled)
{
MOZ_ASSERT(NS_IsMainThread());
#if defined(MOZ_WIDGET_GONK)
// This is requested in Bug 836516. With settings this property, WLAN
// firmware could be aware of Bluetooth has been turned on/off, so that
// the mechanism of handling coexistence of WIFI and Bluetooth could be
// started.
//
// In the future, we may have our own way instead of setting a system
// property to let firmware developers be able to sense that Bluetooth
// has been toggled.
if (property_set(PROP_BLUETOOTH_ENABLED, aEnabled ? "true" : "false") != 0) {
BT_WARNING("Failed to set bluetooth enabled property");
}
#endif
if (sInShutdown) {
sBluetoothService = nullptr;
return;
}
NS_ENSURE_TRUE_VOID(sBluetoothService);
sBluetoothService->CompleteToggleBt(aEnabled);
}
void
BluetoothService::CompleteToggleBt(bool aEnabled)
{
MOZ_ASSERT(NS_IsMainThread());
// Update |mEnabled| of |BluetoothService| object since
// |StartInternal| and |StopInternal| have been already
// done.
SetEnabled(aEnabled);
sToggleInProgress = false;
nsAutoString signalName;
signalName = aEnabled ? NS_LITERAL_STRING("Enabled")
: NS_LITERAL_STRING("Disabled");
BluetoothSignal signal(signalName, NS_LITERAL_STRING(KEY_MANAGER), true);
DistributeSignal(signal);
// Event 'AdapterAdded' has to be fired after firing 'Enabled'
TryFiringAdapterAdded();
}

View File

@ -313,6 +313,8 @@ public:
bool
IsToggling() const;
static void AcknowledgeToggleBt(bool aEnabled);
/**
* Below 2 function/variable are used for ensuring event 'AdapterAdded' will
* be fired after event 'Enabled'.
@ -393,6 +395,8 @@ protected:
static BluetoothService*
Create();
void CompleteToggleBt(bool aEnabled);
typedef nsClassHashtable<nsStringHashKey, BluetoothSignalObserverList >
BluetoothSignalObserverTable;

View File

@ -63,127 +63,11 @@ static nsTArray<nsRefPtr<BluetoothReplyRunnable> > sUnbondingRunnableArray;
static bool sAdapterDiscoverable(false);
static uint32_t sAdapterDiscoverableTimeout(0);
/**
* Classes only used in this file
*/
class SetupAfterEnabledTask MOZ_FINAL : public nsRunnable
{
public:
class SetAdapterPropertyResultHandler MOZ_FINAL
: public BluetoothResultHandler
{
public:
void OnError(BluetoothStatus aStatus) MOZ_OVERRIDE
{
BT_LOGR("Fail to set: BT_SCAN_MODE_CONNECTABLE");
}
};
NS_IMETHOD
Run()
{
MOZ_ASSERT(NS_IsMainThread());
// Bluetooth just enabled, clear profile controllers and runnable arrays.
sControllerArray.Clear();
sBondingRunnableArray.Clear();
sGetDeviceRunnableArray.Clear();
sSetPropertyRunnableArray.Clear();
sUnbondingRunnableArray.Clear();
// Bluetooth scan mode is SCAN_MODE_CONNECTABLE by default, i.e., It should
// be connectable and non-discoverable.
NS_ENSURE_TRUE(sBtInterface, NS_ERROR_FAILURE);
sBtInterface->SetAdapterProperty(
BluetoothNamedValue(NS_ConvertUTF8toUTF16("Discoverable"), false),
new SetAdapterPropertyResultHandler());
// Try to fire event 'AdapterAdded' to fit the original behaviour when
// we used BlueZ as backend.
BluetoothService* bs = BluetoothService::Get();
NS_ENSURE_TRUE(bs, NS_ERROR_FAILURE);
bs->AdapterAddedReceived();
bs->TryFiringAdapterAdded();
// Trigger BluetoothOppManager to listen
BluetoothOppManager* opp = BluetoothOppManager::Get();
if (!opp || !opp->Listen()) {
BT_LOGR("Fail to start BluetoothOppManager listening");
}
return NS_OK;
}
};
/* |ProfileDeinitResultHandler| collect the results of all profile
* result handlers and calls |Proceed| after all results handlers
* have been run.
*/
class ProfileDeinitResultHandler MOZ_FINAL
: public BluetoothProfileResultHandler
{
public:
ProfileDeinitResultHandler(unsigned char aNumProfiles)
: mNumProfiles(aNumProfiles)
{
MOZ_ASSERT(mNumProfiles);
}
void Deinit() MOZ_OVERRIDE
{
if (!(--mNumProfiles)) {
Proceed();
}
}
void OnError(nsresult aResult) MOZ_OVERRIDE
{
if (!(--mNumProfiles)) {
Proceed();
}
}
private:
void Proceed() const
{
sBtInterface->Cleanup(nullptr);
}
unsigned char mNumProfiles;
};
class CleanupTask MOZ_FINAL : public nsRunnable
{
public:
NS_IMETHOD
Run()
{
static void (* const sDeinitManager[])(BluetoothProfileResultHandler*) = {
BluetoothHfpManager::DeinitHfpInterface,
BluetoothA2dpManager::DeinitA2dpInterface
};
MOZ_ASSERT(NS_IsMainThread());
// Cleanup bluetooth interfaces after BT state becomes BT_STATE_OFF.
nsRefPtr<ProfileDeinitResultHandler> res =
new ProfileDeinitResultHandler(MOZ_ARRAY_LENGTH(sDeinitManager));
for (size_t i = 0; i < MOZ_ARRAY_LENGTH(sDeinitManager); ++i) {
sDeinitManager[i](res);
}
return NS_OK;
}
};
/**
* Static callback functions
*/
static void
ClassToIcon(uint32_t aClass, nsAString& aRetIcon)
void
BluetoothServiceBluedroid::ClassToIcon(uint32_t aClass, nsAString& aRetIcon)
{
switch ((aClass & 0x1f00) >> 8) {
case 0x01:
@ -273,8 +157,9 @@ ClassToIcon(uint32_t aClass, nsAString& aRetIcon)
}
}
static ControlPlayStatus
PlayStatusStringToControlPlayStatus(const nsAString& aPlayStatus)
ControlPlayStatus
BluetoothServiceBluedroid::PlayStatusStringToControlPlayStatus(
const nsAString& aPlayStatus)
{
ControlPlayStatus playStatus = ControlPlayStatus::PLAYSTATUS_UNKNOWN;
if (aPlayStatus.EqualsLiteral("STOPPED")) {
@ -297,8 +182,8 @@ PlayStatusStringToControlPlayStatus(const nsAString& aPlayStatus)
/**
* Static functions
*/
static bool
EnsureBluetoothHalLoad()
bool
BluetoothServiceBluedroid::EnsureBluetoothHalLoad()
{
sBtInterface = BluetoothInterface::GetInstance();
NS_ENSURE_TRUE(sBtInterface, false);
@ -306,7 +191,8 @@ EnsureBluetoothHalLoad()
return true;
}
class EnableResultHandler MOZ_FINAL : public BluetoothResultHandler
class BluetoothServiceBluedroid::EnableResultHandler MOZ_FINAL
: public BluetoothResultHandler
{
public:
void OnError(BluetoothStatus aStatus) MOZ_OVERRIDE
@ -315,10 +201,7 @@ public:
BT_LOGR("BluetoothInterface::Enable failed: %d", aStatus);
nsRefPtr<nsRunnable> runnable = new BluetoothService::ToggleBtAck(false);
if (NS_FAILED(NS_DispatchToMainThread(runnable))) {
BT_WARNING("Failed to dispatch to main thread!");
}
BluetoothService::AcknowledgeToggleBt(false);
}
};
@ -326,7 +209,7 @@ public:
* result handlers and calls |Proceed| after all results handlers
* have been run.
*/
class ProfileInitResultHandler MOZ_FINAL
class BluetoothServiceBluedroid::ProfileInitResultHandler MOZ_FINAL
: public BluetoothProfileResultHandler
{
public:
@ -359,7 +242,8 @@ private:
unsigned char mNumProfiles;
};
class InitResultHandler MOZ_FINAL : public BluetoothResultHandler
class BluetoothServiceBluedroid::InitResultHandler MOZ_FINAL
: public BluetoothResultHandler
{
public:
void Init() MOZ_OVERRIDE
@ -390,15 +274,12 @@ public:
sBtInterface = nullptr;
nsRefPtr<nsRunnable> runnable = new BluetoothService::ToggleBtAck(false);
if (NS_FAILED(NS_DispatchToMainThread(runnable))) {
BT_WARNING("Failed to dispatch to main thread!");
}
BluetoothService::AcknowledgeToggleBt(false);
}
};
static nsresult
StartGonkBluetooth()
nsresult
BluetoothServiceBluedroid::StartGonkBluetooth()
{
MOZ_ASSERT(NS_IsMainThread());
@ -409,10 +290,7 @@ StartGonkBluetooth()
if (bs->IsEnabled()) {
// Keep current enable status
nsRefPtr<nsRunnable> runnable = new BluetoothService::ToggleBtAck(true);
if (NS_FAILED(NS_DispatchToMainThread(runnable))) {
BT_WARNING("Failed to dispatch to main thread!");
}
BluetoothService::AcknowledgeToggleBt(true);
return NS_OK;
}
@ -422,7 +300,8 @@ StartGonkBluetooth()
return NS_OK;
}
class DisableResultHandler MOZ_FINAL : public BluetoothResultHandler
class BluetoothServiceBluedroid::DisableResultHandler MOZ_FINAL
: public BluetoothResultHandler
{
public:
void OnError(BluetoothStatus aStatus) MOZ_OVERRIDE
@ -431,15 +310,12 @@ public:
BT_LOGR("BluetoothInterface::Disable failed: %d", aStatus);
nsRefPtr<nsRunnable> runnable = new BluetoothService::ToggleBtAck(true);
if (NS_FAILED(NS_DispatchToMainThread(runnable))) {
BT_WARNING("Failed to dispatch to main thread!");
}
BluetoothService::AcknowledgeToggleBt(true);
}
};
static nsresult
StopGonkBluetooth()
nsresult
BluetoothServiceBluedroid::StopGonkBluetooth()
{
MOZ_ASSERT(NS_IsMainThread());
@ -450,10 +326,7 @@ StopGonkBluetooth()
if (!bs->IsEnabled()) {
// Keep current enable status
nsRefPtr<nsRunnable> runnable = new BluetoothService::ToggleBtAck(false);
if (NS_FAILED(NS_DispatchToMainThread(runnable))) {
BT_WARNING("Failed to dispatch to main thread!");
}
BluetoothService::AcknowledgeToggleBt(false);
return NS_OK;
}
@ -513,11 +386,7 @@ BluetoothServiceBluedroid::StartInternal()
nsresult ret = StartGonkBluetooth();
if (NS_FAILED(ret)) {
nsRefPtr<nsRunnable> runnable =
new BluetoothService::ToggleBtAck(false);
if (NS_FAILED(NS_DispatchToMainThread(runnable))) {
BT_WARNING("Failed to dispatch to main thread!");
}
BluetoothService::AcknowledgeToggleBt(false);
BT_LOGR("Error");
}
@ -531,11 +400,7 @@ BluetoothServiceBluedroid::StopInternal()
nsresult ret = StopGonkBluetooth();
if (NS_FAILED(ret)) {
nsRefPtr<nsRunnable> runnable =
new BluetoothService::ToggleBtAck(true);
if (NS_FAILED(NS_DispatchToMainThread(runnable))) {
BT_WARNING("Failed to dispatch to main thread!");
}
BluetoothService::AcknowledgeToggleBt(true);
BT_LOGR("Error");
}
@ -575,8 +440,8 @@ BluetoothServiceBluedroid::GetDefaultAdapterPathInternal(
return NS_OK;
}
class GetRemoteDevicePropertiesResultHandler MOZ_FINAL
: public BluetoothResultHandler
class BluetoothServiceBluedroid::GetRemoteDevicePropertiesResultHandler MOZ_FINAL
: public BluetoothResultHandler
{
public:
GetRemoteDevicePropertiesResultHandler(const nsAString& aDeviceAddress)
@ -677,7 +542,8 @@ BluetoothServiceBluedroid::GetPairedDevicePropertiesInternal(
return NS_OK;
}
class StartDiscoveryResultHandler MOZ_FINAL : public BluetoothResultHandler
class BluetoothServiceBluedroid::StartDiscoveryResultHandler MOZ_FINAL
: public BluetoothResultHandler
{
public:
StartDiscoveryResultHandler(BluetoothReplyRunnable* aRunnable)
@ -712,7 +578,8 @@ BluetoothServiceBluedroid::StartDiscoveryInternal(
return NS_OK;
}
class CancelDiscoveryResultHandler MOZ_FINAL : public BluetoothResultHandler
class BluetoothServiceBluedroid::CancelDiscoveryResultHandler MOZ_FINAL
: public BluetoothResultHandler
{
public:
CancelDiscoveryResultHandler(BluetoothReplyRunnable* aRunnable)
@ -747,7 +614,8 @@ BluetoothServiceBluedroid::StopDiscoveryInternal(
return NS_OK;
}
class SetAdapterPropertyResultHandler MOZ_FINAL : public BluetoothResultHandler
class BluetoothServiceBluedroid::SetAdapterPropertyResultHandler MOZ_FINAL
: public BluetoothResultHandler
{
public:
SetAdapterPropertyResultHandler(BluetoothReplyRunnable* aRunnable)
@ -796,7 +664,8 @@ BluetoothServiceBluedroid::UpdateSdpRecords(
return true;
}
class CreateBondResultHandler MOZ_FINAL : public BluetoothResultHandler
class BluetoothServiceBluedroid::CreateBondResultHandler MOZ_FINAL
: public BluetoothResultHandler
{
public:
CreateBondResultHandler(BluetoothReplyRunnable* aRunnable)
@ -830,7 +699,8 @@ BluetoothServiceBluedroid::CreatePairedDeviceInternal(
return NS_OK;
}
class RemoveBondResultHandler MOZ_FINAL : public BluetoothResultHandler
class BluetoothServiceBluedroid::RemoveBondResultHandler MOZ_FINAL
: public BluetoothResultHandler
{
public:
RemoveBondResultHandler(BluetoothReplyRunnable* aRunnable)
@ -863,7 +733,8 @@ BluetoothServiceBluedroid::RemoveDeviceInternal(
return NS_OK;
}
class PinReplyResultHandler MOZ_FINAL : public BluetoothResultHandler
class BluetoothServiceBluedroid::PinReplyResultHandler MOZ_FINAL
: public BluetoothResultHandler
{
public:
PinReplyResultHandler(BluetoothReplyRunnable* aRunnable)
@ -907,7 +778,8 @@ BluetoothServiceBluedroid::SetPasskeyInternal(
return true;
}
class SspReplyResultHandler MOZ_FINAL : public BluetoothResultHandler
class BluetoothServiceBluedroid::SspReplyResultHandler MOZ_FINAL
: public BluetoothResultHandler
{
public:
SspReplyResultHandler(BluetoothReplyRunnable* aRunnable)
@ -1230,6 +1102,54 @@ BluetoothServiceBluedroid::ToggleCalls(BluetoothReplyRunnable* aRunnable)
// Bluetooth notifications
//
/* |ProfileDeinitResultHandler| collect the results of all profile
* result handlers and calls |Proceed| after all results handlers
* have been run.
*/
class BluetoothServiceBluedroid::ProfileDeinitResultHandler MOZ_FINAL
: public BluetoothProfileResultHandler
{
public:
ProfileDeinitResultHandler(unsigned char aNumProfiles)
: mNumProfiles(aNumProfiles)
{
MOZ_ASSERT(mNumProfiles);
}
void Deinit() MOZ_OVERRIDE
{
if (!(--mNumProfiles)) {
Proceed();
}
}
void OnError(nsresult aResult) MOZ_OVERRIDE
{
if (!(--mNumProfiles)) {
Proceed();
}
}
private:
void Proceed() const
{
sBtInterface->Cleanup(nullptr);
}
unsigned char mNumProfiles;
};
class BluetoothServiceBluedroid::SetAdapterPropertyDiscoverableResultHandler
MOZ_FINAL
: public BluetoothResultHandler
{
public:
void OnError(BluetoothStatus aStatus) MOZ_OVERRIDE
{
BT_LOGR("Fail to set: BT_SCAN_MODE_CONNECTABLE");
}
};
void
BluetoothServiceBluedroid::AdapterStateChangedNotification(bool aState)
{
@ -1239,23 +1159,51 @@ BluetoothServiceBluedroid::AdapterStateChangedNotification(bool aState)
bool isBtEnabled = (aState == true);
if (!isBtEnabled &&
NS_FAILED(NS_DispatchToMainThread(new CleanupTask()))) {
BT_WARNING("Failed to dispatch to main thread!");
return;
if (!isBtEnabled) {
static void (* const sDeinitManager[])(BluetoothProfileResultHandler*) = {
BluetoothHfpManager::DeinitHfpInterface,
BluetoothA2dpManager::DeinitA2dpInterface
};
// Cleanup bluetooth interfaces after BT state becomes BT_STATE_OFF.
nsRefPtr<ProfileDeinitResultHandler> res =
new ProfileDeinitResultHandler(MOZ_ARRAY_LENGTH(sDeinitManager));
for (size_t i = 0; i < MOZ_ARRAY_LENGTH(sDeinitManager); ++i) {
sDeinitManager[i](res);
}
}
nsRefPtr<nsRunnable> runnable =
new BluetoothService::ToggleBtAck(isBtEnabled);
if (NS_FAILED(NS_DispatchToMainThread(runnable))) {
BT_WARNING("Failed to dispatch to main thread!");
return;
}
BluetoothService::AcknowledgeToggleBt(isBtEnabled);
if (isBtEnabled &&
NS_FAILED(NS_DispatchToMainThread(new SetupAfterEnabledTask()))) {
BT_WARNING("Failed to dispatch to main thread!");
return;
if (isBtEnabled) {
// Bluetooth just enabled, clear profile controllers and runnable arrays.
sControllerArray.Clear();
sBondingRunnableArray.Clear();
sGetDeviceRunnableArray.Clear();
sSetPropertyRunnableArray.Clear();
sUnbondingRunnableArray.Clear();
// Bluetooth scan mode is SCAN_MODE_CONNECTABLE by default, i.e., It should
// be connectable and non-discoverable.
NS_ENSURE_TRUE_VOID(sBtInterface);
sBtInterface->SetAdapterProperty(
BluetoothNamedValue(NS_ConvertUTF8toUTF16("Discoverable"), false),
new SetAdapterPropertyDiscoverableResultHandler());
// Try to fire event 'AdapterAdded' to fit the original behaviour when
// we used BlueZ as backend.
BluetoothService* bs = BluetoothService::Get();
NS_ENSURE_TRUE_VOID(bs);
bs->AdapterAddedReceived();
bs->TryFiringAdapterAdded();
// Trigger BluetoothOppManager to listen
BluetoothOppManager* opp = BluetoothOppManager::Get();
if (!opp || !opp->Listen()) {
BT_LOGR("Fail to start BluetoothOppManager listening");
}
}
}

View File

@ -16,6 +16,21 @@ BEGIN_BLUETOOTH_NAMESPACE
class BluetoothServiceBluedroid : public BluetoothService
, public BluetoothNotificationHandler
{
class CancelDiscoveryResultHandler;
class CreateBondResultHandler;
class DisableResultHandler;
class EnableResultHandler;
class GetRemoteDevicePropertiesResultHandler;
class InitResultHandler;
class PinReplyResultHandler;
class ProfileDeinitResultHandler;
class ProfileInitResultHandler;
class RemoveBondResultHandler;
class SetAdapterPropertyDiscoverableResultHandler;
class SetAdapterPropertyResultHandler;
class SspReplyResultHandler;
class StartDiscoveryResultHandler;
public:
BluetoothServiceBluedroid();
~BluetoothServiceBluedroid();
@ -196,6 +211,16 @@ public:
uint8_t aLen) MOZ_OVERRIDE;
virtual void LeTestModeNotification(BluetoothStatus aStatus,
uint16_t aNumPackets) MOZ_OVERRIDE;
protected:
static nsresult StartGonkBluetooth();
static nsresult StopGonkBluetooth();
static bool EnsureBluetoothHalLoad();
static void ClassToIcon(uint32_t aClass, nsAString& aRetIcon);
static ControlPlayStatus PlayStatusStringToControlPlayStatus(
const nsAString& aPlayStatus);
};
END_BLUETOOTH_NAMESPACE

View File

@ -806,7 +806,15 @@ Layer::ComputeEffectiveTransformForMaskLayer(const Matrix4x4& aTransformToSurfac
bool maskIs2D = mMaskLayer->GetTransform().CanDraw2D();
NS_ASSERTION(maskIs2D, "How did we end up with a 3D transform here?!");
#endif
mMaskLayer->mEffectiveTransform = mMaskLayer->GetTransform() * mMaskLayer->mEffectiveTransform;
// Use our shadow transform and base transform to compute a delta for the
// mask layer's effective transform, as though it was also transformed by
// the APZ.
//
// Note: This will fail if the base transform is degenerate. Currently, this
// is not expected for OMTA transformed layers.
mMaskLayer->mEffectiveTransform = mMaskLayer->GetTransform() *
GetTransform().Inverse() * GetLocalTransform() *
mMaskLayer->mEffectiveTransform;
}
}

View File

@ -0,0 +1,27 @@
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Testcase for bug 1086723</title>
<style type="text/css">
.test_div {
position: fixed;
overflow: hidden;
background: blue;
width: 50%;
height: 50%;
border-radius: 0px 50% 50% 0px;
}
.filler {
height: 5000px;
}
body,html {
overflow: hidden;
}
</style>
</head>
<body>
<div class="test_div"></div>
<div class="filler"></div>
</body>
</html>

View File

@ -0,0 +1,27 @@
<!DOCTYPE HTML>
<html reftest-async-scroll reftest-async-scroll-x="0" reftest-async-scroll-y="2000">
<head>
<meta charset="utf-8">
<title>Testcase for bug 1086723</title>
<style type="text/css">
.test_div {
position: fixed;
overflow: hidden;
background: blue;
width: 50%;
height: 50%;
border-radius: 0px 50% 50% 0px;
}
.filler {
height: 5000px;
}
body,html {
overflow: hidden;
}
</style>
</head>
<body>
<div class="test_div"></div>
<div class="filler"></div>
</body>
</html>

View File

@ -2,3 +2,4 @@
== 468496-1.html 468496-1-ref.html
fuzzy-if(winWidget,175,443) == 611498-1.html 611498-ref.html
skip-if(B2G) fuzzy-if(Android&&AndroidVersion>=15,8,1000) == 709477-1.html 709477-1-ref.html # bug 773482
skip-if(!asyncPanZoom) == 1086723.html 1086723-ref.html

View File

@ -204,6 +204,7 @@
<item name="android:horizontalSpacing">2dp</item>
<item name="android:verticalSpacing">2dp</item>
<item name="android:drawSelectorOnTop">true</item>
<item name="android:clipToPadding">false</item>
</style>
<style name="Widget.BookmarkItemView" parent="Widget.TwoLinePageRow"/>

View File

@ -65,6 +65,8 @@ this.EXPORTED_SYMBOLS = [ "History" ];
const { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "AsyncShutdown",
"resource://gre/modules/AsyncShutdown.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Services",
"resource://gre/modules/Services.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "NetUtil",
@ -82,6 +84,21 @@ XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils",
"resource://gre/modules/PlacesUtils.jsm");
Cu.importGlobalProperties(["URL"]);
/**
* Whenever we update or remove numerous pages, it is preferable
* to yield time to the main thread every so often to avoid janking.
* This constant determines the maximal number of notifications we
* may emit before we yield.
*/
const NOTIFICATION_CHUNK_SIZE = 300;
/**
* Private shutdown barrier blocked by ongoing operations.
*/
XPCOMUtils.defineLazyGetter(this, "operationsBarrier", () =>
new AsyncShutdown.Barrier("Sqlite.jsm: wait until all connections are closed")
);
/**
* Shared connection
*/
@ -90,8 +107,19 @@ XPCOMUtils.defineLazyGetter(this, "DBConnPromised",
Sqlite.wrapStorageConnection({ connection: PlacesUtils.history.DBConnection } )
.then(db => {
try {
Sqlite.shutdown.addBlocker("Places History.jsm: Closing database wrapper",
() => db.close());
Sqlite.shutdown.addBlocker(
"Places History.jsm: Closing database wrapper",
Task.async(function*() {
yield operationsBarrier.wait();
gIsClosed = true;
yield db.close();
}),
() => ({
fetchState: () => ({
isClosed: gIsClosed,
operations: operationsBarrier.state,
})
}));
} catch (ex) {
// It's too late to block shutdown of Sqlite, so close the connection
// immediately.
@ -103,6 +131,16 @@ XPCOMUtils.defineLazyGetter(this, "DBConnPromised",
})
);
/**
* `true` once this module has been shutdown.
*/
let gIsClosed = false;
function ensureModuleIsOpen() {
if (gIsClosed) {
throw new Error("History.jsm has been shutdown");
}
}
this.History = Object.freeze({
/**
* Fetch the available information for one page.
@ -209,6 +247,8 @@ this.History = Object.freeze({
* is an empty array.
*/
remove: function (pages, onResult = null) {
ensureModuleIsOpen();
// Normalize and type-check arguments
if (Array.isArray(pages)) {
if (pages.length == 0) {
@ -230,6 +270,8 @@ this.History = Object.freeze({
urls.push(normalized.href);
}
}
let normalizedPages = {guids: guids, urls: urls};
// At this stage, we know that either `guids` is not-empty
// or `urls` is not-empty.
@ -237,8 +279,29 @@ this.History = Object.freeze({
throw new TypeError("Invalid function: " + onResult);
}
// Now perform queries
return remove({guids: guids, urls: urls}, onResult);
return Task.spawn(function*() {
let promise = remove(normalizedPages, onResult);
operationsBarrier.client.addBlocker(
"History.remove",
promise,
{
// In case of crash, we do not want to upload information on
// which urls are being cleared, for privacy reasons. GUIDs
// are safe wrt privacy, but useless.
fetchState: () => ({
guids: guids.length,
urls: normalizedPages.urls.map(u => u.protocol),
})
});
try {
return (yield promise);
} finally {
// Cleanup the barrier.
operationsBarrier.client.removeBlocker(promise);
}
});
},
/**

View File

@ -12,7 +12,7 @@ const Cu = Components.utils;
Cu.import("resource://gre/modules/Services.jsm");
// Import common head.
let (commonFile = do_get_file("../../head_common.js", false)) {
let (commonFile = do_get_file("../head_common.js", false)) {
let uri = Services.io.newFileURI(commonFile);
Services.scriptloader.loadSubScript(uri.spec, this);
};

View File

@ -11,12 +11,12 @@ XPCSHELL_TESTS_MANIFESTS += [
'bookmarks/xpcshell.ini',
'expiration/xpcshell.ini',
'favicons/xpcshell.ini',
'history/xpcshell.ini',
'inline/xpcshell.ini',
'migration/xpcshell.ini',
'network/xpcshell.ini',
'queries/xpcshell.ini',
'unifiedcomplete/xpcshell.ini',
'unit/history/xpcshell.ini',
'unit/xpcshell.ini',
'xpcshell.ini',
]

View File

@ -122,6 +122,7 @@ body[dir="rtl"] .histogram {
padding: 15px;
position: relative; /* required for position:absolute of the contained .copy-node */
display: block;
overflow: hidden;
}
.keyed-histogram-title {
@ -131,7 +132,6 @@ body[dir="rtl"] .histogram {
font-weight: bold;
font-size: 120%;
white-space: nowrap;
overflow: hidden;
}