mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Merge m-c to inbound a=merge CLOSED TREE
This commit is contained in:
commit
a694cc39ce
@ -1124,8 +1124,10 @@ pref("dom.requestSync.enabled", true);
|
||||
pref("gfx.vsync.hw-vsync.enabled", true);
|
||||
pref("gfx.vsync.compositor", true);
|
||||
pref("gfx.touch.resample", true);
|
||||
pref("gfx.vsync.refreshdriver", true);
|
||||
#else
|
||||
pref("gfx.vsync.hw-vsync.enabled", false);
|
||||
pref("gfx.vsync.compositor", false);
|
||||
pref("gfx.touch.resample", false);
|
||||
pref("gfx.vsync.refreshdriver", false);
|
||||
#endif
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="ef937d1aca7c4cf89ecb5cc43ae8c21c2000a9db">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="8837f94418d69a0b06c1f4843b0779e2bb72165a"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="66558ce7f36809a20d1c721fd4d457913b09c5c7"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="86cd7486d8e50eaac8ef6fe2f51f09d25194577b"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
@ -23,7 +23,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="acca7d20b79978cff975e755e5e0bac9f731a6f7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b685e3aab4fde7624d78993877a8f7910f2a5f06"/>
|
||||
<!-- Stock Android things -->
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="95bb5b66b3ec5769c3de8d3f25d681787418e7d2"/>
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" revision="ebdad82e61c16772f6cd47e9f11936bf6ebe9aa0"/>
|
||||
|
@ -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="8837f94418d69a0b06c1f4843b0779e2bb72165a"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="66558ce7f36809a20d1c721fd4d457913b09c5c7"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="86cd7486d8e50eaac8ef6fe2f51f09d25194577b"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="93f9ba577f68d772093987c2f1c0a4ae293e1802"/>
|
||||
|
@ -17,10 +17,10 @@
|
||||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="8837f94418d69a0b06c1f4843b0779e2bb72165a"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="66558ce7f36809a20d1c721fd4d457913b09c5c7"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="86cd7486d8e50eaac8ef6fe2f51f09d25194577b"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="acca7d20b79978cff975e755e5e0bac9f731a6f7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b685e3aab4fde7624d78993877a8f7910f2a5f06"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<!-- Stock Android things -->
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="ef937d1aca7c4cf89ecb5cc43ae8c21c2000a9db">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="8837f94418d69a0b06c1f4843b0779e2bb72165a"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="66558ce7f36809a20d1c721fd4d457913b09c5c7"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="86cd7486d8e50eaac8ef6fe2f51f09d25194577b"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
@ -23,7 +23,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="acca7d20b79978cff975e755e5e0bac9f731a6f7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b685e3aab4fde7624d78993877a8f7910f2a5f06"/>
|
||||
<!-- Stock Android things -->
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="f92a936f2aa97526d4593386754bdbf02db07a12"/>
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" revision="6e47ff2790f5656b5b074407829ceecf3e6188c4"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="52775e03a2d8532429dff579cb2cd56718e488c3">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="8837f94418d69a0b06c1f4843b0779e2bb72165a"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="66558ce7f36809a20d1c721fd4d457913b09c5c7"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="86cd7486d8e50eaac8ef6fe2f51f09d25194577b"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
@ -23,7 +23,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="acca7d20b79978cff975e755e5e0bac9f731a6f7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b685e3aab4fde7624d78993877a8f7910f2a5f06"/>
|
||||
<!-- Stock Android things -->
|
||||
<project groups="pdk,linux" name="platform/prebuilts/clang/linux-x86/host/3.5" path="prebuilts/clang/linux-x86/host/3.5" revision="50d1ca4ab8add54523b7bc692860d57e8ee4c0d1"/>
|
||||
<project groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.8" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.8" revision="fb3845864573857677f9b500040a8f011eaf5078"/>
|
||||
|
@ -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="8837f94418d69a0b06c1f4843b0779e2bb72165a"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="66558ce7f36809a20d1c721fd4d457913b09c5c7"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="86cd7486d8e50eaac8ef6fe2f51f09d25194577b"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="93f9ba577f68d772093987c2f1c0a4ae293e1802"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="ef937d1aca7c4cf89ecb5cc43ae8c21c2000a9db">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="8837f94418d69a0b06c1f4843b0779e2bb72165a"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="66558ce7f36809a20d1c721fd4d457913b09c5c7"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="86cd7486d8e50eaac8ef6fe2f51f09d25194577b"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
@ -23,7 +23,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="acca7d20b79978cff975e755e5e0bac9f731a6f7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b685e3aab4fde7624d78993877a8f7910f2a5f06"/>
|
||||
<!-- Stock Android things -->
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="95bb5b66b3ec5769c3de8d3f25d681787418e7d2"/>
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" revision="ebdad82e61c16772f6cd47e9f11936bf6ebe9aa0"/>
|
||||
|
@ -17,10 +17,10 @@
|
||||
</project>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="8837f94418d69a0b06c1f4843b0779e2bb72165a"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="66558ce7f36809a20d1c721fd4d457913b09c5c7"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="86cd7486d8e50eaac8ef6fe2f51f09d25194577b"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="acca7d20b79978cff975e755e5e0bac9f731a6f7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b685e3aab4fde7624d78993877a8f7910f2a5f06"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<!-- Stock Android things -->
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"git": {
|
||||
"git_revision": "8837f94418d69a0b06c1f4843b0779e2bb72165a",
|
||||
"git_revision": "66558ce7f36809a20d1c721fd4d457913b09c5c7",
|
||||
"remote": "https://git.mozilla.org/releases/gaia.git",
|
||||
"branch": ""
|
||||
},
|
||||
"revision": "e034a24fa2dcff4623dce2d91f7828d582abf50d",
|
||||
"revision": "73b67adb48cdfbba7a520d3499e9759757c8b3c5",
|
||||
"repo_path": "integration/gaia-central"
|
||||
}
|
||||
|
@ -17,10 +17,10 @@
|
||||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="8837f94418d69a0b06c1f4843b0779e2bb72165a"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="66558ce7f36809a20d1c721fd4d457913b09c5c7"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="86cd7486d8e50eaac8ef6fe2f51f09d25194577b"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="acca7d20b79978cff975e755e5e0bac9f731a6f7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b685e3aab4fde7624d78993877a8f7910f2a5f06"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<!-- Stock Android things -->
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="52775e03a2d8532429dff579cb2cd56718e488c3">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="8837f94418d69a0b06c1f4843b0779e2bb72165a"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="66558ce7f36809a20d1c721fd4d457913b09c5c7"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="86cd7486d8e50eaac8ef6fe2f51f09d25194577b"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
@ -23,7 +23,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="acca7d20b79978cff975e755e5e0bac9f731a6f7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b685e3aab4fde7624d78993877a8f7910f2a5f06"/>
|
||||
<!-- Stock Android things -->
|
||||
<project groups="pdk,linux" name="platform/prebuilts/clang/linux-x86/host/3.5" path="prebuilts/clang/linux-x86/host/3.5" revision="50d1ca4ab8add54523b7bc692860d57e8ee4c0d1"/>
|
||||
<project groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.8" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.8" revision="fb3845864573857677f9b500040a8f011eaf5078"/>
|
||||
|
@ -1698,6 +1698,7 @@ pref("loop.debug.loglevel", "Error");
|
||||
pref("loop.debug.dispatcher", false);
|
||||
pref("loop.debug.websocket", false);
|
||||
pref("loop.debug.sdk", false);
|
||||
pref("loop.debug.twoWayMediaTelemetry", false);
|
||||
#ifdef DEBUG
|
||||
pref("loop.CSP", "default-src 'self' about: file: chrome: http://localhost:*; img-src 'self' data: https://www.gravatar.com/ about: file: chrome:; font-src 'none'; connect-src wss://*.tokbox.com https://*.opentok.com https://*.tokbox.com wss://*.mozilla.com https://*.mozilla.org wss://*.mozaws.net http://localhost:* ws://localhost:*; media-src blob:");
|
||||
#else
|
||||
@ -1878,5 +1879,7 @@ pref("dom.ipc.reportProcessHangs", true);
|
||||
pref("reader.parse-on-load.enabled", false);
|
||||
#endif
|
||||
|
||||
// Disable ReadingList by default.
|
||||
// Disable ReadingList browser UI by default.
|
||||
pref("browser.readinglist.enabled", false);
|
||||
// Enable the readinglist engine by default.
|
||||
pref("readinglist.scheduler.enabled", true);
|
||||
|
@ -312,7 +312,7 @@
|
||||
<menuitem id="context-shareselect"
|
||||
label="&shareSelect.label;"
|
||||
accesskey="&shareSelect.accesskey;"
|
||||
oncommand="gContextMenu.shareSelect(getBrowserSelection());"/>
|
||||
oncommand="gContextMenu.shareSelect();"/>
|
||||
<menuseparator id="frame-sep"/>
|
||||
<menu id="frame" label="&thisFrameMenu.label;" accesskey="&thisFrameMenu.accesskey;">
|
||||
<menupopup>
|
||||
|
@ -232,12 +232,22 @@ let ReadingListUI = {
|
||||
// nothing to do if we have no button.
|
||||
return;
|
||||
}
|
||||
if (!this.enabled || state == "invalid") {
|
||||
|
||||
let uri;
|
||||
if (this.enabled && state == "valid") {
|
||||
uri = gBrowser.currentURI;
|
||||
if (uri.schemeIs("about"))
|
||||
uri = ReaderParent.parseReaderUrl(uri.spec);
|
||||
else if (!uri.schemeIs("http") && !uri.schemeIs("https"))
|
||||
uri = null;
|
||||
}
|
||||
|
||||
if (!uri) {
|
||||
this.toolbarButton.setAttribute("hidden", true);
|
||||
return;
|
||||
}
|
||||
|
||||
let isInList = yield ReadingList.containsURL(gBrowser.currentURI);
|
||||
let isInList = yield ReadingList.containsURL(uri);
|
||||
this.setToolbarButtonState(isInList);
|
||||
}),
|
||||
|
||||
@ -268,11 +278,17 @@ let ReadingListUI = {
|
||||
* @returns {Promise} Promise resolved when operation has completed.
|
||||
*/
|
||||
togglePageByBrowser: Task.async(function* (browser) {
|
||||
let item = yield ReadingList.getItemForURL(browser.currentURI);
|
||||
let uri = browser.currentURI;
|
||||
if (uri.spec.startsWith("about:reader?"))
|
||||
uri = ReaderParent.parseReaderUrl(uri.spec);
|
||||
if (!uri)
|
||||
return;
|
||||
|
||||
let item = yield ReadingList.getItemForURL(uri);
|
||||
if (item) {
|
||||
yield item.delete();
|
||||
} else {
|
||||
yield ReadingList.addItemFromBrowser(browser);
|
||||
yield ReadingList.addItemFromBrowser(browser, uri);
|
||||
}
|
||||
}),
|
||||
|
||||
@ -284,6 +300,9 @@ let ReadingListUI = {
|
||||
*/
|
||||
isItemForCurrentBrowser(item) {
|
||||
let currentURL = gBrowser.currentURI.spec;
|
||||
if (currentURL.startsWith("about:reader?"))
|
||||
currentURL = ReaderParent.parseReaderUrl(currentURL);
|
||||
|
||||
if (item.url == currentURL || item.resolvedURL == currentURL) {
|
||||
return true;
|
||||
}
|
||||
|
@ -658,7 +658,7 @@ SocialShare = {
|
||||
pageData.microdata = msg.data;
|
||||
this.sharePage(providerOrigin, pageData, target);
|
||||
});
|
||||
gBrowser.selectedBrowser.messageManager.sendAsyncMessage("PageMetadata:GetMicrodata", null, target);
|
||||
gBrowser.selectedBrowser.messageManager.sendAsyncMessage("PageMetadata:GetMicrodata", null, { target });
|
||||
return;
|
||||
}
|
||||
this.currentShare = pageData;
|
||||
|
@ -486,6 +486,7 @@ let AboutReaderListener = {
|
||||
init: function() {
|
||||
addEventListener("AboutReaderContentLoaded", this, false, true);
|
||||
addEventListener("DOMContentLoaded", this, false);
|
||||
addEventListener("pageshow", this, false);
|
||||
addEventListener("pagehide", this, false);
|
||||
addMessageListener("Reader:ParseDocument", this);
|
||||
},
|
||||
@ -525,6 +526,13 @@ let AboutReaderListener = {
|
||||
sendAsyncMessage("Reader:UpdateReaderButton", { isArticle: false });
|
||||
break;
|
||||
|
||||
case "pageshow":
|
||||
// If a page is loaded from the bfcache, we won't get a "DOMContentLoaded"
|
||||
// event, so we need to rely on "pageshow" in this case.
|
||||
if (!aEvent.persisted) {
|
||||
break;
|
||||
}
|
||||
// Fall through.
|
||||
case "DOMContentLoaded":
|
||||
if (!ReaderMode.isEnabledForParseOnLoad || this.isAboutReader) {
|
||||
return;
|
||||
@ -1016,7 +1024,7 @@ let PageMetadataMessenger = {
|
||||
}
|
||||
|
||||
case "PageMetadata:GetMicrodata": {
|
||||
let target = message.objects;
|
||||
let target = message.objects.target;
|
||||
let result = PageMetadata.getMicrodata(content.document, target);
|
||||
sendAsyncMessage("PageMetadata:MicrodataResult", result);
|
||||
break;
|
||||
|
@ -151,6 +151,7 @@ nsContextMenu.prototype = {
|
||||
if (uri && uri.host) {
|
||||
this.linkURI = uri;
|
||||
this.linkURL = this.linkURI.spec;
|
||||
this.linkText = linkText;
|
||||
this.onPlainTextLink = true;
|
||||
}
|
||||
}
|
||||
@ -576,6 +577,7 @@ nsContextMenu.prototype = {
|
||||
this.link = null;
|
||||
this.linkURL = "";
|
||||
this.linkURI = null;
|
||||
this.linkText = "";
|
||||
this.linkProtocol = "";
|
||||
this.linkHasNoReferrer = false;
|
||||
this.onMathML = false;
|
||||
@ -737,6 +739,7 @@ nsContextMenu.prototype = {
|
||||
this.link = elem;
|
||||
this.linkURL = this.getLinkURL();
|
||||
this.linkURI = this.getLinkURI();
|
||||
this.linkText = this.getLinkText();
|
||||
this.linkProtocol = this.getLinkProtocol();
|
||||
this.onMailtoLink = (this.linkProtocol == "mailto");
|
||||
this.onSaveableLink = this.isLinkSaveable( this.link );
|
||||
@ -1302,15 +1305,8 @@ nsContextMenu.prototype = {
|
||||
// Save URL of clicked-on link.
|
||||
saveLink: function() {
|
||||
var doc = this.target.ownerDocument;
|
||||
var linkText;
|
||||
// If selected text is found to match valid URL pattern.
|
||||
if (this.onPlainTextLink)
|
||||
linkText = this.focusedWindow.getSelection().toString().trim();
|
||||
else
|
||||
linkText = this.linkText();
|
||||
urlSecurityCheck(this.linkURL, this.principal);
|
||||
|
||||
this.saveHelper(this.linkURL, linkText, null, true, doc);
|
||||
this.saveHelper(this.linkURL, this.linkText, null, true, doc);
|
||||
},
|
||||
|
||||
// Backwards-compatibility wrapper
|
||||
@ -1503,7 +1499,7 @@ nsContextMenu.prototype = {
|
||||
},
|
||||
|
||||
// Get text of link.
|
||||
linkText: function() {
|
||||
getLinkText: function() {
|
||||
var text = gatherTextUnder(this.link);
|
||||
if (!text || !text.match(/\S/)) {
|
||||
text = this.link.getAttribute("title");
|
||||
@ -1598,14 +1594,8 @@ nsContextMenu.prototype = {
|
||||
},
|
||||
|
||||
bookmarkLink: function CM_bookmarkLink() {
|
||||
var linkText;
|
||||
// If selected text is found to match valid URL pattern.
|
||||
if (this.onPlainTextLink)
|
||||
linkText = this.focusedWindow.getSelection().toString().trim();
|
||||
else
|
||||
linkText = this.linkText();
|
||||
window.top.PlacesCommandHook.bookmarkLink(PlacesUtils.bookmarksMenuFolderId, this.linkURL,
|
||||
linkText);
|
||||
window.top.PlacesCommandHook.bookmarkLink(PlacesUtils.bookmarksMenuFolderId,
|
||||
this.linkURL, this.linkText);
|
||||
},
|
||||
|
||||
addBookmarkForFrame: function CM_addBookmarkForFrame() {
|
||||
@ -1650,8 +1640,8 @@ nsContextMenu.prototype = {
|
||||
SocialShare.sharePage(null, { url: this.mediaURL, source: this.mediaURL }, this.target);
|
||||
},
|
||||
|
||||
shareSelect: function CM_shareSelect(selection) {
|
||||
SocialShare.sharePage(null, { url: this.browser.currentURI.spec, text: selection }, this.target);
|
||||
shareSelect: function CM_shareSelect() {
|
||||
SocialShare.sharePage(null, { url: this.browser.currentURI.spec, text: this.textSelected }, this.target);
|
||||
},
|
||||
|
||||
savePageAs: function CM_savePageAs() {
|
||||
@ -1699,7 +1689,7 @@ nsContextMenu.prototype = {
|
||||
// Formats the 'Search <engine> for "<selection or link text>"' context menu.
|
||||
formatSearchContextItem: function() {
|
||||
var menuItem = document.getElementById("context-searchselect");
|
||||
var selectedText = this.isTextSelected ? this.textSelected : this.linkText();
|
||||
let selectedText = this.isTextSelected ? this.textSelected : this.linkText;
|
||||
|
||||
// Store searchTerms in context menu item so we know what to search onclick
|
||||
menuItem.searchTerms = selectedText;
|
||||
|
@ -60,6 +60,14 @@
|
||||
</popupnotificationcontent>
|
||||
</popupnotification>
|
||||
|
||||
<popupnotification id="password-notification" hidden="true">
|
||||
<popupnotificationcontent orient="vertical">
|
||||
<textbox id="password-notification-username" disabled="true"/>
|
||||
<textbox id="password-notification-password" type="password"
|
||||
disabled="true"/>
|
||||
</popupnotificationcontent>
|
||||
</popupnotification>
|
||||
|
||||
#ifdef E10S_TESTING_ONLY
|
||||
<popupnotification id="enable-e10s-notification" hidden="true">
|
||||
<popupnotificationcontent orient="vertical"/>
|
||||
|
@ -163,7 +163,7 @@
|
||||
pageData.microdata = msg.data;
|
||||
this.loadPanel(pageData, target);
|
||||
});
|
||||
gBrowser.selectedBrowser.messageManager.sendAsyncMessage("PageMetadata:GetMicrodata", null, target);
|
||||
gBrowser.selectedBrowser.messageManager.sendAsyncMessage("PageMetadata:GetMicrodata", null, { target });
|
||||
return;
|
||||
}
|
||||
this.pageData = pageData;
|
||||
|
@ -4,8 +4,31 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
addEventListener("load", function () {
|
||||
// unhide the reading-list engine if readinglist is enabled (note this
|
||||
// dialog is only used with FxA sync, so no special action is needed
|
||||
// for legacy sync.)
|
||||
if (Services.prefs.getBoolPref("browser.readinglist.enabled")) {
|
||||
document.getElementById("readinglist-engine").removeAttribute("hidden");
|
||||
}
|
||||
});
|
||||
|
||||
addEventListener("dialogaccept", function () {
|
||||
let pane = document.getElementById("sync-customize-pane");
|
||||
// First determine what the preference for the "global" sync enabled pref
|
||||
// should be based on the engines selected.
|
||||
let prefElts = pane.querySelectorAll("preferences > preference");
|
||||
let syncEnabled = false;
|
||||
for (let elt of prefElts) {
|
||||
if (elt.name.startsWith("services.sync.") && elt.value) {
|
||||
syncEnabled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
Services.prefs.setBoolPref("services.sync.enabled", syncEnabled);
|
||||
// and write the individual prefs.
|
||||
pane.writePreferences(true);
|
||||
window.arguments[0].accepted = true;
|
||||
});
|
||||
|
@ -27,6 +27,8 @@
|
||||
<preference id="engine.passwords" name="services.sync.engine.passwords" type="bool"/>
|
||||
<preference id="engine.addons" name="services.sync.engine.addons" type="bool"/>
|
||||
<preference id="engine.prefs" name="services.sync.engine.prefs" type="bool"/>
|
||||
<!-- non Sync-Engine engines -->
|
||||
<preference id="engine.readinglist" name="readinglist.scheduler.enabled" type="bool"/>
|
||||
</preferences>
|
||||
|
||||
<label id="sync-customize-title" value="&syncCustomize.title;"/>
|
||||
@ -51,6 +53,11 @@
|
||||
<checkbox label="&engine.history.label;"
|
||||
accesskey="&engine.history.accesskey;"
|
||||
preference="engine.history"/>
|
||||
<checkbox id="readinglist-engine"
|
||||
label="&engine.readinglist.label;"
|
||||
accesskey="&engine.readinglist.accesskey;"
|
||||
preference="engine.readinglist"
|
||||
hidden="true"/>
|
||||
<checkbox label="&engine.addons.label;"
|
||||
accesskey="&engine.addons.accesskey;"
|
||||
preference="engine.addons"/>
|
||||
|
@ -91,57 +91,54 @@ var testData = [
|
||||
new keywordResult(null, null, true)]
|
||||
];
|
||||
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
add_task(function* test_getshortcutoruri() {
|
||||
yield setupKeywords();
|
||||
|
||||
setupKeywords();
|
||||
for (let item of testData) {
|
||||
let [data, result] = item;
|
||||
|
||||
Task.spawn(function() {
|
||||
for each (var item in testData) {
|
||||
let [data, result] = item;
|
||||
let query = data.keyword;
|
||||
if (data.searchWord)
|
||||
query += " " + data.searchWord;
|
||||
let returnedData = yield new Promise(
|
||||
resolve => getShortcutOrURIAndPostData(query, resolve));
|
||||
// null result.url means we should expect the same query we sent in
|
||||
let expected = result.url || query;
|
||||
is(returnedData.url, expected, "got correct URL for " + data.keyword);
|
||||
is(getPostDataString(returnedData.postData), result.postData, "got correct postData for " + data.keyword);
|
||||
is(returnedData.mayInheritPrincipal, !result.isUnsafe, "got correct mayInheritPrincipal for " + data.keyword);
|
||||
}
|
||||
|
||||
let query = data.keyword;
|
||||
if (data.searchWord)
|
||||
query += " " + data.searchWord;
|
||||
let returnedData = yield new Promise(
|
||||
resolve => getShortcutOrURIAndPostData(query, resolve));
|
||||
// null result.url means we should expect the same query we sent in
|
||||
let expected = result.url || query;
|
||||
is(returnedData.url, expected, "got correct URL for " + data.keyword);
|
||||
is(getPostDataString(returnedData.postData), result.postData, "got correct postData for " + data.keyword);
|
||||
is(returnedData.mayInheritPrincipal, !result.isUnsafe, "got correct mayInheritPrincipal for " + data.keyword);
|
||||
}
|
||||
cleanupKeywords();
|
||||
}).then(finish);
|
||||
}
|
||||
yield cleanupKeywords();
|
||||
});
|
||||
|
||||
var gBMFolder = null;
|
||||
var gAddedEngines = [];
|
||||
function setupKeywords() {
|
||||
gBMFolder = Application.bookmarks.menu.addFolder("keyword-test");
|
||||
for each (var item in testData) {
|
||||
var data = item[0];
|
||||
let folder = null;
|
||||
let gAddedEngines = [];
|
||||
|
||||
function* setupKeywords() {
|
||||
folder = yield PlacesUtils.bookmarks.insert({ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
|
||||
type: PlacesUtils.bookmarks.TYPE_FOLDER,
|
||||
title: "keyword-test" });
|
||||
for (let item of testData) {
|
||||
let data = item[0];
|
||||
if (data instanceof bmKeywordData) {
|
||||
var bm = gBMFolder.addBookmark(data.keyword, data.uri);
|
||||
bm.keyword = data.keyword;
|
||||
if (data.postData)
|
||||
bm.annotations.set("bookmarkProperties/POSTData", data.postData, Ci.nsIAnnotationService.EXPIRE_SESSION);
|
||||
yield PlacesUtils.bookmarks.insert({ url: data.uri, parentGuid: folder.guid });
|
||||
yield PlacesUtils.keywords.insert({ keyword: data.keyword, url: data.uri.spec, postData: data.postData });
|
||||
}
|
||||
|
||||
if (data instanceof searchKeywordData) {
|
||||
Services.search.addEngineWithDetails(data.keyword, "", data.keyword, "", data.method, data.uri.spec);
|
||||
var addedEngine = Services.search.getEngineByName(data.keyword);
|
||||
let addedEngine = Services.search.getEngineByName(data.keyword);
|
||||
if (data.postData) {
|
||||
var [paramName, paramValue] = data.postData.split("=");
|
||||
let [paramName, paramValue] = data.postData.split("=");
|
||||
addedEngine.addParam(paramName, paramValue, null);
|
||||
}
|
||||
|
||||
gAddedEngines.push(addedEngine);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function cleanupKeywords() {
|
||||
gBMFolder.remove();
|
||||
function* cleanupKeywords() {
|
||||
PlacesUtils.bookmarks.remove(folder);
|
||||
gAddedEngines.map(Services.search.removeEngine);
|
||||
}
|
||||
|
@ -1,38 +1,34 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
"use strict"
|
||||
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
let bmFolder = Application.bookmarks.menu.addFolder("keyword-test");
|
||||
add_task(function* test_keyword_bookmarklet() {
|
||||
let bm = yield PlacesUtils.bookmarks.insert({ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
|
||||
title: "bookmarklet",
|
||||
url: "javascript:1;" });
|
||||
let tab = gBrowser.selectedTab = gBrowser.addTab();
|
||||
|
||||
registerCleanupFunction (function () {
|
||||
bmFolder.remove();
|
||||
registerCleanupFunction (function* () {
|
||||
gBrowser.removeTab(tab);
|
||||
yield PlacesUtils.bookmarks.remove(bm);
|
||||
});
|
||||
yield promisePageShow();
|
||||
let originalPrincipal = gBrowser.contentPrincipal;
|
||||
|
||||
let bm = bmFolder.addBookmark("bookmarklet", makeURI("javascript:1;"));
|
||||
bm.keyword = "bm";
|
||||
yield PlacesUtils.keywords.insert({ keyword: "bm", url: "javascript:1;" })
|
||||
|
||||
addPageShowListener(function () {
|
||||
let originalPrincipal = gBrowser.contentPrincipal;
|
||||
// Enter bookmarklet keyword in the URL bar
|
||||
gURLBar.value = "bm";
|
||||
gURLBar.focus();
|
||||
EventUtils.synthesizeKey("VK_RETURN", {});
|
||||
|
||||
// Enter bookmarklet keyword in the URL bar
|
||||
gURLBar.value = "bm";
|
||||
gURLBar.focus();
|
||||
EventUtils.synthesizeKey("VK_RETURN", {});
|
||||
yield promisePageShow();
|
||||
|
||||
addPageShowListener(function () {
|
||||
ok(gBrowser.contentPrincipal.equals(originalPrincipal), "javascript bookmarklet should inherit principal");
|
||||
finish();
|
||||
ok(gBrowser.contentPrincipal.equals(originalPrincipal), "javascript bookmarklet should inherit principal");
|
||||
});
|
||||
|
||||
function* promisePageShow() {
|
||||
return new Promise(resolve => {
|
||||
gBrowser.selectedBrowser.addEventListener("pageshow", function listen() {
|
||||
gBrowser.selectedBrowser.removeEventListener("pageshow", listen);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function addPageShowListener(func) {
|
||||
gBrowser.selectedBrowser.addEventListener("pageshow", function loadListener() {
|
||||
gBrowser.selectedBrowser.removeEventListener("pageshow", loadListener, false);
|
||||
func();
|
||||
});
|
||||
}
|
||||
|
@ -21,8 +21,8 @@ add_task(function*() {
|
||||
is(SessionStore.getClosedWindowCount(), 1, "Should have restore data for the closed window");
|
||||
|
||||
win = SessionStore.undoCloseWindow(0);
|
||||
yield BrowserTestUtils.waitForEvent(win, "load", 10000);
|
||||
yield BrowserTestUtils.waitForEvent(win.gBrowser.tabs[0], "SSTabRestored", 10000);
|
||||
yield BrowserTestUtils.waitForEvent(win, "load");
|
||||
yield BrowserTestUtils.waitForEvent(win.gBrowser.tabs[0], "SSTabRestored");
|
||||
|
||||
is(win.gBrowser.tabs.length, 1, "Should have restored one tab");
|
||||
is(win.gBrowser.selectedBrowser.currentURI.spec, uri, "Should have restored the right page");
|
||||
|
@ -11,6 +11,9 @@
|
||||
<h2 class="author">by Jane Doe</h2>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper sed, adipiscing id dolor. Pellentesque auctor nisi id magna consequat sagittis. Curabitur dapibus enim sit amet elit pharetra tincidunt feugiat nisl imperdiet. Ut convallis libero in urna ultrices accumsan. Donec sed odio eros. Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In rutrum accumsan ultricies. Mauris vitae nisi at sem facilisis semper ac in est.</p>
|
||||
<p>Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.</p>
|
||||
<p>Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.</p>
|
||||
<p>Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.</p>
|
||||
<p>Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -99,26 +99,45 @@ function clickTheLink(aWindow, aLinkId, aOptions) {
|
||||
function(data) {
|
||||
let element = content.document.getElementById(data.id);
|
||||
let options = data.options;
|
||||
element.focus();
|
||||
|
||||
// EventUtils.synthesizeMouseAtCenter(element, options, content);
|
||||
// Alas, EventUtils doesn't work in the content task environment.
|
||||
var domWindowUtils =
|
||||
content.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
|
||||
.getInterface(Components.interfaces.nsIDOMWindowUtils);
|
||||
var rect = element.getBoundingClientRect();
|
||||
var left = rect.left + rect.width / 2;
|
||||
var top = rect.top + rect.height / 2;
|
||||
var button = options.button || 0;
|
||||
function sendMouseEvent(type) {
|
||||
domWindowUtils.sendMouseEvent(type, left, top, button,
|
||||
1, 0, false, 0, 0, true);
|
||||
function doClick() {
|
||||
var domWindowUtils =
|
||||
content.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
|
||||
.getInterface(Components.interfaces.nsIDOMWindowUtils);
|
||||
var rect = element.getBoundingClientRect();
|
||||
var left = rect.left + rect.width / 2;
|
||||
var top = rect.top + rect.height / 2;
|
||||
var button = options.button || 0;
|
||||
function sendMouseEvent(type) {
|
||||
domWindowUtils.sendMouseEvent(type, left, top, button,
|
||||
1, 0, false, 0, 0, true);
|
||||
}
|
||||
if ("type" in options) {
|
||||
sendMouseEvent(options.type); // e.g., "contextmenu"
|
||||
} else {
|
||||
sendMouseEvent("mousedown");
|
||||
sendMouseEvent("mouseup");
|
||||
}
|
||||
}
|
||||
if ("type" in options) {
|
||||
sendMouseEvent(options.type); // e.g., "contextmenu"
|
||||
|
||||
// waitForFocus(doClick, content);
|
||||
let focusManager = Components.classes["@mozilla.org/focus-manager;1"].
|
||||
getService(Components.interfaces.nsIFocusManager);
|
||||
let desiredWindow = {};
|
||||
focusManager.getFocusedElementForWindow(content, true, desiredWindow);
|
||||
desiredWindow = desiredWindow.value;
|
||||
if (desiredWindow == focusManager.focusedWindow) {
|
||||
// The window is already focused - click away.
|
||||
doClick();
|
||||
} else {
|
||||
sendMouseEvent("mousedown");
|
||||
sendMouseEvent("mouseup");
|
||||
// Focus the window first, then click.
|
||||
desiredWindow.addEventListener("focus", function onFocus() {
|
||||
desiredWindow.removeEventListener("focus", onFocus, true);
|
||||
setTimeout(doClick, 0);
|
||||
}, true);
|
||||
desiredWindow.focus();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -16,6 +16,7 @@ browser.jar:
|
||||
content/branding/icon128.png (../mozicon128.png)
|
||||
content/branding/identity-icons-brand.png (identity-icons-brand.png)
|
||||
content/branding/identity-icons-brand@2x.png (identity-icons-brand@2x.png)
|
||||
content/branding/silhouette-40.svg (silhouette-40.svg)
|
||||
content/branding/aboutDialog.css (aboutDialog.css)
|
||||
#ifdef MOZ_METRO
|
||||
content/branding/metro-about.css (metro-about.css)
|
||||
|
25
browser/branding/aurora/content/silhouette-40.svg
Normal file
25
browser/branding/aurora/content/silhouette-40.svg
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg"
|
||||
x="0px" y="0px" viewBox="-45 31 40 40"
|
||||
enable-background="new -45 31 40 40">
|
||||
<path fill="#CCCCCC" d="M-14.1,54.7c0.7-1.4,1.7-4.4,0.8-6.9c0,0,0,0,0,0.1l0,0c0,0-0.2,0.5-0.4,1.3c0-0.1,0-0.2,0-0.3
|
||||
c0.1-0.9,0-1.9-0.1-2.9c-0.3-1.5-1.4-2.8-2-3.2c0,0,0.1,0,0.1,0.1c-0.1-0.1-0.1-0.1-0.1-0.1s0,0.1,0.1,0.4c-0.7-1.1-1.6-1.5-1.6-1.5
|
||||
s0,0.2,0.1,0.5c-2-1.9-4.7-3-7.6-3c-3,0-5.7,1.2-7.8,3.1c0.1,0.1,0.2,0.3,0.4,0.5c0,0,0.8-0.1,1.7-0.1c1.7-1.2,3.6-1.8,5.7-1.8
|
||||
c2.6,0,5.1,1.1,7,3c-0.2-0.1-0.1,0,0,0.1c-0.6-0.4-1.2-0.8-1.7-0.8c1,0.8,2.6,2.7,2.4,6.2c-0.3-0.6-0.6-1-0.9-1.3
|
||||
c0.4,3.5,0,4.2-0.2,5.1c0-0.4-0.2-0.7-0.3-0.9c0,0,0,1.1-0.7,2.6c-0.5,1.2-1.1,1.5-1.3,1.5c-0.2,0-0.1-0.2-0.1-0.4
|
||||
c0,0-0.4,0.2-0.7,0.6c-0.3,0.4-0.6,0.8-0.8,0.6c0.1-0.1,0.2-0.3,0.3-0.4c-0.1,0.1-0.5,0.4-1.2,0.5c-0.3,0-1.6,0.3-3.3-0.6
|
||||
c0.3,0,0.6-0.1,0.9,0.1c-0.3-0.3-1-0.3-1.5-0.4c-0.5-0.4-1.1-1-1.4-1.4c1.3,0.3,2.8,0.1,3.6-0.5s1.3-1,1.8-0.9
|
||||
c0.4,0.1,0.7-0.4,0.4-0.8c-0.3-0.4-1.2-1-2.3-0.7c-0.8,0.2-1.8,1.1-3.3,0.2c-1.3-0.8-1.3-1.4-1.3-1.8c0-0.3,0.2-0.7,0.5-0.8
|
||||
c0.2,0.1,0.3,0.1,0.3,0.1s-0.1-0.1-0.1-0.2l0,0c0.1,0,0.4,0.2,0.6,0.2c0.2,0.1,0.3,0.2,0.3,0.2s0,0,0-0.1c0,0-0.1-0.2-0.3-0.3l0,0
|
||||
c0.1,0,0.2,0.1,0.4,0.2c0-0.2,0.1-0.4,0.1-0.7c0-0.2,0-0.3-0.1-0.4c-0.1-0.1,0-0.1,0.1,0c0-0.1,0-0.1-0.1-0.2l0,0c0,0,0,0,0-0.1
|
||||
c0.2-0.3,1.8-1.2,1.9-1.3c0.2-0.1,0.3-0.3,0.4-0.5c0.2-0.1,0.3-0.5,0.3-0.8c0-0.1-0.2-0.3-0.4-0.3c-0.1,0-0.4-0.1-0.6,0l0,0
|
||||
c-0.3,0-0.7,0-1.2,0s-0.8-0.3-1-0.6c0-0.1-0.1-0.1-0.1-0.2c0-0.1-0.1-0.2-0.1-0.2c0.2-0.8,0.7-1.5,1.4-2.1c0,0-0.2,0-0.1,0
|
||||
c0,0,0.3-0.2,0.4-0.2c0.1,0-0.3-0.1-0.6-0.1c-0.5,0.2-0.6,0.2-0.8,0.3c0.1-0.1,0.3-0.2,0.2-0.2c-0.3,0.1-0.7,0.4-1.1,0.6v-0.1
|
||||
c-0.2,0.1-0.6,0.4-0.7,0.7c0-0.1,0-0.1,0-0.1c-0.1,0-0.2,0.2-0.3,0.3l0,0c-1.1-0.3-2-0.2-2.8,0c-0.2-0.1-0.6-0.5-0.9-1
|
||||
c0,0,0,0.1-0.1,0.1c-0.1-0.4-0.3-0.9-0.3-1.3v-0.1c0,0-0.1,0.1-0.3,0.3c-0.1,0.2-0.2,0.3-0.2,0.5c0,0.1-0.1,0.2-0.1,0.2v-0.2
|
||||
c0,0.1-0.1,0.2-0.2,0.3c0,0.2,0,0.3-0.1,0.4l0,0c0,0,0-0.2,0-0.1c-0.1,0.2-0.2,0.5-0.2,0.8c-0.1,0.3-0.1,0.5-0.1,0.8s0,0.7,0,1.2
|
||||
c0,0.1,0,0.1,0,0.2c-0.3,0.4-0.5,0.7-0.6,0.9c-0.4,0.7-0.7,1.8-1,3.5c0,0,0.2-0.6,0.6-1.3l0,0c-0.3,0.9-0.5,2.3-0.4,4.4
|
||||
c0-0.1,0.1-0.6,0.2-1.3c0.1,1.4,0.5,3.1,1.5,5c0.8,1.4,1.7,2.4,2.7,3.2c0.2,0.2,0.4,0.3,0.6,0.5c1.3,1,3.3,2.1,5,2.4
|
||||
c-0.6-0.2-1-0.5-1-0.5s2,0.7,3.5,0.6c-0.5-0.1-0.6-0.3-0.6-0.3s4.2,0.2,6.4-1.5c0.5-0.4,0.8-0.8,0.9-1.2c0.6-0.4,1.3-0.8,2-1.6
|
||||
c1.2-1.2,1.3-2.1,1.4-3v0.1C-14,55.2-14,54.9-14.1,54.7z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
@ -16,6 +16,7 @@ browser.jar:
|
||||
content/branding/icon128.png (../mozicon128.png)
|
||||
content/branding/identity-icons-brand.png (identity-icons-brand.png)
|
||||
content/branding/identity-icons-brand@2x.png (identity-icons-brand@2x.png)
|
||||
content/branding/silhouette-40.svg (silhouette-40.svg)
|
||||
content/branding/aboutDialog.css (aboutDialog.css)
|
||||
#ifdef MOZ_METRO
|
||||
content/branding/metro-about.css (metro-about.css)
|
||||
|
1359
browser/branding/nightly/content/silhouette-40.svg
Normal file
1359
browser/branding/nightly/content/silhouette-40.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 148 KiB |
@ -15,6 +15,7 @@ browser.jar:
|
||||
content/branding/icon128.png (../mozicon128.png)
|
||||
content/branding/identity-icons-brand.png (identity-icons-brand.png)
|
||||
content/branding/identity-icons-brand@2x.png (identity-icons-brand@2x.png)
|
||||
content/branding/silhouette-40.svg (silhouette-40.svg)
|
||||
content/branding/aboutDialog.css (aboutDialog.css)
|
||||
#ifdef MOZ_METRO
|
||||
content/branding/metro-about.css (metro-about.css)
|
||||
|
25
browser/branding/official/content/silhouette-40.svg
Normal file
25
browser/branding/official/content/silhouette-40.svg
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="-45 31 40 40"
|
||||
enable-background="new -45 31 40 40">
|
||||
<path fill="#CCCCCC" d="M-14.1,54.7c0.7-1.4,1.7-4.4,0.8-6.9c0,0,0,0,0,0.1l0,0c0,0-0.2,0.5-0.4,1.3c0-0.1,0-0.2,0-0.3
|
||||
c0.1-0.9,0-1.9-0.1-2.9c-0.3-1.5-1.4-2.8-2-3.2c0,0,0.1,0,0.1,0.1c-0.1-0.1-0.1-0.1-0.1-0.1s0,0.1,0.1,0.4c-0.7-1.1-1.6-1.5-1.6-1.5
|
||||
s0,0.2,0.1,0.5c-2-1.9-4.7-3-7.6-3c-3,0-5.7,1.2-7.8,3.1c0.1,0.1,0.2,0.3,0.4,0.5c0,0,0.8-0.1,1.7-0.1c1.7-1.2,3.6-1.8,5.7-1.8
|
||||
c2.6,0,5.1,1.1,7,3c-0.2-0.1-0.1,0,0,0.1c-0.6-0.4-1.2-0.8-1.7-0.8c1,0.8,2.6,2.7,2.4,6.2c-0.3-0.6-0.6-1-0.9-1.3
|
||||
c0.4,3.5,0,4.2-0.2,5.1c0-0.4-0.2-0.7-0.3-0.9c0,0,0,1.1-0.7,2.6c-0.5,1.2-1.1,1.5-1.3,1.5c-0.2,0-0.1-0.2-0.1-0.4
|
||||
c0,0-0.4,0.2-0.7,0.6c-0.3,0.4-0.6,0.8-0.8,0.6c0.1-0.1,0.2-0.3,0.3-0.4c-0.1,0.1-0.5,0.4-1.2,0.5c-0.3,0-1.6,0.3-3.3-0.6
|
||||
c0.3,0,0.6-0.1,0.9,0.1c-0.3-0.3-1-0.3-1.5-0.4c-0.5-0.4-1.1-1-1.4-1.4c1.3,0.3,2.8,0.1,3.6-0.5s1.3-1,1.8-0.9
|
||||
c0.4,0.1,0.7-0.4,0.4-0.8c-0.3-0.4-1.2-1-2.3-0.7c-0.8,0.2-1.8,1.1-3.3,0.2c-1.3-0.8-1.3-1.4-1.3-1.8c0-0.3,0.2-0.7,0.5-0.8
|
||||
c0.2,0.1,0.3,0.1,0.3,0.1s-0.1-0.1-0.1-0.2l0,0c0.1,0,0.4,0.2,0.6,0.2c0.2,0.1,0.3,0.2,0.3,0.2s0,0,0-0.1c0,0-0.1-0.2-0.3-0.3l0,0
|
||||
c0.1,0,0.2,0.1,0.4,0.2c0-0.2,0.1-0.4,0.1-0.7c0-0.2,0-0.3-0.1-0.4c-0.1-0.1,0-0.1,0.1,0c0-0.1,0-0.1-0.1-0.2l0,0c0,0,0,0,0-0.1
|
||||
c0.2-0.3,1.8-1.2,1.9-1.3c0.2-0.1,0.3-0.3,0.4-0.5c0.2-0.1,0.3-0.5,0.3-0.8c0-0.1-0.2-0.3-0.4-0.3c-0.1,0-0.4-0.1-0.6,0l0,0
|
||||
c-0.3,0-0.7,0-1.2,0s-0.8-0.3-1-0.6c0-0.1-0.1-0.1-0.1-0.2c0-0.1-0.1-0.2-0.1-0.2c0.2-0.8,0.7-1.5,1.4-2.1c0,0-0.2,0-0.1,0
|
||||
c0,0,0.3-0.2,0.4-0.2c0.1,0-0.3-0.1-0.6-0.1c-0.5,0.2-0.6,0.2-0.8,0.3c0.1-0.1,0.3-0.2,0.2-0.2c-0.3,0.1-0.7,0.4-1.1,0.6v-0.1
|
||||
c-0.2,0.1-0.6,0.4-0.7,0.7c0-0.1,0-0.1,0-0.1c-0.1,0-0.2,0.2-0.3,0.3l0,0c-1.1-0.3-2-0.2-2.8,0c-0.2-0.1-0.6-0.5-0.9-1
|
||||
c0,0,0,0.1-0.1,0.1c-0.1-0.4-0.3-0.9-0.3-1.3v-0.1c0,0-0.1,0.1-0.3,0.3c-0.1,0.2-0.2,0.3-0.2,0.5c0,0.1-0.1,0.2-0.1,0.2v-0.2
|
||||
c0,0.1-0.1,0.2-0.2,0.3c0,0.2,0,0.3-0.1,0.4l0,0c0,0,0-0.2,0-0.1c-0.1,0.2-0.2,0.5-0.2,0.8c-0.1,0.3-0.1,0.5-0.1,0.8s0,0.7,0,1.2
|
||||
c0,0.1,0,0.1,0,0.2c-0.3,0.4-0.5,0.7-0.6,0.9c-0.4,0.7-0.7,1.8-1,3.5c0,0,0.2-0.6,0.6-1.3l0,0c-0.3,0.9-0.5,2.3-0.4,4.4
|
||||
c0-0.1,0.1-0.6,0.2-1.3c0.1,1.4,0.5,3.1,1.5,5c0.8,1.4,1.7,2.4,2.7,3.2c0.2,0.2,0.4,0.3,0.6,0.5c1.3,1,3.3,2.1,5,2.4
|
||||
c-0.6-0.2-1-0.5-1-0.5s2,0.7,3.5,0.6c-0.5-0.1-0.6-0.3-0.6-0.3s4.2,0.2,6.4-1.5c0.5-0.4,0.8-0.8,0.9-1.2c0.6-0.4,1.3-0.8,2-1.6
|
||||
c1.2-1.2,1.3-2.1,1.4-3v0.1C-14,55.2-14,54.9-14.1,54.7z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
@ -16,6 +16,7 @@ browser.jar:
|
||||
content/branding/icon128.png (../mozicon128.png)
|
||||
content/branding/identity-icons-brand.png (identity-icons-brand.png)
|
||||
content/branding/identity-icons-brand@2x.png (identity-icons-brand@2x.png)
|
||||
content/branding/silhouette-40.svg (silhouette-40.svg)
|
||||
content/branding/aboutDialog.css (aboutDialog.css)
|
||||
#ifdef MOZ_METRO
|
||||
content/branding/metro-about.css (metro-about.css)
|
||||
|
1359
browser/branding/unofficial/content/silhouette-40.svg
Normal file
1359
browser/branding/unofficial/content/silhouette-40.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 148 KiB |
238
browser/components/loop/content/shared/js/crypto.js
Normal file
238
browser/components/loop/content/shared/js/crypto.js
Normal file
@ -0,0 +1,238 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/* global loop:true */
|
||||
|
||||
var loop = loop || {};
|
||||
|
||||
loop.crypto = (function() {
|
||||
"use strict";
|
||||
|
||||
var ALGORITHM = "AES-GCM";
|
||||
var KEY_LENGTH = 128;
|
||||
// We use JSON web key formats for the generated keys.
|
||||
// https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41
|
||||
var KEY_FORMAT = "jwk";
|
||||
// This is the JSON web key type from the generateKey algorithm.
|
||||
var KEY_TYPE = "oct";
|
||||
var ENCRYPT_TAG_LENGTH = 128;
|
||||
var INITIALIZATION_VECTOR_LENGTH = 12;
|
||||
|
||||
var sharedUtils = loop.shared.utils;
|
||||
|
||||
/**
|
||||
* Root object, by default set to window.
|
||||
* @type {DOMWindow|Object}
|
||||
*/
|
||||
var rootObject = window;
|
||||
|
||||
/**
|
||||
* Sets a new root object. This is useful for testing crypto not supported as
|
||||
* it allows us to fake crypto not being present.
|
||||
* In beforeEach(), loop.crypto.setRootObject is used to
|
||||
* substitute a fake window, and in afterEach(), the real window object is
|
||||
* replaced.
|
||||
*
|
||||
* @param {Object}
|
||||
*/
|
||||
function setRootObject(obj) {
|
||||
console.log("loop.crpyto.mixins: rootObject set to " + obj);
|
||||
rootObject = obj;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if Web Crypto is supported by this browser.
|
||||
*
|
||||
* @return {Boolean} True if Web Crypto is supported
|
||||
*/
|
||||
function isSupported() {
|
||||
return "crypto" in rootObject;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a random key using the Web Crypto libraries.
|
||||
*
|
||||
* @return {Promise} A promise which is rejected on failure, or resolved
|
||||
* with a string that is in the JSON web key format.
|
||||
*/
|
||||
function generateKey() {
|
||||
if (!isSupported()) {
|
||||
throw new Error("Web Crypto is not supported");
|
||||
}
|
||||
|
||||
return new Promise(function(resolve, reject) {
|
||||
// First get a crypto key.
|
||||
rootObject.crypto.subtle.generateKey({name: ALGORITHM, length: KEY_LENGTH },
|
||||
// `true` means that the key can be extracted from the CryptoKey object.
|
||||
true,
|
||||
// Usages for the key.
|
||||
["encrypt", "decrypt"]
|
||||
).then(function(cryptoKey) {
|
||||
// Now extract the key in the JSON web key format.
|
||||
return rootObject.crypto.subtle.exportKey(KEY_FORMAT, cryptoKey);
|
||||
}).then(function(exportedKey) {
|
||||
// Lastly resolve the promise with the new key.
|
||||
resolve(exportedKey.k);
|
||||
}).catch(function(error) {
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Encrypts an object using the specified key.
|
||||
*
|
||||
* @param {String} key The key to use for encryption. This should have
|
||||
* been generated by generateKey.
|
||||
* @param {String} data The string to be encrypted.
|
||||
*
|
||||
* @return {Promise} A promise which is rejected on failure, or resolved
|
||||
* with a string that is the encrypted context.
|
||||
*/
|
||||
function encryptBytes(key, data) {
|
||||
if (!isSupported()) {
|
||||
throw new Error("Web Crypto is not supported");
|
||||
}
|
||||
|
||||
var iv = new Uint8Array(INITIALIZATION_VECTOR_LENGTH);
|
||||
|
||||
return new Promise(function(resolve, reject) {
|
||||
// First import the key to a format we can use.
|
||||
rootObject.crypto.subtle.importKey(KEY_FORMAT,
|
||||
{k: key, kty: KEY_TYPE},
|
||||
ALGORITHM,
|
||||
// If the key is extractable.
|
||||
true,
|
||||
// What we're using it for.
|
||||
["encrypt"]
|
||||
).then(function(cryptoKey) {
|
||||
// Now we've got the cryptoKey, we can do the actual encryption.
|
||||
|
||||
// First get the data into the format we need.
|
||||
var dataBuffer = sharedUtils.strToUint8Array(data);
|
||||
|
||||
// It is critically important to change the IV any time the
|
||||
// encrypted information is updated.
|
||||
rootObject.crypto.getRandomValues(iv);
|
||||
|
||||
return rootObject.crypto.subtle.encrypt({
|
||||
name: ALGORITHM,
|
||||
iv: iv,
|
||||
tagLength: ENCRYPT_TAG_LENGTH
|
||||
}, cryptoKey,
|
||||
dataBuffer);
|
||||
}).then(function(cipherText) {
|
||||
// Join the initialization vector and context for returning.
|
||||
var joinedData = _mergeIVandCipherText(iv, new DataView(cipherText));
|
||||
|
||||
// Now convert to a string and base-64 encode.
|
||||
var encryptedData = loop.shared.utils.btoa(joinedData);
|
||||
|
||||
resolve(encryptedData);
|
||||
}).catch(function(error) {
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Decrypts an object using the specified key.
|
||||
*
|
||||
* @param {String} key The key to use for encryption. This should have
|
||||
* been generated by generateKey.
|
||||
* @param {String} encryptedData The encrypted context.
|
||||
* @return {Promise} A promise which is rejected on failure, or resolved
|
||||
* with a string that is the decrypted context.
|
||||
*/
|
||||
function decryptBytes(key, encryptedData) {
|
||||
if (!isSupported()) {
|
||||
throw new Error("Web Crypto is not supported");
|
||||
}
|
||||
|
||||
return new Promise(function(resolve, reject) {
|
||||
// First import the key to a format we can use.
|
||||
rootObject.crypto.subtle.importKey(KEY_FORMAT,
|
||||
{k: key, kty: KEY_TYPE},
|
||||
ALGORITHM,
|
||||
// If the key is extractable.
|
||||
true,
|
||||
// What we're using it for.
|
||||
["decrypt"]
|
||||
).then(function(cryptoKey) {
|
||||
// Now we've got the key, start the decryption.
|
||||
var splitData = _splitIVandCipherText(encryptedData);
|
||||
|
||||
return rootObject.crypto.subtle.decrypt({
|
||||
name: ALGORITHM,
|
||||
iv: splitData.iv,
|
||||
tagLength: ENCRYPT_TAG_LENGTH
|
||||
}, cryptoKey, splitData.cipherText);
|
||||
}).then(function(plainText) {
|
||||
// Now we just turn it back into a string and then an object.
|
||||
resolve(sharedUtils.Uint8ArrayToStr(new Uint8Array(plainText)));
|
||||
}).catch(function(error) {
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Appends the cipher text to the end of the initialization vector and
|
||||
* returns the result.
|
||||
*
|
||||
* @param {Uint8Array} ivArray The array of initialization vector values.
|
||||
* @param {DataView} cipherTextDataView The cipherText in data view format.
|
||||
* @return {Uint8Array} An array of the IV and cipherText.
|
||||
*/
|
||||
function _mergeIVandCipherText(ivArray, cipherTextDataView) {
|
||||
// First we translate the data view to an array so we can get
|
||||
// the length.
|
||||
var cipherText = new Uint8Array(cipherTextDataView.buffer);
|
||||
var cipherTextLength = cipherText.length;
|
||||
|
||||
var joinedContext = new Uint8Array(INITIALIZATION_VECTOR_LENGTH + cipherTextLength);
|
||||
|
||||
var i;
|
||||
for (i = 0; i < INITIALIZATION_VECTOR_LENGTH; i++) {
|
||||
joinedContext[i] = ivArray[i];
|
||||
}
|
||||
|
||||
for (i = 0; i < cipherTextLength; i++) {
|
||||
joinedContext[i + INITIALIZATION_VECTOR_LENGTH] = cipherText[i];
|
||||
}
|
||||
|
||||
return joinedContext;
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes the IV from the start of the passed in array and separates
|
||||
* out the cipher text.
|
||||
*
|
||||
* @param {String} encryptedData Encrypted data in base64 format.
|
||||
* @return {Object} An object consisting of two items: iv and cipherText,
|
||||
* both are Uint8Arrays.
|
||||
*/
|
||||
function _splitIVandCipherText(encryptedData) {
|
||||
// Convert into byte arrays.
|
||||
var encryptedDataArray = loop.shared.utils.atob(encryptedData);
|
||||
|
||||
// Now split out the initialization vector and the cipherText.
|
||||
var iv = encryptedDataArray.slice(0, INITIALIZATION_VECTOR_LENGTH);
|
||||
var cipherText = encryptedDataArray.slice(INITIALIZATION_VECTOR_LENGTH,
|
||||
encryptedDataArray.length);
|
||||
|
||||
return {
|
||||
iv: iv,
|
||||
cipherText: cipherText
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
decryptBytes: decryptBytes,
|
||||
encryptBytes: encryptBytes,
|
||||
generateKey: generateKey,
|
||||
isSupported: isSupported,
|
||||
setRootObject: setRootObject
|
||||
};
|
||||
})();
|
@ -27,25 +27,37 @@ loop.OTSdkDriver = (function() {
|
||||
this.dispatcher = options.dispatcher;
|
||||
this.sdk = options.sdk;
|
||||
|
||||
// Note that this will only be defined and usable in a desktop-local
|
||||
// context, not in the standalone web client.
|
||||
this.mozLoop = options.mozLoop;
|
||||
this._isDesktop = !!options.isDesktop;
|
||||
|
||||
if (this._isDesktop) {
|
||||
if (!options.mozLoop) {
|
||||
throw new Error("Missing option mozLoop");
|
||||
}
|
||||
this.mozLoop = options.mozLoop;
|
||||
}
|
||||
|
||||
this.connections = {};
|
||||
this.connectionStartTime = this.CONNECTION_START_TIME_UNINITIALIZED;
|
||||
this._setTwoWayMediaStartTime(this.CONNECTION_START_TIME_UNINITIALIZED);
|
||||
|
||||
this.dispatcher.register(this, [
|
||||
"setupStreamElements",
|
||||
"setMute"
|
||||
]);
|
||||
|
||||
// Set loop.debug.twoWayMediaTelemetry to true in the browser
|
||||
// by changing the hidden pref loop.debug.twoWayMediaTelemetry using
|
||||
// about:config, or use
|
||||
//
|
||||
// localStorage.setItem("debug.twoWayMediaTelemetry", true);
|
||||
this._debugTwoWayMediaTelemetry =
|
||||
loop.shared.utils.getBoolPreference("debug.twoWayMediaTelemetry");
|
||||
|
||||
/**
|
||||
* XXX This is a workaround for desktop machines that do not have a
|
||||
* camera installed. As we don't yet have device enumeration, when
|
||||
* we do, this can be removed (bug 1138851), and the sdk should handle it.
|
||||
*/
|
||||
if ("isDesktop" in options && options.isDesktop &&
|
||||
!window.MediaStreamTrack.getSources) {
|
||||
if (this._isDesktop && !window.MediaStreamTrack.getSources) {
|
||||
// If there's no getSources function, the sdk defines its own and caches
|
||||
// the result. So here we define the "normal" one which doesn't get cached, so
|
||||
// we can change it later.
|
||||
@ -56,9 +68,6 @@ loop.OTSdkDriver = (function() {
|
||||
};
|
||||
|
||||
OTSdkDriver.prototype = {
|
||||
CONNECTION_START_TIME_UNINITIALIZED: -1,
|
||||
CONNECTION_START_TIME_ALREADY_NOTED: -2,
|
||||
|
||||
/**
|
||||
* Clones the publisher config into a new object, as the sdk modifies the
|
||||
* properties object.
|
||||
@ -236,7 +245,7 @@ loop.OTSdkDriver = (function() {
|
||||
delete this.publisher;
|
||||
}
|
||||
|
||||
this._noteConnectionLengthIfNeeded(this.connectionStartTime, performance.now());
|
||||
this._noteConnectionLengthIfNeeded(this._getTwoWayMediaStartTime(), performance.now());
|
||||
|
||||
// Also, tidy these variables ready for next time.
|
||||
delete this._sessionConnected;
|
||||
@ -244,7 +253,7 @@ loop.OTSdkDriver = (function() {
|
||||
delete this._publishedLocalStream;
|
||||
delete this._subscribedRemoteStream;
|
||||
this.connections = {};
|
||||
this.connectionStartTime = this.CONNECTION_START_TIME_UNINITIALIZED;
|
||||
this._setTwoWayMediaStartTime(this.CONNECTION_START_TIME_UNINITIALIZED);
|
||||
},
|
||||
|
||||
/**
|
||||
@ -308,7 +317,7 @@ loop.OTSdkDriver = (function() {
|
||||
if (connection && (connection.id in this.connections)) {
|
||||
delete this.connections[connection.id];
|
||||
}
|
||||
this._noteConnectionLengthIfNeeded(this.connectionStartTime, performance.now());
|
||||
this._noteConnectionLengthIfNeeded(this._getTwoWayMediaStartTime(), performance.now());
|
||||
this.dispatcher.dispatch(new sharedActions.RemotePeerDisconnected({
|
||||
peerHungup: event.reason === "clientDisconnected"
|
||||
}));
|
||||
@ -335,7 +344,7 @@ loop.OTSdkDriver = (function() {
|
||||
return;
|
||||
}
|
||||
|
||||
this._noteConnectionLengthIfNeeded(this.connectionStartTime,
|
||||
this._noteConnectionLengthIfNeeded(this._getTwoWayMediaStartTime(),
|
||||
performance.now());
|
||||
this.dispatcher.dispatch(new sharedActions.ConnectionFailure({
|
||||
reason: reason
|
||||
@ -408,7 +417,7 @@ loop.OTSdkDriver = (function() {
|
||||
|
||||
this._subscribedRemoteStream = true;
|
||||
if (this._checkAllStreamsConnected()) {
|
||||
this.connectionStartTime = performance.now();
|
||||
this._setTwoWayMediaStartTime(performance.now());
|
||||
this.dispatcher.dispatch(new sharedActions.MediaConnected());
|
||||
}
|
||||
},
|
||||
@ -429,6 +438,56 @@ loop.OTSdkDriver = (function() {
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Implementation detail, may be set to one of the CONNECTION_START_TIME
|
||||
* constants, or a positive integer in milliseconds.
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
__twoWayMediaStartTime: undefined,
|
||||
|
||||
/**
|
||||
* Used as a guard to make sure we don't inadvertently use an
|
||||
* uninitialized value.
|
||||
*/
|
||||
CONNECTION_START_TIME_UNINITIALIZED: -1,
|
||||
|
||||
/**
|
||||
* Use as a guard to ensure that we don't note any bidirectional sessions
|
||||
* twice.
|
||||
*/
|
||||
CONNECTION_START_TIME_ALREADY_NOTED: -2,
|
||||
|
||||
/**
|
||||
* Set and get the start time of the two-way media connection. These
|
||||
* are done as wrapper functions so that we can log sets to make manual
|
||||
* verification of various telemetry scenarios possible. The get API is
|
||||
* analogous in order to follow the principle of least surprise for
|
||||
* people consuming this code.
|
||||
*
|
||||
* If this._isDesktop is not true, returns immediately without making
|
||||
* any changes, since this data is not used, and it makes reading
|
||||
* the logs confusing for manual verification of both ends of the call in
|
||||
* the same browser, which is a case we care about.
|
||||
*
|
||||
* @param start start time in milliseconds, as returned by
|
||||
* performance.now()
|
||||
* @private
|
||||
*/
|
||||
_setTwoWayMediaStartTime: function(start) {
|
||||
if (!this._isDesktop) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.__twoWayMediaStartTime = start;
|
||||
if (this._debugTwoWayMediaTelemetry) {
|
||||
console.log("Loop Telemetry: noted two-way connection start, " +
|
||||
"start time in ms:", start);
|
||||
}
|
||||
},
|
||||
_getTwoWayMediaStartTime: function() {
|
||||
return this.__twoWayMediaStartTime;
|
||||
},
|
||||
|
||||
/**
|
||||
* Handles the event when the remote stream is destroyed.
|
||||
@ -528,7 +587,7 @@ loop.OTSdkDriver = (function() {
|
||||
// Now record the fact, and check if we've got all media yet.
|
||||
this._publishedLocalStream = true;
|
||||
if (this._checkAllStreamsConnected()) {
|
||||
this.connectionStartTime = performance.now();
|
||||
this._setTwoWayMediaStartTime(performance.now);
|
||||
this.dispatcher.dispatch(new sharedActions.MediaConnected());
|
||||
}
|
||||
}
|
||||
@ -562,6 +621,14 @@ loop.OTSdkDriver = (function() {
|
||||
}));
|
||||
},
|
||||
|
||||
/*
|
||||
* XXX all of the bi-directional media connection telemetry stuff in this
|
||||
* file, (much, but not all, of it is below) should be hoisted into its
|
||||
* own object for maintainability and clarity, also in part because this
|
||||
* stuff only wants to run one side of the connection, not both (tracked
|
||||
* by bug 1145237).
|
||||
*/
|
||||
|
||||
/**
|
||||
* A hook exposed only for the use of the functional tests so that
|
||||
* they can check that the bi-directional media count is being updated
|
||||
@ -574,7 +641,7 @@ loop.OTSdkDriver = (function() {
|
||||
|
||||
/**
|
||||
* Wrapper for adding a keyed value that also updates
|
||||
* connectionLengthNoted calls and sets this.connectionStartTime to
|
||||
* connectionLengthNoted calls and sets the twoWayMediaStartTime to
|
||||
* this.CONNECTION_START_TIME_ALREADY_NOTED.
|
||||
*
|
||||
* @param {number} callLengthSeconds the call length in seconds
|
||||
@ -594,15 +661,19 @@ loop.OTSdkDriver = (function() {
|
||||
|
||||
this.mozLoop.telemetryAddKeyedValue("LOOP_TWO_WAY_MEDIA_CONN_LENGTH",
|
||||
bucket);
|
||||
this.connectionStartTime = this.CONNECTION_START_TIME_ALREADY_NOTED;
|
||||
this._setTwoWayMediaStartTime(this.CONNECTION_START_TIME_ALREADY_NOTED);
|
||||
|
||||
this._connectionLengthNotedCalls++;
|
||||
if (this._debugTwoWayMediaTelemetry) {
|
||||
console.log('Loop Telemetry: noted two-way media connection ' +
|
||||
'in bucket: ', bucket);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Note connection length if it's valid (the startTime has been initialized
|
||||
* and is not later than endTime) and not yet already noted. If
|
||||
* this.mozLoop is not defined, we're assumed to be running in the
|
||||
* this._isDesktop is not true, we're assumed to be running in the
|
||||
* standalone client and return immediately.
|
||||
*
|
||||
* @param {number} startTime in milliseconds
|
||||
@ -610,23 +681,31 @@ loop.OTSdkDriver = (function() {
|
||||
* @private
|
||||
*/
|
||||
_noteConnectionLengthIfNeeded: function(startTime, endTime) {
|
||||
if (!this.mozLoop) {
|
||||
if (!this._isDesktop) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (startTime == this.CONNECTION_START_TIME_ALREADY_NOTED ||
|
||||
startTime == this.CONNECTION_START_TIME_UNINITIALIZED ||
|
||||
startTime > endTime) {
|
||||
console.log("_noteConnectionLengthIfNeeded called with " +
|
||||
" invalid params, either the calls were never" +
|
||||
" connected or there is a bug; startTime:", startTime,
|
||||
"endTime:", endTime);
|
||||
if (this._debugTwoWayMediaTelemetry) {
|
||||
console.log("_noteConnectionLengthIfNeeded called with " +
|
||||
" invalid params, either the calls were never" +
|
||||
" connected or there is a bug; startTime:", startTime,
|
||||
"endTime:", endTime);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
var callLengthSeconds = (endTime - startTime) / 1000;
|
||||
this._noteConnectionLength(callLengthSeconds);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* If set to true, make it easy to test/verify 2-way media connection
|
||||
* telemetry code operation by viewing the logs.
|
||||
*/
|
||||
_debugTwoWayMediaTelemetry: false
|
||||
};
|
||||
|
||||
return OTSdkDriver;
|
||||
|
@ -168,6 +168,228 @@ loop.shared.utils = (function(mozL10n) {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Binary-compatible Base64 decoding.
|
||||
*
|
||||
* Taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding
|
||||
*
|
||||
* @param {String} base64str The string to decode.
|
||||
* @return {Uint8Array} The decoded result in array format.
|
||||
*/
|
||||
function atob(base64str) {
|
||||
var strippedEncoding = base64str.replace(/[^A-Za-z0-9\+\/]/g, "");
|
||||
var inLength = strippedEncoding.length;
|
||||
var outLength = inLength * 3 + 1 >> 2;
|
||||
var result = new Uint8Array(outLength);
|
||||
|
||||
var mod3;
|
||||
var mod4;
|
||||
var uint24 = 0;
|
||||
var outIndex = 0;
|
||||
|
||||
for (var inIndex = 0; inIndex < inLength; inIndex++) {
|
||||
mod4 = inIndex & 3;
|
||||
uint24 |= _b64ToUint6(strippedEncoding.charCodeAt(inIndex)) << 6 * (3 - mod4);
|
||||
|
||||
if (mod4 === 3 || inLength - inIndex === 1) {
|
||||
for (mod3 = 0; mod3 < 3 && outIndex < outLength; mod3++, outIndex++) {
|
||||
result[outIndex] = uint24 >>> (16 >>> mod3 & 24) & 255;
|
||||
}
|
||||
uint24 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Binary-compatible Base64 encoding.
|
||||
*
|
||||
* Taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding
|
||||
*
|
||||
* @param {Uint8Array} bytes The data to encode.
|
||||
* @return {String} The base64 encoded string.
|
||||
*/
|
||||
function btoa(bytes) {
|
||||
var mod3 = 2;
|
||||
var result = "";
|
||||
var length = bytes.length;
|
||||
var uint24 = 0;
|
||||
|
||||
for (var index = 0; index < length; index++) {
|
||||
mod3 = index % 3;
|
||||
if (index > 0 && (index * 4 / 3) % 76 === 0) {
|
||||
result += "\r\n";
|
||||
}
|
||||
uint24 |= bytes[index] << (16 >>> mod3 & 24);
|
||||
if (mod3 === 2 || length - index === 1) {
|
||||
result += String.fromCharCode(_uint6ToB64(uint24 >>> 18 & 63),
|
||||
_uint6ToB64(uint24 >>> 12 & 63),
|
||||
_uint6ToB64(uint24 >>> 6 & 63),
|
||||
_uint6ToB64(uint24 & 63));
|
||||
uint24 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return result.substr(0, result.length - 2 + mod3) +
|
||||
(mod3 === 2 ? "" : mod3 === 1 ? "=" : "==");
|
||||
}
|
||||
|
||||
/**
|
||||
* Utility function to decode a base64 character into an integer.
|
||||
*
|
||||
* Taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding
|
||||
*
|
||||
* @param {Number} chr The character code to decode.
|
||||
* @return {Number} The decoded value.
|
||||
*/
|
||||
function _b64ToUint6 (chr) {
|
||||
return chr > 64 && chr < 91 ? chr - 65 :
|
||||
chr > 96 && chr < 123 ? chr - 71 :
|
||||
chr > 47 && chr < 58 ? chr + 4 :
|
||||
chr === 43 ? 62 :
|
||||
chr === 47 ? 63 : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Utility function to encode an integer into a base64 character code.
|
||||
*
|
||||
* Taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding
|
||||
*
|
||||
* @param {Number} uint6 The number to encode.
|
||||
* @return {Number} The encoded value.
|
||||
*/
|
||||
function _uint6ToB64 (uint6) {
|
||||
return uint6 < 26 ? uint6 + 65 :
|
||||
uint6 < 52 ? uint6 + 71 :
|
||||
uint6 < 62 ? uint6 - 4 :
|
||||
uint6 === 62 ? 43 :
|
||||
uint6 === 63 ? 47 : 65;
|
||||
}
|
||||
|
||||
/**
|
||||
* Utility function to convert a string into a uint8 array.
|
||||
*
|
||||
* Taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding
|
||||
*
|
||||
* @param {String} inString The string to convert.
|
||||
* @return {Uint8Array} The converted string in array format.
|
||||
*/
|
||||
function strToUint8Array(inString) {
|
||||
var inLength = inString.length;
|
||||
var arrayLength = 0;
|
||||
var chr;
|
||||
|
||||
// Mapping.
|
||||
for (var mapIndex = 0; mapIndex < inLength; mapIndex++) {
|
||||
chr = inString.charCodeAt(mapIndex);
|
||||
arrayLength += chr < 0x80 ? 1 :
|
||||
chr < 0x800 ? 2 :
|
||||
chr < 0x10000 ? 3 :
|
||||
chr < 0x200000 ? 4 :
|
||||
chr < 0x4000000 ? 5 : 6;
|
||||
}
|
||||
|
||||
var result = new Uint8Array(arrayLength);
|
||||
var index = 0;
|
||||
|
||||
// Transcription.
|
||||
for (var chrIndex = 0; index < arrayLength; chrIndex++) {
|
||||
chr = inString.charCodeAt(chrIndex);
|
||||
if (chr < 128) {
|
||||
// One byte.
|
||||
result[index++] = chr;
|
||||
} else if (chr < 0x800) {
|
||||
// Two bytes.
|
||||
result[index++] = 192 + (chr >>> 6);
|
||||
result[index++] = 128 + (chr & 63);
|
||||
} else if (chr < 0x10000) {
|
||||
// Three bytes.
|
||||
result[index++] = 224 + (chr >>> 12);
|
||||
result[index++] = 128 + (chr >>> 6 & 63);
|
||||
result[index++] = 128 + (chr & 63);
|
||||
} else if (chr < 0x200000) {
|
||||
// Four bytes.
|
||||
result[index++] = 240 + (chr >>> 18);
|
||||
result[index++] = 128 + (chr >>> 12 & 63);
|
||||
result[index++] = 128 + (chr >>> 6 & 63);
|
||||
result[index++] = 128 + (chr & 63);
|
||||
} else if (chr < 0x4000000) {
|
||||
// Five bytes.
|
||||
result[index++] = 248 + (chr >>> 24);
|
||||
result[index++] = 128 + (chr >>> 18 & 63);
|
||||
result[index++] = 128 + (chr >>> 12 & 63);
|
||||
result[index++] = 128 + (chr >>> 6 & 63);
|
||||
result[index++] = 128 + (chr & 63);
|
||||
} else { // if (chr <= 0x7fffffff)
|
||||
// Six bytes.
|
||||
result[index++] = 252 + (chr >>> 30);
|
||||
result[index++] = 128 + (chr >>> 24 & 63);
|
||||
result[index++] = 128 + (chr >>> 18 & 63);
|
||||
result[index++] = 128 + (chr >>> 12 & 63);
|
||||
result[index++] = 128 + (chr >>> 6 & 63);
|
||||
result[index++] = 128 + (chr & 63);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Utility function to change a uint8 based integer array to a string.
|
||||
*
|
||||
* Taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding
|
||||
*
|
||||
* @param {Uint8Array} arrayBytes Array to convert.
|
||||
* @param {String} The array as a string.
|
||||
*/
|
||||
function Uint8ArrayToStr(arrayBytes) {
|
||||
var result = "";
|
||||
var length = arrayBytes.length;
|
||||
var part;
|
||||
|
||||
for (var index = 0; index < length; index++) {
|
||||
part = arrayBytes[index];
|
||||
result += String.fromCharCode(
|
||||
part > 251 && part < 254 && index + 5 < length ?
|
||||
// Six bytes.
|
||||
// (part - 252 << 30) may be not so safe in ECMAScript! So...:
|
||||
(part - 252) * 1073741824 +
|
||||
(arrayBytes[++index] - 128 << 24) +
|
||||
(arrayBytes[++index] - 128 << 18) +
|
||||
(arrayBytes[++index] - 128 << 12) +
|
||||
(arrayBytes[++index] - 128 << 6) +
|
||||
arrayBytes[++index] - 128 :
|
||||
part > 247 && part < 252 && index + 4 < length ?
|
||||
// Five bytes.
|
||||
(part - 248 << 24) +
|
||||
(arrayBytes[++index] - 128 << 18) +
|
||||
(arrayBytes[++index] - 128 << 12) +
|
||||
(arrayBytes[++index] - 128 << 6) +
|
||||
arrayBytes[++index] - 128 :
|
||||
part > 239 && part < 248 && index + 3 < length ?
|
||||
// Four bytes.
|
||||
(part - 240 << 18) +
|
||||
(arrayBytes[++index] - 128 << 12) +
|
||||
(arrayBytes[++index] - 128 << 6) +
|
||||
arrayBytes[++index] - 128 :
|
||||
part > 223 && part < 240 && index + 2 < length ?
|
||||
// Three bytes.
|
||||
(part - 224 << 12) +
|
||||
(arrayBytes[++index] - 128 << 6) +
|
||||
arrayBytes[++index] - 128 :
|
||||
part > 191 && part < 224 && index + 1 < length ?
|
||||
// Two bytes.
|
||||
(part - 192 << 6) +
|
||||
arrayBytes[++index] - 128 :
|
||||
// One byte.
|
||||
part
|
||||
);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
return {
|
||||
CALL_TYPES: CALL_TYPES,
|
||||
FAILURE_DETAILS: FAILURE_DETAILS,
|
||||
@ -183,6 +405,10 @@ loop.shared.utils = (function(mozL10n) {
|
||||
isFirefoxOS: isFirefoxOS,
|
||||
isOpera: isOpera,
|
||||
getUnsupportedPlatform: getUnsupportedPlatform,
|
||||
locationData: locationData
|
||||
locationData: locationData,
|
||||
atob: atob,
|
||||
btoa: btoa,
|
||||
strToUint8Array: strToUint8Array,
|
||||
Uint8ArrayToStr: Uint8ArrayToStr
|
||||
};
|
||||
})(document.mozL10n || navigator.mozL10n);
|
||||
|
@ -193,7 +193,7 @@ class Test1BrowserCall(MarionetteTestCase):
|
||||
|
||||
def local_get_media_start_time(self):
|
||||
return self.local_get_chatbox_window_expr(
|
||||
"loop.conversation._sdkDriver.connectionStartTime")
|
||||
"loop.conversation._sdkDriver._getTwoWayMediaStartTime()")
|
||||
|
||||
# XXX could be memoized
|
||||
def local_get_media_start_time_uninitialized(self):
|
||||
@ -221,7 +221,7 @@ class Test1BrowserCall(MarionetteTestCase):
|
||||
|
||||
self.assertGreater(noted_calls, 0,
|
||||
"OTSdkDriver._connectionLengthNotedCalls should be "
|
||||
"> 0")
|
||||
"> 0, noted_calls = " + str(noted_calls))
|
||||
|
||||
def test_1_browser_call(self):
|
||||
self.switch_to_panel()
|
||||
@ -252,8 +252,8 @@ class Test1BrowserCall(MarionetteTestCase):
|
||||
# self.local_enable_screenshare()
|
||||
# self.standalone_check_remote_screenshare()
|
||||
|
||||
# We hangup on the remote side, because this also leaves the
|
||||
# local chatbox with the local publishing media still connected,
|
||||
# We hangup on the remote (standalone) side, because this also leaves
|
||||
# the local chatbox with the local publishing media still connected,
|
||||
# which means that the local_check_connection_length below
|
||||
# verifies that the connection is noted at the time the remote media
|
||||
# drops, rather than waiting until the window closes.
|
||||
|
113
browser/components/loop/test/shared/crypto_test.js
Normal file
113
browser/components/loop/test/shared/crypto_test.js
Normal file
@ -0,0 +1,113 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/* global loop, sinon */
|
||||
|
||||
var expect = chai.expect;
|
||||
|
||||
describe("loop.crypto", function() {
|
||||
"use strict";
|
||||
|
||||
var sandbox, oldCrypto;
|
||||
|
||||
beforeEach(function() {
|
||||
sandbox = sinon.sandbox.create();
|
||||
});
|
||||
|
||||
afterEach(function() {
|
||||
sandbox.restore();
|
||||
loop.crypto.setRootObject(window);
|
||||
});
|
||||
|
||||
describe("#isSupported", function() {
|
||||
it("should return true by default", function() {
|
||||
expect(loop.crypto.isSupported()).eql(true);
|
||||
});
|
||||
|
||||
it("should return false if crypto isn't supported", function() {
|
||||
loop.crypto.setRootObject({});
|
||||
|
||||
expect(loop.crypto.isSupported()).eql(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe("#generateKey", function() {
|
||||
it("should throw if web crypto is not available", function() {
|
||||
loop.crypto.setRootObject({});
|
||||
|
||||
expect(function() {
|
||||
loop.crypto.generateKey();
|
||||
}).to.Throw(/not supported/);
|
||||
});
|
||||
|
||||
it("should generate a key", function() {
|
||||
// The key is a random string, so we can't really test much else.
|
||||
return expect(loop.crypto.generateKey()).to.eventually.be.a("string");
|
||||
});
|
||||
});
|
||||
|
||||
describe("#encryptBytes", function() {
|
||||
it("should throw if web crypto is not available", function() {
|
||||
loop.crypto.setRootObject({});
|
||||
|
||||
expect(function() {
|
||||
loop.crypto.encryptBytes();
|
||||
}).to.Throw(/not supported/);
|
||||
});
|
||||
|
||||
it("should encrypt an object with a specific key", function() {
|
||||
return expect(loop.crypto.encryptBytes("Wt2-bZKeHO2wnaq00ZM6Nw",
|
||||
JSON.stringify({test: true}))).to.eventually.be.a("string");
|
||||
});
|
||||
});
|
||||
|
||||
describe("#decryptBytes", function() {
|
||||
it("should throw if web crypto is not available", function() {
|
||||
loop.crypto.setRootObject({});
|
||||
|
||||
expect(function() {
|
||||
loop.crypto.decryptBytes();
|
||||
}).to.Throw(/not supported/);
|
||||
});
|
||||
|
||||
it("should decypt an object via a specific key", function() {
|
||||
var key = "Wt2-bZKeHO2wnaq00ZM6Nw";
|
||||
var encryptedContext = "XvN9FDEm/GtE/5Bx5ezpn7JVDeZrtwOJy2CBjTGgJ4L33HhHOqEW+5k=";
|
||||
|
||||
return expect(loop.crypto.decryptBytes(key, encryptedContext)).to.eventually.eql(JSON.stringify({test: true}));
|
||||
});
|
||||
|
||||
it("should fail if the key didn't work", function() {
|
||||
var bad = "Bad-bZKeHO2wnaq00ZM6Nw";
|
||||
var encryptedContext = "TGZaAE3mqsBFK0GfheZXXDCaRKXJmIKJ8WzF0KBEl4Aldzf3iYlAsLQdA8XSXXvtJR2UYz+f";
|
||||
|
||||
return expect(loop.crypto.decryptBytes(bad, encryptedContext)).to.be.rejected;
|
||||
});
|
||||
});
|
||||
|
||||
describe("Full cycle", function() {
|
||||
it("should be able to encrypt and decypt in a full cycle", function(done) {
|
||||
var context = JSON.stringify({
|
||||
contextObject: true,
|
||||
UTF8String: "对话"
|
||||
});
|
||||
|
||||
return loop.crypto.generateKey().then(function (key) {
|
||||
loop.crypto.encryptBytes(key, context).then(function(encryptedContext) {
|
||||
loop.crypto.decryptBytes(key, encryptedContext).then(function(decryptedContext) {
|
||||
expect(decryptedContext).eql(context);
|
||||
done();
|
||||
}).catch(function(error) {
|
||||
done(error);
|
||||
});
|
||||
}).catch(function(error) {
|
||||
done(error);
|
||||
});
|
||||
}).catch(function(error) {
|
||||
done(error);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
@ -31,6 +31,7 @@
|
||||
<!-- test dependencies -->
|
||||
<script src="vendor/mocha-2.2.1.js"></script>
|
||||
<script src="vendor/chai-2.1.0.js"></script>
|
||||
<script src="vendor/chai-as-promised-4.3.0.js"></script>
|
||||
<script src="vendor/sinon-1.13.0.js"></script>
|
||||
<script>
|
||||
/*global chai, mocha */
|
||||
@ -42,6 +43,7 @@
|
||||
<script src="../../content/shared/js/utils.js"></script>
|
||||
<script src="../../content/shared/js/models.js"></script>
|
||||
<script src="../../content/shared/js/mixins.js"></script>
|
||||
<script src="../../content/shared/js/crypto.js"></script>
|
||||
<script src="../../content/shared/js/websocket.js"></script>
|
||||
<script src="../../content/shared/js/feedbackApiClient.js"></script>
|
||||
<script src="../../content/shared/js/validate.js"></script>
|
||||
@ -62,6 +64,7 @@
|
||||
<script src="models_test.js"></script>
|
||||
<script src="mixins_test.js"></script>
|
||||
<script src="utils_test.js"></script>
|
||||
<script src="crypto_test.js"></script>
|
||||
<script src="views_test.js"></script>
|
||||
<script src="websocket_test.js"></script>
|
||||
<script src="feedbackApiClient_test.js"></script>
|
||||
|
@ -77,7 +77,8 @@ describe("loop.OTSdkDriver", function () {
|
||||
driver = new loop.OTSdkDriver({
|
||||
dispatcher: dispatcher,
|
||||
sdk: sdk,
|
||||
mozLoop: mozLoop
|
||||
mozLoop: mozLoop,
|
||||
isDesktop: true
|
||||
});
|
||||
});
|
||||
|
||||
@ -98,10 +99,12 @@ describe("loop.OTSdkDriver", function () {
|
||||
}).to.Throw(/sdk/);
|
||||
});
|
||||
|
||||
it("should initialize the connectionStartTime to 'uninitialized'", function() {
|
||||
var driver = new loop.OTSdkDriver({sdk: sdk, dispatcher: dispatcher, mozLoop: mozLoop});
|
||||
it("should set the two-way media start time to 'uninitialized'", function() {
|
||||
var driver = new loop.OTSdkDriver(
|
||||
{sdk: sdk, dispatcher: dispatcher, mozLoop: mozLoop, isDesktop: true});
|
||||
|
||||
expect(driver.connectionStartTime).to.eql(driver.CONNECTION_START_TIME_UNINITIALIZED);
|
||||
expect(driver._getTwoWayMediaStartTime()).to.
|
||||
eql(driver.CONNECTION_START_TIME_UNINITIALIZED);
|
||||
});
|
||||
});
|
||||
|
||||
@ -331,7 +334,7 @@ describe("loop.OTSdkDriver", function () {
|
||||
driver.session = session;
|
||||
var startTime = 1;
|
||||
var endTime = 3;
|
||||
driver.connectionStartTime = startTime;
|
||||
driver._setTwoWayMediaStartTime(startTime);
|
||||
sandbox.stub(performance, "now").returns(endTime);
|
||||
sandbox.stub(driver, "_noteConnectionLengthIfNeeded");
|
||||
|
||||
@ -341,16 +344,17 @@ describe("loop.OTSdkDriver", function () {
|
||||
endTime);
|
||||
});
|
||||
|
||||
it("should reset the connectionStartTime", function() {
|
||||
it("should reset the two-way media connection start time", function() {
|
||||
driver.session = session;
|
||||
var startTime = 1;
|
||||
driver.connectionStartTime = startTime;
|
||||
driver._setTwoWayMediaStartTime(startTime);
|
||||
sandbox.stub(performance, "now");
|
||||
sandbox.stub(driver, "_noteConnectionLengthIfNeeded");
|
||||
|
||||
driver.disconnectSession();
|
||||
|
||||
expect(driver.connectionStartTime).to.eql(driver.CONNECTION_START_TIME_UNINITIALIZED);
|
||||
expect(driver._getTwoWayMediaStartTime()).to.
|
||||
eql(driver.CONNECTION_START_TIME_UNINITIALIZED);
|
||||
});
|
||||
});
|
||||
|
||||
@ -358,15 +362,15 @@ describe("loop.OTSdkDriver", function () {
|
||||
var startTimeMS;
|
||||
beforeEach(function() {
|
||||
startTimeMS = 1;
|
||||
driver.connectionStartTime = startTimeMS;
|
||||
driver._setTwoWayMediaStartTime(startTimeMS);
|
||||
});
|
||||
|
||||
|
||||
it("should set connectionStartTime to CONNECTION_START_TIME_ALREADY_NOTED", function() {
|
||||
it("should set two-way media start time to CONNECTION_START_TIME_ALREADY_NOTED", function() {
|
||||
var endTimeMS = 3;
|
||||
driver._noteConnectionLengthIfNeeded(startTimeMS, endTimeMS);
|
||||
|
||||
expect(driver.connectionStartTime).to.eql(driver.CONNECTION_START_TIME_ALREADY_NOTED);
|
||||
expect(driver._getTwoWayMediaStartTime()).to.
|
||||
eql(driver.CONNECTION_START_TIME_ALREADY_NOTED);
|
||||
});
|
||||
|
||||
it("should call mozLoop.noteConnectionLength with SHORTER_THAN_10S for calls less than 10s", function() {
|
||||
@ -414,6 +418,17 @@ describe("loop.OTSdkDriver", function () {
|
||||
"LOOP_TWO_WAY_MEDIA_CONN_LENGTH",
|
||||
mozLoop.TWO_WAY_MEDIA_CONN_LENGTH.MORE_THAN_5M);
|
||||
});
|
||||
|
||||
it("should not call mozLoop.noteConnectionLength if driver._isDesktop " +
|
||||
"is false",
|
||||
function() {
|
||||
var endTimeMS = 10 * 60 * 1000;
|
||||
driver._isDesktop = false;
|
||||
|
||||
driver._noteConnectionLengthIfNeeded(startTimeMS, endTimeMS);
|
||||
|
||||
sinon.assert.notCalled(mozLoop.telemetryAddKeyedValue);
|
||||
});
|
||||
});
|
||||
|
||||
describe("#forceDisconnectAll", function() {
|
||||
@ -499,7 +514,7 @@ describe("loop.OTSdkDriver", function () {
|
||||
driver.session = session;
|
||||
var startTime = 1;
|
||||
var endTime = 3;
|
||||
driver.connectionStartTime = startTime;
|
||||
driver._setTwoWayMediaStartTime(startTime);
|
||||
sandbox.stub(performance, "now").returns(endTime);
|
||||
sandbox.stub(driver, "_noteConnectionLengthIfNeeded");
|
||||
|
||||
@ -543,7 +558,7 @@ describe("loop.OTSdkDriver", function () {
|
||||
driver.session = session;
|
||||
var startTime = 1;
|
||||
var endTime = 3;
|
||||
driver.connectionStartTime = startTime;
|
||||
driver._setTwoWayMediaStartTime(startTime);
|
||||
sandbox.stub(performance, "now").returns(endTime);
|
||||
sandbox.stub(driver, "_noteConnectionLengthIfNeeded");
|
||||
|
||||
@ -629,14 +644,27 @@ describe("loop.OTSdkDriver", function () {
|
||||
sinon.match.hasOwn("name", "mediaConnected"));
|
||||
});
|
||||
|
||||
it("should store the start time when both streams are up", function() {
|
||||
it("should store the start time when both streams are up and" +
|
||||
" driver._isDesktop is true", function() {
|
||||
driver._publishedLocalStream = true;
|
||||
var startTime = 1;
|
||||
sandbox.stub(performance, "now").returns(startTime);
|
||||
|
||||
session.trigger("streamCreated", {stream: fakeStream});
|
||||
|
||||
expect(driver.connectionStartTime).to.eql(startTime);
|
||||
expect(driver._getTwoWayMediaStartTime()).to.eql(startTime);
|
||||
});
|
||||
|
||||
it("should not store the start time when both streams are up and" +
|
||||
" driver._isDesktop is false", function() {
|
||||
driver._isDesktop = false ;
|
||||
driver._publishedLocalStream = true;
|
||||
var startTime = 73;
|
||||
sandbox.stub(performance, "now").returns(startTime);
|
||||
|
||||
session.trigger("streamCreated", {stream: fakeStream});
|
||||
|
||||
expect(driver._getTwoWayMediaStartTime()).to.not.eql(startTime);
|
||||
});
|
||||
|
||||
|
||||
|
@ -171,4 +171,51 @@ describe("loop.shared.utils", function() {
|
||||
"subject", "body", "fake@invalid.tld");
|
||||
});
|
||||
});
|
||||
|
||||
describe("#btoa", function() {
|
||||
it("should encode a basic base64 string", function() {
|
||||
var result = sharedUtils.btoa(sharedUtils.strToUint8Array("crypto is great"));
|
||||
|
||||
expect(result).eql("Y3J5cHRvIGlzIGdyZWF0");
|
||||
});
|
||||
|
||||
it("should pad encoded base64 strings", function() {
|
||||
var result = sharedUtils.btoa(sharedUtils.strToUint8Array("crypto is grea"));
|
||||
|
||||
expect(result).eql("Y3J5cHRvIGlzIGdyZWE=");
|
||||
|
||||
result = sharedUtils.btoa(sharedUtils.strToUint8Array("crypto is gre"));
|
||||
|
||||
expect(result).eql("Y3J5cHRvIGlzIGdyZQ==");
|
||||
});
|
||||
|
||||
it("should encode a non-unicode base64 string", function() {
|
||||
var result = sharedUtils.btoa(sharedUtils.strToUint8Array("\uFDFD"));
|
||||
expect(result).eql("77e9");
|
||||
});
|
||||
});
|
||||
|
||||
describe("#atob", function() {
|
||||
it("should decode a basic base64 string", function() {
|
||||
var result = sharedUtils.Uint8ArrayToStr(sharedUtils.atob("Y3J5cHRvIGlzIGdyZWF0"));
|
||||
|
||||
expect(result).eql("crypto is great");
|
||||
});
|
||||
|
||||
it("should decode a padded base64 string", function() {
|
||||
var result = sharedUtils.Uint8ArrayToStr(sharedUtils.atob("Y3J5cHRvIGlzIGdyZWE="));
|
||||
|
||||
expect(result).eql("crypto is grea");
|
||||
|
||||
result = sharedUtils.Uint8ArrayToStr(sharedUtils.atob("Y3J5cHRvIGlzIGdyZQ=="));
|
||||
|
||||
expect(result).eql("crypto is gre");
|
||||
});
|
||||
|
||||
it("should decode a base64 string that has unicode characters", function() {
|
||||
var result = sharedUtils.Uint8ArrayToStr(sharedUtils.atob("77e9"));
|
||||
|
||||
expect(result).eql("\uFDFD");
|
||||
});
|
||||
});
|
||||
});
|
||||
|
377
browser/components/loop/test/shared/vendor/chai-as-promised-4.3.0.js
vendored
Normal file
377
browser/components/loop/test/shared/vendor/chai-as-promised-4.3.0.js
vendored
Normal file
@ -0,0 +1,377 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
// Module systems magic dance.
|
||||
|
||||
/* istanbul ignore else */
|
||||
if (typeof require === "function" && typeof exports === "object" && typeof module === "object") {
|
||||
// NodeJS
|
||||
module.exports = chaiAsPromised;
|
||||
} else if (typeof define === "function" && define.amd) {
|
||||
// AMD
|
||||
define(function () {
|
||||
return chaiAsPromised;
|
||||
});
|
||||
} else {
|
||||
/*global self: false */
|
||||
|
||||
// Other environment (usually <script> tag): plug in to global chai instance directly.
|
||||
chai.use(chaiAsPromised);
|
||||
|
||||
// Expose as a property of the global object so that consumers can configure the `transferPromiseness` property.
|
||||
self.chaiAsPromised = chaiAsPromised;
|
||||
}
|
||||
|
||||
chaiAsPromised.transferPromiseness = function (assertion, promise) {
|
||||
assertion.then = promise.then.bind(promise);
|
||||
};
|
||||
|
||||
chaiAsPromised.transformAsserterArgs = function (values) {
|
||||
return values;
|
||||
};
|
||||
|
||||
function chaiAsPromised(chai, utils) {
|
||||
var Assertion = chai.Assertion;
|
||||
var assert = chai.assert;
|
||||
|
||||
function isJQueryPromise(thenable) {
|
||||
return typeof thenable.always === "function" &&
|
||||
typeof thenable.done === "function" &&
|
||||
typeof thenable.fail === "function" &&
|
||||
typeof thenable.pipe === "function" &&
|
||||
typeof thenable.progress === "function" &&
|
||||
typeof thenable.state === "function";
|
||||
}
|
||||
|
||||
function assertIsAboutPromise(assertion) {
|
||||
if (typeof assertion._obj.then !== "function") {
|
||||
throw new TypeError(utils.inspect(assertion._obj) + " is not a thenable.");
|
||||
}
|
||||
if (isJQueryPromise(assertion._obj)) {
|
||||
throw new TypeError("Chai as Promised is incompatible with jQuery's thenables, sorry! Please use a " +
|
||||
"Promises/A+ compatible library (see http://promisesaplus.com/).");
|
||||
}
|
||||
}
|
||||
|
||||
function method(name, asserter) {
|
||||
utils.addMethod(Assertion.prototype, name, function () {
|
||||
assertIsAboutPromise(this);
|
||||
return asserter.apply(this, arguments);
|
||||
});
|
||||
}
|
||||
|
||||
function property(name, asserter) {
|
||||
utils.addProperty(Assertion.prototype, name, function () {
|
||||
assertIsAboutPromise(this);
|
||||
return asserter.apply(this, arguments);
|
||||
});
|
||||
}
|
||||
|
||||
function doNotify(promise, done) {
|
||||
promise.then(function () { done(); }, done);
|
||||
}
|
||||
|
||||
// These are for clarity and to bypass Chai refusing to allow `undefined` as actual when used with `assert`.
|
||||
function assertIfNegated(assertion, message, extra) {
|
||||
assertion.assert(true, null, message, extra.expected, extra.actual);
|
||||
}
|
||||
|
||||
function assertIfNotNegated(assertion, message, extra) {
|
||||
assertion.assert(false, message, null, extra.expected, extra.actual);
|
||||
}
|
||||
|
||||
function getBasePromise(assertion) {
|
||||
// We need to chain subsequent asserters on top of ones in the chain already (consider
|
||||
// `eventually.have.property("foo").that.equals("bar")`), only running them after the existing ones pass.
|
||||
// So the first base-promise is `assertion._obj`, but after that we use the assertions themselves, i.e.
|
||||
// previously derived promises, to chain off of.
|
||||
return typeof assertion.then === "function" ? assertion : assertion._obj;
|
||||
}
|
||||
|
||||
// Grab these first, before we modify `Assertion.prototype`.
|
||||
|
||||
var propertyNames = Object.getOwnPropertyNames(Assertion.prototype);
|
||||
|
||||
var propertyDescs = {};
|
||||
propertyNames.forEach(function (name) {
|
||||
propertyDescs[name] = Object.getOwnPropertyDescriptor(Assertion.prototype, name);
|
||||
});
|
||||
|
||||
property("fulfilled", function () {
|
||||
var that = this;
|
||||
var derivedPromise = getBasePromise(that).then(
|
||||
function (value) {
|
||||
that._obj = value;
|
||||
assertIfNegated(that,
|
||||
"expected promise not to be fulfilled but it was fulfilled with #{act}",
|
||||
{ actual: value });
|
||||
return value;
|
||||
},
|
||||
function (reason) {
|
||||
assertIfNotNegated(that,
|
||||
"expected promise to be fulfilled but it was rejected with #{act}",
|
||||
{ actual: reason });
|
||||
}
|
||||
);
|
||||
|
||||
chaiAsPromised.transferPromiseness(that, derivedPromise);
|
||||
});
|
||||
|
||||
property("rejected", function () {
|
||||
var that = this;
|
||||
var derivedPromise = getBasePromise(that).then(
|
||||
function (value) {
|
||||
that._obj = value;
|
||||
assertIfNotNegated(that,
|
||||
"expected promise to be rejected but it was fulfilled with #{act}",
|
||||
{ actual: value });
|
||||
return value;
|
||||
},
|
||||
function (reason) {
|
||||
assertIfNegated(that,
|
||||
"expected promise not to be rejected but it was rejected with #{act}",
|
||||
{ actual: reason });
|
||||
|
||||
// Return the reason, transforming this into a fulfillment, to allow further assertions, e.g.
|
||||
// `promise.should.be.rejected.and.eventually.equal("reason")`.
|
||||
return reason;
|
||||
}
|
||||
);
|
||||
|
||||
chaiAsPromised.transferPromiseness(that, derivedPromise);
|
||||
});
|
||||
|
||||
method("rejectedWith", function (Constructor, message) {
|
||||
var desiredReason = null;
|
||||
var constructorName = null;
|
||||
|
||||
if (Constructor instanceof RegExp || typeof Constructor === "string") {
|
||||
message = Constructor;
|
||||
Constructor = null;
|
||||
} else if (Constructor && Constructor instanceof Error) {
|
||||
desiredReason = Constructor;
|
||||
Constructor = null;
|
||||
message = null;
|
||||
} else if (typeof Constructor === "function") {
|
||||
constructorName = (new Constructor()).name;
|
||||
} else {
|
||||
Constructor = null;
|
||||
}
|
||||
|
||||
var that = this;
|
||||
var derivedPromise = getBasePromise(that).then(
|
||||
function (value) {
|
||||
var assertionMessage = null;
|
||||
var expected = null;
|
||||
|
||||
if (Constructor) {
|
||||
assertionMessage = "expected promise to be rejected with #{exp} but it was fulfilled with " +
|
||||
"#{act}";
|
||||
expected = constructorName;
|
||||
} else if (message) {
|
||||
var verb = message instanceof RegExp ? "matching" : "including";
|
||||
assertionMessage = "expected promise to be rejected with an error " + verb + " #{exp} but it " +
|
||||
"was fulfilled with #{act}";
|
||||
expected = message;
|
||||
} else if (desiredReason) {
|
||||
assertionMessage = "expected promise to be rejected with #{exp} but it was fulfilled with " +
|
||||
"#{act}";
|
||||
expected = desiredReason;
|
||||
}
|
||||
|
||||
that._obj = value;
|
||||
|
||||
assertIfNotNegated(that, assertionMessage, { expected: expected, actual: value });
|
||||
},
|
||||
function (reason) {
|
||||
if (Constructor) {
|
||||
that.assert(reason instanceof Constructor,
|
||||
"expected promise to be rejected with #{exp} but it was rejected with #{act}",
|
||||
"expected promise not to be rejected with #{exp} but it was rejected with #{act}",
|
||||
constructorName,
|
||||
reason);
|
||||
}
|
||||
|
||||
var reasonMessage = utils.type(reason) === "object" && "message" in reason ?
|
||||
reason.message :
|
||||
"" + reason;
|
||||
if (message && reasonMessage !== null && reasonMessage !== undefined) {
|
||||
if (message instanceof RegExp) {
|
||||
that.assert(message.test(reasonMessage),
|
||||
"expected promise to be rejected with an error matching #{exp} but got #{act}",
|
||||
"expected promise not to be rejected with an error matching #{exp}",
|
||||
message,
|
||||
reasonMessage);
|
||||
}
|
||||
if (typeof message === "string") {
|
||||
that.assert(reasonMessage.indexOf(message) !== -1,
|
||||
"expected promise to be rejected with an error including #{exp} but got #{act}",
|
||||
"expected promise not to be rejected with an error including #{exp}",
|
||||
message,
|
||||
reasonMessage);
|
||||
}
|
||||
}
|
||||
|
||||
if (desiredReason) {
|
||||
that.assert(reason === desiredReason,
|
||||
"expected promise to be rejected with #{exp} but it was rejected with #{act}",
|
||||
"expected promise not to be rejected with #{exp}",
|
||||
desiredReason,
|
||||
reason);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
chaiAsPromised.transferPromiseness(that, derivedPromise);
|
||||
});
|
||||
|
||||
property("eventually", function () {
|
||||
utils.flag(this, "eventually", true);
|
||||
});
|
||||
|
||||
method("notify", function (done) {
|
||||
doNotify(getBasePromise(this), done);
|
||||
});
|
||||
|
||||
method("become", function (value) {
|
||||
return this.eventually.deep.equal(value);
|
||||
});
|
||||
|
||||
////////
|
||||
// `eventually`
|
||||
|
||||
// We need to be careful not to trigger any getters, thus `Object.getOwnPropertyDescriptor` usage.
|
||||
var methodNames = propertyNames.filter(function (name) {
|
||||
return name !== "assert" && typeof propertyDescs[name].value === "function";
|
||||
});
|
||||
|
||||
methodNames.forEach(function (methodName) {
|
||||
Assertion.overwriteMethod(methodName, function (originalMethod) {
|
||||
return function () {
|
||||
doAsserterAsyncAndAddThen(originalMethod, this, arguments);
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
var getterNames = propertyNames.filter(function (name) {
|
||||
return name !== "_obj" && typeof propertyDescs[name].get === "function";
|
||||
});
|
||||
|
||||
getterNames.forEach(function (getterName) {
|
||||
var propertyDesc = propertyDescs[getterName];
|
||||
|
||||
// Chainable methods are things like `an`, which can work both for `.should.be.an.instanceOf` and as
|
||||
// `should.be.an("object")`. We need to handle those specially.
|
||||
var isChainableMethod = false;
|
||||
try {
|
||||
isChainableMethod = typeof propertyDesc.get.call({}) === "function";
|
||||
} catch (e) { }
|
||||
|
||||
if (isChainableMethod) {
|
||||
Assertion.addChainableMethod(
|
||||
getterName,
|
||||
function () {
|
||||
var assertion = this;
|
||||
function originalMethod() {
|
||||
return propertyDesc.get.call(assertion).apply(assertion, arguments);
|
||||
}
|
||||
doAsserterAsyncAndAddThen(originalMethod, this, arguments);
|
||||
},
|
||||
function () {
|
||||
var originalGetter = propertyDesc.get;
|
||||
doAsserterAsyncAndAddThen(originalGetter, this);
|
||||
}
|
||||
);
|
||||
} else {
|
||||
Assertion.overwriteProperty(getterName, function (originalGetter) {
|
||||
return function () {
|
||||
doAsserterAsyncAndAddThen(originalGetter, this);
|
||||
};
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function doAsserterAsyncAndAddThen(asserter, assertion, args) {
|
||||
// Since we're intercepting all methods/properties, we need to just pass through if they don't want
|
||||
// `eventually`, or if we've already fulfilled the promise (see below).
|
||||
if (!utils.flag(assertion, "eventually")) {
|
||||
return asserter.apply(assertion, args);
|
||||
}
|
||||
|
||||
var derivedPromise = getBasePromise(assertion).then(function (value) {
|
||||
// Set up the environment for the asserter to actually run: `_obj` should be the fulfillment value, and
|
||||
// now that we have the value, we're no longer in "eventually" mode, so we won't run any of this code,
|
||||
// just the base Chai code that we get to via the short-circuit above.
|
||||
assertion._obj = value;
|
||||
utils.flag(assertion, "eventually", false);
|
||||
|
||||
return args ? chaiAsPromised.transformAsserterArgs(args) : args;
|
||||
}).then(function (args) {
|
||||
asserter.apply(assertion, args);
|
||||
|
||||
// Because asserters, for example `property`, can change the value of `_obj` (i.e. change the "object"
|
||||
// flag), we need to communicate this value change to subsequent chained asserters. Since we build a
|
||||
// promise chain paralleling the asserter chain, we can use it to communicate such changes.
|
||||
return assertion._obj;
|
||||
});
|
||||
|
||||
chaiAsPromised.transferPromiseness(assertion, derivedPromise);
|
||||
}
|
||||
|
||||
///////
|
||||
// Now use the `Assertion` framework to build an `assert` interface.
|
||||
var originalAssertMethods = Object.getOwnPropertyNames(assert).filter(function (propName) {
|
||||
return typeof assert[propName] === "function";
|
||||
});
|
||||
|
||||
assert.isFulfilled = function (promise, message) {
|
||||
return (new Assertion(promise, message)).to.be.fulfilled;
|
||||
};
|
||||
|
||||
assert.isRejected = function (promise, toTestAgainst, message) {
|
||||
if (typeof toTestAgainst === "string") {
|
||||
message = toTestAgainst;
|
||||
toTestAgainst = undefined;
|
||||
}
|
||||
|
||||
var assertion = (new Assertion(promise, message));
|
||||
return toTestAgainst !== undefined ? assertion.to.be.rejectedWith(toTestAgainst) : assertion.to.be.rejected;
|
||||
};
|
||||
|
||||
assert.becomes = function (promise, value, message) {
|
||||
return assert.eventually.deepEqual(promise, value, message);
|
||||
};
|
||||
|
||||
assert.doesNotBecome = function (promise, value, message) {
|
||||
return assert.eventually.notDeepEqual(promise, value, message);
|
||||
};
|
||||
|
||||
assert.eventually = {};
|
||||
originalAssertMethods.forEach(function (assertMethodName) {
|
||||
assert.eventually[assertMethodName] = function (promise) {
|
||||
var otherArgs = Array.prototype.slice.call(arguments, 1);
|
||||
|
||||
var customRejectionHandler;
|
||||
var message = arguments[assert[assertMethodName].length - 1];
|
||||
if (typeof message === "string") {
|
||||
customRejectionHandler = function (reason) {
|
||||
throw new chai.AssertionError(message + "\n\nOriginal reason: " + utils.inspect(reason));
|
||||
};
|
||||
}
|
||||
|
||||
var returnedPromise = promise.then(
|
||||
function (fulfillmentValue) {
|
||||
return assert[assertMethodName].apply(assert, [fulfillmentValue].concat(otherArgs));
|
||||
},
|
||||
customRejectionHandler
|
||||
);
|
||||
|
||||
returnedPromise.notify = function (done) {
|
||||
doNotify(returnedPromise, done);
|
||||
};
|
||||
|
||||
return returnedPromise;
|
||||
};
|
||||
});
|
||||
}
|
||||
}());
|
@ -1429,7 +1429,7 @@ BrowserGlue.prototype = {
|
||||
() => BookmarkHTMLUtils.exportToFile(BookmarkHTMLUtils.defaultPath));
|
||||
}
|
||||
|
||||
Task.spawn(function() {
|
||||
Task.spawn(function* () {
|
||||
// Check if Safe Mode or the user has required to restore bookmarks from
|
||||
// default profile's bookmarks.html
|
||||
let restoreDefaultBookmarks = false;
|
||||
@ -1505,23 +1505,21 @@ BrowserGlue.prototype = {
|
||||
if (bookmarksUrl) {
|
||||
// Import from bookmarks.html file.
|
||||
try {
|
||||
BookmarkHTMLUtils.importFromURL(bookmarksUrl, true).then(null,
|
||||
function onFailure() {
|
||||
Cu.reportError("Bookmarks.html file could be corrupt.");
|
||||
}
|
||||
).then(
|
||||
function onComplete() {
|
||||
// Now apply distribution customized bookmarks.
|
||||
// This should always run after Places initialization.
|
||||
this._distributionCustomizer.applyBookmarks();
|
||||
// Ensure that smart bookmarks are created once the operation is
|
||||
// complete.
|
||||
this.ensurePlacesDefaultQueriesInitialized();
|
||||
}.bind(this)
|
||||
);
|
||||
} catch (err) {
|
||||
Cu.reportError("Bookmarks.html file could be corrupt. " + err);
|
||||
yield BookmarkHTMLUtils.importFromURL(bookmarksUrl, true);
|
||||
} catch (e) {
|
||||
Cu.reportError("Bookmarks.html file could be corrupt. " + e);
|
||||
}
|
||||
try {
|
||||
// Now apply distribution customized bookmarks.
|
||||
// This should always run after Places initialization.
|
||||
this._distributionCustomizer.applyBookmarks();
|
||||
// Ensure that smart bookmarks are created once the operation is
|
||||
// complete.
|
||||
this.ensurePlacesDefaultQueriesInitialized();
|
||||
} catch (e) {
|
||||
Cu.reportError(e);
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
Cu.reportError("Unable to find bookmarks.html file.");
|
||||
|
@ -78,22 +78,6 @@ function checkItemHasAnnotation(guid, name) {
|
||||
});
|
||||
}
|
||||
|
||||
function waitForImportAndSmartBookmarks() {
|
||||
return Promise.all([
|
||||
promiseTopicObserved("bookmarks-restore-success"),
|
||||
PlacesTestUtils.promiseAsyncUpdates()
|
||||
]);
|
||||
}
|
||||
|
||||
function promiseEndUpdateBatch() {
|
||||
return new Promise(resolve => {
|
||||
PlacesUtils.bookmarks.addObserver({
|
||||
__proto__: NavBookmarkObserver.prototype,
|
||||
onEndUpdateBatch: resolve
|
||||
}, false);
|
||||
});
|
||||
}
|
||||
|
||||
let createCorruptDB = Task.async(function* () {
|
||||
let dbPath = OS.Path.join(OS.Constants.Path.profileDir, "places.sqlite");
|
||||
yield OS.File.remove(dbPath);
|
||||
|
@ -41,7 +41,7 @@ add_task(function* test_main() {
|
||||
|
||||
// The test will continue once restore has finished and smart bookmarks
|
||||
// have been created.
|
||||
yield promiseEndUpdateBatch();
|
||||
yield promiseTopicObserved("places-browser-init-complete");
|
||||
|
||||
let bm = yield PlacesUtils.bookmarks.fetch({
|
||||
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
||||
|
@ -35,7 +35,7 @@ add_task(function* () {
|
||||
|
||||
// The test will continue once import has finished and smart bookmarks
|
||||
// have been created.
|
||||
yield promiseEndUpdateBatch();
|
||||
yield promiseTopicObserved("places-browser-init-complete");
|
||||
|
||||
let bm = yield PlacesUtils.bookmarks.fetch({
|
||||
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
||||
|
@ -33,7 +33,7 @@ add_task(function* () {
|
||||
|
||||
// The test will continue once import has finished and smart bookmarks
|
||||
// have been created.
|
||||
yield promiseEndUpdateBatch();
|
||||
yield promiseTopicObserved("places-browser-init-complete");
|
||||
|
||||
let bm = yield PlacesUtils.bookmarks.fetch({
|
||||
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
||||
|
@ -40,7 +40,7 @@ add_task(function* test_migrate_bookmarks() {
|
||||
title: "migrated"
|
||||
});
|
||||
|
||||
let promise = promiseEndUpdateBatch();
|
||||
let promise = promiseTopicObserved("places-browser-init-complete");
|
||||
bg.observe(null, "initial-migration-did-import-default-bookmarks", null);
|
||||
yield promise;
|
||||
|
||||
|
@ -38,11 +38,9 @@ do_register_cleanup(function () {
|
||||
|
||||
function simulatePlacesInit() {
|
||||
do_print("Simulate Places init");
|
||||
let promise = waitForImportAndSmartBookmarks();
|
||||
|
||||
// Force nsBrowserGlue::_initPlaces().
|
||||
bg.observe(null, TOPIC_BROWSERGLUE_TEST, TOPICDATA_FORCE_PLACES_INIT);
|
||||
return promise;
|
||||
return promiseTopicObserved("places-browser-init-complete");
|
||||
}
|
||||
|
||||
add_task(function* test_checkPreferences() {
|
||||
|
@ -44,7 +44,7 @@ add_task(function* test_main() {
|
||||
|
||||
// The test will continue once restore has finished and smart bookmarks
|
||||
// have been created.
|
||||
yield promiseEndUpdateBatch();
|
||||
yield promiseTopicObserved("places-browser-init-complete");
|
||||
|
||||
let bm = yield PlacesUtils.bookmarks.fetch({
|
||||
parentGuid: PlacesUtils.bookmarks.toolbarGuid,
|
||||
|
@ -70,8 +70,6 @@ add_task(function* setup() {
|
||||
Assert.ok(!Services.prefs.getBoolPref(PREF_AUTO_EXPORT_HTML));
|
||||
Assert.ok(!Services.prefs.getBoolPref(PREF_RESTORE_DEFAULT_BOOKMARKS));
|
||||
Assert.throws(() => Services.prefs.getBoolPref(PREF_IMPORT_BOOKMARKS_HTML));
|
||||
|
||||
yield waitForImportAndSmartBookmarks();
|
||||
});
|
||||
|
||||
add_task(function* test_version_0() {
|
||||
|
@ -237,6 +237,11 @@ let gSyncPane = {
|
||||
// service.fxAccountsEnabled is false iff sync is already configured for
|
||||
// the legacy provider.
|
||||
if (service.fxAccountsEnabled) {
|
||||
// unhide the reading-list engine if readinglist is enabled (note we do
|
||||
// it here as it must remain disabled for legacy sync users)
|
||||
if (Services.prefs.getBoolPref("browser.readinglist.enabled")) {
|
||||
document.getElementById("readinglist-engine").removeAttribute("hidden");
|
||||
}
|
||||
// determine the fxa status...
|
||||
this.page = PAGE_PLEASE_WAIT;
|
||||
fxAccounts.getSignedInUser().then(data => {
|
||||
@ -372,6 +377,19 @@ let gSyncPane = {
|
||||
document.getElementById("sync-migration-deck").selectedIndex = selIndex;
|
||||
},
|
||||
|
||||
// Called whenever one of the sync engine preferences is changed.
|
||||
onPreferenceChanged: function() {
|
||||
let prefElts = document.querySelectorAll("#syncEnginePrefs > preference");
|
||||
let syncEnabled = false;
|
||||
for (let elt of prefElts) {
|
||||
if (elt.name.startsWith("services.sync.") && elt.value) {
|
||||
syncEnabled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
Services.prefs.setBoolPref("services.sync.enabled", syncEnabled);
|
||||
},
|
||||
|
||||
startOver: function (showDialog) {
|
||||
if (showDialog) {
|
||||
let flags = Services.prompt.BUTTON_POS_0 * Services.prompt.BUTTON_TITLE_IS_STRING +
|
||||
|
@ -4,7 +4,8 @@
|
||||
|
||||
<!-- Sync panel -->
|
||||
|
||||
<preferences hidden="true" data-category="paneSync">
|
||||
<preferences id="syncEnginePrefs" hidden="true" data-category="paneSync"
|
||||
onchange="gSyncPane.onPreferenceChanged();">
|
||||
<preference id="engine.addons"
|
||||
name="services.sync.engine.addons"
|
||||
type="bool"/>
|
||||
@ -23,6 +24,10 @@
|
||||
<preference id="engine.passwords"
|
||||
name="services.sync.engine.passwords"
|
||||
type="bool"/>
|
||||
<!-- non Sync-Engine engines -->
|
||||
<preference id="engine.readinglist"
|
||||
name="readinglist.scheduler.enabled"
|
||||
type="bool"/>
|
||||
</preferences>
|
||||
|
||||
<script type="application/javascript"
|
||||
@ -290,6 +295,11 @@
|
||||
<checkbox label="&engine.history.label;"
|
||||
accesskey="&engine.history.accesskey;"
|
||||
preference="engine.history"/>
|
||||
<checkbox id="readinglist-engine"
|
||||
label="&engine.readinglist.label;"
|
||||
accesskey="&engine.readinglist.accesskey;"
|
||||
preference="engine.readinglist"
|
||||
hidden="true"/>
|
||||
<checkbox label="&engine.addons.label;"
|
||||
accesskey="&engine.addons.accesskey;"
|
||||
preference="engine.addons"/>
|
||||
|
@ -54,6 +54,26 @@ let gSyncPane = {
|
||||
},
|
||||
|
||||
init: function () {
|
||||
// We use a preference observer to notice changes to the Sync engines
|
||||
// enabled state - other techniques are problematic due to the window
|
||||
// being instant-apply on Mac etc but modal on Windows.
|
||||
let prefObserver = () => {
|
||||
// If all our Sync engines are disabled we flip the "master" Sync-enabled pref.
|
||||
let prefElts = document.querySelectorAll("#syncEnginePrefs > preference");
|
||||
let syncEnabled = false;
|
||||
for (let elt of prefElts) {
|
||||
if (elt.name.startsWith("services.sync.") && elt.value) {
|
||||
syncEnabled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
Services.prefs.setBoolPref("services.sync.enabled", syncEnabled);
|
||||
}
|
||||
Services.prefs.addObserver("services.sync.engine.", prefObserver, false);
|
||||
window.addEventListener("unload", () => {
|
||||
Services.prefs.removeObserver("services.sync.engine.", prefObserver);
|
||||
}, false);
|
||||
|
||||
// If the Service hasn't finished initializing, wait for it.
|
||||
let xps = Components.classes["@mozilla.org/weave/service;1"]
|
||||
.getService(Components.interfaces.nsISupports)
|
||||
@ -136,6 +156,11 @@ let gSyncPane = {
|
||||
// service.fxAccountsEnabled is false iff sync is already configured for
|
||||
// the legacy provider.
|
||||
if (service.fxAccountsEnabled) {
|
||||
// unhide the reading-list engine if readinglist is enabled (note we do
|
||||
// it here as it must remain disabled for legacy sync users)
|
||||
if (Services.prefs.getBoolPref("browser.readinglist.enabled")) {
|
||||
document.getElementById("readinglist-engine").removeAttribute("hidden");
|
||||
}
|
||||
// determine the fxa status...
|
||||
this.page = PAGE_PLEASE_WAIT;
|
||||
fxAccounts.getSignedInUser().then(data => {
|
||||
|
@ -21,13 +21,15 @@
|
||||
helpTopic="prefs-weave"
|
||||
onpaneload="gSyncPane.init()">
|
||||
|
||||
<preferences>
|
||||
<preferences id="syncEnginePrefs">
|
||||
<preference id="engine.addons" name="services.sync.engine.addons" type="bool"/>
|
||||
<preference id="engine.bookmarks" name="services.sync.engine.bookmarks" type="bool"/>
|
||||
<preference id="engine.history" name="services.sync.engine.history" type="bool"/>
|
||||
<preference id="engine.tabs" name="services.sync.engine.tabs" type="bool"/>
|
||||
<preference id="engine.prefs" name="services.sync.engine.prefs" type="bool"/>
|
||||
<preference id="engine.passwords" name="services.sync.engine.passwords" type="bool"/>
|
||||
<!-- non Sync-Engine engines -->
|
||||
<preference id="engine.readinglist" name="readinglist.scheduler.enabled" type="bool"/>
|
||||
</preferences>
|
||||
|
||||
|
||||
@ -285,21 +287,33 @@
|
||||
<vbox>
|
||||
<checkbox label="&engine.tabs.label;"
|
||||
accesskey="&engine.tabs.accesskey;"
|
||||
onsynctopreference="gSyncPane.onPreferenceChanged();"
|
||||
preference="engine.tabs"/>
|
||||
<checkbox label="&engine.bookmarks.label;"
|
||||
accesskey="&engine.bookmarks.accesskey;"
|
||||
onsynctopreference="gSyncPane.onPreferenceChanged();"
|
||||
preference="engine.bookmarks"/>
|
||||
<checkbox label="&engine.passwords.label;"
|
||||
accesskey="&engine.passwords.accesskey;"
|
||||
onsynctopreference="gSyncPane.onPreferenceChanged();"
|
||||
preference="engine.passwords"/>
|
||||
<checkbox label="&engine.history.label;"
|
||||
accesskey="&engine.history.accesskey;"
|
||||
onsynctopreference="gSyncPane.onPreferenceChanged(this);"
|
||||
preference="engine.history"/>
|
||||
<!-- onpreferencechanged not needed for the readinglist engine -->
|
||||
<checkbox id="readinglist-engine"
|
||||
label="&engine.readinglist.label;"
|
||||
accesskey="&engine.readinglist.accesskey;"
|
||||
preference="engine.readinglist"
|
||||
hidden="true"/>
|
||||
<checkbox label="&engine.addons.label;"
|
||||
accesskey="&engine.addons.accesskey;"
|
||||
onsynctopreference="gSyncPane.onPreferenceChanged();"
|
||||
preference="engine.addons"/>
|
||||
<checkbox label="&engine.prefs.label;"
|
||||
accesskey="&engine.prefs.accesskey;"
|
||||
onsynctopreference="gSyncPane.onPreferenceChanged();"
|
||||
preference="engine.prefs"/>
|
||||
</vbox>
|
||||
<spacer/>
|
||||
|
@ -42,6 +42,7 @@ const ITEM_BASIC_PROPERTY_NAMES = `
|
||||
resolvedURL
|
||||
resolvedTitle
|
||||
excerpt
|
||||
preview
|
||||
status
|
||||
favorite
|
||||
isArticle
|
||||
@ -289,24 +290,22 @@ ReadingListImpl.prototype = {
|
||||
/**
|
||||
* Add to the ReadingList the page that is loaded in a given browser.
|
||||
*
|
||||
* @param {<xul:browser>} browser - Browser element for the document.
|
||||
* @param {<xul:browser>} browser - Browser element for the document,
|
||||
* used to get metadata about the article.
|
||||
* @param {nsIURI/string} url - url to add to the reading list.
|
||||
* @return {Promise} Promise that is fullfilled with the added item.
|
||||
*/
|
||||
addItemFromBrowser: Task.async(function* (browser) {
|
||||
addItemFromBrowser: Task.async(function* (browser, url) {
|
||||
let metadata = yield getMetadataFromBrowser(browser);
|
||||
let itemData = {
|
||||
url: browser.currentURI,
|
||||
url: url,
|
||||
title: metadata.title,
|
||||
resolvedURL: metadata.url,
|
||||
excerpt: metadata.description,
|
||||
};
|
||||
|
||||
if (metadata.description) {
|
||||
itemData.exerpt = metadata.description;
|
||||
}
|
||||
|
||||
if (metadata.previews.length > 0) {
|
||||
itemData.image = metadata.previews[0];
|
||||
itemData.preview = metadata.previews[0];
|
||||
}
|
||||
|
||||
let item = yield ReadingList.addItem(itemData);
|
||||
@ -713,6 +712,14 @@ ReadingListItem.prototype = {
|
||||
this._properties.readPosition = val;
|
||||
},
|
||||
|
||||
/**
|
||||
* The URL to a preview image.
|
||||
* @type string
|
||||
*/
|
||||
get preview() {
|
||||
return this._properties.preview;
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets the given properties of the item, optionally calling list.updateItem().
|
||||
*
|
||||
@ -916,7 +923,7 @@ function getMetadataFromBrowser(browser) {
|
||||
Object.defineProperty(this, "ReadingList", {
|
||||
get() {
|
||||
if (!this._singleton) {
|
||||
let store = new SQLiteStore("reading-list-temp.sqlite");
|
||||
let store = new SQLiteStore("reading-list-temp2.sqlite");
|
||||
this._singleton = new ReadingListImpl(store);
|
||||
}
|
||||
return this._singleton;
|
||||
|
@ -204,7 +204,8 @@ this.SQLiteStore.prototype = {
|
||||
storedOn INTEGER,
|
||||
markedReadBy TEXT,
|
||||
markedReadOn INTEGER,
|
||||
readPosition INTEGER
|
||||
readPosition INTEGER,
|
||||
preview TEXT
|
||||
);
|
||||
`);
|
||||
yield conn.execute(`
|
||||
|
@ -172,6 +172,10 @@ InternalScheduler.prototype = {
|
||||
|
||||
// canSync indicates if we can currently sync.
|
||||
_canSync(ignoreBlockingErrors = false) {
|
||||
if (!prefs.get("enabled")) {
|
||||
this.log.info("canSync=false - syncing is disabled");
|
||||
return false;
|
||||
}
|
||||
if (Services.io.offline) {
|
||||
this.log.info("canSync=false - we are offline");
|
||||
return false;
|
||||
|
@ -139,6 +139,12 @@ let RLSidebar = {
|
||||
|
||||
itemNode.querySelector(".item-title").textContent = item.title;
|
||||
itemNode.querySelector(".item-domain").textContent = item.domain;
|
||||
let thumb = itemNode.querySelector(".item-thumb-container");
|
||||
if (item.preview) {
|
||||
thumb.style.backgroundImage = "url(" + item.preview + ")";
|
||||
} else {
|
||||
thumb.style.removeProperty("background-image");
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
@ -165,7 +171,7 @@ let RLSidebar = {
|
||||
},
|
||||
|
||||
/**
|
||||
* The currently active element in the list.
|
||||
* The list item displayed in the current tab.
|
||||
* @type {Element}
|
||||
*/
|
||||
get activeItem() {
|
||||
@ -204,7 +210,7 @@ let RLSidebar = {
|
||||
},
|
||||
|
||||
/**
|
||||
* The currently selected item in the list.
|
||||
* The list item selected with the keyboard.
|
||||
* @type {Element}
|
||||
*/
|
||||
get selectedItem() {
|
||||
@ -366,15 +372,14 @@ let RLSidebar = {
|
||||
},
|
||||
|
||||
/**
|
||||
* Handle a mousemove event over the list box.
|
||||
* Handle a mousemove event over the list box:
|
||||
* If the hovered item isn't the selected one, clear the selection.
|
||||
* @param {Event} event - Triggering event.
|
||||
*/
|
||||
onListMouseMove(event) {
|
||||
let itemNode = this.findParentItemNode(event.target);
|
||||
if (!itemNode)
|
||||
return;
|
||||
|
||||
this.selectedItem = itemNode;
|
||||
if (itemNode != this.selectedItem)
|
||||
this.selectedItem = null;
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -1628,7 +1628,11 @@ richlistitem[type~="action"][actiontype="switchtab"] > .ac-url-box > .ac-action-
|
||||
list-style-image: url("chrome://browser/skin/Info.png");
|
||||
}
|
||||
|
||||
%include ../shared/readinglist.inc.css
|
||||
%include ../shared/readinglist/readinglist.inc.css
|
||||
|
||||
#readinglist-addremove-button {
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
/* Reader mode button */
|
||||
|
||||
|
@ -2527,7 +2527,13 @@ richlistitem[type~="action"][actiontype="switchtab"][selected="true"] > .ac-url-
|
||||
}
|
||||
}
|
||||
|
||||
%include ../shared/readinglist.inc.css
|
||||
%include ../shared/readinglist/readinglist.inc.css
|
||||
|
||||
#readinglist-addremove-button {
|
||||
padding: 3px;
|
||||
-moz-padding-start: 2px;
|
||||
-moz-padding-end: 1px;
|
||||
}
|
||||
|
||||
/* Reader mode button */
|
||||
|
||||
|
@ -505,7 +505,7 @@ toolbarpaletteitem[place="palette"] > toolbaritem > toolbarbutton {
|
||||
min-height: 40px;
|
||||
-moz-appearance: none;
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
transition: background-color;
|
||||
-moz-box-orient: horizontal;
|
||||
@ -796,7 +796,7 @@ panelview .toolbarbutton-1@buttonStateHover@,
|
||||
toolbarbutton.subviewbutton@buttonStateHover@,
|
||||
menu.subviewbutton@menuStateHover@,
|
||||
menuitem.subviewbutton@menuStateHover@,
|
||||
.share-provider-button@buttonStateHover@,
|
||||
.share-provider-button@buttonStateHover@:not([checked="true"]),
|
||||
.widget-overflow-list .toolbarbutton-1@buttonStateHover@,
|
||||
.toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton@buttonStateHover@ {
|
||||
background-color: hsla(210,4%,10%,.08);
|
||||
|
@ -13,25 +13,15 @@
|
||||
display: none;
|
||||
}
|
||||
|
||||
#addpage {
|
||||
#addpage, #alreadyadded {
|
||||
fill: #808080;
|
||||
}
|
||||
#addpage-hover {
|
||||
#addpage-hover, #alreadyadded-hover {
|
||||
fill: #555555;
|
||||
}
|
||||
#addpage-active {
|
||||
#addpage-active, #alreadyadded-active {
|
||||
fill: #0095DD;
|
||||
}
|
||||
|
||||
#alreadyadded {
|
||||
fill: #0095DD;
|
||||
}
|
||||
#alreadyadded-hover {
|
||||
fill: #555555;
|
||||
}
|
||||
#alreadyadded-active {
|
||||
fill: #808080;
|
||||
}
|
||||
</style>
|
||||
|
||||
<mask id="plus-mask">
|
||||
@ -40,18 +30,27 @@
|
||||
<rect x="7.5" y="4" width="1" height="8"/>
|
||||
</mask>
|
||||
|
||||
<mask id="minus-mask">
|
||||
<rect width="100%" height="100%" fill="white"/>
|
||||
<rect x="4" y="7.5" width="8" height="1"/>
|
||||
</mask>
|
||||
|
||||
<g id="addpage-shape">
|
||||
<circle cx="8" cy="8" r="7" mask="url(#plus-mask)"/>
|
||||
</g>
|
||||
|
||||
<g id="removepage-shape">
|
||||
<circle cx="8" cy="8" r="7" mask="url(#minus-mask)"/>
|
||||
</g>
|
||||
|
||||
</defs>
|
||||
|
||||
<use id="addpage" xlink:href="#addpage-shape"/>
|
||||
<use id="addpage-hover" xlink:href="#addpage-shape"/>
|
||||
<use id="addpage-active" xlink:href="#addpage-shape"/>
|
||||
|
||||
<use id="alreadyadded" xlink:href="#addpage-shape"/>
|
||||
<use id="alreadyadded-hover" xlink:href="#addpage-shape"/>
|
||||
<use id="alreadyadded-active" xlink:href="#addpage-shape"/>
|
||||
<use id="alreadyadded" xlink:href="#removepage-shape"/>
|
||||
<use id="alreadyadded-hover" xlink:href="#removepage-shape"/>
|
||||
<use id="alreadyadded-active" xlink:href="#removepage-shape"/>
|
||||
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.6 KiB |
@ -1,10 +1,13 @@
|
||||
/* Reading List button */
|
||||
|
||||
#urlbar:not([focused]):not(:hover) #readinglist-addremove-button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#readinglist-addremove-button {
|
||||
-moz-appearance: none;
|
||||
border: none;
|
||||
list-style-image: url("chrome://browser/skin/readinglist/icons.svg#addpage");
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
#readinglist-addremove-button:hover {
|
||||
@ -12,15 +15,15 @@
|
||||
}
|
||||
|
||||
#readinglist-addremove-button > .toolbarbutton-icon {
|
||||
width: 16px;
|
||||
height: 16px
|
||||
width: 14px;
|
||||
height: 14px
|
||||
}
|
||||
|
||||
#readinglist-addremove-button:not([already-added="true"]):hover {
|
||||
#readinglist-addremove-button:hover {
|
||||
list-style-image: url("chrome://browser/skin/readinglist/icons.svg#addpage-hover");
|
||||
}
|
||||
|
||||
#readinglist-addremove-button:not([already-added="true"]):active {
|
||||
#readinglist-addremove-button:active {
|
||||
list-style-image: url("chrome://browser/skin/readinglist/icons.svg#addpage-active");
|
||||
}
|
||||
|
||||
@ -35,4 +38,3 @@
|
||||
#readinglist-addremove-button[already-added="true"]:active {
|
||||
list-style-image: url("chrome://browser/skin/readinglist/icons.svg#alreadyadded-active");
|
||||
}
|
||||
|
@ -47,10 +47,14 @@ body {
|
||||
max-width: 64px;
|
||||
min-height: 40px;
|
||||
max-height: 40px;
|
||||
background: #EBEBEB;
|
||||
border: 1px solid white;
|
||||
box-shadow: 0px 1px 2px rgba(0,0,0,.35);
|
||||
margin: 5px;
|
||||
background-color: #fff;
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-image: url("chrome://branding/content/silhouette-40.svg");
|
||||
}
|
||||
|
||||
.item-summary-container {
|
||||
@ -84,11 +88,12 @@ body {
|
||||
color: #008ACB;
|
||||
}
|
||||
|
||||
.item:not(:hover) .remove-button {
|
||||
.item:not(:hover):not(.selected) .remove-button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.remove-button {
|
||||
padding: 0;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-size: contain;
|
||||
|
@ -1576,7 +1576,11 @@ richlistitem[type~="action"][actiontype="switchtab"] > .ac-url-box > .ac-action-
|
||||
-moz-image-region: rect(0, 48px, 16px, 32px);
|
||||
}
|
||||
|
||||
%include ../shared/readinglist.inc.css
|
||||
%include ../shared/readinglist/readinglist.inc.css
|
||||
|
||||
#readinglist-addremove-button {
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
/* Reader mode button */
|
||||
|
||||
|
@ -360,6 +360,13 @@ AudioChannelService::GetState(AudioChannelAgent* aAgent, bool aElementHidden)
|
||||
|
||||
data->mState = GetStateInternal(data->mChannel, CONTENT_PROCESS_ID_MAIN,
|
||||
aElementHidden, oldElementHidden);
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
bool active = AnyAudioChannelIsActive();
|
||||
for (uint32_t i = 0; i < mSpeakerManager.Length(); i++) {
|
||||
mSpeakerManager[i]->SetAudioChannelActive(active);
|
||||
}
|
||||
#endif
|
||||
|
||||
return data->mState;
|
||||
}
|
||||
|
||||
|
@ -734,7 +734,7 @@ skip-if = toolkit == 'android' || e10s #RANDOM
|
||||
[test_w3element_traversal.xhtml]
|
||||
[test_w3element_traversal_svg.html]
|
||||
[test_websocket.html]
|
||||
skip-if = buildapp == 'b2g' || toolkit == 'android' || e10s
|
||||
skip-if = buildapp == 'b2g' || buildapp == 'mulet' || toolkit == 'android' || e10s # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
[test_websocket_basic.html]
|
||||
skip-if = buildapp == 'b2g' || toolkit == 'android'
|
||||
[test_websocket_hello.html]
|
||||
|
@ -390,13 +390,13 @@ enum {
|
||||
};
|
||||
|
||||
enum BluetoothAvrcpMediaAttribute {
|
||||
AVRCP_MEDIA_ATTRIBUTE_TITLE,
|
||||
AVRCP_MEDIA_ATTRIBUTE_ARTIST,
|
||||
AVRCP_MEDIA_ATTRIBUTE_ALBUM,
|
||||
AVRCP_MEDIA_ATTRIBUTE_TRACK_NUM,
|
||||
AVRCP_MEDIA_ATTRIBUTE_NUM_TRACKS,
|
||||
AVRCP_MEDIA_ATTRIBUTE_GENRE,
|
||||
AVRCP_MEDIA_ATTRIBUTE_PLAYING_TIME
|
||||
AVRCP_MEDIA_ATTRIBUTE_TITLE = 0x01,
|
||||
AVRCP_MEDIA_ATTRIBUTE_ARTIST = 0x02,
|
||||
AVRCP_MEDIA_ATTRIBUTE_ALBUM = 0x03,
|
||||
AVRCP_MEDIA_ATTRIBUTE_TRACK_NUM = 0x04,
|
||||
AVRCP_MEDIA_ATTRIBUTE_NUM_TRACKS = 0x05,
|
||||
AVRCP_MEDIA_ATTRIBUTE_GENRE = 0x6,
|
||||
AVRCP_MEDIA_ATTRIBUTE_PLAYING_TIME = 0x7
|
||||
};
|
||||
|
||||
enum BluetoothAvrcpPlayerAttribute {
|
||||
|
@ -265,8 +265,9 @@ BluetoothDaemonAvrcpModule::RegisterNotificationRspCmd(
|
||||
1 + // Data length
|
||||
256)); // Maximum data length
|
||||
|
||||
nsresult rv = PackPDU(aEvent, aType,
|
||||
BluetoothAvrcpEventParamPair(aEvent, aParam), *pdu);
|
||||
BluetoothAvrcpEventParamPair data(aEvent, aParam);
|
||||
nsresult rv = PackPDU(aEvent, aType, static_cast<uint8_t>(data.GetLength()),
|
||||
data, *pdu);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
@ -85,6 +85,37 @@ struct BluetoothAvrcpEventParamPair {
|
||||
, mParam(aParam)
|
||||
{ }
|
||||
|
||||
size_t GetLength()
|
||||
{
|
||||
size_t size;
|
||||
|
||||
switch(mEvent) {
|
||||
case AVRCP_EVENT_PLAY_STATUS_CHANGED:
|
||||
/* PackPDU casts ControlPlayStatus to uint8_t */
|
||||
size = sizeof(static_cast<uint8_t>(mParam.mPlayStatus));
|
||||
break;
|
||||
case AVRCP_EVENT_TRACK_CHANGE:
|
||||
size = sizeof(mParam.mTrack);
|
||||
break;
|
||||
case AVRCP_EVENT_TRACK_REACHED_END:
|
||||
case AVRCP_EVENT_TRACK_REACHED_START:
|
||||
/* no data to pack */
|
||||
size = 0;
|
||||
break;
|
||||
case AVRCP_EVENT_PLAY_POS_CHANGED:
|
||||
size = sizeof(mParam.mSongPos);
|
||||
break;
|
||||
case AVRCP_EVENT_APP_SETTINGS_CHANGED:
|
||||
size = (sizeof(mParam.mIds[0]) + sizeof(mParam.mValues[0])) * mParam.mNumAttr;
|
||||
break;
|
||||
default:
|
||||
size = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
BluetoothAvrcpEvent mEvent;
|
||||
const BluetoothAvrcpNotificationParam& mParam;
|
||||
};
|
||||
|
@ -39,73 +39,71 @@ pref(webgl.force-layers-readback,true) == webgl-clear-test.html?readback wrappe
|
||||
# Does we draw the correct colors in the correct places?
|
||||
# Combinations: PowerSet([readback, aa, preserve, premult, alpha]) x [frame=1,frame=6]
|
||||
# This is 2^6 = 64 combinations.
|
||||
== webgl-color-test.html?frame=1&__&________&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
== webgl-color-test.html?frame=1&aa&________&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
== webgl-color-test.html?frame=1&__&preserve&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
== webgl-color-test.html?frame=1&aa&preserve&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
== webgl-color-test.html?frame=1&__&________&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
== webgl-color-test.html?frame=1&aa&________&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
== webgl-color-test.html?frame=1&__&preserve&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
== webgl-color-test.html?frame=1&aa&preserve&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=1&__&________&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=1&aa&________&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=1&__&preserve&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=1&aa&preserve&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=1&__&________&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=1&aa&________&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=1&__&preserve&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=1&aa&preserve&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&layersGPUAccelerated&&!d2d) == webgl-color-test.html?frame=1&__&________&_______&alpha wrapper.html?colors-non-premult.png
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&layersGPUAccelerated&&!d2d) == webgl-color-test.html?frame=1&aa&________&_______&alpha wrapper.html?colors-non-premult.png
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&layersGPUAccelerated&&!d2d) == webgl-color-test.html?frame=1&__&preserve&_______&alpha wrapper.html?colors-non-premult.png
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&layersGPUAccelerated&&!d2d) == webgl-color-test.html?frame=1&aa&preserve&_______&alpha wrapper.html?colors-non-premult.png
|
||||
== webgl-color-test.html?frame=1&__&________&premult&alpha wrapper.html?colors-premult.png
|
||||
== webgl-color-test.html?frame=1&aa&________&premult&alpha wrapper.html?colors-premult.png
|
||||
== webgl-color-test.html?frame=1&__&preserve&premult&alpha wrapper.html?colors-premult.png
|
||||
== webgl-color-test.html?frame=1&aa&preserve&premult&alpha wrapper.html?colors-premult.png
|
||||
|
||||
== webgl-color-test.html?frame=6&__&________&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
== webgl-color-test.html?frame=6&aa&________&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
== webgl-color-test.html?frame=6&__&preserve&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
== webgl-color-test.html?frame=6&aa&preserve&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
== webgl-color-test.html?frame=6&__&________&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
== webgl-color-test.html?frame=6&aa&________&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
== webgl-color-test.html?frame=6&__&preserve&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
== webgl-color-test.html?frame=6&aa&preserve&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=1&__&________&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=1&aa&________&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=1&__&preserve&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=1&aa&preserve&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=6&__&________&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=6&aa&________&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=6&__&preserve&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=6&aa&preserve&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=6&__&________&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=6&aa&________&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=6&__&preserve&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=6&aa&preserve&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&layersGPUAccelerated&&!d2d) == webgl-color-test.html?frame=6&__&________&_______&alpha wrapper.html?colors-non-premult.png
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&layersGPUAccelerated&&!d2d) == webgl-color-test.html?frame=6&aa&________&_______&alpha wrapper.html?colors-non-premult.png
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&layersGPUAccelerated&&!d2d) == webgl-color-test.html?frame=6&__&preserve&_______&alpha wrapper.html?colors-non-premult.png
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&(!layersGPUAccelerated||!d2d)) == webgl-color-test.html?frame=6&aa&preserve&_______&alpha wrapper.html?colors-non-premult.png
|
||||
== webgl-color-test.html?frame=6&__&________&premult&alpha wrapper.html?colors-premult.png
|
||||
== webgl-color-test.html?frame=6&aa&________&premult&alpha wrapper.html?colors-premult.png
|
||||
== webgl-color-test.html?frame=6&__&preserve&premult&alpha wrapper.html?colors-premult.png
|
||||
== webgl-color-test.html?frame=6&aa&preserve&premult&alpha wrapper.html?colors-premult.png
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=6&__&________&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=6&aa&________&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=6&__&preserve&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == webgl-color-test.html?frame=6&aa&preserve&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&________&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&________&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&preserve&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&preserve&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&________&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&________&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&preserve&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&preserve&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&________&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&________&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&preserve&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&preserve&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&________&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&________&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&preserve&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&preserve&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&layersGPUAccelerated&&!d2d) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&________&_______&alpha wrapper.html?colors-non-premult.png
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&layersGPUAccelerated&&!d2d) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&________&_______&alpha wrapper.html?colors-non-premult.png
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&layersGPUAccelerated&&!d2d) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&preserve&_______&alpha wrapper.html?colors-non-premult.png
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&layersGPUAccelerated&&!d2d) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&preserve&_______&alpha wrapper.html?colors-non-premult.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&________&premult&alpha wrapper.html?colors-premult.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&________&premult&alpha wrapper.html?colors-premult.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&preserve&premult&alpha wrapper.html?colors-premult.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&preserve&premult&alpha wrapper.html?colors-premult.png
|
||||
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&________&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&________&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&preserve&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&preserve&_______&_____ wrapper.html?colors-no-alpha.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&________&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&________&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&preserve&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&preserve&premult&_____ wrapper.html?colors-no-alpha.png
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&________&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&________&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&__&preserve&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=1&readback&aa&preserve&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&________&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&________&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&preserve&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&preserve&_______&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&________&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&________&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&preserve&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&preserve&premult&_____ wrapper.html?colors-no-alpha.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&layersGPUAccelerated&&!d2d) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&________&_______&alpha wrapper.html?colors-non-premult.png
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&layersGPUAccelerated&&!d2d) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&________&_______&alpha wrapper.html?colors-non-premult.png
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&layersGPUAccelerated&&!d2d) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&preserve&_______&alpha wrapper.html?colors-non-premult.png
|
||||
fuzzy(1,30000) fails-if(gtk2Widget&&browserIsRemote) fails-if(winWidget&&(!layersGPUAccelerated||!d2d)) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&preserve&_______&alpha wrapper.html?colors-non-premult.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&________&premult&alpha wrapper.html?colors-premult.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&________&premult&alpha wrapper.html?colors-premult.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&preserve&premult&alpha wrapper.html?colors-premult.png
|
||||
pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&preserve&premult&alpha wrapper.html?colors-premult.png
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&________&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&________&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&__&preserve&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(webgl.force-layers-readback,true) == webgl-color-test.html?frame=6&readback&aa&preserve&premult&alpha wrapper.html?colors-premult.png # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
|
||||
# Check for hanging bindings/state settings:
|
||||
== webgl-hanging-fb-test.html?__&________ wrapper.html?green.png
|
||||
|
@ -5,7 +5,7 @@ include toblob-todataurl/reftest.list
|
||||
skip-if(B2G) == 41464-1a.html 41464-1-ref.html
|
||||
skip-if(B2G) == 41464-1b.html 41464-1-ref.html
|
||||
== 52019-1.html 52019-1-ref.html
|
||||
== 82711-1.html 82711-1-ref.html
|
||||
skip-if(Mulet) == 82711-1.html 82711-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 82711-2.html 82711-2-ref.html
|
||||
!= 82711-1-ref.html 82711-2-ref.html
|
||||
!= 468263-1a.html about:blank
|
||||
|
@ -194,6 +194,7 @@ support-files =
|
||||
[test_anchor_href_cache_invalidation.html]
|
||||
[test_applet_attributes_reflection.html]
|
||||
[test_audio_wakelock.html]
|
||||
skip-if = buildapp == 'mulet' # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
[test_base_attributes_reflection.html]
|
||||
[test_bug100533.html]
|
||||
[test_bug109445.html]
|
||||
@ -341,8 +342,10 @@ skip-if = (toolkit == 'gonk' && debug) || e10s #debug-only failure
|
||||
[test_bug601030.html]
|
||||
[test_bug605124-1.html]
|
||||
[test_bug605124-2.html]
|
||||
skip-if = buildapp == 'mulet' # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
[test_bug605125-1.html]
|
||||
[test_bug605125-2.html]
|
||||
skip-if = buildapp == 'mulet' # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
[test_bug606817.html]
|
||||
[test_bug607145.html]
|
||||
[test_bug610212.html]
|
||||
|
@ -322,7 +322,7 @@ skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
|
||||
[test_remove_index.html]
|
||||
skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
|
||||
[test_remove_objectStore.html]
|
||||
skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
|
||||
skip-if = (buildapp == 'b2g' && toolkit != 'gonk') || (buildapp == 'mulet') # Bug 931116 # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
[test_request_readyState.html]
|
||||
skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
|
||||
[test_setVersion.html]
|
||||
|
@ -13,4 +13,4 @@ skip-if = toolkit != 'gonk'
|
||||
[test_child_docshell.html]
|
||||
skip-if = toolkit == 'cocoa' # disabled due to hangs, see changeset 6852e7c47edf
|
||||
[test_CrashService_crash.html]
|
||||
skip-if = !(crashreporter && !e10s && (toolkit == 'gtk2' || toolkit == 'gtk3' || toolkit == 'cocoa' || toolkit == 'windows') && (buildapp != 'b2g' || toolkit == 'gonk'))
|
||||
skip-if = !(crashreporter && !e10s && (toolkit == 'gtk2' || toolkit == 'gtk3' || toolkit == 'cocoa' || toolkit == 'windows') && (buildapp != 'b2g' || toolkit == 'gonk') && (buildapp != 'mulet')) # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
|
@ -25,7 +25,7 @@ learn_more_label=Learn More
|
||||
gmp_license_info=License information
|
||||
|
||||
openH264_name=OpenH264 Video Codec provided by Cisco Systems, Inc.
|
||||
openH264_description=Play back web video and use video chats.
|
||||
openH264_description2=This plugin is automatically installed by Mozilla to comply with the WebRTC specification and to enable WebRTC calls with devices that require the H.264 video codec. Visit http://www.openh264.org/ to view the codec source code and learn more about the implementation.
|
||||
|
||||
eme-adobe_name=Primetime Content Decryption Module provided by Adobe Systems, Incorporated
|
||||
eme-adobe_description=Play back protected web video.
|
||||
|
@ -42,7 +42,7 @@ skip-if = (toolkit == 'gonk' && debug) # debug-only failure, turned an intermitt
|
||||
[test_getUserMedia_constraints.html]
|
||||
skip-if = toolkit == 'gonk' || toolkit == 'android' # Bug 1063290, intermittent timeout
|
||||
[test_getUserMedia_callbacks.html]
|
||||
skip-if = toolkit == 'gonk' || toolkit == 'android' # Bug 1063290, intermittent timeout
|
||||
skip-if = toolkit == 'gonk' || toolkit == 'android' || buildapp == 'mulet' # Bug 1063290, intermittent timeout # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
[test_getUserMedia_gumWithinGum.html]
|
||||
skip-if = toolkit == 'gonk' || toolkit == 'android' # Bug 1063290, intermittent timeout
|
||||
[test_getUserMedia_playAudioTwice.html]
|
||||
|
@ -211,12 +211,11 @@ SpeakerManager::HandleEvent(nsIDOMEvent* aEvent)
|
||||
void
|
||||
SpeakerManager::SetAudioChannelActive(bool isActive)
|
||||
{
|
||||
if (!isActive && !mVisible) {
|
||||
if (mForcespeaker) {
|
||||
SpeakerManagerService *service =
|
||||
SpeakerManagerService::GetOrCreateSpeakerManagerService();
|
||||
MOZ_ASSERT(service);
|
||||
|
||||
service->ForceSpeaker(false, mVisible);
|
||||
service->ForceSpeaker(isActive, mVisible);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -76,7 +76,7 @@ NS_IMPL_ISUPPORTS(SpeakerManagerService, nsIObserver)
|
||||
void
|
||||
SpeakerManagerService::ForceSpeaker(bool aEnable, uint64_t aChildId)
|
||||
{
|
||||
TuruOnSpeaker(aEnable);
|
||||
TurnOnSpeaker(aEnable);
|
||||
if (aEnable) {
|
||||
mSpeakerStatusSet.Put(aChildId);
|
||||
}
|
||||
@ -88,14 +88,14 @@ void
|
||||
SpeakerManagerService::ForceSpeaker(bool aEnable, bool aVisible)
|
||||
{
|
||||
// b2g main process without oop
|
||||
TuruOnSpeaker(aEnable && aVisible);
|
||||
TurnOnSpeaker(aEnable && aVisible);
|
||||
mVisible = aVisible;
|
||||
mOrgSpeakerStatus = aEnable;
|
||||
Notify();
|
||||
}
|
||||
|
||||
void
|
||||
SpeakerManagerService::TuruOnSpeaker(bool aOn)
|
||||
SpeakerManagerService::TurnOnSpeaker(bool aOn)
|
||||
{
|
||||
nsCOMPtr<nsIAudioManager> audioManager = do_GetService(NS_AUDIOMANAGER_CONTRACTID);
|
||||
NS_ENSURE_TRUE_VOID(audioManager);
|
||||
@ -146,8 +146,9 @@ SpeakerManagerService::SetAudioChannelActive(bool aIsActive)
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
SpeakerManagerService::Observe(nsISupports* aSubject, const char*
|
||||
aTopic, const char16_t* aData)
|
||||
SpeakerManagerService::Observe(nsISupports* aSubject,
|
||||
const char* aTopic,
|
||||
const char16_t* aData)
|
||||
{
|
||||
if (!strcmp(aTopic, "ipc:content-shutdown")) {
|
||||
nsCOMPtr<nsIPropertyBag2> props = do_QueryInterface(aSubject);
|
||||
@ -163,11 +164,11 @@ SpeakerManagerService::Observe(nsISupports* aSubject, const char*
|
||||
// If the audio has paused by audiochannel,
|
||||
// the enable flag should be false and don't need to handle.
|
||||
if (mSpeakerStatusSet.Contains(childID)) {
|
||||
TuruOnSpeaker(false);
|
||||
TurnOnSpeaker(false);
|
||||
mSpeakerStatusSet.Remove(childID);
|
||||
}
|
||||
if (mOrgSpeakerStatus) {
|
||||
TuruOnSpeaker(!mOrgSpeakerStatus);
|
||||
TurnOnSpeaker(!mOrgSpeakerStatus);
|
||||
mOrgSpeakerStatus = false;
|
||||
}
|
||||
} else {
|
||||
|
@ -58,7 +58,7 @@ protected:
|
||||
// Notify to UA if device speaker status changed
|
||||
virtual void Notify();
|
||||
|
||||
void TuruOnSpeaker(bool aEnable);
|
||||
void TurnOnSpeaker(bool aEnable);
|
||||
|
||||
nsTArray<nsRefPtr<SpeakerManager> > mRegisteredSpeakerManagers;
|
||||
// Set for remember all the child speaker status
|
||||
|
@ -274,10 +274,11 @@ static status_t
|
||||
ConvertOmxYUVFormatToRGB565(android::sp<GraphicBuffer>& aBuffer,
|
||||
gfx::DataSourceSurface *aSurface,
|
||||
gfx::DataSourceSurface::MappedSurface *aMappedSurface,
|
||||
const layers::PlanarYCbCrData& aYcbcrData,
|
||||
int aOmxFormat)
|
||||
const layers::PlanarYCbCrData& aYcbcrData)
|
||||
{
|
||||
if (!aOmxFormat) {
|
||||
uint32_t omxFormat =
|
||||
GrallocImage::GetOmxFormat(aBuffer->getPixelFormat());
|
||||
if (!omxFormat) {
|
||||
NS_WARNING("Unknown color format");
|
||||
return BAD_VALUE;
|
||||
}
|
||||
@ -359,7 +360,7 @@ ConvertOmxYUVFormatToRGB565(android::sp<GraphicBuffer>& aBuffer,
|
||||
return OK;
|
||||
}
|
||||
|
||||
android::ColorConverter colorConverter((OMX_COLOR_FORMATTYPE)aOmxFormat,
|
||||
android::ColorConverter colorConverter((OMX_COLOR_FORMATTYPE)omxFormat,
|
||||
OMX_COLOR_Format16bitRGB565);
|
||||
if (!colorConverter.isValid()) {
|
||||
NS_WARNING("Invalid color conversion");
|
||||
@ -402,25 +403,16 @@ GrallocImage::GetAsSourceSurface()
|
||||
}
|
||||
|
||||
int32_t rv;
|
||||
uint32_t omxFormat = 0;
|
||||
|
||||
omxFormat = GrallocImage::GetOmxFormat(graphicBuffer->getPixelFormat());
|
||||
if (!omxFormat) {
|
||||
rv = ConvertVendorYUVFormatToRGB565(graphicBuffer, surface, &mappedSurface);
|
||||
rv = ConvertOmxYUVFormatToRGB565(graphicBuffer, surface, &mappedSurface, mData);
|
||||
if (rv == OK) {
|
||||
surface->Unmap();
|
||||
|
||||
if (rv != OK) {
|
||||
NS_WARNING("Unknown color format");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return surface;
|
||||
}
|
||||
|
||||
rv = ConvertOmxYUVFormatToRGB565(graphicBuffer, surface, &mappedSurface, mData, omxFormat);
|
||||
rv = ConvertVendorYUVFormatToRGB565(graphicBuffer, surface, &mappedSurface);
|
||||
surface->Unmap();
|
||||
|
||||
if (rv != OK) {
|
||||
NS_WARNING("Unknown color format");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
# 468496-1 will also detect bugs in video drivers.
|
||||
== 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(Mulet) skip-if(B2G) fuzzy-if(Android&&AndroidVersion>=15,8,1000) == 709477-1.html 709477-1-ref.html # bug 773482 # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(!asyncPanZoom) == 1086723.html 1086723-ref.html
|
||||
|
@ -1196,6 +1196,11 @@ SelectionCarets::ScrollPositionChanged()
|
||||
if (!mUseAsyncPanZoom) {
|
||||
SetVisibility(false);
|
||||
//TODO: handling scrolling for selection bubble when APZ is off
|
||||
// Dispatch event to notify gaia to hide selection bubble.
|
||||
// Positions will be updated when scroll is end, so no need to calculate
|
||||
// and keep scroll positions here. An arbitrary (0, 0) is sent instead.
|
||||
DispatchScrollViewChangeEvent(mPresShell, dom::ScrollState::Started,
|
||||
mozilla::CSSIntPoint(0, 0));
|
||||
|
||||
SELECTIONCARETS_LOG("Launch scroll end detector");
|
||||
LaunchScrollEndDetector();
|
||||
|
@ -56,7 +56,7 @@ support-files = file_bug449653_1.html file_bug449653_1_ref.html
|
||||
[test_bug488417.html]
|
||||
skip-if = true # Bug 489560
|
||||
[test_bug496275.html]
|
||||
skip-if = toolkit == 'android' #CRASH_DUMP
|
||||
skip-if = toolkit == 'android' || buildapp == 'mulet' #CRASH_DUMP # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
[test_bug503813.html]
|
||||
skip-if = buildapp == 'mulet' || toolkit == 'android' #CRASH_DUMP
|
||||
[test_bug507902.html]
|
||||
@ -72,9 +72,12 @@ support-files = file_bug579767_1.html file_bug579767_2.html
|
||||
[test_bug589621.html]
|
||||
[test_bug589623.html]
|
||||
[test_bug597333.html]
|
||||
skip-if = buildapp == 'mulet' # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
[test_bug633762.html]
|
||||
skip-if = buildapp == 'mulet' # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
support-files = bug633762_iframe.html
|
||||
[test_bug666225.html]
|
||||
skip-if = buildapp == 'mulet' # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
[test_bug719503.html]
|
||||
[test_bug719515.html]
|
||||
[test_bug719518.html]
|
||||
|
@ -53,7 +53,7 @@ skip-if(B2G||Mulet) fuzzy-if(Android,9,185) == scrollframe-2.html scrollframe-2-
|
||||
fuzzy-if(gtk2Widget,1,8) == select-1.html select-1-ref.html
|
||||
fuzzy-if(gtk2Widget,1,8) == select-1-dynamic.html select-1-ref.html
|
||||
== select-2.html select-2-ref.html
|
||||
fuzzy-if(gtk2Widget,1,19) fuzzy-if(Android||B2G,17,726) == select-3.html select-3-ref.html
|
||||
fuzzy-if(gtk2Widget,1,19) fuzzy-if(Android||B2G,17,726) skip-if(Mulet) == select-3.html select-3-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== multi-column-1.html multi-column-1-ref.html
|
||||
== button-1.html button-1-ref.html
|
||||
== button-2.html button-2-ref.html
|
||||
|
@ -138,8 +138,8 @@ random-if(B2G||Mulet) == really-big-background.html really-big-background-ref.ht
|
||||
|
||||
HTTP == background-referrer.html background-referrer-ref.html
|
||||
|
||||
== attachment-scroll-positioning-1.html attachment-scroll-positioning-1-ref.html
|
||||
== attachment-local-positioning-1.html attachment-local-positioning-1-ref.html
|
||||
skip-if(Mulet) == attachment-scroll-positioning-1.html attachment-scroll-positioning-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == attachment-local-positioning-1.html attachment-local-positioning-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== attachment-local-positioning-2.html attachment-local-positioning-2-ref.html
|
||||
== attachment-local-positioning-3.html attachment-local-positioning-3-ref.html
|
||||
== attachment-local-positioning-4.html attachment-local-positioning-4-ref.html
|
||||
@ -161,6 +161,6 @@ fails-if(Android&&AndroidVersion==15) fuzzy-if(winWidget||(Android&&AndroidVersi
|
||||
fails-if(Android&&AndroidVersion==15) fuzzy-if(!Android||(Android&&AndroidVersion!=15),80,500) == attachment-local-clipping-image-6.html attachment-local-clipping-image-6-ref.html #Bug 959165
|
||||
|
||||
== background-multiple-with-border-radius.html background-multiple-with-border-radius-ref.html
|
||||
== background-repeat-large-area.html background-repeat-large-area-ref.html
|
||||
skip-if(Mulet) == background-repeat-large-area.html background-repeat-large-area-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
|
||||
fuzzy(30,474) == background-tiling-zoom-1.html background-tiling-zoom-1-ref.html
|
||||
|
@ -36,7 +36,7 @@ fails-if(Android||B2G) == center-scaling-3.html center-scaling-3-ref.html # Andr
|
||||
== border-image-outset-1c.html border-image-outset-1-ref.html
|
||||
== border-image-nofill-1.html border-image-nofill-1-ref.html
|
||||
== border-image-outset-resize-1.html border-image-outset-resize-1-ref.html
|
||||
== border-image-outset-move-1.html border-image-outset-move-1-ref.html
|
||||
skip-if(Mulet) == border-image-outset-move-1.html border-image-outset-move-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== border-image-style-none.html border-image-style-none-ref.html
|
||||
== border-image-style-none-length.html border-image-style-none-length-ref.html
|
||||
== border-image-style-none-auto.html border-image-style-none-auto-ref.html
|
||||
|
@ -39,26 +39,26 @@ fuzzy-if(winWidget&&!d2d,3,10) fuzzy-if(d2d,15,32) fuzzy-if(Android||B2G,3,15) =
|
||||
fails == clipping-1.html clipping-1-ref.html # background color should completely fill box; bug 466572
|
||||
!= clipping-2.html about:blank # background color clipped to inner/outer border, can't get
|
||||
# great tests for this due to antialiasing problems described in bug 466572
|
||||
== clipping-3.html clipping-3-ref.xhtml # edge of border-radius clips an underlying object's background
|
||||
skip-if(Mulet) == clipping-3.html clipping-3-ref.xhtml # edge of border-radius clips an underlying object's background # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
|
||||
# Tests for clipping the contents of replaced elements and overflow!=visible
|
||||
!= clipping-4-ref.html clipping-4-notref.html
|
||||
fuzzy-if(true,1,20) fuzzy-if(cocoaWidget,1,180) fuzzy-if(Android&&browserIsRemote,7,169) fuzzy-if(Android&&!browserIsRemote,140,237) == clipping-4-canvas.html clipping-4-ref.html # bug 732535
|
||||
fuzzy-if(true,1,20) fuzzy-if(cocoaWidget,1,180) fuzzy-if(Android&&browserIsRemote,7,169) fuzzy-if(Android&&!browserIsRemote,140,237) skip-if(Mulet) == clipping-4-canvas.html clipping-4-ref.html # bug 732535 # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fuzzy-if(Android,5,54) fuzzy-if(/^Windows\x20NT\x206\.2/.test(http.oscpu),1,10) == clipping-4-image.html clipping-4-ref.html
|
||||
fuzzy-if(/^Windows\x20NT\x206\.2/.test(http.oscpu),1,10) == clipping-4-overflow-hidden.html clipping-4-ref.html
|
||||
== clipping-5-canvas.html clipping-5-refc.html
|
||||
fuzzy-if(/^Windows\x20NT\x206\.2/.test(http.oscpu),1,5) == clipping-5-image.html clipping-5-refi.html
|
||||
fuzzy-if(/^Windows\x20NT\x206\.2/.test(http.oscpu),1,5) == clipping-5-overflow-hidden.html clipping-5-ref.html
|
||||
fuzzy-if(/^Windows\x20NT\x206\.2/.test(http.oscpu),1,5) fuzzy-if(Android,5,21) == clipping-5-refi.html clipping-5-ref.html
|
||||
fuzzy-if(true,1,7) fuzzy-if(cocoaWidget,1,99) fuzzy-if(Android&&browserIsRemote,7,89) fuzzy-if(Android&&!browserIsRemote,99,115) == clipping-5-refc.html clipping-5-ref.html # bug 732535
|
||||
fuzzy-if(winWidget,105,71) fuzzy-if(Android,8,464) == clipping-6.html clipping-6-ref.html # PaintedLayer and MaskLayer with transforms that aren't identical
|
||||
fuzzy-if(true,2,29) fuzzy-if(Android&&AndroidVersion<15,12,81) fuzzy-if(Android&&AndroidVersion>=15,255,586) == clipping-7.html clipping-7-ref.html # ColorLayer and MaskLayer with transforms that aren't identical. Reference image rendered without using layers (which causes fuzzy failures).
|
||||
fuzzy-if(true,1,7) fuzzy-if(cocoaWidget,1,99) fuzzy-if(Android&&browserIsRemote,7,89) fuzzy-if(Android&&!browserIsRemote,99,115) skip-if(Mulet) == clipping-5-refc.html clipping-5-ref.html # bug 732535 # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) fuzzy-if(winWidget,105,71) fuzzy-if(Android,8,464) == clipping-6.html clipping-6-ref.html # PaintedLayer and MaskLayer with transforms that aren't identical # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fuzzy-if(true,2,29) fuzzy-if(Android&&AndroidVersion<15,12,81) fuzzy-if(Android&&AndroidVersion>=15,255,586) skip-if(Mulet) == clipping-7.html clipping-7-ref.html # ColorLayer and MaskLayer with transforms that aren't identical. Reference image rendered without using layers (which causes fuzzy failures). # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fuzzy-if(/^Windows\x20NT\x206\.2/.test(http.oscpu),1,5) == clipping-and-zindex-1.html clipping-and-zindex-1-ref.html
|
||||
fuzzy-if(cocoaWidget,1,4) == intersecting-clipping-1-canvas.html intersecting-clipping-1-refc.html
|
||||
skip-if(Mulet) fuzzy-if(cocoaWidget,1,4) == intersecting-clipping-1-canvas.html intersecting-clipping-1-refc.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables. # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== intersecting-clipping-1-image.html intersecting-clipping-1-refi.html
|
||||
== intersecting-clipping-1-overflow-hidden.html intersecting-clipping-1-ref.html
|
||||
fuzzy-if(Android,5,105) fuzzy-if(d2d,1,20) == intersecting-clipping-1-refi.html intersecting-clipping-1-ref.html
|
||||
fuzzy-if(true,1,33) fuzzy-if(cocoaWidget,1,332) fuzzy-if(Android&&browserIsRemote,7,310) fuzzy-if(Android&&!browserIsRemote,124,440) == intersecting-clipping-1-refc.html intersecting-clipping-1-ref.html # bug 732535
|
||||
fuzzy-if(true,1,33) fuzzy-if(cocoaWidget,1,332) fuzzy-if(Android&&browserIsRemote,7,310) fuzzy-if(Android&&!browserIsRemote,124,440) skip-if(Mulet) == intersecting-clipping-1-refc.html intersecting-clipping-1-ref.html # bug 732535 # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
|
||||
# Inheritance
|
||||
== inherit-1.html inherit-1-ref.html # border-radius shouldn't inherit
|
||||
|
@ -82,8 +82,8 @@ fuzzy-if(gtk2Widget,6,26200) == 28811-2b.html 28811-2-ref.html # Bug 1128229
|
||||
== 68061-2.xml 68061-2-ref.xml
|
||||
== 76331-1.html 76331-1-ref.html
|
||||
== 81947-1.html 81947-ref.html
|
||||
== 82711-1.html 82711-1-ref.html
|
||||
== 82711-2.html 82711-2-ref.html
|
||||
skip-if(Mulet) == 82711-1.html 82711-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == 82711-2.html 82711-2-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 82711-3.html 82711-3-ref.html
|
||||
!= 82711-1-ref.html 82711-2-ref.html
|
||||
!= 82711-1-ref.html 82711-3-ref.html
|
||||
@ -251,24 +251,24 @@ skip-if(B2G||Mulet) == 243519-1.html 243519-1-ref.html # Initial mulet triage: p
|
||||
== 243519-2.html 243519-2-ref.html
|
||||
== 243519-3.html 243519-3-ref.html
|
||||
== 243519-4a.html 243519-4-ref.html
|
||||
== 243519-4b.html 243519-4-ref.html
|
||||
skip-if(Mulet) == 243519-4b.html 243519-4-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 243519-4c.html 243519-4-ref.html
|
||||
== 243519-4d.html 243519-4-ref.html
|
||||
skip-if(Mulet) == 243519-4d.html 243519-4-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 243519-4e.html 243519-4-ref.html
|
||||
== 243519-4f.html 243519-4-ref.html
|
||||
skip-if(Mulet) == 243519-4f.html 243519-4-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 243519-5a.html 243519-5-ref.html
|
||||
== 243519-5b.html 243519-5-ref.html
|
||||
== 243519-5c.html 243519-5-ref.html
|
||||
== 243519-5d.html 243519-5-ref.html
|
||||
skip-if(Mulet) == 243519-5c.html 243519-5-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == 243519-5d.html 243519-5-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 243519-6.html 243519-6-ref.html
|
||||
skip-if(B2G||Mulet) == 243519-7.html 243519-7-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== 243519-8.svg 243519-8-ref.svg
|
||||
== 243519-9a.html 243519-9-ref.html
|
||||
== 243519-9b.html 243519-9-ref.html
|
||||
== 243519-9c.html 243519-9-ref.html
|
||||
== 243519-9d.html 243519-9-ref.html
|
||||
== 243519-9e.html 243519-9-ref.html
|
||||
== 243519-9f.html 243519-9-ref.html
|
||||
skip-if(Mulet) == 243519-8.svg 243519-8-ref.svg # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == 243519-9a.html 243519-9-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == 243519-9b.html 243519-9-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == 243519-9c.html 243519-9-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == 243519-9d.html 243519-9-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == 243519-9e.html 243519-9-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == 243519-9f.html 243519-9-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 244135-1.html 244135-1-ref.html
|
||||
== 244135-2.html 244135-2-ref.html
|
||||
== 244932-1.html 244932-1-ref.html
|
||||
@ -472,7 +472,7 @@ skip-if((B2G&&browserIsRemote)||Mulet) == 348049-1.xhtml 348049-1-ref.xhtml # In
|
||||
== 348516-2.html 348516-2-ref.html
|
||||
!= 348516-2.html 348516-2-notref.html
|
||||
!= 348516-3.html 348516-3-notref.html
|
||||
== 348597-1.html 348597-ref.html
|
||||
skip-if(Mulet) == 348597-1.html 348597-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 348809-1a.html 348809-1-ref.html
|
||||
== 348809-1b.html 348809-1-ref.html
|
||||
== 348809-1c.html 348809-1-ref.html
|
||||
@ -908,12 +908,12 @@ fuzzy-if(Android&&AndroidVersion>=15,8,50) == 404553-1.html 404553-1-ref.html #
|
||||
== 405380-1.html 405380-1-ref.html
|
||||
== 405517-1.xhtml 405517-1-ref.xhtml
|
||||
== 405577-1.html 405577-1-ref.html
|
||||
== 405584-1.html 405584-1-ref.html
|
||||
skip-if(Mulet) == 405584-1.html 405584-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
# == 405952-1.html 405952-1-ref.html
|
||||
== 406484-1.html 406484-1-ref.html
|
||||
== 406568-1.html 406568-1-ref.html
|
||||
== 407016-1-a.html 407016-1-ref.html
|
||||
== 407016-1-b.html 407016-1-ref.html
|
||||
skip-if(Mulet) == 407016-1-b.html 407016-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 407078-1.html 407078-1-ref.html
|
||||
== 407095-1.html 407095-1-ref.html
|
||||
fuzzy-if(Android,13,9) == 407111-1.html 407111-1-ref.html # Bug 1128229
|
||||
@ -1135,7 +1135,7 @@ skip-if(B2G||Mulet) == 430412-1.html 430412-1-ref.html # Initial mulet triage: p
|
||||
== 431520-1.html 431520-1-ref.html
|
||||
== 431948-1.html 431948-1-ref.html
|
||||
== 433640-1.html 433640-1-ref.html
|
||||
== 433700.html 433700-ref.html
|
||||
skip-if(Mulet) == 433700.html 433700-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 436356-1.html 436356-1-ref.html
|
||||
== 436356-2.html 436356-2-ref.html
|
||||
== 438537-1.html 438537-1-ref.html
|
||||
@ -1219,11 +1219,11 @@ skip-if(B2G||Mulet) == 458296-1d.html 458296-1-ref.html # Initial mulet triage:
|
||||
== 458487-1h.html 458487-1-ref.html
|
||||
== 458487-2.html 458487-2-ref.html
|
||||
== 458487-3.html 458487-3-ref.html
|
||||
== 458487-4a.html 458487-4-ref.html
|
||||
== 458487-4b.html 458487-4-ref.html
|
||||
== 458487-4c.html 458487-4-ref.html
|
||||
== 458487-5a.html 458487-5-ref.html
|
||||
== 458487-5b.html 458487-5-ref.html
|
||||
skip-if(Mulet) == 458487-4a.html 458487-4-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == 458487-4b.html 458487-4-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == 458487-4c.html 458487-4-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == 458487-5a.html 458487-5-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == 458487-5b.html 458487-5-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 459443-1.html 459443-1-ref.html
|
||||
== 459613-1.html 459613-1-ref.html
|
||||
== 460012-1.html 460012-1-ref.html
|
||||
@ -1597,11 +1597,11 @@ skip-if(!asyncPanZoom) == 593243-1.html 593243-1-ref.html # bug 593168
|
||||
skip-if(!asyncPanZoom) == 593243-2.html 593243-2-ref.html # bug 593168
|
||||
== 593544-1.html 593544-1-ref.html
|
||||
random-if(Android) == 594333-1.html 594333-1-ref.html
|
||||
fuzzy-if(B2G,1,40000) == 594624-1.html 594624-1-ref.html
|
||||
skip-if(Mulet) fuzzy-if(B2G,1,40000) == 594624-1.html 594624-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 594737-1.html 594737-1-ref.html
|
||||
== 597721-1.html 597721-1-ref.html
|
||||
random-if(winWidget) fuzzy-if(B2G,3,40) fuzzy-if(Android,38,539) needs-focus == 598726-1.html 598726-1-ref.html # Fails on Windows, bug 782196
|
||||
== 599113-1.html 599113-1-ref.html
|
||||
skip-if(Mulet) == 599113-1.html 599113-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fails-if(!haveTestPlugin) == 599476.html 599476-ref.html
|
||||
== 599882-1a.html 599882-1-ref.html
|
||||
== 599882-1b.html 599882-1-ref.html
|
||||
@ -1624,7 +1624,7 @@ fuzzy-if(Android&&AndroidVersion>=15,8,20) == 602200-3.html 602200-3-ref.html
|
||||
== 608756-1a.html 608756-1-ref.html
|
||||
== 608756-1b.html 608756-1-ref.html
|
||||
== 608756-2.html 608756-2-ref.html
|
||||
== 609272-1.html 609272-1-ref.html
|
||||
skip-if(Mulet) == 609272-1.html 609272-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
needs-focus == 613433-1.html 613433-1-ref.html
|
||||
needs-focus == 613433-1.html 613433-2-ref.html
|
||||
needs-focus == 613433-1.html 613433-3-ref.html
|
||||
@ -1637,7 +1637,7 @@ needs-focus == 613433-3.html 613433-3-ref.html
|
||||
== 614272-1.svg 614272-1-ref.svg
|
||||
HTTP(..) == 615121-1.html 615121-1-ref.html
|
||||
HTTP(..) != 615121-2.html 615121-2-notref.html
|
||||
fails-if(Android&&AndroidVersion!=10&&AndroidVersion!=17) == 617242-1.html 617242-1-ref.html
|
||||
skip-if(Mulet) fails-if(Android&&AndroidVersion!=10&&AndroidVersion!=17) == 617242-1.html 617242-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
!= 618071.html 618071-notref.html
|
||||
== 619117-1.html 619117-1-ref.html
|
||||
HTTP(..) == 619511-1.html 619511-1-ref.html
|
||||
@ -1657,7 +1657,7 @@ skip-if(Android||B2G||Mulet) random-if(winWidget) == 632781-verybig.html 632781-
|
||||
== 632781-normalsize.html 632781-ref.html
|
||||
fuzzy-if(d2d&&/^Windows\x20NT\x206\.2/.test(http.oscpu),1,559) == 633344-1.html 633344-1-ref.html # bug 1103623
|
||||
== 634232-1.html 634232-1-ref.html
|
||||
fails-if(Android&&AndroidVersion<17&&AndroidVersion!=10) == 635302-1.html 635302-1-ref.html
|
||||
skip-if(Mulet) fails-if(Android&&AndroidVersion<17&&AndroidVersion!=10) == 635302-1.html 635302-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fuzzy(1,68) skip-if(B2G||Mulet) fails-if(Android) == 635373-1.html 635373-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) random-if(d2d) fails-if(Android) fuzzy-if(winWidget&&!d2d,1,61) == 635373-2.html 635373-2-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) random-if(d2d) fails-if(Android) fuzzy-if(winWidget&&!d2d,1,60) == 635373-3.html 635373-3-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
@ -1665,19 +1665,19 @@ HTTP(..) == 635639-1.html 635639-1-ref.html
|
||||
HTTP(..) == 635639-2.html 635639-2-ref.html
|
||||
random == 637597-1.html 637597-1-ref.html # bug 637597 was never really fixed!
|
||||
fuzzy-if(Android&&AndroidVersion>=15,8,500) == 637852-1.html 637852-1-ref.html
|
||||
fuzzy-if(Android&&AndroidVersion>=15,8,500) == 637852-2.html 637852-2-ref.html
|
||||
skip-if(Mulet) fuzzy-if(Android&&AndroidVersion>=15,8,500) == 637852-2.html 637852-2-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fuzzy-if(Android&&AndroidVersion>=15,8,500) == 637852-3.html 637852-3-ref.html
|
||||
skip-if(B2G||Mulet) == 641770-1.html 641770-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== 641856-1.html 641856-1-ref.html
|
||||
== 645491-1.html 645491-1-ref.html
|
||||
== 645768-1.html 645768-1-ref.html
|
||||
fails-if(layersGPUAccelerated&&cocoaWidget) fails-if(Android&&AndroidVersion<15&&AndroidVersion!=10) == 650228-1.html 650228-1-ref.html # Quartz alpha blending doesn't match GL alpha blending
|
||||
skip-if(Mulet) fails-if(layersGPUAccelerated&&cocoaWidget) fails-if(Android&&AndroidVersion<15&&AndroidVersion!=10) == 650228-1.html 650228-1-ref.html # Quartz alpha blending doesn't match GL alpha blending # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
needs-focus == 652301-1a.html 652301-1-ref.html
|
||||
needs-focus == 652301-1b.html 652301-1-ref.html
|
||||
== 652775-1.html 652775-1-ref.html
|
||||
== 653930-1.html 653930-1-ref.html
|
||||
HTTP(..) == 654057-1.html 654057-1-ref.html
|
||||
fails-if(layersGPUAccelerated&&cocoaWidget) fails-if(Android&&AndroidVersion!=17&&AndroidVersion!=10) == 654950-1.html 654950-1-ref.html # Quartz alpha blending doesn't match GL alpha blending
|
||||
skip-if(Mulet) fails-if(layersGPUAccelerated&&cocoaWidget) fails-if(Android&&AndroidVersion!=17&&AndroidVersion!=10) == 654950-1.html 654950-1-ref.html # Quartz alpha blending doesn't match GL alpha blending # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 655549-1.html 655549-1-ref.html
|
||||
== 655836-1.html 655836-1-ref.html
|
||||
!= 656875.html about:blank
|
||||
@ -1708,7 +1708,7 @@ needs-focus != 703186-1.html 703186-2.html
|
||||
== 714519-1-q.html 714519-1-ref.html
|
||||
== 714519-2-as.html 714519-2-ref.html
|
||||
== 714519-2-q.html 714519-2-ref.html
|
||||
skip-if(B2G||Mulet) fuzzy-if(true,1,21) fuzzy-if(cocoaWidget,1,170) fuzzy-if(Android&&browserIsRemote,7,157) fails-if(Android&&!browserIsRemote&&AndroidVersion!=17&&AndroidVersion!=10) == 718521.html 718521-ref.html # bug 760270 # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fuzzy-if(true,1,21) fuzzy-if(cocoaWidget,1,170) fuzzy-if(Android&&browserIsRemote,7,157) fails-if(Android&&!browserIsRemote&&AndroidVersion!=17&&AndroidVersion!=10) skip-if(B2G||Mulet) == 718521.html 718521-ref.html # bug 760270 # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 720987.html 720987-ref.html
|
||||
== 722888-1.html 722888-1-ref.html
|
||||
== 722923-1.html 722923-1-ref.html
|
||||
@ -1746,7 +1746,7 @@ fuzzy(40,850) fuzzy-if(azureQuartz,73,542) == 797797-1.html 797797-1-ref.html #
|
||||
fuzzy(40,850) fuzzy-if(azureQuartz,68,586) == 797797-2.html 797797-2-ref.html # 'opacity:N' and rgba(,,,N) text don't match precisely
|
||||
== 801994-1.html 801994-1-ref.html
|
||||
== 804323-1.html 804323-1-ref.html
|
||||
fuzzy-if(Android,8,608) == 811301-1.html 811301-1-ref.html
|
||||
skip-if(Mulet) fuzzy-if(Android,8,608) == 811301-1.html 811301-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 812824-1.html 812824-1-ref.html
|
||||
== 814677.html 814677-ref.html
|
||||
skip-if(B2G||Mulet) == 814952-1.html 814952-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
@ -1761,9 +1761,9 @@ skip-if(B2G||Mulet) == 818276-1.html 818276-1-ref.html # Initial mulet triage: p
|
||||
== 827577-1b.html 827577-1-ref.html
|
||||
== 827799-1.html about:blank
|
||||
== 829958.html 829958-ref.html
|
||||
== 836844-1.html 836844-1-ref.html
|
||||
skip-if(Mulet) == 836844-1.html 836844-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 841192-1.html 841192-1-ref.html
|
||||
== 844178.html 844178-ref.html
|
||||
skip-if(Mulet) == 844178.html 844178-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fuzzy-if(OSX,1,364) == 846144-1.html 846144-1-ref.html
|
||||
== 847850-1.html 847850-1-ref.html
|
||||
== 848421-1.html 848421-1-ref.html
|
||||
@ -1785,7 +1785,7 @@ skip-if((B2G&&browserIsRemote)||Mulet) == 858803-1.html 858803-1-ref.html # bug
|
||||
== 897491-1.html 897491-1-ref.html
|
||||
== 897491-2.html 897491-2-ref.html
|
||||
fuzzy(2,10000) fuzzy-if(Android&&AndroidVersion>=15,5,10000) == 902330-1.html 902330-1-ref.html
|
||||
fuzzy-if(Android,8,400) == 906199-1.html 906199-1-ref.html
|
||||
skip-if(Mulet) fuzzy-if(Android,8,400) == 906199-1.html 906199-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 921716-1.html 921716-1-ref.html
|
||||
test-pref(layout.css.sticky.enabled,true) == 926155-1.html 926155-1-ref.html
|
||||
fuzzy-if(cocoaWidget,1,40) == 928607-1.html 928607-1-ref.html
|
||||
@ -1803,10 +1803,10 @@ fuzzy-if(B2G,1,7) == 942672-1.html 942672-1-ref.html
|
||||
== 950436-1.html 950436-1-ref.html
|
||||
== 957770-1.svg 957770-1-ref.svg
|
||||
== 960277-1.html 960277-1-ref.html
|
||||
== 961887-1.html 961887-1-ref.html
|
||||
== 961887-2.html 961887-2-ref.html
|
||||
skip-if(Mulet) == 961887-1.html 961887-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == 961887-2.html 961887-2-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 961887-3.html 961887-3-ref.html
|
||||
pref(layout.css.overflow-clip-box.enabled,true) fuzzy(50,145) == 966992-1.html 966992-1-ref.html
|
||||
pref(layout.css.overflow-clip-box.enabled,true) fuzzy(50,145) skip-if(Mulet) == 966992-1.html 966992-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Android) == 966510-1.html 966510-1-ref.html # scrollable elements other than the root probably won't work well on android until bug 776030 is fixed
|
||||
skip-if(Android) == 966510-2.html 966510-2-ref.html # same as above
|
||||
== 978911-1.svg 978911-1-ref.svg
|
||||
@ -1833,8 +1833,8 @@ pref(layout.css.will-change.enabled,true) == 1018522-1.html 1018522-1-ref.html
|
||||
pref(browser.display.use_document_fonts,0) == 1022481-1.html 1022481-1-ref.html
|
||||
== 1022612-1.html 1022612-1-ref.html
|
||||
== 1024473-1.html 1024473-1-ref.html
|
||||
== 1025914-1.html 1025914-1-ref.html
|
||||
== 1042104-1.html 1042104-1-ref.html
|
||||
skip-if(Mulet) == 1025914-1.html 1025914-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == 1042104-1.html 1042104-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 1044198-1.html 1044198-1-ref.html
|
||||
== 1049499-1.html 1049499-1-ref.html
|
||||
== 1050493-1.html 1050493-1-ref.html
|
||||
@ -1846,7 +1846,7 @@ test-pref(layout.css.grid.enabled,true) == 1053035-1-grid.html 1053035-1-ref.htm
|
||||
== 1059498-2.html 1059498-1-ref.html
|
||||
== 1059498-3.html 1059498-1-ref.html
|
||||
skip-if(Mulet) == 1062108-1.html 1062108-1-ref.html # Bug 1139893: font rounding failure, tracked in bug 1141535
|
||||
fails-if(Android) fuzzy-if(Mulet,1,5) == 1062792-1.html 1062792-1-ref.html
|
||||
fails-if(Android) fuzzy-if(Mulet,1,5) skip-if(Mulet) == 1062792-1.html 1062792-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 1062963-floatmanager-reflow.html 1062963-floatmanager-reflow-ref.html
|
||||
test-pref(dom.webcomponents.enabled,true) == 1066554-1.html 1066554-1-ref.html
|
||||
== 1069716-1.html 1069716-1-ref.html
|
||||
@ -1860,8 +1860,8 @@ fuzzy-if(d2d,36,304) HTTP(..) == 1116480-1-fakeitalic-overflow.html 1116480-1-fa
|
||||
== 1111753-1.html about:blank
|
||||
== 1119117-1a.html 1119117-1-ref.html
|
||||
== 1119117-1b.html 1119117-1-ref.html
|
||||
== 1120431-1.html 1120431-1-ref.html
|
||||
== 1120431-2.html 1120431-2-ref.html
|
||||
skip-if(Mulet) == 1120431-1.html 1120431-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) == 1120431-2.html 1120431-2-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== 1121748-1.html 1121748-1-ref.html
|
||||
== 1121748-2.html 1121748-2-ref.html
|
||||
== 1127107-1a-nowrap.html 1127107-1-ref.html
|
||||
|
@ -3,7 +3,7 @@ skip-if(B2G||Mulet) fuzzy-if(Android&&AndroidVersion>=15,8,1000) == size-1.html
|
||||
|
||||
== empty-transaction-1.html empty-transaction-1-ref.html
|
||||
|
||||
== image-rendering-test.html image-rendering-ref.html
|
||||
skip-if(Mulet) == image-rendering-test.html image-rendering-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== image-shadow.html image-shadow-ref.html
|
||||
|
||||
skip-if(B2G||Mulet) asserts-if(cocoaWidget,0-2) == size-change-1.html size-change-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
@ -79,7 +79,7 @@ random-if(azureSkiaGL) == evenodd-fill-2.html evenodd-fill-ref.html
|
||||
== evenodd-fill-3.html nonzero-fill-2.html
|
||||
|
||||
== dash-sanity.html data:text/html,<body>Pass
|
||||
fuzzy-if(azureSkia,9,470) random-if(Android) == dash-1.html dash-1-ref.svg # Bug 668412 (really is android-specific, not IPC-specific)
|
||||
skip-if(Mulet) fuzzy-if(azureSkia,9,470) random-if(Android) == dash-1.html dash-1-ref.svg # Bug 668412 (really is android-specific, not IPC-specific) # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
|
||||
== ctm-sanity.html data:text/html,<body>Pass
|
||||
== ctm-singular-sanity.html data:text/html,<body>Pass
|
||||
@ -90,7 +90,7 @@ fails-if(OSX==1006) == 672646-alpha-radial-gradient.html 672646-alpha-radial-gra
|
||||
|
||||
!= 693610-1.html 693610-1-notref.html # bug 693610: multiple glyph runs should not be overprinted
|
||||
|
||||
== 726951-shadow-clips.html 726951-shadow-clips-ref.html
|
||||
skip-if(Mulet) == 726951-shadow-clips.html 726951-shadow-clips-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
|
||||
== transformed-clip.html transformed-clip-ref.html
|
||||
== transformed-gradient.html transformed-gradient-ref.html
|
||||
|
@ -1,7 +1,7 @@
|
||||
pref(layout.css.mix-blend-mode.enabled,true) == blend-canvas.html blend-canvas-ref.html
|
||||
pref(layout.css.mix-blend-mode.enabled,true) == blend-constant-background-color.html blend-constant-background-color-ref.html
|
||||
pref(layout.css.mix-blend-mode.enabled,true) == blend-gradient-background-color.html blend-gradient-background-color-ref.html
|
||||
pref(layout.css.mix-blend-mode.enabled,true) == blend-image.html blend-image-ref.html
|
||||
skip-if(Mulet) pref(layout.css.mix-blend-mode.enabled,true) == blend-canvas.html blend-canvas-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(layout.css.mix-blend-mode.enabled,true) == blend-constant-background-color.html blend-constant-background-color-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(layout.css.mix-blend-mode.enabled,true) == blend-gradient-background-color.html blend-gradient-background-color-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(layout.css.mix-blend-mode.enabled,true) == blend-image.html blend-image-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
pref(layout.css.mix-blend-mode.enabled,true) == blend-difference-stacking.html blend-difference-stacking-ref.html
|
||||
|
||||
pref(layout.css.background-blend-mode.enabled,true) == background-blending-alpha.html background-blending-alpha-ref.html
|
||||
@ -40,8 +40,8 @@ fuzzy-if(azureQuartz,2,40000) fuzzy-if(azureSkia||d2d||gtk2Widget,1,40000) pref(
|
||||
#fuzzy due to inconsistencies in rounded rect cliping between parent and child; may be related to antialiasing. Between platforms, the max difference is the same, and the number of different pixels is either 36 or 37. (Win, Mac and Lin)
|
||||
fuzzy(64,37) pref(layout.css.mix-blend-mode.enabled,true) == mix-blend-mode-952051.html mix-blend-mode-952051-ref.html
|
||||
|
||||
pref(layout.css.mix-blend-mode.enabled,true) pref(layout.css.filters.enabled,true) == mix-blend-mode-and-filter.html mix-blend-mode-and-filter-ref.html
|
||||
pref(layout.css.mix-blend-mode.enabled,true) pref(layout.css.filters.enabled,true) == mix-blend-mode-and-filter.svg mix-blend-mode-and-filter-ref.svg
|
||||
skip-if(Mulet) pref(layout.css.mix-blend-mode.enabled,true) pref(layout.css.filters.enabled,true) == mix-blend-mode-and-filter.html mix-blend-mode-and-filter-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) pref(layout.css.mix-blend-mode.enabled,true) pref(layout.css.filters.enabled,true) == mix-blend-mode-and-filter.svg mix-blend-mode-and-filter-ref.svg # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
|
||||
pref(layout.css.mix-blend-mode.enabled,true) == mix-blend-mode-child-of-blended-has-opacity.html mix-blend-mode-child-of-blended-has-opacity-ref.html
|
||||
|
||||
@ -52,7 +52,7 @@ pref(layout.css.mix-blend-mode.enabled,true) == mix-blend-mode-nested-976533.htm
|
||||
pref(layout.css.background-blend-mode.enabled,true) == background-blending-image-color-svg-as-data-uri.html background-blending-image-color-ref.html
|
||||
# Test 10
|
||||
pref(layout.css.background-blend-mode.enabled,true) == background-blending-image-color-gif.html background-blending-image-color-gif-ref.html
|
||||
pref(layout.css.background-blend-mode.enabled,true) == background-blending-image-color-transform3d.html background-blending-image-color-ref.html
|
||||
skip-if(Mulet) pref(layout.css.background-blend-mode.enabled,true) == background-blending-image-color-transform3d.html background-blending-image-color-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
|
||||
# Test plan 5.3.2 Background layers do not blend with content outside the background (or behind the element) - tests 2 and 3
|
||||
pref(layout.css.background-blend-mode.enabled,true) == background-blending-isolation-parent-child-color.html background-blending-isolation-parent-child-ref.html
|
||||
|
@ -1,9 +1,9 @@
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureSkiaGL,3,89700) fuzzy-if(azureQuartz,1,18) fuzzy-if(azureQuartz,1,34792) == linear-1a.html linear-1-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureSkiaGL,3,89700) fuzzy-if(azureQuartz,1,18) fuzzy-if(azureQuartz,1,34792) == linear-1b.html linear-1-ref.html
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureSkiaGL,3,89700) fuzzy-if(azureQuartz,1,18) fuzzy-if(azureQuartz,1,34792) == linear-1a.html linear-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureSkiaGL,3,89700) fuzzy-if(azureQuartz,1,18) fuzzy-if(azureQuartz,1,34792) == linear-1b.html linear-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureSkiaGL,2,89997) fuzzy-if(azureQuartz,1,11469) == linear-keywords-1a.html linear-keywords-1-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureSkiaGL,2,89997) fuzzy-if(azureQuartz,1,11985) == linear-keywords-1b.html linear-keywords-1-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureQuartz,1,10230) == linear-percent.html linear-percent-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,4,92400) fuzzy-if(azureSkiaGL,2,143400) fuzzy-if(azureQuartz,1,27827) fuzzy-if(Android&&AndroidVersion>=15,4,93000) == linear-mix.html linear-mix-ref.html
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,4,92400) fuzzy-if(azureSkiaGL,2,143400) fuzzy-if(azureQuartz,1,27827) fuzzy-if(Android&&AndroidVersion>=15,4,93000) == linear-mix.html linear-mix-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== linear-diagonal-1a.html linear-diagonal-1-ref.html
|
||||
== linear-diagonal-1b.html linear-diagonal-1-ref.html
|
||||
== linear-diagonal-1c.html linear-diagonal-1-ref.html
|
||||
@ -36,7 +36,7 @@ fails-if(d2d) == linear-repeat-1b.html linear-repeat-1-ref.html # bug 582236
|
||||
fails-if(d2d) == linear-repeat-1d.html linear-repeat-1-ref.html # bug 582236
|
||||
== linear-repeat-1e.html linear-repeat-1-ref.html
|
||||
fails-if(d2d) == linear-repeat-1f.html linear-repeat-1-ref.html # bug 582236
|
||||
fails-if(d2d) == linear-repeat-1g.html linear-repeat-1-ref.html # bug 582236
|
||||
skip-if(Mulet) fails-if(d2d) == linear-repeat-1g.html linear-repeat-1-ref.html # bug 582236 # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== linear-rotated-1.html linear-rotated-1-ref.html
|
||||
== linear-size-1a.html linear-size-1-ref.html
|
||||
== linear-stops-1a.html linear-stops-1-ref.html
|
||||
@ -51,15 +51,15 @@ fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) fuzzy-if(azureSkiaGL,2,89700) f
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) fuzzy-if(azureSkiaGL,2,89700) fuzzy-if(azureQuartz,2,26777) == linear-vertical-1d.html linear-vertical-1-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,88500) fuzzy-if(azureSkiaGL,2,89700) fuzzy-if(azureQuartz,1,22367) == linear-vertical-1e.html linear-vertical-1-ref.html
|
||||
== linear-vertical-subpixel-1.html linear-vertical-subpixel-1-ref.html
|
||||
== linear-viewport.html linear-viewport-ref.html
|
||||
skip-if(Mulet) == linear-viewport.html linear-viewport-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fails-if(OSX==1010) == linear-zero-length-1a.html linear-zero-length-1-ref.html
|
||||
fails-if(OSX==1010) == linear-zero-length-1b.html linear-zero-length-1-ref.html
|
||||
fails-if(OSX==1010) == linear-zero-length-1c.html linear-zero-length-1-ref.html
|
||||
== nostops.html about:blank
|
||||
== onestop.html about:blank
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,5884) fuzzy-if(cocoaWidget,9,87824) fuzzy-if(azureSkiaGL,2,88024) random-if(d2d) == radial-1a.html radial-1-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,5884) fuzzy-if(cocoaWidget,9,87824) fuzzy-if(azureSkiaGL,2,88024) random-if(d2d) == radial-1b.html radial-1-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,5884) fuzzy-if(cocoaWidget,9,87824) fuzzy-if(azureSkiaGL,2,88024) random-if(d2d) == radial-1c.html radial-1-ref.html
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,1,5884) fuzzy-if(cocoaWidget,9,87824) fuzzy-if(azureSkiaGL,2,88024) random-if(d2d) == radial-1a.html radial-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,1,5884) fuzzy-if(cocoaWidget,9,87824) fuzzy-if(azureSkiaGL,2,88024) random-if(d2d) == radial-1b.html radial-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,1,5884) fuzzy-if(cocoaWidget,9,87824) fuzzy-if(azureSkiaGL,2,88024) random-if(d2d) == radial-1c.html radial-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fuzzy(3,7860) fuzzy-if(cocoaWidget,5,89041) fuzzy-if(azureSkiaGL,2,90000) == radial-2a.html radial-2-ref.html
|
||||
fuzzy(3,7860) fuzzy-if(cocoaWidget,5,89041) fuzzy-if(azureSkiaGL,2,90000) == radial-2b.html radial-2-ref.html
|
||||
fuzzy(3,7860) fuzzy-if(cocoaWidget,5,89041) fuzzy-if(azureSkiaGL,2,90000) == radial-2c.html radial-2-ref.html
|
||||
@ -114,23 +114,23 @@ fuzzy-if(d2d,127,2612) == repeating-radial-1e.html repeating-radial-1-ref.html
|
||||
== twostops-1g.html twostops-1-ref.html
|
||||
|
||||
# from http://www.xanthir.com/:4bhipd by way of http://a-ja.net/newgrad.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4646) == aja-linear-1a.html aja-linear-1-ref.html
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4646) == aja-linear-1a.html aja-linear-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fails-if(!d2d&&!(OSX==1010&&isDebugBuild)) == aja-linear-1b.html aja-linear-1-ref.html # bug 526694, passing on 10.10 debug is bug 1128517
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4646) == aja-linear-1c.html aja-linear-1-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4646) == aja-linear-1d.html aja-linear-1-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4646) == aja-linear-1e.html aja-linear-1-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4646) == aja-linear-1f.html aja-linear-1-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4646) == aja-linear-1g.html aja-linear-1-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4667) == aja-linear-2a.html aja-linear-2-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4667) == aja-linear-2b.html aja-linear-2-ref.html
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4646) == aja-linear-1c.html aja-linear-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4646) == aja-linear-1d.html aja-linear-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4646) == aja-linear-1e.html aja-linear-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4646) == aja-linear-1f.html aja-linear-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4646) == aja-linear-1g.html aja-linear-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4667) == aja-linear-2a.html aja-linear-2-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,1,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,4667) == aja-linear-2b.html aja-linear-2-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fails == aja-linear-2c.html aja-linear-2-ref.html # bug 522607
|
||||
fails-if(!d2d) == aja-linear-2d.html aja-linear-2-ref.html # bug 526694
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,19999) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz,1,10553) == aja-linear-3a.html aja-linear-3-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,1,19999) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz,1,10553) == aja-linear-3b.html aja-linear-3-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,8655) == aja-linear-4a.html aja-linear-4-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,8655) == aja-linear-4b.html aja-linear-4-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,2,7878) == aja-linear-5a.html aja-linear-5-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,2,16477) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz,2,10163) == aja-linear-6a.html aja-linear-6-ref.html # bug 526708
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,1,19999) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz,1,10553) == aja-linear-3a.html aja-linear-3-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,1,19999) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz,1,10553) == aja-linear-3b.html aja-linear-3-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,8655) == aja-linear-4a.html aja-linear-4-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,1,8655) == aja-linear-4b.html aja-linear-4-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,2,7878) == aja-linear-5a.html aja-linear-5-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) fuzzy-if(!contentSameGfxBackendAsCanvas,2,16477) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz,2,10163) == aja-linear-6a.html aja-linear-6-ref.html # bug 526708 # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
fails == aja-linear-6b.html aja-linear-6-ref.html # bug 522607
|
||||
skip-if(B2G||Mulet) == height-dependence-1.html height-dependence-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) fuzzy-if(cocoaWidget,1,40000) == height-dependence-2.html height-dependence-2-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
@ -34,4 +34,4 @@ load stress-10.html # crash test
|
||||
|
||||
== restyle-inside-first-line.html restyle-inside-first-line-ref.html
|
||||
== font-styles.html font-styles-ref.html
|
||||
== font-styles-nooverflow.html font-styles-ref.html
|
||||
skip-if(Mulet) == font-styles-nooverflow.html font-styles-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
|
@ -59,12 +59,12 @@ HTTP(..) == annotations.html annotations-ref.html
|
||||
# font-variant subproperties
|
||||
# test for specific features being on and others off, based on prop values
|
||||
# (debug problems with font-variant-debug.html which displays all props)
|
||||
HTTP(..) == font-variant-alternates.html font-variant-alternates-ref.html
|
||||
HTTP(..) == font-variant-caps.html font-variant-caps-ref.html
|
||||
HTTP(..) == font-variant-east-asian.html font-variant-east-asian-ref.html
|
||||
HTTP(..) == font-variant-ligatures.html font-variant-ligatures-ref.html
|
||||
HTTP(..) == font-variant-numeric.html font-variant-numeric-ref.html
|
||||
HTTP(..) == font-variant-position.html font-variant-position-ref.html
|
||||
skip-if(Mulet) HTTP(..) == font-variant-alternates.html font-variant-alternates-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) HTTP(..) == font-variant-caps.html font-variant-caps-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) HTTP(..) == font-variant-east-asian.html font-variant-east-asian-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) HTTP(..) == font-variant-ligatures.html font-variant-ligatures-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) HTTP(..) == font-variant-numeric.html font-variant-numeric-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
skip-if(Mulet) HTTP(..) == font-variant-position.html font-variant-position-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
|
||||
# font-kerning
|
||||
HTTP(..) != font-kerning-normal.html font-kerning-none.html
|
||||
|
@ -45,7 +45,7 @@ random-if(cocoaWidget) != impact-bold.html impact.html # bug 539418
|
||||
|
||||
# localized font family names should always match just as English names do
|
||||
== localized-family-names-001.html localized-family-names-001-ref.html
|
||||
== localized-family-names-002.html localized-family-names-002-ref.html
|
||||
skip-if(Mulet) == localized-family-names-002.html localized-family-names-002-ref.html # MULET: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== localized-family-names-003.html localized-family-names-003-ref.html
|
||||
== localized-family-names-004.html localized-family-names-004-ref.html
|
||||
|
||||
@ -92,7 +92,7 @@ random-if(!(cocoaWidget||winWidget)) == arial-arabic.html arial-arabic-ref.html
|
||||
!= syntheticbold-rotated.html syntheticbold-rotated-ref.html
|
||||
|
||||
HTTP(..) == font-synthesis-1.html font-synthesis-1-ref.html
|
||||
HTTP(..) == font-synthesis-2.html font-synthesis-2-ref.html
|
||||
skip-if(Mulet) HTTP(..) == font-synthesis-2.html font-synthesis-2-ref.html # MULET: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
|
||||
# Bug 1060791 - support for format 10 cmap in Apple Symbols;
|
||||
# relevant fonts not present on other platforms.
|
||||
|
@ -5,7 +5,7 @@
|
||||
== fieldset-scroll-1.html fieldset-scroll-1-ref.html
|
||||
== fieldset-scrolled-1.html fieldset-scrolled-1-ref.html
|
||||
random-if(B2G||Mulet) == fieldset-overflow-auto-1.html fieldset-overflow-auto-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fuzzy-if(winWidget&&!layersGPUAccelerated,102,205) == positioned-container-1.html positioned-container-1-ref.html
|
||||
skip-if(Mulet) fuzzy-if(winWidget&&!layersGPUAccelerated,102,205) == positioned-container-1.html positioned-container-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== relpos-legend-1.html relpos-legend-1-ref.html
|
||||
== relpos-legend-2.html relpos-legend-2-ref.html
|
||||
test-pref(layout.css.sticky.enabled,true) skip-if((B2G&&browserIsRemote)||Mulet) == sticky-legend-1.html sticky-legend-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
@ -1,4 +1,4 @@
|
||||
fuzzy-if(Android,8,30) == background-image-zoom-1.html background-image-zoom-1-ref.html
|
||||
skip-if(Mulet) fuzzy-if(Android,8,30) == background-image-zoom-1.html background-image-zoom-1-ref.html # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
|
||||
== background-image-zoom-2.html about:blank
|
||||
== image-seam-1a.html image-seam-1-ref.html
|
||||
== image-seam-1b.html image-seam-1-ref.html
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user