mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 11:25:00 +00:00
Merge m-c to inbound a=merge CLOSED TREE
This commit is contained in:
commit
a6d238257b
@ -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"/>
|
||||
|
@ -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"/>
|
||||
|
@ -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"/>
|
||||
|
@ -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"/>
|
||||
|
@ -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"/>
|
||||
|
@ -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"/>
|
||||
|
@ -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"/>
|
||||
|
@ -4,6 +4,6 @@
|
||||
"remote": "",
|
||||
"branch": ""
|
||||
},
|
||||
"revision": "936d69a5e13f39fcf9cc99bceb50c8c0de6aa0fa",
|
||||
"revision": "830d094e31350d07d6354deafbd58a19b2ac0236",
|
||||
"repo_path": "integration/gaia-central"
|
||||
}
|
||||
|
@ -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"/>
|
||||
|
@ -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"/>
|
||||
|
@ -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"/>
|
||||
|
@ -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"/>
|
||||
|
@ -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);
|
||||
|
@ -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]
|
||||
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
@ -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");
|
||||
|
@ -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) });
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -188,7 +188,7 @@ function promiseOAuthGetRegistration(baseURL) {
|
||||
}
|
||||
|
||||
function getLoopString(stringID) {
|
||||
return MozLoopServiceInternal.localizedStrings[stringID].textContent;
|
||||
return MozLoopServiceInternal.localizedStrings.get(stringID);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -73,7 +73,7 @@ function waitForCondition(aConditionFn, aMaxTries=50, aCheckInterval=100) {
|
||||
}
|
||||
|
||||
function getLoopString(stringID) {
|
||||
return MozLoopServiceInternal.localizedStrings[stringID].textContent;
|
||||
return MozLoopServiceInternal.localizedStrings.get(stringID);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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;
|
||||
}
|
||||
},
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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] {
|
||||
|
@ -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=""],
|
||||
|
@ -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,
|
||||
|
@ -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 */
|
||||
|
@ -18,7 +18,7 @@
|
||||
}
|
||||
|
||||
.theme-dark .splitview-nav-container {
|
||||
background-color: #343c45; /* Toolbars */
|
||||
background-color: var(--theme-toolbar-background);
|
||||
}
|
||||
|
||||
.splitview-nav {
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
27
gfx/tests/reftest/1086723-ref.html
Normal file
27
gfx/tests/reftest/1086723-ref.html
Normal 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>
|
27
gfx/tests/reftest/1086723.html
Normal file
27
gfx/tests/reftest/1086723.html
Normal 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>
|
@ -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
|
||||
|
@ -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"/>
|
||||
|
@ -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);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
};
|
@ -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',
|
||||
]
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user