Index: chrome/browser/ui/webui/extensions/extension_settings_handler.cc |
diff --git a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc |
index 7d3659ae26acd72fd7b416baeddbed6e2df8919e..fe339fda66704e9ee60bdf4b8935958c27e6c9bf 100644 |
--- a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc |
+++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc |
@@ -118,7 +118,8 @@ ExtensionSettingsHandler::ExtensionSettingsHandler() |
rvh_created_callback_( |
base::Bind(&ExtensionSettingsHandler::RenderViewHostCreated, |
base::Unretained(this))), |
- warning_service_observer_(this) { |
+ warning_service_observer_(this), |
+ error_console_observer_(this) { |
} |
ExtensionSettingsHandler::~ExtensionSettingsHandler() { |
@@ -137,7 +138,8 @@ ExtensionSettingsHandler::ExtensionSettingsHandler(ExtensionService* service, |
ignore_notifications_(false), |
deleting_rvh_(NULL), |
registered_for_notifications_(false), |
- warning_service_observer_(this) { |
+ warning_service_observer_(this), |
+ error_console_observer_(this) { |
} |
// static |
@@ -265,12 +267,19 @@ base::DictionaryValue* ExtensionSettingsHandler::CreateExtensionDetailValue( |
const ErrorConsole::ErrorList& errors = |
error_console->GetErrorsForExtension(extension->id()); |
if (!errors.empty()) { |
- scoped_ptr<ListValue> list(new ListValue); |
+ scoped_ptr<ListValue> manifest_errors(new ListValue); |
+ scoped_ptr<ListValue> runtime_errors(new ListValue); |
for (ErrorConsole::ErrorList::const_iterator iter = errors.begin(); |
iter != errors.end(); ++iter) { |
- list->Append((*iter)->ToValue().release()); |
+ if ((*iter)->type() == ExtensionError::MANIFEST_ERROR) |
+ manifest_errors->Append((*iter)->ToValue().release()); |
+ else |
+ runtime_errors->Append((*iter)->ToValue().release()); |
} |
- extension_data->Set("manifestErrors", list.release()); |
+ if (!manifest_errors->empty()) |
+ extension_data->Set("manifestErrors", manifest_errors.release()); |
+ if (!runtime_errors->empty()) |
+ extension_data->Set("runtimeErrors", runtime_errors.release()); |
} |
} else if (Manifest::IsUnpackedLocation(extension->location())) { |
const std::vector<InstallWarning>& install_warnings = |
@@ -480,6 +489,13 @@ void ExtensionSettingsHandler::MultiFilesSelected( |
NOTREACHED(); |
} |
+void ExtensionSettingsHandler::FileSelectionCanceled(void* params) { |
+} |
+ |
+void ExtensionSettingsHandler::OnErrorAdded(const ExtensionError* error) { |
+ MaybeUpdateAfterNotification(); |
+} |
+ |
void ExtensionSettingsHandler::Observe( |
int type, |
const content::NotificationSource& source, |
@@ -1006,6 +1022,8 @@ void ExtensionSettingsHandler::MaybeRegisterForNotifications() { |
warning_service_observer_.Add( |
ExtensionSystem::Get(profile)->warning_service()); |
+ error_console_observer_.Add(ErrorConsole::Get(profile)); |
+ |
base::Closure callback = base::Bind( |
&ExtensionSettingsHandler::MaybeUpdateAfterNotification, |
base::Unretained(this)); |