diff --git a/browser/base/content/test/social/browser.ini b/browser/base/content/test/social/browser.ini index 7d9ba0e73a34..5361a4b3f361 100644 --- a/browser/base/content/test/social/browser.ini +++ b/browser/base/content/test/social/browser.ini @@ -27,7 +27,6 @@ support-files = unchecked.jpg [browser_aboutHome_activation.js] -skip-if = e10s # Bug 1053965 "cw.ensureSnippetsMapThen is not a function", also see general/browser.ini about:home comments [browser_addons.js] skip-if = e10s && debug # Leaking docshells (bug 1150147) [browser_blocklist.js] diff --git a/browser/base/content/test/social/browser_aboutHome_activation.js b/browser/base/content/test/social/browser_aboutHome_activation.js index 9fc108204bdb..ff71428aa946 100644 --- a/browser/base/content/test/social/browser_aboutHome_activation.js +++ b/browser/base/content/test/social/browser_aboutHome_activation.js @@ -17,7 +17,7 @@ let snippet = ' "name": "Demo Social Service",' + ' "origin": "https://example.com",' + ' "iconURL": "chrome://branding/content/icon16.png",' + -' "icon32URL": "chrome://branding/content/favicon32.png",' + +' "icon32URL": "chrome://branding/content/icon32.png",' + ' "icon64URL": "chrome://branding/content/icon64.png",' + ' "sidebarURL": "https://example.com/browser/browser/base/content/test/social/social_sidebar_empty.html",' + ' "postActivationURL": "https://example.com/browser/browser/base/content/test/social/social_postActivation.html",' + @@ -29,7 +29,7 @@ let snippet = ' }' + ' ' + '
' + -' ' + +' ' + '
'; // enable one-click activation @@ -39,7 +39,7 @@ let snippet2 = ' "name": "Demo Social Service",' + ' "origin": "https://example.com",' + ' "iconURL": "chrome://branding/content/icon16.png",' + -' "icon32URL": "chrome://branding/content/favicon32.png",' + +' "icon32URL": "chrome://branding/content/icon32.png",' + ' "icon64URL": "chrome://branding/content/icon64.png",' + ' "sidebarURL": "https://example.com/browser/browser/base/content/test/social/social_sidebar_empty.html",' + ' "postActivationURL": "https://example.com/browser/browser/base/content/test/social/social_postActivation.html",' + @@ -52,18 +52,14 @@ let snippet2 = ' }' + ' ' + '
' + -' ' + +' ' + '
'; let gTests = [ { desc: "Test activation with enable panel", - setup: function (aSnippetsMap) - { - // This must be some incorrect xhtml code. - aSnippetsMap.set("snippets", snippet); - }, + snippet: snippet, run: function (aSnippetsMap) { let deferred = Promise.defer(); @@ -81,7 +77,6 @@ let gTests = [ gBrowser.removeTab(gBrowser.selectedTab); SocialService.uninstallProvider(SocialSidebar.provider.origin, function () { info("provider uninstalled"); - aSnippetsMap.delete("snippets"); deferred.resolve(true); }); }); @@ -91,11 +86,7 @@ let gTests = [ { desc: "Test activation bypassing enable panel", - setup: function (aSnippetsMap) - { - // This must be some incorrect xhtml code. - aSnippetsMap.set("snippets", snippet2); - }, + snippet: snippet2, run: function (aSnippetsMap) { let deferred = Promise.defer(); @@ -113,7 +104,6 @@ let gTests = [ gBrowser.removeTab(gBrowser.selectedTab); SocialService.uninstallProvider(SocialSidebar.provider.origin, function () { info("provider uninstalled"); - aSnippetsMap.delete("snippets"); deferred.resolve(true); }); }); @@ -136,7 +126,7 @@ function test() let tab = gBrowser.selectedTab = gBrowser.addTab("about:blank"); // Add an event handler to modify the snippets map once it's ready. - let snippetsPromise = promiseSetupSnippetsMap(tab, test.setup); + let snippetsPromise = promiseSetupSnippetsMap(tab, test.snippet); // Start loading about:home and wait for it to complete. yield promiseTabLoadEvent(tab, "about:home", "AboutHomeLoadSnippetsCompleted"); @@ -196,32 +186,45 @@ function promiseTabLoadEvent(aTab, aURL, aEventType="load") * The setup function to be run. * @return {Promise} resolved when the snippets are ready. Gets the snippets map. */ -function promiseSetupSnippetsMap(aTab, aSetupFn) +function promiseSetupSnippetsMap(aTab, aSnippet) { - let deferred = Promise.defer(); info("Waiting for snippets map"); - aTab.linkedBrowser.addEventListener("AboutHomeLoadSnippets", function load(event) { - aTab.linkedBrowser.removeEventListener("AboutHomeLoadSnippets", load, true); - let cw = aTab.linkedBrowser.contentWindow.wrappedJSObject; - // The snippets should already be ready by this point. Here we're - // just obtaining a reference to the snippets map. - cw.ensureSnippetsMapThen(function (aSnippetsMap) { - aSnippetsMap = Cu.waiveXrays(aSnippetsMap); - info("Got snippets map: " + - "{ last-update: " + aSnippetsMap.get("snippets-last-update") + - ", cached-version: " + aSnippetsMap.get("snippets-cached-version") + - " }"); - // Don't try to update. - aSnippetsMap.set("snippets-last-update", Date.now()); - aSnippetsMap.set("snippets-cached-version", AboutHomeUtils.snippetsVersion); - // Clear snippets. - aSnippetsMap.delete("snippets"); - aSetupFn(aSnippetsMap); - deferred.resolve(aSnippetsMap); - }); - }, true, true); - return deferred.promise; + return ContentTask.spawn(aTab.linkedBrowser, + {snippetsVersion: AboutHomeUtils.snippetsVersion, + snippet: aSnippet}, + function*(arg) { + + let obj = {}; + Cu.import("resource://gre/modules/Promise.jsm", obj); + let deferred = obj.Promise.defer(); + + addEventListener("AboutHomeLoadSnippets", function load(event) { + removeEventListener("AboutHomeLoadSnippets", load, true); + + let cw = content.window.wrappedJSObject; + + // The snippets should already be ready by this point. Here we're + // just obtaining a reference to the snippets map. + cw.ensureSnippetsMapThen(function (aSnippetsMap) { + aSnippetsMap = Cu.waiveXrays(aSnippetsMap); + console.log("Got snippets map: " + + "{ last-update: " + aSnippetsMap.get("snippets-last-update") + + ", cached-version: " + aSnippetsMap.get("snippets-cached-version") + + " }"); + // Don't try to update. + aSnippetsMap.set("snippets-last-update", Date.now()); + aSnippetsMap.set("snippets-cached-version", arg.snippetsVersion); + // Clear snippets. + aSnippetsMap.delete("snippets"); + aSnippetsMap.set("snippets", arg.snippet); + deferred.resolve(); + }); + }, true, true); + + return deferred.promise; + + }); } @@ -233,7 +236,7 @@ function sendActivationEvent(tab, callback) { if (doc.defaultView.frames[0]) doc = doc.defaultView.frames[0].document; let button = doc.getElementById("activationSnippet"); - EventUtils.synthesizeMouseAtCenter(button, {}, doc.defaultView); + BrowserTestUtils.synthesizeMouseAtCenter(button, {}, tab.linkedBrowser); executeSoon(callback); }