Index: chrome/browser/extensions/crx_installer.h |
diff --git a/chrome/browser/extensions/crx_installer.h b/chrome/browser/extensions/crx_installer.h |
index 1cad3601bc61cfb936cb19036510cc23d3db9082..a6c2f013a38fb06f4fd603e4ab566ea4fda484b9 100644 |
--- a/chrome/browser/extensions/crx_installer.h |
+++ b/chrome/browser/extensions/crx_installer.h |
@@ -25,6 +25,7 @@ class SkBitmap; |
namespace extensions { |
class ExtensionUpdaterTest; |
+class RequirementsChecker; |
// This class installs a crx file into a profile. |
// |
@@ -165,6 +166,10 @@ class CrxInstaller |
page_ordinal_ = page_ordinal; |
} |
+ void set_error_on_unsupported_requirements(bool val) { |
+ error_on_unsupported_requirements_ = val; |
+ } |
+ |
bool did_handle_successfully() const { return did_handle_successfully_; } |
Profile* profile() { return profile_; } |
@@ -186,19 +191,25 @@ class CrxInstaller |
// Called after OnUnpackSuccess as a last check to see whether the install |
// should complete. |
- CrxInstallerError AllowInstall(const Extension* extension); |
+ CrxInstallerError AllowInstall(Extension* extension); |
// SandboxedUnpackerClient |
virtual void OnUnpackFailure(const string16& error_message) OVERRIDE; |
virtual void OnUnpackSuccess(const FilePath& temp_dir, |
const FilePath& extension_dir, |
const base::DictionaryValue* original_manifest, |
- const Extension* extension) OVERRIDE; |
+ Extension* extension) OVERRIDE; |
// Returns true if we can skip confirmation because the install was |
// whitelisted. |
bool CanSkipConfirmation(); |
+ // Called on the UI thread to start the requirements check on the extension. |
+ void CheckRequirements(); |
+ |
+ // Runs on the FILE thread. Callback from RequirementsChecker. |
+ void RequirementsChecked(std::vector<std::string> errors); |
+ |
// Runs on the UI thread. Confirms with the user (via ExtensionInstallPrompt) |
// that it is OK to install this extension. |
void ConfirmInstall(); |
@@ -212,7 +223,7 @@ class CrxInstaller |
void ReportFailureFromUIThread(const CrxInstallerError& error); |
void ReportSuccessFromFileThread(); |
void ReportSuccessFromUIThread(); |
- void NotifyCrxInstallComplete(const Extension* extension); |
+ void NotifyCrxInstallComplete(Extension* extension); |
// The file we're installing. |
FilePath source_file_; |
@@ -267,7 +278,7 @@ class CrxInstaller |
// The extension we're installing. We own this and either pass it off to |
// ExtensionService on success, or delete it on failure. |
- scoped_refptr<const Extension> extension_; |
+ scoped_refptr<Extension> extension_; |
// The ordinal of the NTP apps page |extension_| will be shown on. |
StringOrdinal page_ordinal_; |
@@ -339,6 +350,15 @@ class CrxInstaller |
// Whether we should record an oauth2 grant upon successful install. |
bool record_oauth2_grant_; |
+ // Whether we should produce an error if the manifest declares requirements |
+ // that are not met. If false and there is an unmet requirement, the install |
+ // will continue but the extension will be distabled. |
+ bool error_on_unsupported_requirements_; |
+ |
+ scoped_ptr<RequirementsChecker> requirements_checker_; |
+ |
+ std::vector<std::string> requirement_errors_; |
+ |
DISALLOW_COPY_AND_ASSIGN(CrxInstaller); |
}; |