summaryrefslogtreecommitdiff
path: root/browser/base/content/test/social/head.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/social/head.js')
-rw-r--r--browser/base/content/test/social/head.js273
1 files changed, 0 insertions, 273 deletions
diff --git a/browser/base/content/test/social/head.js b/browser/base/content/test/social/head.js
deleted file mode 100644
index ea175c97a1..0000000000
--- a/browser/base/content/test/social/head.js
+++ /dev/null
@@ -1,273 +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/. */
-
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-XPCOMUtils.defineLazyModuleGetter(this, "Task",
- "resource://gre/modules/Task.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils",
- "resource://gre/modules/PlacesUtils.jsm");
-
-
-function promiseObserverNotified(aTopic) {
- return new Promise(resolve => {
- Services.obs.addObserver(function onNotification(aSubject, aTopic, aData) {
- dump("notification promised "+aTopic);
- Services.obs.removeObserver(onNotification, aTopic);
- TestUtils.executeSoon(() => resolve({subject: aSubject, data: aData}));
- }, aTopic, false);
- });
-}
-
-// Check that a specified (string) URL hasn't been "remembered" (ie, is not
-// in history, will not appear in about:newtab or auto-complete, etc.)
-function promiseSocialUrlNotRemembered(url) {
- return new Promise(resolve => {
- let uri = Services.io.newURI(url, null, null);
- PlacesUtils.asyncHistory.isURIVisited(uri, function(aURI, aIsVisited) {
- ok(!aIsVisited, "social URL " + url + " should not be in global history");
- resolve();
- });
- });
-}
-
-var gURLsNotRemembered = [];
-
-
-function checkProviderPrefsEmpty(isError) {
- let MANIFEST_PREFS = Services.prefs.getBranch("social.manifest.");
- let prefs = MANIFEST_PREFS.getChildList("", []);
- let c = 0;
- for (let pref of prefs) {
- if (MANIFEST_PREFS.prefHasUserValue(pref)) {
- info("provider [" + pref + "] manifest left installed from previous test");
- c++;
- }
- }
- is(c, 0, "all provider prefs uninstalled from previous test");
- is(Social.providers.length, 0, "all providers uninstalled from previous test " + Social.providers.length);
-}
-
-function defaultFinishChecks() {
- checkProviderPrefsEmpty(true);
- finish();
-}
-
-function runSocialTestWithProvider(manifest, callback, finishcallback) {
-
- let SocialService = Cu.import("resource:///modules/SocialService.jsm", {}).SocialService;
-
- let manifests = Array.isArray(manifest) ? manifest : [manifest];
-
- // Check that none of the provider's content ends up in history.
- function* finishCleanUp() {
- for (let i = 0; i < manifests.length; i++) {
- let m = manifests[i];
- for (let what of ['iconURL', 'shareURL']) {
- if (m[what]) {
- yield promiseSocialUrlNotRemembered(m[what]);
- }
- }
- }
- for (let i = 0; i < gURLsNotRemembered.length; i++) {
- yield promiseSocialUrlNotRemembered(gURLsNotRemembered[i]);
- }
- gURLsNotRemembered = [];
- }
-
- info("runSocialTestWithProvider: " + manifests.toSource());
-
- let finishCount = 0;
- function finishIfDone(callFinish) {
- finishCount++;
- if (finishCount == manifests.length)
- Task.spawn(finishCleanUp).then(finishcallback || defaultFinishChecks);
- }
- function removeAddedProviders(cleanup) {
- manifests.forEach(function (m) {
- // If we're "cleaning up", don't call finish when done.
- let callback = cleanup ? function () {} : finishIfDone;
- // Similarly, if we're cleaning up, catch exceptions from removeProvider
- let removeProvider = SocialService.disableProvider.bind(SocialService);
- if (cleanup) {
- removeProvider = function (origin, cb) {
- try {
- SocialService.disableProvider(origin, cb);
- } catch (ex) {
- // Ignore "provider doesn't exist" errors.
- if (ex.message.indexOf("SocialService.disableProvider: no provider with origin") == 0)
- return;
- info("Failed to clean up provider " + origin + ": " + ex);
- }
- }
- }
- removeProvider(m.origin, callback);
- });
- }
- function finishSocialTest(cleanup) {
- removeAddedProviders(cleanup);
- }
-
- let providersAdded = 0;
-
- manifests.forEach(function (m) {
- SocialService.addProvider(m, function(provider) {
-
- providersAdded++;
- info("runSocialTestWithProvider: provider added");
-
- // we want to set the first specified provider as the UI's provider
- if (provider.origin == manifests[0].origin) {
- firstProvider = provider;
- }
-
- // If we've added all the providers we need, call the callback to start
- // the tests (and give it a callback it can call to finish them)
- if (providersAdded == manifests.length) {
- registerCleanupFunction(function () {
- finishSocialTest(true);
- });
- BrowserTestUtils.waitForCondition(() => provider.enabled,
- "providers added and enabled").then(() => {
- info("provider has been enabled");
- callback(finishSocialTest);
- });
- }
- });
- });
-}
-
-function runSocialTests(tests, cbPreTest, cbPostTest, cbFinish) {
- let testIter = (function*() {
- for (let name in tests) {
- if (tests.hasOwnProperty(name)) {
- yield [name, tests[name]];
- }
- }
- })();
- let providersAtStart = Social.providers.length;
- info("runSocialTests: start test run with " + providersAtStart + " providers");
- window.focus();
-
-
- if (cbPreTest === undefined) {
- cbPreTest = function(cb) { cb() };
- }
- if (cbPostTest === undefined) {
- cbPostTest = function(cb) { cb() };
- }
-
- function runNextTest() {
- let result = testIter.next();
- if (result.done) {
- // out of items:
- (cbFinish || defaultFinishChecks)();
- is(providersAtStart, Social.providers.length,
- "runSocialTests: finish test run with " + Social.providers.length + " providers");
- return;
- }
- let [name, func] = result.value;
- // We run on a timeout to help keep the debug messages sane.
- executeSoon(function() {
- function cleanupAndRunNextTest() {
- info("sub-test " + name + " complete");
- cbPostTest(runNextTest);
- }
- cbPreTest(function() {
- info("pre-test: starting with " + Social.providers.length + " providers");
- info("sub-test " + name + " starting");
- try {
- func.call(tests, cleanupAndRunNextTest);
- } catch (ex) {
- ok(false, "sub-test " + name + " failed: " + ex.toString() +"\n"+ex.stack);
- cleanupAndRunNextTest();
- }
- })
- });
- }
- runNextTest();
-}
-
-// A fairly large hammer which checks all aspects of the SocialUI for
-// internal consistency.
-function checkSocialUI(win) {
- let SocialService = Cu.import("resource:///modules/SocialService.jsm", {}).SocialService;
- // if we have enabled providers, we should also have instances of those
- // providers
- if (SocialService.hasEnabledProviders) {
- ok(Social.providers.length > 0, "providers are enabled");
- } else {
- is(Social.providers.length, 0, "providers are not enabled");
- }
-}
-
-function setManifestPref(name, manifest) {
- let string = Cc["@mozilla.org/supports-string;1"].
- createInstance(Ci.nsISupportsString);
- string.data = JSON.stringify(manifest);
- Services.prefs.setComplexValue(name, Ci.nsISupportsString, string);
-}
-
-function getManifestPrefname(aManifest) {
- // is same as the generated name in SocialServiceInternal.getManifestPrefname
- let originUri = Services.io.newURI(aManifest.origin, null, null);
- return "social.manifest." + originUri.hostPort.replace('.', '-');
-}
-
-function ensureFrameLoaded(frame, uri) {
- return new Promise(resolve => {
- if (frame.contentDocument && frame.contentDocument.readyState == "complete" &&
- (!uri || frame.contentDocument.location.href == uri)) {
- resolve();
- } else {
- frame.addEventListener("load", function handler() {
- if (uri && frame.contentDocument.location.href != uri)
- return;
- frame.removeEventListener("load", handler, true);
- resolve()
- }, true);
- }
- });
-}
-
-// Support for going on and offline.
-// (via browser/base/content/test/browser_bookmark_titles.js)
-var origProxyType = Services.prefs.getIntPref('network.proxy.type');
-
-function toggleOfflineStatus(goOffline) {
- // Bug 968887 fix. when going on/offline, wait for notification before continuing
- return new Promise(resolve => {
- if (!goOffline) {
- Services.prefs.setIntPref('network.proxy.type', origProxyType);
- }
- if (goOffline != Services.io.offline) {
- info("initial offline state " + Services.io.offline);
- let expect = !Services.io.offline;
- Services.obs.addObserver(function offlineChange(subject, topic, data) {
- Services.obs.removeObserver(offlineChange, "network:offline-status-changed");
- info("offline state changed to " + Services.io.offline);
- is(expect, Services.io.offline, "network:offline-status-changed successful toggle");
- resolve();
- }, "network:offline-status-changed", false);
- BrowserOffline.toggleOfflineStatus();
- } else {
- resolve();
- }
- if (goOffline) {
- Services.prefs.setIntPref('network.proxy.type', 0);
- // LOAD_FLAGS_BYPASS_CACHE isn't good enough. So clear the cache.
- Services.cache2.clear();
- }
- });
-}
-
-function goOffline() {
- // Simulate a network outage with offline mode. (Localhost is still
- // accessible in offline mode, so disable the test proxy as well.)
- return toggleOfflineStatus(true);
-}
-
-function goOnline(callback) {
- return toggleOfflineStatus(false);
-}