Chromium Code Reviews| Index: chrome/browser/extensions/extension_service.cc |
| diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc |
| index e60dbe39081567893a743b19b050d96b25decdb3..3834a3a8ce2eb5a62da966b7484d574ea7a57828 100644 |
| --- a/chrome/browser/extensions/extension_service.cc |
| +++ b/chrome/browser/extensions/extension_service.cc |
| @@ -93,6 +93,7 @@ |
| #include "chrome/common/extensions/extension_manifest_constants.h" |
| #include "chrome/common/extensions/extension_messages.h" |
| #include "chrome/common/extensions/extension_resource.h" |
| +#include "chrome/common/extensions/requirements_provider.h" |
| #include "chrome/common/pref_names.h" |
| #include "chrome/common/url_constants.h" |
| #include "content/public/browser/browser_thread.h" |
| @@ -119,7 +120,6 @@ |
| #include "chrome/browser/chromeos/extensions/input_method_event_router.h" |
| #include "chrome/browser/chromeos/extensions/media_player_event_router.h" |
| #include "chrome/browser/chromeos/input_method/input_method_manager.h" |
| -#include "chrome/browser/extensions/extension_input_ime_api.h" |
| #include "webkit/fileapi/file_system_context.h" |
| #include "webkit/fileapi/file_system_mount_point_provider.h" |
| #endif |
| @@ -346,7 +346,7 @@ ExtensionService::ExtensionService(Profile* profile, |
| api_resource_controller_(NULL), |
| app_shortcut_manager_(profile) { |
| CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| - |
| + requirements_provider_.reset(extensions::RequirementsProvider::Create()); |
| // Figure out if extension installation should be enabled. |
| if (command_line->HasSwitch(switches::kDisableExtensions)) { |
| extensions_enabled_ = false; |
| @@ -578,6 +578,7 @@ bool ExtensionService::UpdateExtension( |
| // We want a silent install only for non-pending extensions and |
| // pending extensions that have install_silently set. |
| Browser* browser = browser::FindLastActiveWithProfile(profile_); |
| + |
| ExtensionInstallPrompt* client = |
| (!pending_extension_info || pending_extension_info->install_silently()) ? |
| NULL : chrome::CreateExtensionInstallPromptWithBrowser(browser); |
| @@ -613,7 +614,6 @@ bool ExtensionService::UpdateExtension( |
| creation_flags |= Extension::FROM_BOOKMARK; |
| installer->set_creation_flags(creation_flags); |
| - |
| installer->set_delete_source(true); |
| installer->set_download_url(download_url); |
| installer->set_install_cause(extension_misc::INSTALL_CAUSE_UPDATE); |
| @@ -1931,6 +1931,17 @@ void ExtensionService::AddExtension(const Extension* extension) { |
| InitializePermissions(extension); |
| bool disabled = extension_prefs_->IsExtensionDisabled(extension->id()); |
| + |
| + string16 error; |
| + if (!requirements_provider_->Supports(*extension->manifest(), &error)) { |
|
Aaron Boodman
2012/07/16 21:16:12
Didn't it look like some of the requirements neede
|
| + disabled = true; |
| + Extension::InstallWarningVector warnings; |
| + warnings.push_back(Extension::InstallWarning( |
| + Extension::InstallWarning::FORMAT_TEXT, UTF16ToUTF8(error))); |
| + // TODO(eriq): Avoid this messy cast. |
| + const_cast<Extension*>(extension)->AddInstallWarnings(warnings); |
| + } |
| + |
| if (disabled) { |
| disabled_extensions_.Insert(scoped_extension); |
| SyncExtensionChangeIfNeeded(*extension); |