| 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 8df72d7312e69b0d9e5c92af00f19c2a6923abbf..b54501c84bf38bda2e157c44dfab718389c9bb42 100644
|
| --- a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc
|
| +++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc
|
| @@ -23,7 +23,6 @@
|
| #include "chrome/browser/extensions/extension_host.h"
|
| #include "chrome/browser/extensions/extension_service.h"
|
| #include "chrome/browser/extensions/extension_system.h"
|
| -#include "chrome/browser/extensions/extension_warning_set.h"
|
| #include "chrome/browser/extensions/lazy_background_task_queue.h"
|
| #include "chrome/browser/extensions/shell_window_registry.h"
|
| #include "chrome/browser/extensions/unpacked_installer.h"
|
| @@ -66,6 +65,7 @@ using content::RenderViewHost;
|
| using content::WebContents;
|
| using extensions::Extension;
|
| using extensions::ExtensionUpdater;
|
| +using extensions::ExtensionWarning;
|
| using extensions::ManagementPolicy;
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| @@ -89,6 +89,13 @@ ExtensionSettingsHandler::~ExtensionSettingsHandler() {
|
| load_extension_dialog_->ListenerDestroyed();
|
|
|
| registrar_.RemoveAll();
|
| +
|
| + if (registered_for_notifications_) {
|
| + Profile* profile = Profile::FromWebUI(web_ui());
|
| + extensions::ExtensionWarningSet* warnings =
|
| + extensions::ExtensionSystem::Get(profile)->warning_set();
|
| + warnings->RemoveObserver(this);
|
| + }
|
| }
|
|
|
| ExtensionSettingsHandler::ExtensionSettingsHandler(ExtensionService* service,
|
| @@ -110,7 +117,7 @@ void ExtensionSettingsHandler::RegisterUserPrefs(PrefService* prefs) {
|
| DictionaryValue* ExtensionSettingsHandler::CreateExtensionDetailValue(
|
| const Extension* extension,
|
| const std::vector<ExtensionPage>& pages,
|
| - const ExtensionWarningSet* warnings_set) {
|
| + const extensions::ExtensionWarningSet* warnings_set) {
|
| DictionaryValue* extension_data = new DictionaryValue();
|
| bool enabled = extension_service_->IsExtensionEnabled(extension->id());
|
| extension->GetBasicInfo(enabled, extension_data);
|
| @@ -179,18 +186,14 @@ DictionaryValue* ExtensionSettingsHandler::CreateExtensionDetailValue(
|
|
|
| // Add warnings.
|
| if (warnings_set) {
|
| - std::set<ExtensionWarningSet::WarningType> warnings;
|
| - warnings_set->GetWarningsAffectingExtension(extension->id(), &warnings);
|
| + std::vector<std::string> warnings;
|
| + warnings_set->GetWarningMessagesForExtension(extension->id(), &warnings);
|
|
|
| if (!warnings.empty()) {
|
| ListValue* warnings_list = new ListValue;
|
| - for (std::set<ExtensionWarningSet::WarningType>::const_iterator iter =
|
| - warnings.begin();
|
| - iter != warnings.end();
|
| - ++iter) {
|
| - string16 warning_string(
|
| - ExtensionWarningSet::GetLocalizedWarning(*iter));
|
| - warnings_list->Append(Value::CreateStringValue(warning_string));
|
| + for (std::vector<std::string>::const_iterator iter = warnings.begin();
|
| + iter != warnings.end(); ++iter) {
|
| + warnings_list->Append(Value::CreateStringValue(*iter));
|
| }
|
| extension_data->Set("warnings", warnings_list);
|
| }
|
| @@ -414,7 +417,6 @@ void ExtensionSettingsHandler::Observe(
|
| case chrome::NOTIFICATION_EXTENSION_LOADED:
|
| case chrome::NOTIFICATION_EXTENSION_UNLOADED:
|
| case chrome::NOTIFICATION_EXTENSION_UPDATE_DISABLED:
|
| - case chrome::NOTIFICATION_EXTENSION_WARNING_CHANGED:
|
| case chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED:
|
| case chrome::NOTIFICATION_PREF_CHANGED:
|
| MaybeUpdateAfterNotification();
|
| @@ -456,6 +458,10 @@ void ExtensionSettingsHandler::ExtensionUninstallCanceled() {
|
| extension_id_prompting_ = "";
|
| }
|
|
|
| +void ExtensionSettingsHandler::ExtensionWarningsChanged() {
|
| + MaybeUpdateAfterNotification();
|
| +}
|
| +
|
| void ExtensionSettingsHandler::ReloadUnpackedExtensions() {
|
| const ExtensionSet* extensions = extension_service_->extensions();
|
| std::vector<const Extension*> unpacked_extensions;
|
| @@ -475,10 +481,13 @@ void ExtensionSettingsHandler::HandleRequestExtensionsData(
|
| const ListValue* args) {
|
| DictionaryValue results;
|
|
|
| + Profile* profile = Profile::FromWebUI(web_ui());
|
| +
|
| // Add the extensions to the results structure.
|
| ListValue *extensions_list = new ListValue();
|
|
|
| - ExtensionWarningSet* warnings = extension_service_->extension_warnings();
|
| + extensions::ExtensionWarningSet* warnings =
|
| + extensions::ExtensionSystem::Get(profile)->warning_set();
|
|
|
| const ExtensionSet* extensions = extension_service_->extensions();
|
| for (ExtensionSet::const_iterator extension = extensions->begin();
|
| @@ -518,10 +527,10 @@ void ExtensionSettingsHandler::HandleRequestExtensionsData(
|
| results.SetBoolean("developerMode", false);
|
| } else {
|
| results.SetBoolean("managedMode", false);
|
| - Profile* profile = Profile::FromWebUI(web_ui());
|
| - bool developer_mode =
|
| - profile->GetPrefs()->GetBoolean(prefs::kExtensionsUIDeveloperMode);
|
| - results.SetBoolean("developerMode", developer_mode);
|
| +
|
| + bool developer_mode =
|
| + profile->GetPrefs()->GetBoolean(prefs::kExtensionsUIDeveloperMode);
|
| + results.SetBoolean("developerMode", developer_mode);
|
| }
|
|
|
| bool load_unpacked_disabled =
|
| @@ -782,8 +791,6 @@ void ExtensionSettingsHandler::MaybeRegisterForNotifications() {
|
| content::Source<Profile>(profile));
|
| registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UPDATE_DISABLED,
|
| content::Source<Profile>(profile));
|
| - registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_WARNING_CHANGED,
|
| - content::Source<Profile>(profile));
|
| registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_CREATED,
|
| content::NotificationService::AllBrowserContextsAndSources());
|
| registrar_.Add(this,
|
| @@ -804,6 +811,10 @@ void ExtensionSettingsHandler::MaybeRegisterForNotifications() {
|
| content::Source<extensions::ExtensionPrefs>(
|
| profile->GetExtensionService()->extension_prefs()));
|
|
|
| + extensions::ExtensionWarningSet* warnings =
|
| + extensions::ExtensionSystem::Get(profile)->warning_set();
|
| + warnings->AddObserver(this);
|
| +
|
| pref_registrar_.Init(profile->GetPrefs());
|
| pref_registrar_.Add(prefs::kExtensionInstallDenyList, this);
|
| local_state_pref_registrar_.Init(g_browser_process->local_state());
|
|
|