summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/webextensions/test/browser/browser_gmpProvider.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/mozapps/webextensions/test/browser/browser_gmpProvider.js')
-rw-r--r--toolkit/mozapps/webextensions/test/browser/browser_gmpProvider.js418
1 files changed, 0 insertions, 418 deletions
diff --git a/toolkit/mozapps/webextensions/test/browser/browser_gmpProvider.js b/toolkit/mozapps/webextensions/test/browser/browser_gmpProvider.js
deleted file mode 100644
index 52079a263..000000000
--- a/toolkit/mozapps/webextensions/test/browser/browser_gmpProvider.js
+++ /dev/null
@@ -1,418 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-"use strict";
-
-Cu.import("resource://gre/modules/Promise.jsm");
-Cu.import("resource://gre/modules/AppConstants.jsm");
-var {AddonTestUtils} = Cu.import("resource://testing-common/AddonManagerTesting.jsm", {});
-var GMPScope = Cu.import("resource://gre/modules/addons/GMPProvider.jsm");
-
-const TEST_DATE = new Date(2013, 0, 1, 12);
-
-var gManagerWindow;
-var gCategoryUtilities;
-var gIsEnUsLocale;
-
-var gMockAddons = [];
-
-for (let plugin of GMPScope.GMP_PLUGINS) {
- let mockAddon = Object.freeze({
- id: plugin.id,
- isValid: true,
- isInstalled: false,
- isEME: (plugin.id == "gmp-widevinecdm" ||
- plugin.id.indexOf("gmp-eme-") == 0) ? true : false,
- });
- gMockAddons.push(mockAddon);
-}
-
-var gInstalledAddonId = "";
-var gInstallDeferred = null;
-var gPrefs = Services.prefs;
-var getKey = GMPScope.GMPPrefs.getPrefKey;
-
-function MockGMPInstallManager() {
-}
-
-MockGMPInstallManager.prototype = {
- checkForAddons: () => Promise.resolve({
- usedFallback: true,
- gmpAddons: gMockAddons
- }),
-
- installAddon: addon => {
- gInstalledAddonId = addon.id;
- gInstallDeferred.resolve();
- return Promise.resolve();
- },
-};
-
-var gOptionsObserver = {
- lastDisplayed: null,
- observe: function(aSubject, aTopic, aData) {
- if (aTopic == AddonManager.OPTIONS_NOTIFICATION_DISPLAYED) {
- this.lastDisplayed = aData;
- }
- }
-};
-
-function getInstallItem() {
- let doc = gManagerWindow.document;
- let list = doc.getElementById("addon-list");
-
- let node = list.firstChild;
- while (node) {
- if (node.getAttribute("status") == "installing") {
- return node;
- }
- node = node.nextSibling;
- }
-
- return null;
-}
-
-function openDetailsView(aId) {
- let view = get_current_view(gManagerWindow);
- Assert.equal(view.id, "list-view", "Should be in the list view to use this function");
-
- let item = get_addon_element(gManagerWindow, aId);
- Assert.ok(item, "Should have got add-on element.");
- is_element_visible(item, "Add-on element should be visible.");
-
- item.scrollIntoView();
- EventUtils.synthesizeMouseAtCenter(item, { clickCount: 1 }, gManagerWindow);
- EventUtils.synthesizeMouseAtCenter(item, { clickCount: 2 }, gManagerWindow);
-
- let deferred = Promise.defer();
- wait_for_view_load(gManagerWindow, deferred.resolve);
- return deferred.promise;
-}
-
-add_task(function* initializeState() {
- gPrefs.setBoolPref(GMPScope.GMPPrefs.KEY_LOGGING_DUMP, true);
- gPrefs.setIntPref(GMPScope.GMPPrefs.KEY_LOGGING_LEVEL, 0);
-
- gManagerWindow = yield open_manager();
- gCategoryUtilities = new CategoryUtilities(gManagerWindow);
-
- registerCleanupFunction(Task.async(function*() {
- Services.obs.removeObserver(gOptionsObserver, AddonManager.OPTIONS_NOTIFICATION_DISPLAYED);
-
- for (let addon of gMockAddons) {
- gPrefs.clearUserPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_ENABLED, addon.id));
- gPrefs.clearUserPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_LAST_UPDATE, addon.id));
- gPrefs.clearUserPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_AUTOUPDATE, addon.id));
- gPrefs.clearUserPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id));
- gPrefs.clearUserPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_VISIBLE, addon.id));
- gPrefs.clearUserPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_FORCE_SUPPORTED, addon.id));
- }
- gPrefs.clearUserPref(GMPScope.GMPPrefs.KEY_LOGGING_DUMP);
- gPrefs.clearUserPref(GMPScope.GMPPrefs.KEY_LOGGING_LEVEL);
- gPrefs.clearUserPref(GMPScope.GMPPrefs.KEY_UPDATE_LAST_CHECK);
- gPrefs.clearUserPref(GMPScope.GMPPrefs.KEY_EME_ENABLED);
- yield GMPScope.GMPProvider.shutdown();
- GMPScope.GMPProvider.startup();
- }));
-
- let chrome = Cc["@mozilla.org/chrome/chrome-registry;1"].getService(Ci.nsIXULChromeRegistry);
- gIsEnUsLocale = chrome.getSelectedLocale("global") == "en-US";
-
- Services.obs.addObserver(gOptionsObserver, AddonManager.OPTIONS_NOTIFICATION_DISPLAYED, false);
-
- // Start out with plugins not being installed, disabled and automatic updates
- // disabled.
- gPrefs.setBoolPref(GMPScope.GMPPrefs.KEY_EME_ENABLED, true);
- for (let addon of gMockAddons) {
- gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_ENABLED, addon.id), false);
- gPrefs.setIntPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_LAST_UPDATE, addon.id), 0);
- gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_AUTOUPDATE, addon.id), false);
- gPrefs.setCharPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id), "");
- gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_VISIBLE, addon.id), true);
- gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_FORCE_SUPPORTED, addon.id), true);
- }
- yield GMPScope.GMPProvider.shutdown();
- GMPScope.GMPProvider.startup();
-});
-
-add_task(function* testNotInstalledDisabled() {
- Assert.ok(gCategoryUtilities.isTypeVisible("plugin"), "Plugin tab visible.");
- yield gCategoryUtilities.openType("plugin");
-
- for (let addon of gMockAddons) {
- let item = get_addon_element(gManagerWindow, addon.id);
- Assert.ok(item, "Got add-on element:" + addon.id);
- item.parentNode.ensureElementIsVisible(item);
- is(item.getAttribute("active"), "false");
-
- let el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "warning");
- is_element_hidden(el, "Warning notification is hidden.");
- el = item.ownerDocument.getAnonymousElementByAttribute(item, "class", "disabled-postfix");
- is_element_visible(el, "disabled-postfix is visible.");
- el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "disable-btn");
- is_element_hidden(el, "Disable button not visible.");
- el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "enable-btn");
- is_element_hidden(el, "Enable button not visible.");
-
- let menu = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "state-menulist");
- is_element_visible(menu, "State menu should be visible.");
-
- let neverActivate = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "never-activate-menuitem");
- is(menu.selectedItem, neverActivate, "Plugin state should be never-activate.");
- }
-});
-
-add_task(function* testNotInstalledDisabledDetails() {
- for (let addon of gMockAddons) {
- yield openDetailsView(addon.id);
- let doc = gManagerWindow.document;
-
- let el = doc.getElementsByClassName("disabled-postfix")[0];
- is_element_visible(el, "disabled-postfix is visible.");
- el = doc.getElementById("detail-findUpdates-btn");
- is_element_visible(el, "Find updates link is visible.");
- el = doc.getElementById("detail-warning");
- is_element_hidden(el, "Warning notification is hidden.");
- el = doc.getElementsByTagName("setting")[0];
-
- yield gCategoryUtilities.openType("plugin");
- }
-});
-
-add_task(function* testNotInstalled() {
- for (let addon of gMockAddons) {
- gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_ENABLED, addon.id), true);
- let item = get_addon_element(gManagerWindow, addon.id);
- Assert.ok(item, "Got add-on element:" + addon.id);
- item.parentNode.ensureElementIsVisible(item);
- is(item.getAttribute("active"), "true");
-
- let el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "warning");
- is_element_visible(el, "Warning notification is visible.");
- el = item.ownerDocument.getAnonymousElementByAttribute(item, "class", "disabled-postfix");
- is_element_hidden(el, "disabled-postfix is hidden.");
- el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "disable-btn");
- is_element_hidden(el, "Disable button not visible.");
- el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "enable-btn");
- is_element_hidden(el, "Enable button not visible.");
-
- let menu = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "state-menulist");
- is_element_visible(menu, "State menu should be visible.");
-
- let alwaysActivate = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "always-activate-menuitem");
- is(menu.selectedItem, alwaysActivate, "Plugin state should be always-activate.");
- }
-});
-
-add_task(function* testNotInstalledDetails() {
- for (let addon of gMockAddons) {
- yield openDetailsView(addon.id);
- let doc = gManagerWindow.document;
-
- let el = doc.getElementsByClassName("disabled-postfix")[0];
- is_element_hidden(el, "disabled-postfix is hidden.");
- el = doc.getElementById("detail-findUpdates-btn");
- is_element_visible(el, "Find updates link is visible.");
- el = doc.getElementById("detail-warning");
- is_element_visible(el, "Warning notification is visible.");
- el = doc.getElementsByTagName("setting")[0];
-
- yield gCategoryUtilities.openType("plugin");
- }
-});
-
-add_task(function* testInstalled() {
- for (let addon of gMockAddons) {
- gPrefs.setIntPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_LAST_UPDATE, addon.id),
- TEST_DATE.getTime());
- gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_AUTOUPDATE, addon.id), false);
- gPrefs.setCharPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id), "1.2.3.4");
-
- let item = get_addon_element(gManagerWindow, addon.id);
- Assert.ok(item, "Got add-on element.");
- item.parentNode.ensureElementIsVisible(item);
- is(item.getAttribute("active"), "true");
-
- let el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "warning");
- is_element_hidden(el, "Warning notification is hidden.");
- el = item.ownerDocument.getAnonymousElementByAttribute(item, "class", "disabled-postfix");
- is_element_hidden(el, "disabled-postfix is hidden.");
- el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "disable-btn");
- is_element_hidden(el, "Disable button not visible.");
- el = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "enable-btn");
- is_element_hidden(el, "Enable button not visible.");
-
- let menu = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "state-menulist");
- is_element_visible(menu, "State menu should be visible.");
-
- let alwaysActivate = item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "always-activate-menuitem");
- is(menu.selectedItem, alwaysActivate, "Plugin state should be always-activate.");
- }
-});
-
-add_task(function* testInstalledDetails() {
- for (let addon of gMockAddons) {
- yield openDetailsView(addon.id);
- let doc = gManagerWindow.document;
-
- let el = doc.getElementsByClassName("disabled-postfix")[0];
- is_element_hidden(el, "disabled-postfix is hidden.");
- el = doc.getElementById("detail-findUpdates-btn");
- is_element_visible(el, "Find updates link is visible.");
- el = doc.getElementById("detail-warning");
- is_element_hidden(el, "Warning notification is hidden.");
- el = doc.getElementsByTagName("setting")[0];
-
- let contextMenu = doc.getElementById("addonitem-popup");
- let deferred = Promise.defer();
- let listener = () => {
- contextMenu.removeEventListener("popupshown", listener, false);
- deferred.resolve();
- };
- contextMenu.addEventListener("popupshown", listener, false);
- el = doc.getElementsByClassName("detail-view-container")[0];
- EventUtils.synthesizeMouse(el, 4, 4, { }, gManagerWindow);
- EventUtils.synthesizeMouse(el, 4, 4, { type: "contextmenu", button: 2 }, gManagerWindow);
- yield deferred.promise;
- let menuSep = doc.getElementById("addonitem-menuseparator");
- is_element_hidden(menuSep, "Menu separator is hidden.");
- contextMenu.hidePopup();
-
- yield gCategoryUtilities.openType("plugin");
- }
-});
-
-add_task(function* testInstalledGlobalEmeDisabled() {
- gPrefs.setBoolPref(GMPScope.GMPPrefs.KEY_EME_ENABLED, false);
- for (let addon of gMockAddons) {
- let item = get_addon_element(gManagerWindow, addon.id);
- if (addon.isEME) {
- Assert.ok(!item, "Couldn't get add-on element.");
- } else {
- Assert.ok(item, "Got add-on element.");
- }
- }
- gPrefs.setBoolPref(GMPScope.GMPPrefs.KEY_EME_ENABLED, true);
-});
-
-add_task(function* testPreferencesButton() {
-
- let prefValues = [
- { enabled: false, version: "" },
- { enabled: false, version: "1.2.3.4" },
- { enabled: true, version: "" },
- { enabled: true, version: "1.2.3.4" },
- ];
-
- for (let preferences of prefValues) {
- dump("Testing preferences button with pref settings: " +
- JSON.stringify(preferences) + "\n");
- for (let addon of gMockAddons) {
- yield close_manager(gManagerWindow);
- gManagerWindow = yield open_manager();
- gCategoryUtilities = new CategoryUtilities(gManagerWindow);
- gPrefs.setCharPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_VERSION, addon.id),
- preferences.version);
- gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_ENABLED, addon.id),
- preferences.enabled);
-
- yield gCategoryUtilities.openType("plugin");
- let doc = gManagerWindow.document;
- let item = get_addon_element(gManagerWindow, addon.id);
-
- let button = doc.getAnonymousElementByAttribute(item, "anonid", "preferences-btn");
- EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow);
- let deferred = Promise.defer();
- wait_for_view_load(gManagerWindow, deferred.resolve);
- yield deferred.promise;
-
- is(gOptionsObserver.lastDisplayed, addon.id);
- }
- }
-});
-
-add_task(function* testUpdateButton() {
- gPrefs.clearUserPref(GMPScope.GMPPrefs.KEY_UPDATE_LAST_CHECK);
-
- let originalInstallManager = GMPScope.GMPInstallManager;
- Object.defineProperty(GMPScope, "GMPInstallManager", {
- value: MockGMPInstallManager,
- writable: true,
- enumerable: true,
- configurable: true
- });
-
- for (let addon of gMockAddons) {
- yield gCategoryUtilities.openType("plugin");
- let doc = gManagerWindow.document;
- let item = get_addon_element(gManagerWindow, addon.id);
-
- gInstalledAddonId = "";
- gInstallDeferred = Promise.defer();
-
- let button = doc.getAnonymousElementByAttribute(item, "anonid", "preferences-btn");
- EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow);
- let deferred = Promise.defer();
- wait_for_view_load(gManagerWindow, deferred.resolve);
- yield deferred.promise;
-
- button = doc.getElementById("detail-findUpdates-btn");
- Assert.ok(button != null, "Got detail-findUpdates-btn");
- EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow);
- yield gInstallDeferred.promise;
-
- Assert.equal(gInstalledAddonId, addon.id);
- }
- Object.defineProperty(GMPScope, "GMPInstallManager", {
- value: originalInstallManager,
- writable: true,
- enumerable: true,
- configurable: true
- });
-});
-
-add_task(function* testEmeSupport() {
- for (let addon of gMockAddons) {
- gPrefs.clearUserPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_FORCE_SUPPORTED, addon.id));
- }
- yield GMPScope.GMPProvider.shutdown();
- GMPScope.GMPProvider.startup();
-
- for (let addon of gMockAddons) {
- yield gCategoryUtilities.openType("plugin");
- let doc = gManagerWindow.document;
- let item = get_addon_element(gManagerWindow, addon.id);
- if (addon.id == GMPScope.EME_ADOBE_ID) {
- if (AppConstants.isPlatformAndVersionAtLeast("win", "6")) {
- Assert.ok(item, "Adobe EME supported, found add-on element.");
- } else {
- Assert.ok(!item,
- "Adobe EME not supported, couldn't find add-on element.");
- }
- } else if (addon.id == GMPScope.WIDEVINE_ID) {
- if (AppConstants.isPlatformAndVersionAtLeast("win", "6") ||
- AppConstants.platform == "macosx" ||
- AppConstants.platform == "linux") {
- Assert.ok(item, "Widevine supported, found add-on element.");
- } else {
- Assert.ok(!item,
- "Widevine not supported, couldn't find add-on element.");
- }
- } else {
- Assert.ok(item, "Found add-on element.");
- }
- }
-
- for (let addon of gMockAddons) {
- gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_VISIBLE, addon.id), true);
- gPrefs.setBoolPref(getKey(GMPScope.GMPPrefs.KEY_PLUGIN_FORCE_SUPPORTED, addon.id), true);
- }
- yield GMPScope.GMPProvider.shutdown();
- GMPScope.GMPProvider.startup();
-
-});
-
-add_task(function* test_cleanup() {
- yield close_manager(gManagerWindow);
-});