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

Side by Side 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 required due to r169770 (extension_service.cc) and r169694 (component_loader.cc) Created 8 years 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 unified diff | Download patch
OLDNEW
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/extensions/extension_service.h" 5 #include "chrome/browser/extensions/extension_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 2079 matching lines...) Expand 10 before | Expand all | Expand 10 after
2090 extension_prefs_->extension_sorting()->EnsureValidOrdinals( 2090 extension_prefs_->extension_sorting()->EnsureValidOrdinals(
2091 extension->id(), syncer::StringOrdinal()); 2091 extension->id(), syncer::StringOrdinal());
2092 } 2092 }
2093 2093
2094 extensions_.Insert(extension); 2094 extensions_.Insert(extension);
2095 SyncExtensionChangeIfNeeded(*extension); 2095 SyncExtensionChangeIfNeeded(*extension);
2096 NotifyExtensionLoaded(extension); 2096 NotifyExtensionLoaded(extension);
2097 DoPostLoadTasks(extension); 2097 DoPostLoadTasks(extension);
2098 } 2098 }
2099 2099
2100 void ExtensionService::AddComponentExtension(const Extension* extension) {
2101 const std::string old_version_string(
2102 extension_prefs_->GetVersionString(extension->id()));
2103 const Version old_version(old_version_string);
2104
2105 if (!old_version.IsValid() || !old_version.Equals(*extension->version())) {
2106 VLOG(1) << "Component extension " << extension->name() << " ("
2107 << extension->id() << ") installing/upgrading from '"
2108 << old_version_string << "' to " << extension->version()->GetString();
2109
2110 AddNewOrUpdatedExtension(extension,
2111 syncer::StringOrdinal(),
2112 Extension::ENABLED_COMPONENT);
2113 return;
2114 }
2115
2116 AddExtension(extension);
2117 }
2118
2100 void ExtensionService::InitializePermissions(const Extension* extension) { 2119 void ExtensionService::InitializePermissions(const Extension* extension) {
2101 // If the extension has used the optional permissions API, it will have a 2120 // If the extension has used the optional permissions API, it will have a
2102 // custom set of active permissions defined in the extension prefs. Here, 2121 // custom set of active permissions defined in the extension prefs. Here,
2103 // we update the extension's active permissions based on the prefs. 2122 // we update the extension's active permissions based on the prefs.
2104 scoped_refptr<PermissionSet> active_permissions = 2123 scoped_refptr<PermissionSet> active_permissions =
2105 extension_prefs()->GetActivePermissions(extension->id()); 2124 extension_prefs()->GetActivePermissions(extension->id());
2106 2125
2107 if (active_permissions.get()) { 2126 if (active_permissions.get()) {
2108 // We restrict the active permissions to be within the bounds defined in the 2127 // We restrict the active permissions to be within the bounds defined in the
2109 // extension's manifest. 2128 // extension's manifest.
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
2358 2377
2359 // Transfer ownership of |extension|. 2378 // Transfer ownership of |extension|.
2360 pending_extension_updates_.Insert(extension); 2379 pending_extension_updates_.Insert(extension);
2361 2380
2362 // Notify extension of available update. 2381 // Notify extension of available update.
2363 extensions::RuntimeEventRouter::DispatchOnUpdateAvailableEvent( 2382 extensions::RuntimeEventRouter::DispatchOnUpdateAvailableEvent(
2364 profile_, id, extension->manifest()->value()); 2383 profile_, id, extension->manifest()->value());
2365 return; 2384 return;
2366 } 2385 }
2367 2386
2387 // Transfer ownership of |extension|.
2388 AddNewOrUpdatedExtension(
2389 extension,
2390 page_ordinal,
2391 initial_enable ? Extension::ENABLED : Extension::DISABLED);
2392 }
2393
2394 void ExtensionService::AddNewOrUpdatedExtension(
2395 const Extension* extension,
2396 const syncer::StringOrdinal& page_ordinal,
2397 Extension::State initial_state) {
2398 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
2399
2368 extension_prefs_->OnExtensionInstalled( 2400 extension_prefs_->OnExtensionInstalled(
2369 extension, 2401 extension,
2370 initial_enable ? Extension::ENABLED : Extension::DISABLED, 2402 initial_state,
2371 page_ordinal); 2403 page_ordinal);
2372 2404
2373 // Unpacked extensions default to allowing file access, but if that has been 2405 // Unpacked extensions default to allowing file access, but if that has been
2374 // overridden, don't reset the value. 2406 // overridden, don't reset the value.
2375 if (Extension::ShouldAlwaysAllowFileAccess(extension->location()) && 2407 if (Extension::ShouldAlwaysAllowFileAccess(extension->location()) &&
2376 !extension_prefs_->HasAllowFileAccessSetting(id)) { 2408 !extension_prefs_->HasAllowFileAccessSetting(extension->id())) {
2377 extension_prefs_->SetAllowFileAccess(id, true); 2409 extension_prefs_->SetAllowFileAccess(extension->id(), true);
2378 } 2410 }
2379 2411
2380 FinishInstallation(extension); 2412 FinishInstallation(extension);
tapted 2012/11/28 07:30:35 notable change from rebase
2381 } 2413 }
2382 2414
2383 void ExtensionService::MaybeFinishDelayedInstallation( 2415 void ExtensionService::MaybeFinishDelayedInstallation(
2384 const std::string& extension_id) { 2416 const std::string& extension_id) {
2385 // Check if the extension already got updated. 2417 // Check if the extension already got updated.
2386 if (!pending_extension_updates_.Contains(extension_id)) 2418 if (!pending_extension_updates_.Contains(extension_id))
2387 return; 2419 return;
2388 // Check if the extension is idle. 2420 // Check if the extension is idle.
2389 if (!IsExtensionIdle(extension_id)) 2421 if (!IsExtensionIdle(extension_id))
2390 return; 2422 return;
(...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after
2978 extension_id, kOnUpdateAvailableEvent); 3010 extension_id, kOnUpdateAvailableEvent);
2979 } else { 3011 } else {
2980 // Delay installation if the extension is not idle. 3012 // Delay installation if the extension is not idle.
2981 return !IsExtensionIdle(extension_id); 3013 return !IsExtensionIdle(extension_id);
2982 } 3014 }
2983 } 3015 }
2984 3016
2985 void ExtensionService::OnBlacklistUpdated() { 3017 void ExtensionService::OnBlacklistUpdated() {
2986 CheckManagementPolicy(); 3018 CheckManagementPolicy();
2987 } 3019 }
OLDNEW
« 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