Index: chrome/browser/extensions/extension_webstore_private_api.h |
diff --git a/chrome/browser/extensions/extension_webstore_private_api.h b/chrome/browser/extensions/extension_webstore_private_api.h |
index f1021e1955e74bb6f33b3b5b862f9fd80143f315..90625e3b6e44cb0b2ca02d98695c9fd07d87313f 100644 |
--- a/chrome/browser/extensions/extension_webstore_private_api.h |
+++ b/chrome/browser/extensions/extension_webstore_private_api.h |
@@ -27,6 +27,9 @@ class WebstorePrivateApi { |
// Allows you to override the WebstoreInstaller delegate for testing. |
static void SetWebstoreInstallerDelegateForTesting( |
WebstoreInstaller::Delegate* delegate); |
+ |
+ // Lets tests provide an extension ID that can be installed silently. |
+ static void SetTrustedIDForTesting(const char* extension_id); |
}; |
class BeginInstallWithManifestFunction |
@@ -109,6 +112,59 @@ class CompleteInstallFunction : public SyncExtensionFunction { |
DECLARE_EXTENSION_FUNCTION_NAME("webstorePrivate.completeInstall"); |
}; |
+class SilentlyInstallFunction : public AsyncExtensionFunction, |
+ public WebstoreInstallHelper::Delegate, |
+ public WebstoreInstaller::Delegate { |
+ public: |
+ SilentlyInstallFunction(); |
+ |
+ // Result codes for the return value. If you change this, make sure to |
+ // update the description for the silentlyInstall callback in |
+ // extension_api.json. |
+ enum ResultCode { |
+ ERROR_NONE = 0, |
+ |
+ // An unspecified error occurred. |
+ UNKNOWN_ERROR, |
+ |
+ // The manifest failed to parse correctly. |
+ MANIFEST_ERROR, |
+ |
+ // The extension id was invalid. |
+ INVALID_ID, |
+ |
+ // The page does not have permission to call this function. |
+ PERMISSION_DENIED, |
+ }; |
+ |
+ // WebstoreInstallHelper::Delegate implementation. |
+ virtual void OnWebstoreParseSuccess( |
+ const std::string& id, |
+ const SkBitmap& icon, |
+ base::DictionaryValue* parsed_manifest) OVERRIDE; |
+ virtual void OnWebstoreParseFailure( |
+ const std::string& id, |
+ InstallHelperResultCode result_code, |
+ const std::string& error_message) OVERRIDE; |
+ |
+ // WebstoreInstaller::Delegate implementation. |
+ virtual void OnExtensionInstallSuccess(const std::string& id) OVERRIDE; |
+ virtual void OnExtensionInstallFailure(const std::string& id, |
+ const std::string& error) OVERRIDE; |
+ |
+ protected: |
+ virtual ~SilentlyInstallFunction(); |
+ virtual bool RunImpl() OVERRIDE; |
+ |
+ // Sets the result_ as a string based on |code|. |
+ void SetResult(ResultCode code); |
+ |
+ private: |
+ std::string id_; |
+ std::string manifest_; |
+ DECLARE_EXTENSION_FUNCTION_NAME("webstorePrivate.silentlyInstall"); |
+}; |
+ |
class GetBrowserLoginFunction : public SyncExtensionFunction { |
virtual bool RunImpl(); |
DECLARE_EXTENSION_FUNCTION_NAME("webstorePrivate.getBrowserLogin"); |