Index: chrome/browser/extensions/extension_install_checker.cc |
diff --git a/chrome/browser/extensions/extension_install_checker.cc b/chrome/browser/extensions/extension_install_checker.cc |
index 313225df59060d09c967dd4cf239bc78eb43db8f..877f1d48d5319960ea40a74ea184171391054d2d 100644 |
--- a/chrome/browser/extensions/extension_install_checker.cc |
+++ b/chrome/browser/extensions/extension_install_checker.cc |
@@ -14,15 +14,17 @@ |
namespace extensions { |
-ExtensionInstallChecker::ExtensionInstallChecker(Profile* profile) |
+ExtensionInstallChecker::ExtensionInstallChecker( |
+ Profile* profile, |
+ scoped_refptr<const Extension> extension) |
: profile_(profile), |
+ extension_(extension), |
blacklist_state_(NOT_BLACKLISTED), |
policy_allows_load_(true), |
- current_sequence_number_(0), |
+ enabled_checks_(0), |
running_checks_(0), |
fail_fast_(false), |
- weak_ptr_factory_(this) { |
-} |
+ weak_ptr_factory_(this) {} |
ExtensionInstallChecker::~ExtensionInstallChecker() { |
} |
@@ -30,6 +32,9 @@ ExtensionInstallChecker::~ExtensionInstallChecker() { |
void ExtensionInstallChecker::Start(int enabled_checks, |
bool fail_fast, |
const Callback& callback) { |
+ DCHECK_EQ(enabled_checks_, 0) |
+ << "ExtensionInstallChecker::Start() can be called at most once"; |
+ |
// Profile is null in tests. |
if (profile_) { |
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
@@ -44,10 +49,10 @@ void ExtensionInstallChecker::Start(int enabled_checks, |
return; |
} |
+ enabled_checks_ = enabled_checks; |
Devlin
2017/03/16 19:29:40
With this class becoming single use, we can move a
michaelpg
2017/03/17 04:25:23
Done.
|
running_checks_ = enabled_checks; |
fail_fast_ = fail_fast; |
callback_ = callback; |
- ResetResults(); |
// Execute the management policy check first as it is synchronous. |
if (enabled_checks & CHECK_MANAGEMENT_POLICY) { |
@@ -92,17 +97,14 @@ void ExtensionInstallChecker::CheckRequirements() { |
if (!requirements_checker_.get()) |
requirements_checker_.reset(new ChromeRequirementsChecker()); |
requirements_checker_->Check( |
- extension_, |
- base::Bind(&ExtensionInstallChecker::OnRequirementsCheckDone, |
- weak_ptr_factory_.GetWeakPtr(), |
- current_sequence_number_)); |
+ extension_, base::Bind(&ExtensionInstallChecker::OnRequirementsCheckDone, |
+ weak_ptr_factory_.GetWeakPtr())); |
} |
void ExtensionInstallChecker::OnRequirementsCheckDone( |
- int sequence_number, |
const std::vector<std::string>& errors) { |
// Some pending results may arrive after fail fast. |
- if (sequence_number != current_sequence_number_) |
+ if (!is_running()) |
return; |
requirement_errors_ = errors; |
@@ -118,14 +120,12 @@ void ExtensionInstallChecker::CheckBlacklistState() { |
blacklist->IsBlacklisted( |
extension_->id(), |
base::Bind(&ExtensionInstallChecker::OnBlacklistStateCheckDone, |
- weak_ptr_factory_.GetWeakPtr(), |
- current_sequence_number_)); |
+ weak_ptr_factory_.GetWeakPtr())); |
} |
-void ExtensionInstallChecker::OnBlacklistStateCheckDone(int sequence_number, |
- BlacklistState state) { |
+void ExtensionInstallChecker::OnBlacklistStateCheckDone(BlacklistState state) { |
// Some pending results may arrive after fail fast. |
- if (sequence_number != current_sequence_number_) |
+ if (!is_running()) |
return; |
blacklist_state_ = state; |
@@ -134,13 +134,6 @@ void ExtensionInstallChecker::OnBlacklistStateCheckDone(int sequence_number, |
MaybeInvokeCallback(); |
} |
-void ExtensionInstallChecker::ResetResults() { |
- requirement_errors_.clear(); |
- blacklist_state_ = NOT_BLACKLISTED; |
- policy_allows_load_ = true; |
- policy_error_.clear(); |
-} |
- |
void ExtensionInstallChecker::MaybeInvokeCallback() { |
if (callback_.is_null()) |
return; |
@@ -160,7 +153,6 @@ void ExtensionInstallChecker::MaybeInvokeCallback() { |
// If we are failing fast, discard any pending results. |
weak_ptr_factory_.InvalidateWeakPtrs(); |
running_checks_ = 0; |
- ++current_sequence_number_; |
Callback callback_copy = callback_; |
callback_.Reset(); |