diff options
Diffstat (limited to 'toolkit/components/webextensions/test/mochitest/test_ext_all_apis.js')
-rw-r--r-- | toolkit/components/webextensions/test/mochitest/test_ext_all_apis.js | 160 |
1 files changed, 0 insertions, 160 deletions
diff --git a/toolkit/components/webextensions/test/mochitest/test_ext_all_apis.js b/toolkit/components/webextensions/test/mochitest/test_ext_all_apis.js deleted file mode 100644 index 25d04b36b..000000000 --- a/toolkit/components/webextensions/test/mochitest/test_ext_all_apis.js +++ /dev/null @@ -1,160 +0,0 @@ -/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ -/* vim: set sts=2 sw=2 et tw=80: */ -"use strict"; - -// Tests whether not too many APIs are visible by default. -// This file is used by test_ext_all_apis.html in browser/ and mobile/android/, -// which may modify the following variables to add or remove expected APIs. -/* globals expectedContentApisTargetSpecific */ -/* globals expectedBackgroundApisTargetSpecific */ - -// Generates a list of expectations. -function generateExpectations(list) { - return list.reduce((allApis, path) => { - return allApis.concat(`browser.${path}`, `chrome.${path}`); - }, []).sort(); -} - -let expectedCommonApis = [ - "extension.getURL", - "extension.inIncognitoContext", - "extension.lastError", - "i18n.detectLanguage", - "i18n.getAcceptLanguages", - "i18n.getMessage", - "i18n.getUILanguage", - "runtime.OnInstalledReason", - "runtime.OnRestartRequiredReason", - "runtime.PlatformArch", - "runtime.PlatformOs", - "runtime.RequestUpdateCheckStatus", - "runtime.getManifest", - "runtime.connect", - "runtime.getURL", - "runtime.id", - "runtime.lastError", - "runtime.onConnect", - "runtime.onMessage", - "runtime.sendMessage", - // If you want to add a new powerful test API, please see bug 1287233. - "test.assertEq", - "test.assertFalse", - "test.assertRejects", - "test.assertThrows", - "test.assertTrue", - "test.fail", - "test.log", - "test.notifyFail", - "test.notifyPass", - "test.onMessage", - "test.sendMessage", - "test.succeed", -]; - -let expectedContentApis = [ - ...expectedCommonApis, - ...expectedContentApisTargetSpecific, -]; - -let expectedBackgroundApis = [ - ...expectedCommonApis, - ...expectedBackgroundApisTargetSpecific, - "extension.ViewType", - "extension.getBackgroundPage", - "extension.getViews", - "extension.isAllowedFileSchemeAccess", - "extension.isAllowedIncognitoAccess", - // Note: extensionTypes is not visible in Chrome. - "extensionTypes.ImageFormat", - "extensionTypes.RunAt", - "management.ExtensionDisabledReason", - "management.ExtensionInstallType", - "management.ExtensionType", - "management.getSelf", - "management.uninstallSelf", - "runtime.getBackgroundPage", - "runtime.getBrowserInfo", - "runtime.getPlatformInfo", - "runtime.onConnectExternal", - "runtime.onInstalled", - "runtime.onMessageExternal", - "runtime.onStartup", - "runtime.onUpdateAvailable", - "runtime.openOptionsPage", - "runtime.reload", - "runtime.setUninstallURL", -]; - -function sendAllApis() { - function isEvent(key, val) { - if (!/^on[A-Z]/.test(key)) { - return false; - } - let eventKeys = []; - for (let prop in val) { - eventKeys.push(prop); - } - eventKeys = eventKeys.sort().join(); - return eventKeys === "addListener,hasListener,removeListener"; - } - function mayRecurse(key, val) { - if (Object.keys(val).filter(k => !/^[A-Z\-0-9_]+$/.test(k)).length === 0) { - // Don't recurse on constants and empty objects. - return false; - } - return !isEvent(key, val); - } - - let results = []; - function diveDeeper(path, obj) { - for (let key in obj) { - let val = obj[key]; - if (typeof val == "object" && val !== null && mayRecurse(key, val)) { - diveDeeper(`${path}.${key}`, val); - } else if (val !== undefined) { - results.push(`${path}.${key}`); - } - } - } - diveDeeper("browser", browser); - diveDeeper("chrome", chrome); - browser.test.sendMessage("allApis", results.sort()); -} - -add_task(function* test_enumerate_content_script_apis() { - let extensionData = { - manifest: { - content_scripts: [{ - matches: ["http://mochi.test/*/file_sample.html"], - js: ["contentscript.js"], - run_at: "document_start", - }], - }, - files: { - "contentscript.js": sendAllApis, - }, - }; - let extension = ExtensionTestUtils.loadExtension(extensionData); - yield extension.startup(); - - let win = window.open("file_sample.html"); - let actualApis = yield extension.awaitMessage("allApis"); - win.close(); - let expectedApis = generateExpectations(expectedContentApis); - isDeeply(actualApis, expectedApis, "content script APIs"); - - yield extension.unload(); -}); - -add_task(function* test_enumerate_background_script_apis() { - let extensionData = { - background: sendAllApis, - }; - let extension = ExtensionTestUtils.loadExtension(extensionData); - yield extension.startup(); - let actualApis = yield extension.awaitMessage("allApis"); - let expectedApis = generateExpectations(expectedBackgroundApis); - isDeeply(actualApis, expectedApis, "background script APIs"); - - yield extension.unload(); -}); |