summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-30 00:29:37 +0000
committerasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-30 00:29:37 +0000
commit1e721f5632a5eddfba9730f367f18d0befe0463d (patch)
tree47b03199979b88dc93c67ccd1aeacca928b4a526
parent6ef2067c287ffbe78bf193f72fd12cf9ce57f08a (diff)
downloadchromium_src-1e721f5632a5eddfba9730f367f18d0befe0463d.zip
chromium_src-1e721f5632a5eddfba9730f367f18d0befe0463d.tar.gz
chromium_src-1e721f5632a5eddfba9730f367f18d0befe0463d.tar.bz2
Reland changes from r60979 with fixes to test code.
The original codereview for r60979 was: http://codereview.chromium.org/3550002 The only changes in this CL relative to that one are in the files: chrome/test/data/extensions/api_test/management/test/basics.js chrome/test/data/extensions/api_test/management/test/uninstall.js BUG=54415 TEST=The onUninstalled event in extensions management API should just pass the extension id. Review URL: http://codereview.chromium.org/3562002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61014 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/extensions/extension_management_api.cc17
-rw-r--r--chrome/common/extensions/api/extension_api.json8
-rw-r--r--chrome/common/extensions/docs/experimental.management.html22
-rw-r--r--chrome/common/extensions/docs/experimental.sidebar.html2
-rw-r--r--chrome/common/extensions/docs/samples.json1
-rw-r--r--chrome/test/data/extensions/api_test/management/test/basics.js22
-rw-r--r--chrome/test/data/extensions/api_test/management/test/uninstall.js17
7 files changed, 47 insertions, 42 deletions
diff --git a/chrome/browser/extensions/extension_management_api.cc b/chrome/browser/extensions/extension_management_api.cc
index 43f13f0..738c6cf 100644
--- a/chrome/browser/extensions/extension_management_api.cc
+++ b/chrome/browser/extensions/extension_management_api.cc
@@ -211,14 +211,21 @@ void ExtensionManagementEventRouter::Observe(
}
Profile* profile = Source<Profile>(source).ptr();
- Extension* extension = Details<Extension>(details).ptr();
CHECK(profile);
- CHECK(extension);
- ExtensionsService* service = profile->GetExtensionsService();
- bool enabled = service->GetExtensionById(extension->id(), false) != NULL;
ListValue args;
- args.Append(CreateExtensionInfo(*extension, enabled));
+ if (event_name == events::kOnExtensionUninstalled) {
+ // TODO(akalin) - change this to get the id from UninstalledExtensionInfo
+ // when re-landing change to how we send the uninstall notification.
+ std::string extension_id = Details<Extension>(details).ptr()->id();
+ args.Append(Value::CreateStringValue(extension_id));
+ } else {
+ Extension* extension = Details<Extension>(details).ptr();
+ CHECK(extension);
+ ExtensionsService* service = profile->GetExtensionsService();
+ bool enabled = service->GetExtensionById(extension->id(), false) != NULL;
+ args.Append(CreateExtensionInfo(*extension, enabled));
+ }
std::string args_json;
base::JSONWriter::Write(&args, false /* pretty_print */, &args_json);
diff --git a/chrome/common/extensions/api/extension_api.json b/chrome/common/extensions/api/extension_api.json
index edbfdc1..a566716d 100644
--- a/chrome/common/extensions/api/extension_api.json
+++ b/chrome/common/extensions/api/extension_api.json
@@ -4065,7 +4065,13 @@
"name": "onUninstalled",
"description": "Fired when an app or extension has been uninstalled.",
"type": "function",
- "parameters": [{"name": "info", "$ref":"ExtensionInfo"}]
+ "parameters": [
+ {
+ "name": "id",
+ "type": "string",
+ "description": "The id of the extension or app that was uninstalled."
+ }
+ ]
},
{
"name": "onEnabled",
diff --git a/chrome/common/extensions/docs/experimental.management.html b/chrome/common/extensions/docs/experimental.management.html
index 2e13052..5f316c9 100644
--- a/chrome/common/extensions/docs/experimental.management.html
+++ b/chrome/common/extensions/docs/experimental.management.html
@@ -1382,7 +1382,7 @@
<div class="summary">
<!-- Note: intentionally longer 80 columns -->
- <span class="subdued">chrome.experimental.management.</span><span>onUninstalled</span><span class="subdued">.addListener</span>(function(<span>ExtensionInfo info</span>) <span class="subdued">{...}</span>);
+ <span class="subdued">chrome.experimental.management.</span><span>onUninstalled</span><span class="subdued">.addListener</span>(function(<span>string id</span>) <span class="subdued">{...}</span>);
</div>
<div class="description">
@@ -1395,7 +1395,7 @@
<div>
<div>
<dt>
- <var>info</var>
+ <var>id</var>
<em>
<!-- TYPE -->
@@ -1404,15 +1404,15 @@
<span class="optional" style="display: none; ">optional</span>
<span class="enum" style="display: none; ">enumerated</span>
<span id="typeTemplate">
- <span>
- <a href="experimental.management.html#type-ExtensionInfo">ExtensionInfo</a>
- </span>
<span style="display: none; ">
- <span>
+ <a> Type</a>
+ </span>
+ <span>
+ <span style="display: none; ">
array of <span><span></span></span>
</span>
- <span>paramType</span>
- <span></span>
+ <span>string</span>
+ <span style="display: none; "></span>
</span>
</span>
)
@@ -1420,12 +1420,10 @@
</em>
</dt>
- <dd class="todo">
+ <dd class="todo" style="display: none; ">
Undocumented.
</dd>
- <dd style="display: none; ">
- Description of this parameter from the json schema.
- </dd>
+ <dd>The id of the extension or app that was uninstalled.</dd>
<dd style="display: none; ">
This parameter was added in version
<b><span></span></b>.
diff --git a/chrome/common/extensions/docs/experimental.sidebar.html b/chrome/common/extensions/docs/experimental.sidebar.html
index b74d698..fb092eb 100644
--- a/chrome/common/extensions/docs/experimental.sidebar.html
+++ b/chrome/common/extensions/docs/experimental.sidebar.html
@@ -938,7 +938,7 @@
<dd class="todo" style="display: none; ">
Undocumented.
</dd>
- <dd>'hidden' indicates sidebar is not defined for the specified tab (show was never called or hide() was called). Nothing is displayed for this sidebar.'shown' means sidebar is defined for the specified tab; mini tab is displayed for this sidebar. Sidebar UI is either collapsed or displaying a content of some other extension's sidebar.'active' indicates that sidebar is defined for the specified tab; sidebar UI is expanded and displaying this sidebar's content.</dd>
+ <dd>'hidden' indicates sidebar is not defined for the specified tab (show was never called or hide() was called). Nothing is displayed for this sidebar.<br>'shown' means sidebar is defined for the specified tab; mini tab is displayed for this sidebar. Sidebar UI is either collapsed or displaying a content of some other extension's sidebar.<br>'active' indicates that sidebar is defined for the specified tab; sidebar UI is expanded and displaying this sidebar's content.</dd>
<dd style="display: none; ">
This parameter was added in version
<b><span></span></b>.
diff --git a/chrome/common/extensions/docs/samples.json b/chrome/common/extensions/docs/samples.json
index 1387679..f86db3f 100644
--- a/chrome/common/extensions/docs/samples.json
+++ b/chrome/common/extensions/docs/samples.json
@@ -74,6 +74,7 @@
"chrome.bookmarks.search": "bookmarks.html#method-search",
"chrome.extension.onRequest": "extension.html#event-onRequest",
"chrome.extension.getBackgroundPage": "extension.html#method-getBackgroundPage",
+ "chrome.experimental.management.launchApp": "experimental.management.html#method-launchApp",
"chrome.pageAction.hide": "pageAction.html#method-hide",
"chrome.experimental.omnibox.styleMatch": "experimental.omnibox.html#method-styleMatch",
"chrome.experimental.sidebar.expand": "experimental.sidebar.html#method-expand",
diff --git a/chrome/test/data/extensions/api_test/management/test/basics.js b/chrome/test/data/extensions/api_test/management/test/basics.js
index c998ca3d..fdc1f7e 100644
--- a/chrome/test/data/extensions/api_test/management/test/basics.js
+++ b/chrome/test/data/extensions/api_test/management/test/basics.js
@@ -47,14 +47,11 @@ var tests = [
chrome.management.getAll(callback(function(items) {
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.management.setEnabled(enabled_app.id, false, callback(function() {
+ chrome.management.getAll(callback(function(items2) {
checkItem(items2, "enabled_app", false, true);
- assertTrue(event_fired);
- });
- });
+ }));
+ }));
}));
},
@@ -66,14 +63,11 @@ var tests = [
chrome.management.getAll(callback(function(items) {
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();
+ chrome.management.setEnabled(disabled.id, true, callback(function() {
+ chrome.management.getAll(callback(function(items2) {
checkItem(items2, "disabled_extension", true, false);
- assertTrue(event_fired);
- });
- });
+ }));
+ }));
}));
}
];
diff --git a/chrome/test/data/extensions/api_test/management/test/uninstall.js b/chrome/test/data/extensions/api_test/management/test/uninstall.js
index f425c8e..396619f 100644
--- a/chrome/test/data/extensions/api_test/management/test/uninstall.js
+++ b/chrome/test/data/extensions/api_test/management/test/uninstall.js
@@ -3,24 +3,23 @@
// found in the LICENSE file.
function uninstall(name) {
- listenOnce(chrome.management.onUninstalled, function(info) {
- assertEq(info.name, name);
+ var expected_id;
+ listenOnce(chrome.management.onUninstalled, function(id) {
+ assertEq(expected_id, id);
});
chrome.management.getAll(callback(function(items) {
var old_count = items.length;
var item = getItemNamed(items, name);
- chrome.management.uninstall(item.id, function() {
- assertNoLastError();
- chrome.management.getAll(function(items2) {
- assertNoLastError();
+ expected_id = item.id;
+ chrome.management.uninstall(item.id, callback(function() {
+ chrome.management.getAll(callback(function(items2) {
assertEq(old_count - 1, items2.length);
for (var i = 0; i < items2.length; i++) {
assertFalse(items2[i].name == name);
}
- assertTrue(event_fired);
- });
- });
+ }));
+ }));
}));
}