summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/social/browser_aboutHome_activation.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/social/browser_aboutHome_activation.js')
-rw-r--r--browser/base/content/test/social/browser_aboutHome_activation.js229
1 files changed, 0 insertions, 229 deletions
diff --git a/browser/base/content/test/social/browser_aboutHome_activation.js b/browser/base/content/test/social/browser_aboutHome_activation.js
deleted file mode 100644
index 37cca53d2..000000000
--- a/browser/base/content/test/social/browser_aboutHome_activation.js
+++ /dev/null
@@ -1,229 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-var SocialService = Cu.import("resource:///modules/SocialService.jsm", {}).SocialService;
-
-XPCOMUtils.defineLazyModuleGetter(this, "Task",
- "resource://gre/modules/Task.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "AboutHomeUtils",
- "resource:///modules/AboutHome.jsm");
-
-var snippet =
-' <script>' +
-' var manifest = {' +
-' "name": "Demo Social Service",' +
-' "origin": "https://example.com",' +
-' "iconURL": "chrome://branding/content/icon16.png",' +
-' "icon32URL": "chrome://branding/content/icon32.png",' +
-' "icon64URL": "chrome://branding/content/icon64.png",' +
-' "shareURL": "https://example.com/browser/browser/base/content/test/social/social_share.html",' +
-' "postActivationURL": "https://example.com/browser/browser/base/content/test/social/social_postActivation.html",' +
-' };' +
-' function activateProvider(node) {' +
-' node.setAttribute("data-service", JSON.stringify(manifest));' +
-' var event = new CustomEvent("ActivateSocialFeature");' +
-' node.dispatchEvent(event);' +
-' }' +
-' </script>' +
-' <div id="activationSnippet" onclick="activateProvider(this)">' +
-' <img src="chrome://branding/content/icon32.png"></img>' +
-' </div>';
-
-// enable one-click activation
-var snippet2 =
-' <script>' +
-' var manifest = {' +
-' "name": "Demo Social Service",' +
-' "origin": "https://example.com",' +
-' "iconURL": "chrome://branding/content/icon16.png",' +
-' "icon32URL": "chrome://branding/content/icon32.png",' +
-' "icon64URL": "chrome://branding/content/icon64.png",' +
-' "shareURL": "https://example.com/browser/browser/base/content/test/social/social_share.html",' +
-' "postActivationURL": "https://example.com/browser/browser/base/content/test/social/social_postActivation.html",' +
-' "oneclick": true' +
-' };' +
-' function activateProvider(node) {' +
-' node.setAttribute("data-service", JSON.stringify(manifest));' +
-' var event = new CustomEvent("ActivateSocialFeature");' +
-' node.dispatchEvent(event);' +
-' }' +
-' </script>' +
-' <div id="activationSnippet" onclick="activateProvider(this)">' +
-' <img src="chrome://branding/content/icon32.png"></img>' +
-' </div>';
-
-var gTests = [
-
-{
- desc: "Test activation with enable panel",
- snippet: snippet,
- panel: true
-},
-
-{
- desc: "Test activation bypassing enable panel",
- snippet: snippet2,
- panel: false
-}
-];
-
-function test()
-{
- waitForExplicitFinish();
- requestLongerTimeout(2);
- ignoreAllUncaughtExceptions();
- PopupNotifications.panel.setAttribute("animate", "false");
- registerCleanupFunction(function () {
- PopupNotifications.panel.removeAttribute("animate");
- });
-
- Task.spawn(function* () {
- for (let test of gTests) {
- info(test.desc);
-
- // Create a tab to run the 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.snippet);
-
- // Start loading about:home and wait for it to complete, snippets should be loaded
- yield promiseTabLoadEvent(tab, "about:home", "AboutHomeLoadSnippetsCompleted");
-
- yield snippetsPromise;
-
- // ensure our activation snippet is indeed available
- yield ContentTask.spawn(tab.linkedBrowser, {}, function*(arg) {
- ok(!!content.document.getElementById("snippets"), "Found snippets element");
- ok(!!content.document.getElementById("activationSnippet"), "The snippet is present.");
- });
-
- yield new Promise(resolve => {
- activateProvider(tab, test.panel).then(() => {
- checkSocialUI();
- SocialService.uninstallProvider("https://example.com", function () {
- info("provider uninstalled");
- resolve();
- });
- });
- });
-
- // activation opened a post-activation info tab, close it.
- yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
- yield BrowserTestUtils.removeTab(tab);
- }
- }).then(finish, ex => {
- ok(false, "Unexpected Exception: " + ex);
- finish();
- });
-}
-
-/**
- * Starts a load in an existing tab and waits for it to finish (via some event).
- *
- * @param aTab
- * The tab to load into.
- * @param aUrl
- * The url to load.
- * @param aEvent
- * The load event type to wait for. Defaults to "load".
- * @return {Promise} resolved when the event is handled.
- */
-function promiseTabLoadEvent(aTab, aURL, aEventType="load")
-{
- return new Promise(resolve => {
- info("Wait tab event: " + aEventType);
- aTab.linkedBrowser.addEventListener(aEventType, function load(event) {
- if (event.originalTarget != aTab.linkedBrowser.contentDocument ||
- event.target.location.href == "about:blank") {
- info("skipping spurious load event");
- return;
- }
- aTab.linkedBrowser.removeEventListener(aEventType, load, true);
- info("Tab event received: " + aEventType);
- resolve();
- }, true, true);
- aTab.linkedBrowser.loadURI(aURL);
- });
-}
-
-/**
- * Cleans up snippets and ensures that by default we don't try to check for
- * remote snippets since that may cause network bustage or slowness.
- *
- * @param aTab
- * The tab containing about:home.
- * @param aSetupFn
- * The setup function to be run.
- * @return {Promise} resolved when the snippets are ready. Gets the snippets map.
- */
-function promiseSetupSnippetsMap(aTab, aSnippet)
-{
- info("Waiting for snippets map");
-
- return ContentTask.spawn(aTab.linkedBrowser,
- {snippetsVersion: AboutHomeUtils.snippetsVersion,
- snippet: aSnippet},
- function*(arg) {
- return new Promise(resolve => {
- 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);
- resolve();
- });
- }, true, true);
- });
- });
-}
-
-
-function sendActivationEvent(tab) {
- // hack Social.lastEventReceived so we don't hit the "too many events" check.
- Social.lastEventReceived = 0;
- let doc = tab.linkedBrowser.contentDocument;
- // if our test has a frame, use it
- if (doc.defaultView.frames[0])
- doc = doc.defaultView.frames[0].document;
- let button = doc.getElementById("activationSnippet");
- BrowserTestUtils.synthesizeMouseAtCenter(button, {}, tab.linkedBrowser);
-}
-
-function activateProvider(tab, expectPanel, aCallback) {
- return new Promise(resolve => {
- if (expectPanel) {
- BrowserTestUtils.waitForEvent(PopupNotifications.panel, "popupshown").then(() => {
- let panel = document.getElementById("servicesInstall-notification");
- panel.button.click();
- });
- }
- waitForProviderLoad().then(() => {
- checkSocialUI();
- resolve();
- });
- sendActivationEvent(tab);
- });
-}
-
-function waitForProviderLoad(cb) {
- return Promise.all([
- promiseObserverNotified("social:provider-enabled"),
- ensureFrameLoaded(gBrowser, "https://example.com/browser/browser/base/content/test/social/social_postActivation.html"),
- ]);
-}