summaryrefslogtreecommitdiffstats
path: root/chrome/test/data/extensions
diff options
context:
space:
mode:
authorasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-26 17:43:28 +0000
committerasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-26 17:43:28 +0000
commitcffd78950f9e8e740085dbec9ecec7472e6eb98d (patch)
tree33820b7d9817b837cabe852f669f1faaf1bacfa9 /chrome/test/data/extensions
parent3bb8499b2cd51027ee896ccda306e2c55fc2c5f0 (diff)
downloadchromium_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')
-rwxr-xr-xchrome/test/data/extensions/api_test/management/disabled_app/manifest.json9
-rwxr-xr-xchrome/test/data/extensions/api_test/management/disabled_extension/manifest.json5
-rw-r--r--chrome/test/data/extensions/api_test/management/disabled_extension/pages/options.html2
-rwxr-xr-xchrome/test/data/extensions/api_test/management/enabled_app/manifest.json9
-rw-r--r--chrome/test/data/extensions/api_test/management/enabled_extension/icon_128.pngbin0 -> 266 bytes
-rw-r--r--chrome/test/data/extensions/api_test/management/enabled_extension/icon_16.pngbin0 -> 92 bytes
-rw-r--r--chrome/test/data/extensions/api_test/management/enabled_extension/icon_48.pngbin0 -> 125 bytes
-rwxr-xr-xchrome/test/data/extensions/api_test/management/enabled_extension/manifest.json9
-rw-r--r--chrome/test/data/extensions/api_test/management/test/basics.html2
-rw-r--r--chrome/test/data/extensions/api_test/management/test/basics.js80
-rw-r--r--chrome/test/data/extensions/api_test/management/test/common.js42
-rw-r--r--chrome/test/data/extensions/api_test/management/test/manifest.json5
-rw-r--r--chrome/test/data/extensions/api_test/management/test/uninstall.html2
-rw-r--r--chrome/test/data/extensions/api_test/management/test/uninstall.js43
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
new file mode 100644
index 0000000..d774694
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/management/enabled_extension/icon_128.png
Binary files differ
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
new file mode 100644
index 0000000..38e6aa3
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/management/enabled_extension/icon_16.png
Binary files differ
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
new file mode 100644
index 0000000..7399a1b
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/management/enabled_extension/icon_48.png
Binary files differ
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);
+