diff options
Diffstat (limited to 'toolkit/mozapps/extensions/test/xpcshell/test_plugins.js')
-rw-r--r-- | toolkit/mozapps/extensions/test/xpcshell/test_plugins.js | 210 |
1 files changed, 0 insertions, 210 deletions
diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_plugins.js b/toolkit/mozapps/extensions/test/xpcshell/test_plugins.js deleted file mode 100644 index 5541bc946..000000000 --- a/toolkit/mozapps/extensions/test/xpcshell/test_plugins.js +++ /dev/null @@ -1,210 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -// This verifies that plugins exist and can be enabled and disabled. -var gID = null; - -function setTestPluginState(state) { - let tags = AM_Cc["@mozilla.org/plugin/host;1"].getService(AM_Ci.nsIPluginHost) - .getPluginTags(); - for (let tag of tags) { - if (tag.name == "Test Plug-in") { - tag.enabledState = state; - return; - } - } - throw Error("No plugin tag found for the test plugin"); -} - -function run_test() { - do_test_pending(); - createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); - Services.prefs.setBoolPref("plugins.click_to_play", true); - - setTestPluginState(AM_Ci.nsIPluginTag.STATE_CLICKTOPLAY); - - startupManager(); - AddonManager.addAddonListener(AddonListener); - AddonManager.addInstallListener(InstallListener); - - run_test_1(); -} - -// Finds the test plugin library -function get_test_plugin() { - var pluginEnum = Services.dirsvc.get("APluginsDL", AM_Ci.nsISimpleEnumerator); - while (pluginEnum.hasMoreElements()) { - let dir = pluginEnum.getNext().QueryInterface(AM_Ci.nsILocalFile); - let plugin = dir.clone(); - // OSX plugin - plugin.append("Test.plugin"); - if (plugin.exists()) { - plugin.normalize(); - return plugin; - } - plugin = dir.clone(); - // *nix plugin - plugin.append("libnptest.so"); - if (plugin.exists()) { - plugin.normalize(); - return plugin; - } - // Windows plugin - plugin = dir.clone(); - plugin.append("nptest.dll"); - if (plugin.exists()) { - plugin.normalize(); - return plugin; - } - } - return null; -} - -function getFileSize(aFile) { - if (!aFile.isDirectory()) - return aFile.fileSize; - - let size = 0; - let entries = aFile.directoryEntries.QueryInterface(AM_Ci.nsIDirectoryEnumerator); - let entry; - while (entry = entries.nextFile) - size += getFileSize(entry); - entries.close(); - return size; -} - -function getPluginLastModifiedTime(aPluginFile) { - // On OS X we use the bundle contents last modified time as using - // the package directories modified date may be outdated. - // See bug 313700. - try { - let localFileMac = aPluginFile.QueryInterface(AM_Ci.nsILocalFileMac); - if (localFileMac) { - return localFileMac.bundleContentsLastModifiedTime; - } - } catch (e) { - } - - return aPluginFile.lastModifiedTime; -} - -// Tests that the test plugin exists -function run_test_1() { - var testPlugin = get_test_plugin(); - do_check_neq(testPlugin, null); - - AddonManager.getAddonsByTypes(["plugin"], function(addons) { - do_check_true(addons.length > 0); - - addons.forEach(function(p) { - if (p.name == "Test Plug-in") - gID = p.id; - }); - - do_check_neq(gID, null); - - AddonManager.getAddonByID(gID, function(p) { - do_check_neq(p, null); - do_check_eq(p.name, "Test Plug-in"); - do_check_eq(p.description, - "Plug-in for testing purposes.\u2122 " + - "(\u0939\u093f\u0928\u094d\u0926\u0940 " + - "\u4e2d\u6587 " + - "\u0627\u0644\u0639\u0631\u0628\u064a\u0629)"); - do_check_eq(p.creator, null); - do_check_eq(p.version, "1.0.0.0"); - do_check_eq(p.type, "plugin"); - do_check_eq(p.userDisabled, "askToActivate"); - do_check_false(p.appDisabled); - do_check_true(p.isActive); - do_check_true(p.isCompatible); - do_check_true(p.providesUpdatesSecurely); - do_check_eq(p.blocklistState, 0); - do_check_eq(p.permissions, AddonManager.PERM_CAN_DISABLE | AddonManager.PERM_CAN_ENABLE); - do_check_eq(p.pendingOperations, 0); - do_check_true(p.size > 0); - do_check_eq(p.size, getFileSize(testPlugin)); - do_check_true(p.updateDate > 0); - do_check_true("isCompatibleWith" in p); - do_check_true("findUpdates" in p); - - let lastModifiedTime = getPluginLastModifiedTime(testPlugin); - do_check_eq(p.updateDate.getTime(), lastModifiedTime); - do_check_eq(p.installDate.getTime(), lastModifiedTime); - - run_test_2(p); - }); - }); -} - -// Tests that disabling a plugin works -function run_test_2(p) { - let test = {}; - test[gID] = [ - ["onDisabling", false], - "onDisabled", - ["onPropertyChanged", ["userDisabled"]] - ]; - prepare_test(test); - - p.userDisabled = true; - - ensure_test_completed(); - - do_check_true(p.userDisabled); - do_check_false(p.appDisabled); - do_check_false(p.isActive); - - AddonManager.getAddonByID(gID, function(p) { - do_check_neq(p, null); - do_check_true(p.userDisabled); - do_check_false(p.appDisabled); - do_check_false(p.isActive); - do_check_eq(p.name, "Test Plug-in"); - - run_test_3(p); - }); -} - -// Tests that enabling a plugin works -function run_test_3(p) { - let test = {}; - test[gID] = [ - ["onEnabling", false], - "onEnabled" - ]; - prepare_test(test); - - p.userDisabled = false; - - ensure_test_completed(); - - do_check_false(p.userDisabled); - do_check_false(p.appDisabled); - do_check_true(p.isActive); - - AddonManager.getAddonByID(gID, function(p) { - do_check_neq(p, null); - do_check_false(p.userDisabled); - do_check_false(p.appDisabled); - do_check_true(p.isActive); - do_check_eq(p.name, "Test Plug-in"); - - do_execute_soon(run_test_4); - }); -} - -// Verify that after a restart the test plugin has the same ID -function run_test_4() { - restartManager(); - - AddonManager.getAddonByID(gID, function(p) { - do_check_neq(p, null); - do_check_eq(p.name, "Test Plug-in"); - - Services.prefs.clearUserPref("plugins.click_to_play"); - - do_execute_soon(do_test_finished); - }); -} |