summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/social/browser_social_activation.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/social/browser_social_activation.js')
-rw-r--r--browser/base/content/test/social/browser_social_activation.js270
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);
- }
-}