| 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));
|
|
|