diff options
Diffstat (limited to 'browser/base/content/test/social/browser_social_activation.js')
-rw-r--r-- | browser/base/content/test/social/browser_social_activation.js | 270 |
1 files changed, 0 insertions, 270 deletions
diff --git a/browser/base/content/test/social/browser_social_activation.js b/browser/base/content/test/social/browser_social_activation.js deleted file mode 100644 index 2af0d8021..000000000 --- a/browser/base/content/test/social/browser_social_activation.js +++ /dev/null @@ -1,270 +0,0 @@ -/* 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/. */ - -// -// Whitelisting this test. -// As part of bug 1077403, the leaking uncaught rejection should be fixed. -// -thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: Assert is null"); - - -var SocialService = Cu.import("resource:///modules/SocialService.jsm", {}).SocialService; - -var tabsToRemove = []; - -function removeProvider(provider) { - return new Promise(resolve => { - // a full install sets the manifest into a pref, addProvider alone doesn't, - // make sure we uninstall if the manifest was added. - if (provider.manifest) { - SocialService.uninstallProvider(provider.origin, resolve); - } else { - SocialService.disableProvider(provider.origin, resolve); - } - }); -} - -function postTestCleanup(callback) { - Task.spawn(function* () { - // any tabs opened by the test. - for (let tab of tabsToRemove) { - yield BrowserTestUtils.removeTab(tab); - } - tabsToRemove = []; - // all the providers may have been added. - while (Social.providers.length > 0) { - yield removeProvider(Social.providers[0]); - } - }).then(callback); -} - -function newTab(url) { - return new Promise(resolve => { - BrowserTestUtils.openNewForegroundTab(gBrowser, url).then(tab => { - tabsToRemove.push(tab); - resolve(tab); - }); - }); -} - -function sendActivationEvent(tab, callback, nullManifest) { - // hack Social.lastEventReceived so we don't hit the "too many events" check. - Social.lastEventReceived = 0; - BrowserTestUtils.synthesizeMouseAtCenter("#activation", {}, tab.linkedBrowser); - executeSoon(callback); -} - -function activateProvider(domain, callback, nullManifest) { - let activationURL = domain+"/browser/browser/base/content/test/social/social_activate_basic.html" - newTab(activationURL).then(tab => { - sendActivationEvent(tab, callback, nullManifest); - }); -} - -function activateIFrameProvider(domain, callback) { - let activationURL = domain+"/browser/browser/base/content/test/social/social_activate_iframe.html" - newTab(activationURL).then(tab => { - sendActivationEvent(tab, callback, false); - }); -} - -function waitForProviderLoad(origin) { - return Promise.all([ - ensureFrameLoaded(gBrowser, origin + "/browser/browser/base/content/test/social/social_postActivation.html"), - ]); -} - -function getAddonItemInList(aId, aList) { - var item = aList.firstChild; - while (item) { - if ("mAddon" in item && item.mAddon.id == aId) { - aList.ensureElementIsVisible(item); - return item; - } - item = item.nextSibling; - } - return null; -} - -function clickAddonRemoveButton(tab, aCallback) { - AddonManager.getAddonsByTypes(["service"], function(aAddons) { - let addon = aAddons[0]; - - let doc = tab.linkedBrowser.contentDocument; - let list = doc.getElementById("addon-list"); - - let item = getAddonItemInList(addon.id, list); - let button = item._removeBtn; - isnot(button, null, "Should have a remove button"); - ok(!button.disabled, "Button should not be disabled"); - - // uninstall happens after about:addons tab is closed, so we wait on - // disabled - promiseObserverNotified("social:provider-disabled").then(() => { - is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling"); - executeSoon(function() { aCallback(addon); }); - }); - - BrowserTestUtils.synthesizeMouseAtCenter(button, {}, tab.linkedBrowser); - }); -} - -function activateOneProvider(manifest, finishActivation, aCallback) { - info("activating provider "+manifest.name); - let panel = document.getElementById("servicesInstall-notification"); - BrowserTestUtils.waitForEvent(PopupNotifications.panel, "popupshown").then(() => { - ok(!panel.hidden, "servicesInstall-notification panel opened"); - if (finishActivation) - panel.button.click(); - else - panel.closebutton.click(); - }); - BrowserTestUtils.waitForEvent(PopupNotifications.panel, "popuphidden").then(() => { - ok(panel.hidden, "servicesInstall-notification panel hidden"); - if (!finishActivation) { - ok(panel.hidden, "activation panel is not showing"); - executeSoon(aCallback); - } else { - waitForProviderLoad(manifest.origin).then(() => { - checkSocialUI(); - executeSoon(aCallback); - }); - } - }); - - // the test will continue as the popup events fire... - activateProvider(manifest.origin, function() { - info("waiting on activation panel to open/close..."); - }); -} - -var gTestDomains = ["https://example.com", "https://test1.example.com", "https://test2.example.com"]; -var gProviders = [ - { - name: "provider 1", - origin: "https://example.com", - shareURL: "https://example.com/browser/browser/base/content/test/social/social_share.html?provider1", - iconURL: "chrome://branding/content/icon48.png" - }, - { - name: "provider 2", - origin: "https://test1.example.com", - shareURL: "https://test1.example.com/browser/browser/base/content/test/social/social_share.html?provider2", - iconURL: "chrome://branding/content/icon64.png" - }, - { - name: "provider 3", - origin: "https://test2.example.com", - shareURL: "https://test2.example.com/browser/browser/base/content/test/social/social_share.html?provider2", - iconURL: "chrome://branding/content/about-logo.png" - } -]; - - -function test() { - PopupNotifications.panel.setAttribute("animate", "false"); - registerCleanupFunction(function () { - PopupNotifications.panel.removeAttribute("animate"); - }); - waitForExplicitFinish(); - SpecialPowers.pushPrefEnv({"set": [["dom.ipc.processCount", 1]]}, () => { - runSocialTests(tests, undefined, postTestCleanup); - }); -} - -var tests = { - testActivationWrongOrigin: function(next) { - // At this stage none of our providers exist, so we expect failure. - Services.prefs.setBoolPref("social.remote-install.enabled", false); - activateProvider(gTestDomains[0], function() { - is(SocialUI.enabled, false, "SocialUI is not enabled"); - let panel = document.getElementById("servicesInstall-notification"); - ok(panel.hidden, "activation panel still hidden"); - checkSocialUI(); - Services.prefs.clearUserPref("social.remote-install.enabled"); - next(); - }); - }, - - testIFrameActivation: function(next) { - activateIFrameProvider(gTestDomains[0], function() { - is(SocialUI.enabled, false, "SocialUI is not enabled"); - let panel = document.getElementById("servicesInstall-notification"); - ok(panel.hidden, "activation panel still hidden"); - checkSocialUI(); - next(); - }); - }, - - testActivationFirstProvider: function(next) { - // first up we add a manifest entry for a single provider. - activateOneProvider(gProviders[0], false, function() { - // we deactivated leaving no providers left, so Social is disabled. - checkSocialUI(); - next(); - }); - }, - - testActivationMultipleProvider: function(next) { - // The trick with this test is to make sure that Social.providers[1] is - // the current provider when doing the undo - this makes sure that the - // Social code doesn't fallback to Social.providers[0], which it will - // do in some cases (but those cases do not include what this test does) - // first enable the 2 providers - SocialService.addProvider(gProviders[0], function() { - SocialService.addProvider(gProviders[1], function() { - checkSocialUI(); - // activate the last provider. - activateOneProvider(gProviders[2], false, function() { - // we deactivated - the first provider should be enabled. - checkSocialUI(); - next(); - }); - }); - }); - }, - - testAddonManagerDoubleInstall: function(next) { - // Create a new tab and load about:addons - let addonsTab = gBrowser.addTab(); - gBrowser.selectedTab = addonsTab; - BrowserOpenAddonsMgr('addons://list/service'); - gBrowser.selectedBrowser.addEventListener("load", function tabLoad() { - gBrowser.selectedBrowser.removeEventListener("load", tabLoad, true); - is(addonsTab.linkedBrowser.currentURI.spec, "about:addons", "about:addons should load into blank tab."); - - activateOneProvider(gProviders[0], true, function() { - info("first activation completed"); - is(gBrowser.contentDocument.location.href, gProviders[0].origin + "/browser/browser/base/content/test/social/social_postActivation.html", "postActivationURL loaded"); - BrowserTestUtils.removeTab(gBrowser.selectedTab).then(() => { - is(gBrowser.contentDocument.location.href, gProviders[0].origin + "/browser/browser/base/content/test/social/social_activate_basic.html", "activation page selected"); - BrowserTestUtils.removeTab(gBrowser.selectedTab).then(() => { - tabsToRemove.pop(); - // uninstall the provider - clickAddonRemoveButton(addonsTab, function(addon) { - checkSocialUI(); - activateOneProvider(gProviders[0], true, function() { - info("second activation completed"); - is(gBrowser.contentDocument.location.href, gProviders[0].origin + "/browser/browser/base/content/test/social/social_postActivation.html", "postActivationURL loaded"); - BrowserTestUtils.removeTab(gBrowser.selectedTab).then(() => { - - // after closing the addons tab, verify provider is still installed - AddonManager.getAddonsByTypes(["service"], function(aAddons) { - is(aAddons.length, 1, "there can be only one"); - - let doc = addonsTab.linkedBrowser.contentDocument; - let list = doc.getElementById("addon-list"); - is(list.childNodes.length, 1, "only one addon is displayed"); - - BrowserTestUtils.removeTab(addonsTab).then(next); - }); - }); - }); - }); - }); - }); - }); - }, true); - } -} |