| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/webui/extensions/extension_settings_handler.h" | 5 #include "chrome/browser/ui/webui/extensions/extension_settings_handler.h" |
| 6 | 6 |
| 7 #include "apps/app_load_service.h" | 7 #include "apps/app_load_service.h" |
| 8 #include "apps/app_restore_service.h" | 8 #include "apps/app_restore_service.h" |
| 9 #include "apps/saved_files_service.h" | 9 #include "apps/saved_files_service.h" |
| 10 #include "apps/shell_window.h" | 10 #include "apps/shell_window.h" |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 } | 191 } |
| 192 | 192 |
| 193 base::DictionaryValue* ExtensionSettingsHandler::CreateExtensionDetailValue( | 193 base::DictionaryValue* ExtensionSettingsHandler::CreateExtensionDetailValue( |
| 194 const Extension* extension, | 194 const Extension* extension, |
| 195 const std::vector<ExtensionPage>& pages, | 195 const std::vector<ExtensionPage>& pages, |
| 196 const ExtensionWarningService* warning_service) { | 196 const ExtensionWarningService* warning_service) { |
| 197 base::DictionaryValue* extension_data = new base::DictionaryValue(); | 197 base::DictionaryValue* extension_data = new base::DictionaryValue(); |
| 198 bool enabled = extension_service_->IsExtensionEnabled(extension->id()); | 198 bool enabled = extension_service_->IsExtensionEnabled(extension->id()); |
| 199 GetExtensionBasicInfo(extension, enabled, extension_data); | 199 GetExtensionBasicInfo(extension, enabled, extension_data); |
| 200 | 200 |
| 201 ExtensionPrefs* prefs = extension_service_->extension_prefs(); | 201 ExtensionPrefs* prefs = ExtensionPrefs::Get(extension_service_->profile()); |
| 202 int disable_reasons = prefs->GetDisableReasons(extension->id()); | 202 int disable_reasons = prefs->GetDisableReasons(extension->id()); |
| 203 | 203 |
| 204 bool suspicious_install = | 204 bool suspicious_install = |
| 205 (disable_reasons & Extension::DISABLE_NOT_VERIFIED) != 0; | 205 (disable_reasons & Extension::DISABLE_NOT_VERIFIED) != 0; |
| 206 extension_data->SetBoolean("suspiciousInstall", suspicious_install); | 206 extension_data->SetBoolean("suspiciousInstall", suspicious_install); |
| 207 if (suspicious_install) | 207 if (suspicious_install) |
| 208 should_do_verification_check_ = true; | 208 should_do_verification_check_ = true; |
| 209 | 209 |
| 210 bool managed_install = | 210 bool managed_install = |
| 211 !management_policy_->UserMayModifySettings(extension, NULL); | 211 !management_policy_->UserMayModifySettings(extension, NULL); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 !ManifestURL::UpdatesFromGallery(extension)) { | 252 !ManifestURL::UpdatesFromGallery(extension)) { |
| 253 location_text = l10n_util::GetStringUTF16( | 253 location_text = l10n_util::GetStringUTF16( |
| 254 IDS_OPTIONS_INSTALL_LOCATION_UNKNOWN); | 254 IDS_OPTIONS_INSTALL_LOCATION_UNKNOWN); |
| 255 } else if (extension->location() == Manifest::EXTERNAL_REGISTRY) { | 255 } else if (extension->location() == Manifest::EXTERNAL_REGISTRY) { |
| 256 location_text = l10n_util::GetStringUTF16( | 256 location_text = l10n_util::GetStringUTF16( |
| 257 IDS_OPTIONS_INSTALL_LOCATION_3RD_PARTY); | 257 IDS_OPTIONS_INSTALL_LOCATION_3RD_PARTY); |
| 258 } | 258 } |
| 259 extension_data->SetString("locationText", location_text); | 259 extension_data->SetString("locationText", location_text); |
| 260 | 260 |
| 261 base::string16 blacklist_text; | 261 base::string16 blacklist_text; |
| 262 switch (extension_service_->extension_prefs()->GetExtensionBlacklistState( | 262 switch (prefs->GetExtensionBlacklistState(extension->id())) { |
| 263 extension->id())) { | |
| 264 case BLACKLISTED_SECURITY_VULNERABILITY: | 263 case BLACKLISTED_SECURITY_VULNERABILITY: |
| 265 blacklist_text = l10n_util::GetStringUTF16( | 264 blacklist_text = l10n_util::GetStringUTF16( |
| 266 IDS_OPTIONS_BLACKLISTED_SECURITY_VULNERABILITY); | 265 IDS_OPTIONS_BLACKLISTED_SECURITY_VULNERABILITY); |
| 267 break; | 266 break; |
| 268 | 267 |
| 269 case BLACKLISTED_CWS_POLICY_VIOLATION: | 268 case BLACKLISTED_CWS_POLICY_VIOLATION: |
| 270 blacklist_text = l10n_util::GetStringUTF16( | 269 blacklist_text = l10n_util::GetStringUTF16( |
| 271 IDS_OPTIONS_BLACKLISTED_CWS_POLICY_VIOLATION); | 270 IDS_OPTIONS_BLACKLISTED_CWS_POLICY_VIOLATION); |
| 272 break; | 271 break; |
| 273 | 272 |
| 274 case BLACKLISTED_POTENTIALLY_UNWANTED: | 273 case BLACKLISTED_POTENTIALLY_UNWANTED: |
| 275 blacklist_text = l10n_util::GetStringUTF16( | 274 blacklist_text = l10n_util::GetStringUTF16( |
| 276 IDS_OPTIONS_BLACKLISTED_POTENTIALLY_UNWANTED); | 275 IDS_OPTIONS_BLACKLISTED_POTENTIALLY_UNWANTED); |
| 277 break; | 276 break; |
| 278 | 277 |
| 279 default: | 278 default: |
| 280 break; | 279 break; |
| 281 } | 280 } |
| 282 extension_data->SetString("blacklistText", blacklist_text); | 281 extension_data->SetString("blacklistText", blacklist_text); |
| 283 | 282 |
| 284 // Force unpacked extensions to show at the top. | 283 // Force unpacked extensions to show at the top. |
| 285 if (Manifest::IsUnpackedLocation(extension->location())) | 284 if (Manifest::IsUnpackedLocation(extension->location())) |
| 286 extension_data->SetInteger("order", 1); | 285 extension_data->SetInteger("order", 1); |
| 287 else | 286 else |
| 288 extension_data->SetInteger("order", 2); | 287 extension_data->SetInteger("order", 2); |
| 289 | 288 |
| 290 if (!ExtensionActionAPI::GetBrowserActionVisibility( | 289 if (!ExtensionActionAPI::GetBrowserActionVisibility(prefs, extension->id())) { |
| 291 extension_service_->extension_prefs(), extension->id())) { | |
| 292 extension_data->SetBoolean("enable_show_button", true); | 290 extension_data->SetBoolean("enable_show_button", true); |
| 293 } | 291 } |
| 294 | 292 |
| 295 // Add views | 293 // Add views |
| 296 base::ListValue* views = new base::ListValue; | 294 base::ListValue* views = new base::ListValue; |
| 297 for (std::vector<ExtensionPage>::const_iterator iter = pages.begin(); | 295 for (std::vector<ExtensionPage>::const_iterator iter = pages.begin(); |
| 298 iter != pages.end(); ++iter) { | 296 iter != pages.end(); ++iter) { |
| 299 base::DictionaryValue* view_value = new base::DictionaryValue; | 297 base::DictionaryValue* view_value = new base::DictionaryValue; |
| 300 if (iter->url.scheme() == kExtensionScheme) { | 298 if (iter->url.scheme() == kExtensionScheme) { |
| 301 // No leading slash. | 299 // No leading slash. |
| (...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 745 results.Set("extensions", extensions_list); | 743 results.Set("extensions", extensions_list); |
| 746 | 744 |
| 747 bool is_managed = profile->IsManaged(); | 745 bool is_managed = profile->IsManaged(); |
| 748 bool developer_mode = | 746 bool developer_mode = |
| 749 !is_managed && | 747 !is_managed && |
| 750 profile->GetPrefs()->GetBoolean(prefs::kExtensionsUIDeveloperMode); | 748 profile->GetPrefs()->GetBoolean(prefs::kExtensionsUIDeveloperMode); |
| 751 results.SetBoolean("profileIsManaged", is_managed); | 749 results.SetBoolean("profileIsManaged", is_managed); |
| 752 results.SetBoolean("developerMode", developer_mode); | 750 results.SetBoolean("developerMode", developer_mode); |
| 753 | 751 |
| 754 bool load_unpacked_disabled = | 752 bool load_unpacked_disabled = |
| 755 extension_service_->extension_prefs()->ExtensionsBlacklistedByDefault(); | 753 ExtensionPrefs::Get(profile)->ExtensionsBlacklistedByDefault(); |
| 756 results.SetBoolean("loadUnpackedDisabled", load_unpacked_disabled); | 754 results.SetBoolean("loadUnpackedDisabled", load_unpacked_disabled); |
| 757 | 755 |
| 758 web_ui()->CallJavascriptFunction( | 756 web_ui()->CallJavascriptFunction( |
| 759 "extensions.ExtensionSettings.returnExtensionsData", results); | 757 "extensions.ExtensionSettings.returnExtensionsData", results); |
| 760 | 758 |
| 761 MaybeRegisterForNotifications(); | 759 MaybeRegisterForNotifications(); |
| 762 UMA_HISTOGRAM_BOOLEAN("ExtensionSettings.ShouldDoVerificationCheck", | 760 UMA_HISTOGRAM_BOOLEAN("ExtensionSettings.ShouldDoVerificationCheck", |
| 763 should_do_verification_check_); | 761 should_do_verification_check_); |
| 764 if (should_do_verification_check_) { | 762 if (should_do_verification_check_) { |
| 765 should_do_verification_check_ = false; | 763 should_do_verification_check_ = false; |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 846 const Extension* extension = | 844 const Extension* extension = |
| 847 extension_service_->GetInstalledExtension(extension_id); | 845 extension_service_->GetInstalledExtension(extension_id); |
| 848 if (!extension || | 846 if (!extension || |
| 849 !management_policy_->UserMayModifySettings(extension, NULL)) { | 847 !management_policy_->UserMayModifySettings(extension, NULL)) { |
| 850 LOG(ERROR) << "Attempt to enable an extension that is non-usermanagable was" | 848 LOG(ERROR) << "Attempt to enable an extension that is non-usermanagable was" |
| 851 << "made. Extension id: " << extension->id(); | 849 << "made. Extension id: " << extension->id(); |
| 852 return; | 850 return; |
| 853 } | 851 } |
| 854 | 852 |
| 855 if (enable_str == "true") { | 853 if (enable_str == "true") { |
| 856 ExtensionPrefs* prefs = extension_service_->extension_prefs(); | 854 ExtensionPrefs* prefs = ExtensionPrefs::Get(extension_service_->profile()); |
| 857 if (prefs->DidExtensionEscalatePermissions(extension_id)) { | 855 if (prefs->DidExtensionEscalatePermissions(extension_id)) { |
| 858 ShowExtensionDisabledDialog( | 856 ShowExtensionDisabledDialog( |
| 859 extension_service_, web_ui()->GetWebContents(), extension); | 857 extension_service_, web_ui()->GetWebContents(), extension); |
| 860 } else if ((prefs->GetDisableReasons(extension_id) & | 858 } else if ((prefs->GetDisableReasons(extension_id) & |
| 861 Extension::DISABLE_UNSUPPORTED_REQUIREMENT) && | 859 Extension::DISABLE_UNSUPPORTED_REQUIREMENT) && |
| 862 !requirements_checker_.get()) { | 860 !requirements_checker_.get()) { |
| 863 // Recheck the requirements. | 861 // Recheck the requirements. |
| 864 scoped_refptr<const Extension> extension = | 862 scoped_refptr<const Extension> extension = |
| 865 extension_service_->GetExtensionById(extension_id, | 863 extension_service_->GetExtensionById(extension_id, |
| 866 true /* include disabled */); | 864 true /* include disabled */); |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 991 prompt_->ReviewPermissions( | 989 prompt_->ReviewPermissions( |
| 992 new BrokerDelegate(AsWeakPtr()), extension, retained_file_paths); | 990 new BrokerDelegate(AsWeakPtr()), extension, retained_file_paths); |
| 993 } | 991 } |
| 994 | 992 |
| 995 void ExtensionSettingsHandler::HandleShowButtonMessage( | 993 void ExtensionSettingsHandler::HandleShowButtonMessage( |
| 996 const base::ListValue* args) { | 994 const base::ListValue* args) { |
| 997 const Extension* extension = GetActiveExtension(args); | 995 const Extension* extension = GetActiveExtension(args); |
| 998 if (!extension) | 996 if (!extension) |
| 999 return; | 997 return; |
| 1000 ExtensionActionAPI::SetBrowserActionVisibility( | 998 ExtensionActionAPI::SetBrowserActionVisibility( |
| 1001 extension_service_->extension_prefs(), extension->id(), true); | 999 ExtensionPrefs::Get(extension_service_->profile()), |
| 1000 extension->id(), |
| 1001 true); |
| 1002 } | 1002 } |
| 1003 | 1003 |
| 1004 void ExtensionSettingsHandler::HandleAutoUpdateMessage( | 1004 void ExtensionSettingsHandler::HandleAutoUpdateMessage( |
| 1005 const base::ListValue* args) { | 1005 const base::ListValue* args) { |
| 1006 ExtensionUpdater* updater = extension_service_->updater(); | 1006 ExtensionUpdater* updater = extension_service_->updater(); |
| 1007 if (updater) { | 1007 if (updater) { |
| 1008 ExtensionUpdater::CheckParams params; | 1008 ExtensionUpdater::CheckParams params; |
| 1009 params.install_immediately = true; | 1009 params.install_immediately = true; |
| 1010 updater->CheckNow(params); | 1010 updater->CheckNow(params); |
| 1011 } | 1011 } |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1076 content::NotificationService::AllBrowserContextsAndSources()); | 1076 content::NotificationService::AllBrowserContextsAndSources()); |
| 1077 registrar_.Add(this, | 1077 registrar_.Add(this, |
| 1078 chrome::NOTIFICATION_BACKGROUND_CONTENTS_NAVIGATED, | 1078 chrome::NOTIFICATION_BACKGROUND_CONTENTS_NAVIGATED, |
| 1079 content::NotificationService::AllBrowserContextsAndSources()); | 1079 content::NotificationService::AllBrowserContextsAndSources()); |
| 1080 registrar_.Add(this, | 1080 registrar_.Add(this, |
| 1081 chrome::NOTIFICATION_BACKGROUND_CONTENTS_DELETED, | 1081 chrome::NOTIFICATION_BACKGROUND_CONTENTS_DELETED, |
| 1082 content::NotificationService::AllBrowserContextsAndSources()); | 1082 content::NotificationService::AllBrowserContextsAndSources()); |
| 1083 registrar_.Add( | 1083 registrar_.Add( |
| 1084 this, | 1084 this, |
| 1085 chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED, | 1085 chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED, |
| 1086 content::Source<ExtensionPrefs>( | 1086 content::Source<ExtensionPrefs>(ExtensionPrefs::Get(profile))); |
| 1087 profile->GetExtensionService()->extension_prefs())); | |
| 1088 registrar_.Add(this, | 1087 registrar_.Add(this, |
| 1089 chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED, | 1088 chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED, |
| 1090 content::NotificationService::AllBrowserContextsAndSources()); | 1089 content::NotificationService::AllBrowserContextsAndSources()); |
| 1091 | 1090 |
| 1092 registrar_.Add(this, | 1091 registrar_.Add(this, |
| 1093 content::NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED, | 1092 content::NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED, |
| 1094 content::NotificationService::AllBrowserContextsAndSources()); | 1093 content::NotificationService::AllBrowserContextsAndSources()); |
| 1095 | 1094 |
| 1096 content::WebContentsObserver::Observe(web_ui()->GetWebContents()); | 1095 content::WebContentsObserver::Observe(web_ui()->GetWebContents()); |
| 1097 | 1096 |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1247 extension_service_->EnableExtension(extension_id); | 1246 extension_service_->EnableExtension(extension_id); |
| 1248 } else { | 1247 } else { |
| 1249 ExtensionErrorReporter::GetInstance()->ReportError( | 1248 ExtensionErrorReporter::GetInstance()->ReportError( |
| 1250 base::UTF8ToUTF16(JoinString(requirement_errors, ' ')), | 1249 base::UTF8ToUTF16(JoinString(requirement_errors, ' ')), |
| 1251 true /* be noisy */); | 1250 true /* be noisy */); |
| 1252 } | 1251 } |
| 1253 requirements_checker_.reset(); | 1252 requirements_checker_.reset(); |
| 1254 } | 1253 } |
| 1255 | 1254 |
| 1256 } // namespace extensions | 1255 } // namespace extensions |
| OLD | NEW |