diff options
author | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-26 17:43:28 +0000 |
---|---|---|
committer | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-26 17:43:28 +0000 |
commit | cffd78950f9e8e740085dbec9ecec7472e6eb98d (patch) | |
tree | 33820b7d9817b837cabe852f669f1faaf1bacfa9 /chrome/test/data/extensions | |
parent | 3bb8499b2cd51027ee896ccda306e2c55fc2c5f0 (diff) | |
download | chromium_src-cffd78950f9e8e740085dbec9ecec7472e6eb98d.zip chromium_src-cffd78950f9e8e740085dbec9ecec7472e6eb98d.tar.gz chromium_src-cffd78950f9e8e740085dbec9ecec7472e6eb98d.tar.bz2 |
First cut at experimental API for managing installed/enabled extensions.
The documented methods should all be working, but events are not hooked up yet.
BUG=51178
TEST=none
Review URL: http://codereview.chromium.org/3200012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57544 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test/data/extensions')
14 files changed, 208 insertions, 0 deletions
diff --git a/chrome/test/data/extensions/api_test/management/disabled_app/manifest.json b/chrome/test/data/extensions/api_test/management/disabled_app/manifest.json new file mode 100755 index 0000000..7c239a4 --- /dev/null +++ b/chrome/test/data/extensions/api_test/management/disabled_app/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "disabled_app", + "version": "0.1", + "app": { + "launch": { + "web_url": "http://www.google.com" + } + } +} diff --git a/chrome/test/data/extensions/api_test/management/disabled_extension/manifest.json b/chrome/test/data/extensions/api_test/management/disabled_extension/manifest.json new file mode 100755 index 0000000..6b03341 --- /dev/null +++ b/chrome/test/data/extensions/api_test/management/disabled_extension/manifest.json @@ -0,0 +1,5 @@ +{ + "name": "disabled_extension", + "version": "0.1", + "options_page": "pages/options.html" +} diff --git a/chrome/test/data/extensions/api_test/management/disabled_extension/pages/options.html b/chrome/test/data/extensions/api_test/management/disabled_extension/pages/options.html new file mode 100644 index 0000000..90531a4 --- /dev/null +++ b/chrome/test/data/extensions/api_test/management/disabled_extension/pages/options.html @@ -0,0 +1,2 @@ +<html> +</html> diff --git a/chrome/test/data/extensions/api_test/management/enabled_app/manifest.json b/chrome/test/data/extensions/api_test/management/enabled_app/manifest.json new file mode 100755 index 0000000..976b752 --- /dev/null +++ b/chrome/test/data/extensions/api_test/management/enabled_app/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "enabled_app", + "version": "0.1", + "app": { + "launch": { + "web_url": "http://www.google.com" + } + } +} diff --git a/chrome/test/data/extensions/api_test/management/enabled_extension/icon_128.png b/chrome/test/data/extensions/api_test/management/enabled_extension/icon_128.png Binary files differnew file mode 100644 index 0000000..d774694 --- /dev/null +++ b/chrome/test/data/extensions/api_test/management/enabled_extension/icon_128.png diff --git a/chrome/test/data/extensions/api_test/management/enabled_extension/icon_16.png b/chrome/test/data/extensions/api_test/management/enabled_extension/icon_16.png Binary files differnew file mode 100644 index 0000000..38e6aa3 --- /dev/null +++ b/chrome/test/data/extensions/api_test/management/enabled_extension/icon_16.png diff --git a/chrome/test/data/extensions/api_test/management/enabled_extension/icon_48.png b/chrome/test/data/extensions/api_test/management/enabled_extension/icon_48.png Binary files differnew file mode 100644 index 0000000..7399a1b --- /dev/null +++ b/chrome/test/data/extensions/api_test/management/enabled_extension/icon_48.png diff --git a/chrome/test/data/extensions/api_test/management/enabled_extension/manifest.json b/chrome/test/data/extensions/api_test/management/enabled_extension/manifest.json new file mode 100755 index 0000000..e01fcde --- /dev/null +++ b/chrome/test/data/extensions/api_test/management/enabled_extension/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "enabled_extension", + "version": "0.1", + "icons": { + "128": "icon_128.png", + "48": "icon_48.png", + "16": "icon_16.png" + } +} diff --git a/chrome/test/data/extensions/api_test/management/test/basics.html b/chrome/test/data/extensions/api_test/management/test/basics.html new file mode 100644 index 0000000..6db1039 --- /dev/null +++ b/chrome/test/data/extensions/api_test/management/test/basics.html @@ -0,0 +1,2 @@ +<script src="common.js"></script> +<script src="basics.js"></script> diff --git a/chrome/test/data/extensions/api_test/management/test/basics.js b/chrome/test/data/extensions/api_test/management/test/basics.js new file mode 100644 index 0000000..ea5fc23 --- /dev/null +++ b/chrome/test/data/extensions/api_test/management/test/basics.js @@ -0,0 +1,80 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +function checkIcon(item, size, path) { + var icons = item.icons; + for (var i = 0; i < icons.length; i++) { + var icon = icons[i]; + if (icon.size == size) { + var expected_url = "chrome-extension://" + item.id + "/" + path; + assertEq(expected_url, icon.url); + return; + } + } + fail("didn't find icon of size " + size + " at path " + path); +} + +var tests = [ + function simple() { + chrome.management.getAll(function(items) { + assertNoLastError(); + chrome.test.assertEq(5, items.length); + + checkItem(items, "Extension Management API Test", true, false); + + checkItem(items, "enabled_app", true, true, + {"appLaunchUrl": "http://www.google.com/"}); + checkItem(items, "disabled_app", false, true); + checkItem(items, "enabled_extension", true, false); + checkItem(items, "disabled_extension", false, false, + {"optionsUrl": "chrome-extension://<ID>/pages/options.html"}); + + // Check that we got the icons correctly + var extension = getItemNamed(items, "enabled_extension"); + assertEq(3, extension.icons.length); + checkIcon(extension, 128, "icon_128.png"); + checkIcon(extension, 48, "icon_48.png"); + checkIcon(extension, 16, "icon_16.png"); + + succeed(); + }); + }, + + // Disables an enabled app. + function disable() { + chrome.management.getAll(function(items) { + assertNoLastError(); + checkItem(items, "enabled_app", true, true); + var enabled_app = getItemNamed(items, "enabled_app"); + chrome.management.setEnabled(enabled_app.id, false, function() { + assertNoLastError(); + chrome.management.getAll(function(items2) { + assertNoLastError(); + chrome.test.log("re-checking enabled_app"); + checkItem(items2, "enabled_app", false, true); + succeed(); + }); + }); + }); + }, + + // Enables a disabled extension. + function enable() { + chrome.management.getAll(function(items) { + assertNoLastError(); + checkItem(items, "disabled_extension", false, false); + var disabled = getItemNamed(items, "disabled_extension"); + chrome.management.setEnabled(disabled.id, true, function() { + assertNoLastError(); + chrome.management.getAll(function(items2) { + assertNoLastError(); + checkItem(items2, "disabled_extension", true, false); + succeed(); + }); + }); + }); + } +]; + +chrome.test.runTests(tests); diff --git a/chrome/test/data/extensions/api_test/management/test/common.js b/chrome/test/data/extensions/api_test/management/test/common.js new file mode 100644 index 0000000..6385599 --- /dev/null +++ b/chrome/test/data/extensions/api_test/management/test/common.js @@ -0,0 +1,42 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +if (!chrome.management) { + chrome.management = chrome.experimental.management; +} + +var assertEq = chrome.test.assertEq; +var assertFalse = chrome.test.assertFalse; +var assertNoLastError = chrome.test.assertNoLastError; +var assertTrue = chrome.test.assertTrue; +var fail = chrome.test.fail; +var succeed = chrome.test.succeed; + +function getItemNamed(list, name) { + for (var i = 0; i < list.length; i++) { + if (list[i].name == name) { + return list[i]; + } + } + fail("didn't find item with name: " + name); + return null; +} + +// Gets an extension/app with |name| in |list|, verifies that its enabled +// and isApp properties match |enabled| and |isApp|, and checks against any +// additional name/value properties from |additional_properties|. +function checkItem(list, name, enabled, isApp, additional_properties) { + var item = getItemNamed(list, name); + assertTrue(item != null); + assertEq(name, item.name); + assertEq(isApp, item.isApp); + assertEq(enabled, item.enabled); + + for (var propname in additional_properties) { + var value = additional_properties[propname]; + value = value.replace("<ID>", item.id); + assertTrue(propname in item); + assertEq(value, item[propname]); + } +} diff --git a/chrome/test/data/extensions/api_test/management/test/manifest.json b/chrome/test/data/extensions/api_test/management/test/manifest.json new file mode 100644 index 0000000..a5915d4 --- /dev/null +++ b/chrome/test/data/extensions/api_test/management/test/manifest.json @@ -0,0 +1,5 @@ +{ + "name": "Extension Management API Test", + "version": "0.1", + "permissions": ["experimental"] +} diff --git a/chrome/test/data/extensions/api_test/management/test/uninstall.html b/chrome/test/data/extensions/api_test/management/test/uninstall.html new file mode 100644 index 0000000..f18ed59 --- /dev/null +++ b/chrome/test/data/extensions/api_test/management/test/uninstall.html @@ -0,0 +1,2 @@ +<script src="common.js"></script> +<script src="uninstall.js"></script> diff --git a/chrome/test/data/extensions/api_test/management/test/uninstall.js b/chrome/test/data/extensions/api_test/management/test/uninstall.js new file mode 100644 index 0000000..e4a120b --- /dev/null +++ b/chrome/test/data/extensions/api_test/management/test/uninstall.js @@ -0,0 +1,43 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +function uninstall(name) { + chrome.management.getAll(function(items) { + assertNoLastError(); + var old_count = items.length; + var item = getItemNamed(items, name); + chrome.management.uninstall(item.id, function() { + assertNoLastError(); + chrome.management.getAll(function(items2) { + assertNoLastError(); + assertEq(old_count - 1, items2.length); + for (var i = 0; i < items2.length; i++) { + assertFalse(items2[i].name == name); + } + succeed(); + }); + }); + }); +} + +var tests = [ + function uninstallEnabledApp() { + uninstall("enabled_app"); + }, + + function uninstallDisabledApp() { + uninstall("disabled_app"); + }, + + function uninstallEnabledExtension() { + uninstall("enabled_extension"); + }, + + function uninstallDisabledExtension() { + uninstall("disabled_extension"); + } +]; + +chrome.test.runTests(tests); + |