Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6016)

Unified Diff: chrome/browser/extensions/extension_service.cc

Issue 10689097: Enforce the 'requirements' field in manifests. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: All New! (Removed sync tracing code) Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_service.cc
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index 2eff617ac029c5c9343cdf57911c671d6bf4e4e7..49cb1bdc5aa71050ccbae913ddfc6639046cf9ae 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -63,6 +63,7 @@
#include "chrome/browser/extensions/installed_loader.h"
#include "chrome/browser/extensions/pending_extension_manager.h"
#include "chrome/browser/extensions/permissions_updater.h"
+#include "chrome/browser/extensions/requirements_provider.h"
#include "chrome/browser/extensions/settings/settings_frontend.h"
#include "chrome/browser/extensions/unpacked_installer.h"
#include "chrome/browser/extensions/updater/extension_updater.h"
@@ -116,7 +117,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
@@ -343,7 +343,7 @@ ExtensionService::ExtensionService(Profile* profile,
api_resource_controller_(NULL),
app_shortcut_manager_(profile) {
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
+ requirements_provider_.reset(new extensions::RequirementsProvider());
// Figure out if extension installation should be enabled.
if (command_line->HasSwitch(switches::kDisableExtensions)) {
extensions_enabled_ = false;
@@ -609,7 +609,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);
@@ -883,6 +882,19 @@ void ExtensionService::DisableExtension(
extension_warnings_.ClearWarnings(warnings);
}
+void ExtensionService::UnsupportedRequirements(const std::string& extension_id,
+ const string16& error,
+ bool disable_extension) {
+ if (disable_extension)
+ DisableExtension(extension_id, Extension::DISABLE_UNSUPPORTED_REQUIREMENTS);
+ Extension::InstallWarningVector warnings;
+ warnings.push_back(Extension::InstallWarning(
+ Extension::InstallWarning::FORMAT_TEXT, UTF16ToUTF8(error)));
+ const Extension* extension = GetExtensionById(extension_id, true);
+ if (extension)
+ const_cast<Extension*>(extension)->AddInstallWarnings(warnings);
+}
+
void ExtensionService::GrantPermissionsAndEnableExtension(
const Extension* extension, bool record_oauth2_grant) {
CHECK(extension);
@@ -1924,6 +1936,20 @@ void ExtensionService::AddExtension(const Extension* extension) {
InitializePermissions(extension);
bool disabled = extension_prefs_->IsExtensionDisabled(extension->id());
+
+ std::list<string16> errors;
+ bool async;
+ if (!requirements_provider_->Supports(extension, &errors, &async, this)) {
Aaron Boodman 2012/07/22 17:46:25 I think that this is going to result in a GPU proc
+ disabled = true;
+ Extension::InstallWarningVector warnings;
+ std::list<string16>::iterator it;
+ for (it = errors.begin(); it != errors.end(); ++it) {
+ warnings.push_back(Extension::InstallWarning(
+ Extension::InstallWarning::FORMAT_TEXT, UTF16ToUTF8(*it)));
+ }
+ const_cast<Extension*>(extension)->AddInstallWarnings(warnings);
+ }
+
if (disabled) {
disabled_extensions_.Insert(scoped_extension);
SyncExtensionChangeIfNeeded(*extension);

Powered by Google App Engine
This is Rietveld 408576698