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

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

Issue 14973007: Auto-install/uninstall shared module dependencies for extensions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 7 years, 6 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.h
diff --git a/chrome/browser/extensions/extension_service.h b/chrome/browser/extensions/extension_service.h
index 87d1a0c4dc4f41ad5640ed81a287c3d94ebb4bd8..b21c86a9baf0073f42a8bef97dbc413999341f08 100644
--- a/chrome/browser/extensions/extension_service.h
+++ b/chrome/browser/extensions/extension_service.h
@@ -66,7 +66,7 @@ class ExtensionSystem;
class ExtensionUpdater;
class PendingExtensionManager;
class SettingsFrontend;
-} // namespace extensions
+} // namespace extensions
namespace syncer {
class SyncErrorFactory;
@@ -404,6 +404,24 @@ class ExtensionService
virtual void AddComponentExtension(const extensions::Extension* extension)
OVERRIDE;
+ enum ImportStatus {
+ IMPORT_STATUS_OK,
+ IMPORT_STATUS_UNSATISFIED,
+ IMPORT_STATUS_UNRECOVERABLE
+ };
+
+ // Checks an extension's shared module imports to see if they are satisfied.
+ // If they are not, this function adds the dependencies to the pending install
+ // list if |extension| came from the webstore.
+ ImportStatus SatisfyImports(const extensions::Extension* extension);
+
+ // Returns a set of extensions that import a given extension.
+ scoped_ptr<const ExtensionSet> GetDependentExtensions(
+ const extensions::Extension* extension);
+
+ // Uninstalls shared modules that were only referenced by |extension|.
+ void PruneSharedModulesOnUninstall(const extensions::Extension* extension);
+
// Informs the service that an extension's files are in place for loading.
//
// Please make sure the Blacklist is checked some time before calling this
@@ -414,6 +432,9 @@ class ExtensionService
bool has_requirement_errors,
bool wait_for_idle);
+ // Checks for delayed installation for all pending installs.
+ void MaybeFinishDelayedInstallations();
+
// Similar to FinishInstallation, but first checks if there still is an update
// pending for the extension, and makes sure the extension is still idle.
void MaybeFinishDelayedInstallation(const std::string& extension_id);
@@ -761,9 +782,12 @@ class ExtensionService
void ManageBlacklist(const std::set<std::string>& old_blacklisted_ids,
const std::set<std::string>& new_blacklisted_ids);
- // Controls if installs are delayed. See comment for |installs_delayed_|.
- void set_installs_delayed(bool value) { installs_delayed_ = value; }
- bool installs_delayed() const { return installs_delayed_; }
+ // Controls if installs are delayed. See comment for
+ // |installs_delayed_for_gc_|.
+ void set_installs_delayed_for_gc(bool value) {
+ installs_delayed_for_gc_ = value;
+ }
+ bool installs_delayed_for_gc() const { return installs_delayed_for_gc_; }
// The normal profile associated with this ExtensionService.
Profile* profile_;
@@ -795,13 +819,8 @@ class ExtensionService
// they can easily be un-blacklisted.
ExtensionSet blacklisted_extensions_;
- // The list of extension updates that have had their installs delayed because
- // they are waiting for idle.
- ExtensionSet delayed_updates_for_idle_;
-
- // The list of extension installs delayed by |installs_delayed_|.
- // This is a disjoint set from |delayed_updates_for_idle_|. Extensions in
- // the |delayed_installs_| do not need to wait for idle.
+ // The list of extension installs delayed for various reasons. The reason
+ // for delayed install is stored in ExtensionPrefs.
ExtensionSet delayed_installs_;
// Hold the set of pending extensions.
@@ -882,11 +901,11 @@ class ExtensionService
// decide to abort.
bool browser_terminating_;
- // Set to true to delay all new extension installations. Acts as a lock
- // to allow background processing of tasks such as garbage collection of
- // on-disk state without needing to worry about race conditions caused
- // by extension installation and reinstallation.
- bool installs_delayed_;
+ // Set to true to delay all new extension installations. Acts as a lock to
+ // allow background processing of garbage collection of on-disk state without
+ // needing to worry about race conditions caused by extension installation and
+ // reinstallation.
+ bool installs_delayed_for_gc_;
// Set to true if this is the first time this ExtensionService has run.
// Used for specially handling external extensions that are installed the
« no previous file with comments | « chrome/browser/extensions/extension_prefs_unittest.cc ('k') | chrome/browser/extensions/extension_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698