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

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

Issue 160311: Pull CrxInstaller out of ExtensionsService. (Closed)
Patch Set: Fix leak of SandboxedExtensionUnpacker Created 11 years, 5 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/extensions_service.h
diff --git a/chrome/browser/extensions/extensions_service.h b/chrome/browser/extensions/extensions_service.h
index 9fd5bc6b752ca7acc0b578c2324fa418c75aaba4..1d180d05009f89c0c8d09141a26b5483577eed66 100644
--- a/chrome/browser/extensions/extensions_service.h
+++ b/chrome/browser/extensions/extensions_service.h
@@ -37,20 +37,13 @@ class SiteInstance;
typedef std::vector<Extension*> ExtensionList;
-// A callback for when installs finish. If the Extension* parameter is
-// null then the install failed.
-typedef Callback2<const FilePath&, Extension*>::Type ExtensionInstallCallback;
-
// This is an interface class to encapsulate the dependencies that
// ExtensionUpdater has on ExtensionsService. This allows easy mocking.
class ExtensionUpdateService {
public:
virtual ~ExtensionUpdateService() {}
virtual const ExtensionList* extensions() const = 0;
- virtual void UpdateExtension(const std::string& id,
- const FilePath& path,
- bool alert_on_error,
- ExtensionInstallCallback* callback) = 0;
+ virtual void UpdateExtension(const std::string& id, const FilePath& path) = 0;
virtual Extension* GetExtensionById(const std::string& id) = 0;
};
@@ -112,15 +105,9 @@ class ExtensionsService
const GURL& referrer_url);
// Updates a currently-installed extension with the contents from
- // |extension_path|. The |alert_on_error| parameter controls whether the
- // user will be notified in the event of failure. If |callback| is non-null,
- // it will be called back when the update is finished (in success or failure).
- // This is useful to know when the service is done using |extension_path|.
- // Also, this takes ownership of |callback| if it's non-null.
+ // |extension_path|.
virtual void UpdateExtension(const std::string& id,
- const FilePath& extension_path,
- bool alert_on_error,
- ExtensionInstallCallback* callback);
+ const FilePath& extension_path);
// Uninstalls the specified extension. Callers should only call this method
// with extensions that exist. |external_uninstall| is a magical parameter
@@ -166,7 +153,26 @@ class ExtensionsService
void SetProviderForTesting(Extension::Location location,
ExternalExtensionProvider* test_provider);
- void SetExtensionsEnabled(bool enabled);
+ // Called by the backend when the initial extension load has completed.
+ void OnLoadedInstalledExtensions();
+
+ // Called by the backend when extensions have been loaded.
+ void OnExtensionsLoaded(ExtensionList* extensions);
+
+ // Called by the backend when an extension has been installed.
+ void OnExtensionInstalled(Extension* extension);
+
+ // Called by the backend when an attempt was made to reinstall the same
+ // version of an existing extension.
+ void OnExtensionOverinstallAttempted(const std::string& id);
+
+ // Called by the backend when an external extension is found.
+ void OnExternalExtensionFound(const std::string& id,
+ const std::string& version,
+ const FilePath& path,
+ Extension::Location location);
+
+ void set_extensions_enabled(bool enabled) { extensions_enabled_ = enabled; }
bool extensions_enabled() { return extensions_enabled_; }
void set_show_extensions_prompts(bool enabled) {
@@ -186,31 +192,6 @@ class ExtensionsService
bool is_ready() { return ready_; }
private:
- // For OnExtensionLoaded, OnExtensionInstalled, and
- // OnExtensionVersionReinstalled.
- friend class ExtensionsServiceBackend;
-
- // Called by the backend when the initial extension load has completed.
- void OnLoadedInstalledExtensions();
-
- // Called by the backend when extensions have been loaded.
- void OnExtensionsLoaded(ExtensionList* extensions);
-
- // Called by the backend when an extension has been installed.
- void OnExtensionInstalled(const FilePath& path, Extension* extension,
- Extension::InstallType install_type);
-
- // Calls and then removes any registered install callback for |path|.
- void FireInstallCallback(const FilePath& path, Extension* extension);
-
- // Called by the backend when there was an error installing an extension.
- void OnExtenionInstallError(const FilePath& path);
-
- // Called by the backend when an attempt was made to reinstall the same
- // version of an existing extension.
- void OnExtensionOverinstallAttempted(const std::string& id,
- const FilePath& path);
-
// Show a confirm installation infobar on the currently active tab.
// TODO(aa): This should be moved up into the UI and attached to the tab it
// actually occured in. This requires some modularization of
@@ -241,10 +222,6 @@ class ExtensionsService
// The backend that will do IO on behalf of this instance.
scoped_refptr<ExtensionsServiceBackend> backend_;
- // Stores data we'll need to do callbacks as installs complete.
- typedef std::map<FilePath, linked_ptr<ExtensionInstallCallback> > CallbackMap;
- CallbackMap install_callbacks_;
-
// Is the service ready to go?
bool ready_;
@@ -264,14 +241,10 @@ class ExtensionsServiceBackend
// |extension_prefs| contains a dictionary value that points to the extension
// preferences.
ExtensionsServiceBackend(const FilePath& install_directory,
- ResourceDispatcherHost* rdh,
- MessageLoop* frontend_loop,
- bool extensions_enabled);
+ MessageLoop* frontend_loop);
virtual ~ExtensionsServiceBackend();
- void set_extensions_enabled(bool enabled) { extensions_enabled_ = enabled; }
-
// Loads the installed extensions.
// Errors are reported through ExtensionErrorReporter. On completion,
// OnExtensionsLoaded() is called with any successfully loaded extensions.
@@ -288,19 +261,6 @@ class ExtensionsServiceBackend
void LoadSingleExtension(const FilePath &path,
scoped_refptr<ExtensionsService> frontend);
- // Install the extension file at |extension_path|. Errors are reported through
- // ExtensionErrorReporter. OnExtensionInstalled is called in the frontend on
- // success.
- void InstallExtension(const FilePath& extension_path, bool from_gallery,
- scoped_refptr<ExtensionsService> frontend);
-
- // Similar to InstallExtension, but |extension_path| must be an updated
- // version of an installed extension with id of |id|.
- void UpdateExtension(const std::string& id,
- const FilePath& extension_path,
- bool alert_on_error,
- scoped_refptr<ExtensionsService> frontend);
-
// Check externally updated extensions for updates and install if necessary.
// Errors are reported through ExtensionErrorReporter. Succcess is not
// reported.
@@ -318,24 +278,13 @@ class ExtensionsServiceBackend
// ExternalExtensionProvider::Visitor implementation.
virtual void OnExternalExtensionFound(const std::string& id,
const Version* version,
- const FilePath& path);
+ const FilePath& path,
+ Extension::Location location);
private:
- class UnpackerClient;
- friend class UnpackerClient;
-
// Loads a single installed extension.
void LoadInstalledExtension(const std::string& id, const FilePath& path,
Extension::Location location);
- // Install a crx file at |extension_path|. If |expected_id| is not empty, it's
- // verified against the extension's manifest before installation. If the
- // extension is already installed, install the new version only if its version
- // number is greater than the current installed version. If |silent| is true,
- // the confirmation dialog will not pop up.
- void InstallOrUpdateExtension(const FilePath& extension_path,
- bool from_gallery,
- const std::string& expected_id, bool silent);
-
// Finish installing the extension in |crx_path| after it has been unpacked to
// |unpacked_path|. If |expected_id| is not empty, it's verified against the
// extension's manifest before installation. If |silent| is true, there will
@@ -347,9 +296,7 @@ class ExtensionsServiceBackend
const FilePath& crx_path,
const FilePath& unpacked_path,
Extension* extension,
- const std::string expected_id,
- bool silent,
- bool from_gallery);
+ const std::string expected_id);
// Notify the frontend that there was an error loading an extension.
void ReportExtensionLoadError(const FilePath& extension_path,
@@ -362,11 +309,6 @@ class ExtensionsServiceBackend
void ReportExtensionInstallError(const FilePath& extension_path,
const std::string& error);
- // Notify the frontend that an attempt was made (but not carried out) to
- // install the same version of an existing extension.
- void ReportExtensionOverinstallAttempted(const std::string& id,
- const FilePath& path);
-
// Lookup an external extension by |id| by going through all registered
// external extension providers until we find a provider that contains an
// extension that matches. If |version| is not NULL, the extension version
@@ -390,19 +332,12 @@ class ExtensionsServiceBackend
// The top-level extensions directory being installed to.
FilePath install_directory_;
- // We only need a pointer to this to pass along to other interfaces.
- ResourceDispatcherHost* resource_dispatcher_host_;
-
// Whether errors result in noisy alerts.
bool alert_on_error_;
// The message loop to use to call the frontend.
MessageLoop* frontend_loop_;
- // Whether non-theme extensions are enabled (themes and externally registered
- // extensions are always enabled).
- bool extensions_enabled_;
-
// A map of all external extension providers.
typedef std::map<Extension::Location,
linked_ptr<ExternalExtensionProvider> > ProviderMap;
« no previous file with comments | « chrome/browser/extensions/extension_updater_unittest.cc ('k') | chrome/browser/extensions/extensions_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698