Bug 1403009 - Intermittent failure in browser_test_favicon.js. r=kershaw
MozReview-Commit-ID: 9phZS4o5FC8
--- a/extensions/cookie/test/browser.ini
+++ b/extensions/cookie/test/browser.ini
@@ -1,10 +1,13 @@
[DEFAULT]
[browser_test_favicon.js]
+support-files =
+ damonbowling.jpg
+ damonbowling.jpg^headers^
[browser_permmgr_sync.js]
# The browser_permmgr_sync test tests e10s specific behavior, and runs code
# paths which would hit the debug only assertion in
# nsPermissionManager::PermissionKey::CreateFromPrincipal. Because of this, it
# is only run in e10s opt builds.
skip-if = debug || !e10s
[browser_permmgr_viewsrc.js]
--- a/extensions/cookie/test/browser_test_favicon.js
+++ b/extensions/cookie/test/browser_test_favicon.js
@@ -1,28 +1,23 @@
// tests third party cookie blocking using a favicon load directly from chrome.
// in this case, the docshell of the channel is chrome, not content; thus
// the cookie should be considered third party.
-function test() {
- waitForExplicitFinish();
-
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 1);
+add_task(async function() {
+ const iconUrl = "http://example.org/browser/extensions/cookie/test/damonbowling.jpg";
+ await SpecialPowers.pushPrefEnv({"set": [["network.cookie.cookieBehavior", 1]]});
- Services.obs.addObserver(function (theSubject, theTopic, theData) {
- var uri = theSubject.QueryInterface(Components.interfaces.nsIURI);
- var domain = uri.host;
-
- if (domain == "example.org") {
- ok(true, "foreign favicon cookie was blocked");
+ let promise = TestUtils.topicObserved("cookie-rejected", subject => {
+ let uri = subject.QueryInterface(Components.interfaces.nsIURI);
+ return uri.spec == iconUrl;
+ });
- Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
-
- Services.obs.removeObserver(arguments.callee, "cookie-rejected");
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
+ registerCleanupFunction(async function() {
+ await BrowserTestUtils.removeTab(tab);
+ });
- finish();
- }
- }, "cookie-rejected");
-
- // kick off a favicon load
- gBrowser.setIcon(gBrowser.selectedTab, "http://example.org/tests/extensions/cookie/test/damonbowling.jpg",
- Services.scriptSecurityManager.getSystemPrincipal());
-}
+ // Kick off a favicon load.
+ gBrowser.setIcon(tab, iconUrl);
+ await promise;
+ ok(true, "foreign favicon cookie was blocked");
+});
--- a/extensions/cookie/test/mochitest.ini
+++ b/extensions/cookie/test/mochitest.ini
@@ -1,14 +1,12 @@
[DEFAULT]
support-files =
beltzner.jpg
beltzner.jpg^headers^
- damonbowling.jpg
- damonbowling.jpg^headers^
file_chromecommon.js
file_domain_hierarchy_inner.html
file_domain_hierarchy_inner_inner.html
file_domain_hierarchy_inner_inner_inner.html
file_domain_inner.html
file_domain_inner_inner.html
file_image_inner.html
file_image_inner_inner.html