diff options
Diffstat (limited to 'toolkit/mozapps/webextensions/test/browser/browser_gmpProvider.js')
-rw-r--r-- | toolkit/mozapps/webextensions/test/browser/browser_gmpProvider.js | 418 |
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); -}); |