Index: chrome/browser/extensions/api/developer_private/extension_info_generator.cc |
diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc |
index 4c96f9f0ed8a7e4795cc4a5fb3e0398798b4f39f..24275ac05eb6a4c8b6e5ad1b906e56f02ebbbf0f 100644 |
--- a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc |
+++ b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc |
@@ -71,8 +71,7 @@ developer::ExtensionType GetExtensionType(Manifest::Type manifest_type) { |
// Populates the common fields of an extension error. |
template <typename ErrorType> |
-void PopulateErrorBase(const ExtensionError& error, |
- ErrorType* out) { |
+void PopulateErrorBase(const ExtensionError& error, ErrorType* out) { |
CHECK(out); |
out->type = error.type() == ExtensionError::MANIFEST_ERROR ? |
developer::ERROR_TYPE_MANIFEST : developer::ERROR_TYPE_RUNTIME; |
@@ -80,10 +79,9 @@ void PopulateErrorBase(const ExtensionError& error, |
out->from_incognito = error.from_incognito(); |
out->source = base::UTF16ToUTF8(error.source()); |
out->message = base::UTF16ToUTF8(error.message()); |
+ out->id = error.id(); |
} |
-// Given a ManifestError object, converts it into its developer_private |
-// counterpart. |
linked_ptr<developer::ManifestError> ConstructManifestError( |
const ManifestError& error) { |
linked_ptr<developer::ManifestError> result(new developer::ManifestError()); |
@@ -96,8 +94,6 @@ linked_ptr<developer::ManifestError> ConstructManifestError( |
return result; |
} |
-// Given a RuntimeError object, converts it into its developer_private |
-// counterpart. |
linked_ptr<developer::RuntimeError> ConstructRuntimeError( |
const RuntimeError& error) { |
linked_ptr<developer::RuntimeError> result(new developer::RuntimeError()); |
@@ -363,6 +359,25 @@ ExtensionInfoGenerator::CreateExtensionInfo(const Extension& extension, |
return info.Pass(); |
} |
+scoped_ptr<api::developer_private::ExtensionInfo> |
+ExtensionInfoGenerator::CreateExtensionInfo(const std::string& id) { |
+ developer::ExtensionState state = developer::EXTENSION_STATE_ENABLED; |
+ ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context_); |
+ const Extension* extension = registry->enabled_extensions().GetByID(id); |
+ if (!extension && |
+ (extension = registry->disabled_extensions().GetByID(id)) != nullptr) { |
Dan Beam
2015/03/31 00:33:49
:_(
Devlin
2015/03/31 16:17:50
Why sad face? I think it actually makes sense, as
Dan Beam
2015/04/22 21:02:37
eh, it's all awkward. whatevs.
|
+ state = developer::EXTENSION_STATE_DISABLED; |
+ } else if (!extension && |
+ (extension = |
+ registry->terminated_extensions().GetByID(id)) != nullptr) { |
+ state = developer::EXTENSION_STATE_TERMINATED; |
+ } |
+ scoped_ptr<api::developer_private::ExtensionInfo> info; |
+ if (extension) |
+ info = CreateExtensionInfo(*extension, state); |
+ return info.Pass(); |
+} |
+ |
ExtensionInfoGenerator::ExtensionInfoList |
ExtensionInfoGenerator::CreateExtensionsInfo(bool include_disabled, |
bool include_terminated) { |