Index: chrome/browser/extensions/webstore_standalone_installer.h |
diff --git a/chrome/browser/extensions/webstore_standalone_installer.h b/chrome/browser/extensions/webstore_standalone_installer.h |
index 1013fa7eda96a8cb4ecb7973cf6bb36c04d9fbbd..5daa0cc3bb703226647ca577286628b4cd03eba7 100644 |
--- a/chrome/browser/extensions/webstore_standalone_installer.h |
+++ b/chrome/browser/extensions/webstore_standalone_installer.h |
@@ -47,6 +47,35 @@ class WebstoreStandaloneInstaller |
public WebstoreInstaller::Delegate, |
public WebstoreInstallHelper::Delegate { |
public: |
+ enum InstallResult { |
+ // Successful install. |
+ INSTALL_SUCCESS, |
+ // Unknown error. |
+ INSTALL_UNKNOWN_ERROR, |
+ // The install was aborted as the requestor is no longer alive. |
+ INSTALL_ABORTED, |
+ // The installation is not permitted. |
+ INSTALL_NOT_PERMITTED, |
+ // Invalid Chrome Web Store item ID. |
+ INSTALL_INVALID_ID, |
+ // Failed to retrieve extension metadata from the Web Store. |
+ INSTALL_WEBSTORE_REQUEST_ERROR, |
+ // The extension metadata retrieved from the Web Store was invalid. |
+ INSTALL_INVALID_WEBSTORE_RESPONSE, |
+ // An error occurred while parsing the extension manifest retrieved from the |
+ // Web Store. |
+ INSTALL_INVALID_MANIFEST, |
+ // Failed to retrieve the extension's icon from the Web Store, or the icon |
+ // was invalid. |
+ INSTALL_ICON_ERROR, |
+ // The user cancelled the installation. |
+ INSTALL_USER_CANCELLED, |
+ // The extension is blacklisted. |
+ INSTALL_BLACKLISTED, |
+ // Unsatisfied dependencies, such as shared modules. |
+ INSTALL_MISSING_DEPENDENCIES |
asargent_no_longer_on_chrome
2014/06/18 20:25:10
optional nit: I would personally find the comments
|
+ }; |
+ |
// A callback for when the install process completes, successfully or not. If |
// there was a failure, |success| will be false and |error| may contain a |
// developer-readable error message about why it failed. |
@@ -60,9 +89,19 @@ class WebstoreStandaloneInstaller |
protected: |
virtual ~WebstoreStandaloneInstaller(); |
+ // Called when the install should be aborted. The callback is cleared. |
void AbortInstall(); |
- void InvokeCallback(const std::string& error); |
- virtual void CompleteInstall(const std::string& error); |
+ |
+ // Called when the install is complete. |
+ virtual void CompleteInstall(InstallResult result, const std::string& error); |
+ |
+ // Called when the installer should proceed to prompt the user. |
+ void ProceedWithInstallPrompt(); |
+ |
+ // Lazily creates a dummy extension for display from the parsed manifest. This |
+ // is safe to call from OnManifestParsed() onwards. The manifest may be |
+ // invalid, thus the caller must check that the return value is not NULL. |
+ scoped_refptr<const Extension> GetLocalizedExtensionForDisplay(); |
// Template Method's hooks to be implemented by subclasses. |
@@ -108,11 +147,12 @@ class WebstoreStandaloneInstaller |
const base::DictionaryValue& webstore_data, |
std::string* error) const = 0; |
- // Perform all necessary checks after the manifest has been parsed to make |
- // sure that the install should still proceed. |
- virtual bool CheckInstallValid( |
- const base::DictionaryValue& manifest, |
- std::string* error); |
+ // Will be called after the extension's manifest has been successfully parsed. |
+ // Subclasses can perform asynchronous checks at this point and call |
+ // ProceedWithInstallPrompt() to proceed with the install or otherwise call |
+ // CompleteInstall() with an error code. The default implementation calls |
+ // ProceedWithInstallPrompt(). |
+ virtual void OnManifestParsed(); |
// Returns an install UI to be shown. By default, this returns an install UI |
// that is a transient child of the host window for GetWebContents(). |
@@ -137,6 +177,9 @@ class WebstoreStandaloneInstaller |
Profile* profile() const { return profile_; } |
const std::string& id() const { return id_; } |
const base::DictionaryValue* manifest() const { return manifest_.get(); } |
+ const Extension* localized_extension_for_display() const { |
+ return localized_extension_for_display_.get(); |
+ } |
private: |
friend class base::RefCountedThreadSafe<WebstoreStandaloneInstaller>; |