summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/social/browser_share.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/social/browser_share.js')
-rw-r--r--browser/base/content/test/social/browser_share.js396
1 files changed, 0 insertions, 396 deletions
diff --git a/browser/base/content/test/social/browser_share.js b/browser/base/content/test/social/browser_share.js
deleted file mode 100644
index 19dca519b..000000000
--- a/browser/base/content/test/social/browser_share.js
+++ /dev/null
@@ -1,396 +0,0 @@
-
-var SocialService = Cu.import("resource:///modules/SocialService.jsm", {}).SocialService;
-
-var baseURL = "https://example.com/browser/browser/base/content/test/social/";
-
-var manifest = { // normal provider
- name: "provider 1",
- origin: "https://example.com",
- iconURL: "https://example.com/browser/browser/base/content/test/general/moz.png",
- shareURL: "https://example.com/browser/browser/base/content/test/social/share.html"
-};
-var activationPage = "https://example.com/browser/browser/base/content/test/social/share_activate.html";
-
-function sendActivationEvent(subframe) {
- // hack Social.lastEventReceived so we don't hit the "too many events" check.
- Social.lastEventReceived = 0;
- let doc = subframe.contentDocument;
- // if our test has a frame, use it
- let button = doc.getElementById("activation");
- ok(!!button, "got the activation button");
- EventUtils.synthesizeMouseAtCenter(button, {}, doc.defaultView);
-}
-
-function test() {
- waitForExplicitFinish();
- Services.prefs.setCharPref("social.shareDirectory", activationPage);
-
- let frameScript = "data:,(" + function frame_script() {
- addEventListener("OpenGraphData", function (aEvent) {
- sendAsyncMessage("sharedata", aEvent.detail);
- }, true, true);
- /* bug 1042991, ensure history is available by calling history.back on close */
- addMessageListener("closeself", function(e) {
- content.history.back();
- content.close();
- }, true);
- /* if text is entered into field, onbeforeunload will cause a modal dialog
- unless dialogs have been disabled for the iframe. */
- content.onbeforeunload = function(e) {
- return 'FAIL.';
- };
- }.toString() + ")();";
- let mm = getGroupMessageManager("social");
- mm.loadFrameScript(frameScript, true);
-
- // Animation on the panel can cause intermittent failures such as bug 1115131.
- SocialShare.panel.setAttribute("animate", "false");
- registerCleanupFunction(function () {
- SocialShare.panel.removeAttribute("animate");
- mm.removeDelayedFrameScript(frameScript);
- Services.prefs.clearUserPref("social.directories");
- Services.prefs.clearUserPref("social.shareDirectory");
- Services.prefs.clearUserPref("social.share.activationPanelEnabled");
- });
- runSocialTests(tests, undefined, function(next) {
- let shareButton = SocialShare.shareButton;
- if (shareButton) {
- CustomizableUI.removeWidgetFromArea("social-share-button", CustomizableUI.AREA_NAVBAR)
- shareButton.remove();
- }
- next();
- });
-}
-
-var corpus = [
- {
- url: baseURL+"opengraph/opengraph.html",
- options: {
- // og:title
- title: ">This is my title<",
- // og:description
- description: "A test corpus file for open graph tags we care about",
- // medium: this.getPageMedium(),
- // source: this.getSourceURL(),
- // og:url
- url: "https://www.mozilla.org/",
- // shortUrl: this.getShortURL(),
- // og:image
- previews:["https://www.mozilla.org/favicon.png"],
- // og:site_name
- siteName: ">My simple test page<"
- }
- },
- {
- // tests that og:url doesn't override the page url if it is bad
- url: baseURL+"opengraph/og_invalid_url.html",
- options: {
- description: "A test corpus file for open graph tags passing a bad url",
- url: baseURL+"opengraph/og_invalid_url.html",
- previews: [],
- siteName: "Evil chrome delivering website"
- }
- },
- {
- url: baseURL+"opengraph/shorturl_link.html",
- options: {
- previews: ["http://example.com/1234/56789.jpg"],
- url: "http://www.example.com/photos/56789/",
- shortUrl: "http://imshort/p/abcde"
- }
- },
- {
- url: baseURL+"opengraph/shorturl_linkrel.html",
- options: {
- previews: ["http://example.com/1234/56789.jpg"],
- url: "http://www.example.com/photos/56789/",
- shortUrl: "http://imshort/p/abcde"
- }
- },
- {
- url: baseURL+"opengraph/shortlink_linkrel.html",
- options: {
- previews: ["http://example.com/1234/56789.jpg"],
- url: "http://www.example.com/photos/56789/",
- shortUrl: "http://imshort/p/abcde"
- }
- }
-];
-
-function hasoptions(testOptions, options) {
- for (let option in testOptions) {
- let data = testOptions[option];
- info("data: "+JSON.stringify(data));
- let message_data = options[option];
- info("message_data: "+JSON.stringify(message_data));
- if (Array.isArray(data)) {
- // the message may have more array elements than we are testing for, this
- // is ok since some of those are hard to test. So we just test that
- // anything in our test data IS in the message.
- ok(Array.every(data, function(item) { return message_data.indexOf(item) >= 0 }), "option "+option);
- } else {
- is(message_data, data, "option "+option);
- }
- }
-}
-
-var tests = {
- testShareDisabledOnActivation: function(next) {
- // starting on about:blank page, share should be visible but disabled when
- // adding provider
- is(gBrowser.currentURI.spec, "about:blank");
-
- // initialize the button into the navbar
- CustomizableUI.addWidgetToArea("social-share-button", CustomizableUI.AREA_NAVBAR);
- // ensure correct state
- SocialUI.onCustomizeEnd(window);
-
- SocialService.addProvider(manifest, function(provider) {
- is(SocialUI.enabled, true, "SocialUI is enabled");
- checkSocialUI();
- // share should not be enabled since we only have about:blank page
- let shareButton = SocialShare.shareButton;
- // verify the attribute for proper css
- is(shareButton.getAttribute("disabled"), "true", "share button attribute is disabled");
- // button should be visible
- is(shareButton.hidden, false, "share button is visible");
- SocialService.disableProvider(manifest.origin, next);
- });
- },
- testShareEnabledOnActivation: function(next) {
- // starting from *some* page, share should be visible and enabled when
- // activating provider
- // initialize the button into the navbar
- CustomizableUI.addWidgetToArea("social-share-button", CustomizableUI.AREA_NAVBAR);
- // ensure correct state
- SocialUI.onCustomizeEnd(window);
-
- let testData = corpus[0];
- BrowserTestUtils.openNewForegroundTab(gBrowser, testData.url).then(tab => {
- SocialService.addProvider(manifest, function(provider) {
- is(SocialUI.enabled, true, "SocialUI is enabled");
- checkSocialUI();
- // share should not be enabled since we only have about:blank page
- let shareButton = SocialShare.shareButton;
- // verify the attribute for proper css
- ok(!shareButton.hasAttribute("disabled"), "share button is enabled");
- // button should be visible
- is(shareButton.hidden, false, "share button is visible");
- BrowserTestUtils.removeTab(tab).then(next);
- });
- });
- },
- testSharePage: function(next) {
- let testTab;
- let testIndex = 0;
- let testData = corpus[testIndex++];
-
- // initialize the button into the navbar
- CustomizableUI.addWidgetToArea("social-share-button", CustomizableUI.AREA_NAVBAR);
- // ensure correct state
- SocialUI.onCustomizeEnd(window);
-
- let mm = getGroupMessageManager("social");
- mm.addMessageListener("sharedata", function handler(msg) {
- BrowserTestUtils.removeTab(testTab).then(() => {
- hasoptions(testData.options, JSON.parse(msg.data));
- testData = corpus[testIndex++];
- BrowserTestUtils.waitForCondition(() => { return SocialShare.currentShare == null; }, "share panel closed").then(() => {
- if (testData) {
- runOneTest();
- } else {
- mm.removeMessageListener("sharedata", handler);
- SocialService.disableProvider(manifest.origin, next);
- }
- });
- SocialShare.iframe.messageManager.sendAsyncMessage("closeself", {});
- });
- });
-
- function runOneTest() {
- BrowserTestUtils.openNewForegroundTab(gBrowser, testData.url).then(tab => {
- testTab = tab;
-
- let shareButton = SocialShare.shareButton;
- // verify the attribute for proper css
- ok(!shareButton.hasAttribute("disabled"), "share button is enabled");
- // button should be visible
- is(shareButton.hidden, false, "share button is visible");
-
- SocialShare.sharePage(manifest.origin);
- });
- }
- executeSoon(runOneTest);
- },
- testShareMicroformats: function(next) {
- // initialize the button into the navbar
- CustomizableUI.addWidgetToArea("social-share-button", CustomizableUI.AREA_NAVBAR);
- // ensure correct state
- SocialUI.onCustomizeEnd(window);
-
- SocialService.addProvider(manifest, function(provider) {
- let target, testTab;
-
- let expecting = JSON.stringify({
- "url": "https://example.com/browser/browser/base/content/test/social/microformats.html",
- "title": "Raspberry Pi Page",
- "previews": ["https://example.com/someimage.jpg"],
- "microformats": {
- "items": [{
- "type": ["h-product"],
- "properties": {
- "name": ["Raspberry Pi"],
- "photo": ["https://example.com/someimage.jpg"],
- "description": [{
- "value": "The Raspberry Pi is a credit-card sized computer that plugs into your TV and a keyboard. It's a capable little PC which can be used for many of the things that your desktop PC does, like spreadsheets, word-processing and games. It also plays high-definition video. We want to see it being used by kids all over the world to learn programming.",
- "html": "The Raspberry Pi is a credit-card sized computer that plugs into your TV and a keyboard. It's a capable little PC which can be used for many of the things that your desktop PC does, like spreadsheets, word-processing and games. It also plays high-definition video. We want to see it being used by kids all over the world to learn programming."
- }
- ],
- "url": ["https://example.com/"],
- "price": ["29.95"],
- "review": [{
- "value": "4.5 out of 5",
- "type": ["h-review"],
- "properties": {
- "rating": ["4.5"]
- }
- }
- ],
- "category": ["Computer", "Education"]
- }
- }
- ],
- "rels": {
- "tag": ["https://example.com/wiki/computer", "https://example.com/wiki/education"]
- },
- "rel-urls": {
- "https://example.com/wiki/computer": {
- "text": "Computer",
- "rels": ["tag"]
- },
- "https://example.com/wiki/education": {
- "text": "Education",
- "rels": ["tag"]
- }
- }
- }
- });
-
- let mm = getGroupMessageManager("social");
- mm.addMessageListener("sharedata", function handler(msg) {
- is(msg.data, expecting, "microformats data ok");
- BrowserTestUtils.waitForCondition(() => { return SocialShare.currentShare == null; },
- "share panel closed").then(() => {
- mm.removeMessageListener("sharedata", handler);
- BrowserTestUtils.removeTab(testTab).then(() => {
- SocialService.disableProvider(manifest.origin, next);
- });
- });
- SocialShare.iframe.messageManager.sendAsyncMessage("closeself", {});
- });
-
- let url = "https://example.com/browser/browser/base/content/test/social/microformats.html"
- BrowserTestUtils.openNewForegroundTab(gBrowser, url).then(tab => {
- testTab = tab;
-
- let shareButton = SocialShare.shareButton;
- // verify the attribute for proper css
- ok(!shareButton.hasAttribute("disabled"), "share button is enabled");
- // button should be visible
- is(shareButton.hidden, false, "share button is visible");
-
- let doc = tab.linkedBrowser.contentDocument;
- target = doc.getElementById("simple-hcard");
- SocialShare.sharePage(manifest.origin, null, target);
- });
- });
- },
- testSharePanelActivation: function(next) {
- let testTab;
- // cleared in the cleanup function
- Services.prefs.setCharPref("social.directories", "https://example.com");
- Services.prefs.setBoolPref("social.share.activationPanelEnabled", true);
- // make the iframe so we can wait on the load
- SocialShare._createFrame();
- let iframe = SocialShare.iframe;
-
- // initialize the button into the navbar
- CustomizableUI.addWidgetToArea("social-share-button", CustomizableUI.AREA_NAVBAR);
- // ensure correct state
- SocialUI.onCustomizeEnd(window);
-
- ensureFrameLoaded(iframe).then(() => {
- let subframe = iframe.contentDocument.getElementById("activation-frame");
- ensureFrameLoaded(subframe, activationPage).then(() => {
- is(subframe.contentDocument.location.href, activationPage, "activation page loaded");
- promiseObserverNotified("social:provider-enabled").then(() => {
- let mm = getGroupMessageManager("social");
- mm.addMessageListener("sharedata", function handler(msg) {
- ok(true, "share completed");
-
- BrowserTestUtils.waitForCondition(() => { return SocialShare.currentShare == null; },
- "share panel closed").then(() => {
- BrowserTestUtils.removeTab(testTab).then(() => {
- mm.removeMessageListener("sharedata", handler);
- SocialService.uninstallProvider(manifest.origin, next);
- });
- });
- SocialShare.iframe.messageManager.sendAsyncMessage("closeself", {});
- });
- });
- sendActivationEvent(subframe);
- });
- });
- BrowserTestUtils.openNewForegroundTab(gBrowser, activationPage).then(tab => {
- let shareButton = SocialShare.shareButton;
- // verify the attribute for proper css
- ok(!shareButton.hasAttribute("disabled"), "share button is enabled");
- // button should be visible
- is(shareButton.hidden, false, "share button is visible");
-
- testTab = tab;
- SocialShare.sharePage();
- });
- },
- testSharePanelDialog: function(next) {
- let testTab;
- // initialize the button into the navbar
- CustomizableUI.addWidgetToArea("social-share-button", CustomizableUI.AREA_NAVBAR);
- // ensure correct state
- SocialUI.onCustomizeEnd(window);
- SocialShare._createFrame();
-
- SocialService.addProvider(manifest, () => {
- BrowserTestUtils.openNewForegroundTab(gBrowser, activationPage).then(tab => {
- ensureFrameLoaded(SocialShare.iframe).then(() => {
- // send keys to the input field. An unexpected failure will happen
- // if the onbeforeunload handler is fired.
- EventUtils.sendKey("f");
- EventUtils.sendKey("a");
- EventUtils.sendKey("i");
- EventUtils.sendKey("l");
-
- SocialShare.panel.addEventListener("popuphidden", function hidden(evt) {
- SocialShare.panel.removeEventListener("popuphidden", hidden);
- let topwin = Services.wm.getMostRecentWindow(null);
- is(topwin, window, "no dialog is open");
-
- BrowserTestUtils.removeTab(testTab).then(() => {
- SocialService.disableProvider(manifest.origin, next);
- });
- });
- SocialShare.iframe.messageManager.sendAsyncMessage("closeself", {});
- });
-
- let shareButton = SocialShare.shareButton;
- // verify the attribute for proper css
- ok(!shareButton.hasAttribute("disabled"), "share button is enabled");
- // button should be visible
- is(shareButton.hidden, false, "share button is visible");
-
- testTab = tab;
- SocialShare.sharePage();
- });
- });
- }
-}