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

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

Issue 11275069: Perform install tasks for newly installed or upgraded component apps/extensions. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: rebase and move v2 component app added in r169911 (and r170087) into background section in componen… Created 8 years, 1 month 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 7d5436bc7631c2cc0fc947dba72b7f3370609512..13e3d5c5f67272b17b524d1796fa7025dacce171 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -2099,6 +2099,25 @@ void ExtensionService::AddExtension(const Extension* extension) {
DoPostLoadTasks(extension);
}
+void ExtensionService::AddComponentExtension(const Extension* extension) {
+ const std::string old_version_string(
+ extension_prefs_->GetVersionString(extension->id()));
+ const Version old_version(old_version_string);
+
+ if (!old_version.IsValid() || !old_version.Equals(*extension->version())) {
+ VLOG(1) << "Component extension " << extension->name() << " ("
+ << extension->id() << ") installing/upgrading from '"
+ << old_version_string << "' to " << extension->version()->GetString();
+
+ AddNewOrUpdatedExtension(extension,
+ syncer::StringOrdinal(),
+ Extension::ENABLED_COMPONENT);
+ return;
+ }
+
+ AddExtension(extension);
+}
+
void ExtensionService::InitializePermissions(const Extension* extension) {
// If the extension has used the optional permissions API, it will have a
// custom set of active permissions defined in the extension prefs. Here,
@@ -2367,16 +2386,29 @@ void ExtensionService::OnExtensionInstalled(
return;
}
+ // Transfer ownership of |extension|.
+ AddNewOrUpdatedExtension(
+ extension,
+ page_ordinal,
+ initial_enable ? Extension::ENABLED : Extension::DISABLED);
+}
+
+void ExtensionService::AddNewOrUpdatedExtension(
+ const Extension* extension,
+ const syncer::StringOrdinal& page_ordinal,
+ Extension::State initial_state) {
+ CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
extension_prefs_->OnExtensionInstalled(
extension,
- initial_enable ? Extension::ENABLED : Extension::DISABLED,
+ initial_state,
page_ordinal);
// Unpacked extensions default to allowing file access, but if that has been
// overridden, don't reset the value.
if (Extension::ShouldAlwaysAllowFileAccess(extension->location()) &&
- !extension_prefs_->HasAllowFileAccessSetting(id)) {
- extension_prefs_->SetAllowFileAccess(id, true);
+ !extension_prefs_->HasAllowFileAccessSetting(extension->id())) {
+ extension_prefs_->SetAllowFileAccess(extension->id(), true);
}
FinishInstallation(extension);
« no previous file with comments | « chrome/browser/extensions/extension_service.h ('k') | chrome/browser/extensions/extension_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698