| Index: chrome/browser/ui/webui/options/extension_settings_handler.cc
|
| diff --git a/chrome/browser/ui/webui/options/extension_settings_handler.cc b/chrome/browser/ui/webui/options/extension_settings_handler.cc
|
| index 9943a750c34b902e90e2476a8faca5c05732a802..ede68739c0fa6df950f6dc6f623f0b5a085a242a 100644
|
| --- a/chrome/browser/ui/webui/options/extension_settings_handler.cc
|
| +++ b/chrome/browser/ui/webui/options/extension_settings_handler.cc
|
| @@ -142,6 +142,9 @@ void ExtensionSettingsHandler::HandleRequestExtensionsData(
|
| // Add the extensions to the results structure.
|
| ListValue *extensions_list = new ListValue();
|
|
|
| + ExtensionService::ExtensionWarningsType warnings =
|
| + extension_service_->GetWarnings();
|
| +
|
| const ExtensionList* extensions = extension_service_->extensions();
|
| for (ExtensionList::const_iterator extension = extensions->begin();
|
| extension != extensions->end(); ++extension) {
|
| @@ -150,6 +153,7 @@ void ExtensionSettingsHandler::HandleRequestExtensionsData(
|
| extension_service_,
|
| *extension,
|
| GetActivePagesForExtension(*extension),
|
| + warnings,
|
| true, false)); // enabled, terminated
|
| }
|
| }
|
| @@ -161,6 +165,7 @@ void ExtensionSettingsHandler::HandleRequestExtensionsData(
|
| extension_service_,
|
| *extension,
|
| GetActivePagesForExtension(*extension),
|
| + warnings,
|
| false, false)); // enabled, terminated
|
| }
|
| }
|
| @@ -173,6 +178,7 @@ void ExtensionSettingsHandler::HandleRequestExtensionsData(
|
| extension_service_,
|
| *extension,
|
| empty_pages, // Terminated process has no active pages.
|
| + warnings,
|
| false, true)); // enabled, terminated
|
| }
|
| }
|
| @@ -204,6 +210,8 @@ void ExtensionSettingsHandler::MaybeRegisterForNotifications() {
|
| NotificationService::AllSources());
|
| registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UPDATE_DISABLED,
|
| NotificationService::AllSources());
|
| + registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_WARNING,
|
| + NotificationService::AllSources());
|
| registrar_.Add(this,
|
| content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| NotificationService::AllSources());
|
| @@ -554,6 +562,8 @@ void ExtensionSettingsHandler::GetLocalizedValues(
|
| l10n_util::GetStringUTF16(IDS_EXTENSIONS_CRASHED_EXTENSION));
|
| localized_strings->SetString("extensionSettingsInDevelopment",
|
| l10n_util::GetStringUTF16(IDS_EXTENSIONS_IN_DEVELOPMENT));
|
| + localized_strings->SetString("extensionSettingsWarningsTitle",
|
| + l10n_util::GetStringUTF16(IDS_EXTENSION_WARNINGS_TITLE));
|
| }
|
|
|
| void ExtensionSettingsHandler::Initialize() {
|
| @@ -600,6 +610,7 @@ void ExtensionSettingsHandler::Observe(int type,
|
| case chrome::NOTIFICATION_EXTENSION_PROCESS_CREATED:
|
| case chrome::NOTIFICATION_EXTENSION_UNLOADED:
|
| case chrome::NOTIFICATION_EXTENSION_UPDATE_DISABLED:
|
| + case chrome::NOTIFICATION_EXTENSION_WARNING:
|
| case content::NOTIFICATION_RENDER_VIEW_HOST_CREATED:
|
| case content::NOTIFICATION_NAV_ENTRY_COMMITTED:
|
| case chrome::NOTIFICATION_BACKGROUND_CONTENTS_NAVIGATED:
|
| @@ -625,9 +636,27 @@ void ExtensionSettingsHandler::MaybeUpdateAfterNotification() {
|
| }
|
|
|
| // Static
|
| +string16 ExtensionSettingsHandler::GetLocalizedWarning(
|
| + const ExtensionServiceWarning& warning) {
|
| + switch (warning.warning_type()) {
|
| + case ExtensionServiceWarning::kInvalid:
|
| + case ExtensionServiceWarning::kMaxWarningType:
|
| + NOTREACHED();
|
| + return string16();
|
| + case ExtensionServiceWarning::kNetworkDelay:
|
| + return l10n_util::GetStringFUTF16(
|
| + IDS_EXTENSION_WARNINGS_NETWORK_DELAY,
|
| + l10n_util::GetStringUTF16(IDS_PRODUCT_NAME));
|
| + }
|
| + return string16();
|
| +}
|
| +
|
| +// Static
|
| DictionaryValue* ExtensionSettingsHandler::CreateExtensionDetailValue(
|
| ExtensionService* service, const Extension* extension,
|
| - const std::vector<ExtensionPage>& pages, bool enabled, bool terminated) {
|
| + const std::vector<ExtensionPage>& pages,
|
| + const ExtensionService::ExtensionWarningsType& warnings,
|
| + bool enabled, bool terminated) {
|
| DictionaryValue* extension_data = new DictionaryValue();
|
| GURL icon =
|
| ExtensionIconSource::GetIconURL(extension,
|
| @@ -691,6 +720,19 @@ DictionaryValue* ExtensionSettingsHandler::CreateExtensionDetailValue(
|
| extension->browser_action() || extension->page_action());
|
| extension_data->SetString("homepageUrl", extension->GetHomepageURL().spec());
|
|
|
| + // Add warnings.
|
| + ListValue* warnings_list = new ListValue;
|
| + for (ExtensionService::ExtensionWarningsType::const_iterator iter =
|
| + warnings.begin();
|
| + iter != warnings.end();
|
| + ++iter) {
|
| + if (iter->second.AffectsExtension(extension->id())) {
|
| + warnings_list->Append(
|
| + Value::CreateStringValue(GetLocalizedWarning(iter->second)));
|
| + }
|
| + }
|
| + extension_data->Set("warnings", warnings_list);
|
| +
|
| return extension_data;
|
| }
|
|
|
|
|