Merge m-c to inbound a=merge CLOSED TREE

This commit is contained in:
Wes Kocher 2015-03-20 18:01:17 -07:00
Родитель ae0501d169 82d1b768c5
Коммит 14f75f943c
229 изменённых файлов: 8282 добавлений и 2523 удалений

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

@ -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)

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

@ -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>

После

Ширина:  |  Высота:  |  Размер: 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)

Разница между файлами не показана из-за своего большого размера Загрузить разницу

После

Ширина:  |  Высота:  |  Размер: 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)

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

@ -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>

После

Ширина:  |  Высота:  |  Размер: 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)

Разница между файлами не показана из-за своего большого размера Загрузить разницу

После

Ширина:  |  Высота:  |  Размер: 148 KiB

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

@ -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.

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

@ -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");
});
});
});

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

@ -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 */

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

@ -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>

До

Ширина:  |  Высота:  |  Размер: 1.5 KiB

После

Ширина:  |  Высота:  |  Размер: 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

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше