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

Side by Side Diff: chrome/browser/extensions/extension_service.cc

Issue 11411227: Garbage collect extensions only if there are no pending extension installs that could still be usin… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/extensions/pending_extension_manager.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 static const int kOmniboxIconPaddingLeft = 0; 173 static const int kOmniboxIconPaddingLeft = 0;
174 static const int kOmniboxIconPaddingRight = 0; 174 static const int kOmniboxIconPaddingRight = 0;
175 #endif 175 #endif
176 176
177 // Prompt the user this many times before considering an extension acknowledged. 177 // Prompt the user this many times before considering an extension acknowledged.
178 static const int kMaxExtensionAcknowledgePromptCount = 3; 178 static const int kMaxExtensionAcknowledgePromptCount = 3;
179 179
180 // Wait this many seconds after an extensions becomes idle before updating it. 180 // Wait this many seconds after an extensions becomes idle before updating it.
181 static const int kUpdateIdleDelay = 5; 181 static const int kUpdateIdleDelay = 5;
182 182
183 // Wait this many seconds before trying to garbage collect extensions again.
184 static const int kGarbageCollectRetryDelay = 30;
James Cook 2012/11/28 18:15:29 optional nit: Constants in anonymous namespace don
185
183 const char* kNaClPluginMimeType = "application/x-nacl"; 186 const char* kNaClPluginMimeType = "application/x-nacl";
184 187
185 static bool IsSyncableExtension(const Extension& extension) { 188 static bool IsSyncableExtension(const Extension& extension) {
186 return extension.GetSyncType() == Extension::SYNC_TYPE_EXTENSION; 189 return extension.GetSyncType() == Extension::SYNC_TYPE_EXTENSION;
187 } 190 }
188 191
189 static bool IsSyncableApp(const Extension& extension) { 192 static bool IsSyncableApp(const Extension& extension) {
190 return extension.GetSyncType() == Extension::SYNC_TYPE_APP; 193 return extension.GetSyncType() == Extension::SYNC_TYPE_APP;
191 } 194 }
192 195
(...skipping 1794 matching lines...) Expand 10 before | Expand all | Expand 10 after
1987 void ExtensionService::ReloadExtensions() { 1990 void ExtensionService::ReloadExtensions() {
1988 UnloadAllExtensions(); 1991 UnloadAllExtensions();
1989 component_loader_->LoadAll(); 1992 component_loader_->LoadAll();
1990 extensions::InstalledLoader(this).LoadAllExtensions(); 1993 extensions::InstalledLoader(this).LoadAllExtensions();
1991 } 1994 }
1992 1995
1993 void ExtensionService::GarbageCollectExtensions() { 1996 void ExtensionService::GarbageCollectExtensions() {
1994 if (extension_prefs_->pref_service()->ReadOnly()) 1997 if (extension_prefs_->pref_service()->ReadOnly())
1995 return; 1998 return;
1996 1999
2000 if (pending_extension_manager()->HasPendingExtensions()) {
2001 // Don't garbage collect while there are pending installations, which may
2002 // be using the temporary installation directory. Try to garbage collect
2003 // again later.
2004 MessageLoop::current()->PostDelayedTask(
2005 FROM_HERE,
2006 base::Bind(&ExtensionService::GarbageCollectExtensions, AsWeakPtr()),
2007 base::TimeDelta::FromSeconds(kGarbageCollectRetryDelay));
2008 return;
2009 }
2010
1997 scoped_ptr<extensions::ExtensionPrefs::ExtensionsInfo> info( 2011 scoped_ptr<extensions::ExtensionPrefs::ExtensionsInfo> info(
1998 extension_prefs_->GetInstalledExtensionsInfo()); 2012 extension_prefs_->GetInstalledExtensionsInfo());
1999 2013
2000 std::multimap<std::string, FilePath> extension_paths; 2014 std::multimap<std::string, FilePath> extension_paths;
2001 for (size_t i = 0; i < info->size(); ++i) 2015 for (size_t i = 0; i < info->size(); ++i)
2002 extension_paths.insert(std::make_pair(info->at(i)->extension_id, 2016 extension_paths.insert(std::make_pair(info->at(i)->extension_id,
2003 info->at(i)->extension_path)); 2017 info->at(i)->extension_path));
2004 2018
2005 info = extension_prefs_->GetAllIdleInstallInfo(); 2019 info = extension_prefs_->GetAllIdleInstallInfo();
2006 for (size_t i = 0; i < info->size(); ++i) 2020 for (size_t i = 0; i < info->size(); ++i)
(...skipping 978 matching lines...) Expand 10 before | Expand all | Expand 10 after
2985 extension_id, kOnUpdateAvailableEvent); 2999 extension_id, kOnUpdateAvailableEvent);
2986 } else { 3000 } else {
2987 // Delay installation if the extension is not idle. 3001 // Delay installation if the extension is not idle.
2988 return !IsExtensionIdle(extension_id); 3002 return !IsExtensionIdle(extension_id);
2989 } 3003 }
2990 } 3004 }
2991 3005
2992 void ExtensionService::OnBlacklistUpdated() { 3006 void ExtensionService::OnBlacklistUpdated() {
2993 CheckManagementPolicy(); 3007 CheckManagementPolicy();
2994 } 3008 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/extensions/pending_extension_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698