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

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

Issue 11419307: Garbage Collect the Storage directory on next profile start after an extension uninstall. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Basic code done. 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_service.h
diff --git a/chrome/browser/extensions/extension_service.h b/chrome/browser/extensions/extension_service.h
index 6aa659d315739e267089c22f799d5fb75d72f95d..77c09e238640a79ded41a7eab2eb94e19c6767c9 100644
--- a/chrome/browser/extensions/extension_service.h
+++ b/chrome/browser/extensions/extension_service.h
@@ -825,9 +825,17 @@ class ExtensionService
bool ShouldDelayExtensionUpdate(const std::string& extension_id,
bool wait_for_idle) const;
+ // Helper to search remove an storage directories for extensions with
Charlie Reis 2012/12/05 02:25:40 nit: "search remove an" typo
awong 2012/12/08 01:45:23 Done.
+ // isolated storage that have been orphaned by an uninstall.
+ void GarbageCollectIsolatedStorage();
+ void OnGarbageCollectIsolatedStorageFinished();
+
// extensions::Blacklist::Observer implementation.
virtual void OnBlacklistUpdated() OVERRIDE;
+ void set_delay_all_installs(bool value) { delay_all_installs_ = value; }
Charlie Reis 2012/12/05 02:25:40 Please add a comment to these saying why they're n
awong 2012/12/08 01:45:23 Done.
+ bool delay_all_installs() const { return delay_all_installs_; }
Charlie Reis 2012/12/05 02:25:40 nit: Maybe should_delay_all_installs()? (It sounds
awong 2012/12/08 01:45:23 How about installs_delayed()? should_delay_all_in
+
// The normal profile associated with this ExtensionService.
Profile* profile_;
@@ -852,6 +860,21 @@ class ExtensionService
// The list of extension updates that are waiting to be installed.
ExtensionSet pending_extension_updates_;
+ // The list of extension installs delayed by |delay_all_installs_|.
+ struct PendingInstall {
+ PendingInstall(const extensions::Extension* extension,
+ const syncer::StringOrdinal& page_ordinal,
+ bool has_requirement_errors,
+ bool wait_for_idle);
+ ~PendingInstall();
+
+ scoped_refptr<const extensions::Extension> extension;
+ syncer::StringOrdinal page_ordinal;
+ bool has_requirement_errors;
+ bool wait_for_idle;
+ };
+ std::vector<PendingInstall> pending_extension_installs_;
+
// Hold the set of pending extensions.
extensions::PendingExtensionManager pending_extension_manager_;
@@ -975,6 +998,12 @@ class ExtensionService
// decide to abort.
bool browser_terminating_;
+ // Set to true to delay all new extension installations. Allows garbage
+ // collection of on disk state to proceed without worrying about race
+ // conditions caused by extension installations during the garbage
+ // collection process.
+ bool delay_all_installs_;
+
NaClModuleInfoList nacl_module_list_;
extensions::AppSyncBundle app_sync_bundle_;

Powered by Google App Engine
This is Rietveld 408576698