Index: extensions/browser/content_verify_job.cc |
diff --git a/extensions/browser/content_verify_job.cc b/extensions/browser/content_verify_job.cc |
index e7e8cab9dd69a7bdf4298876a6f8966138e167a6..651dcae47b62ddd974d73527a253426996de5db3 100644 |
--- a/extensions/browser/content_verify_job.cc |
+++ b/extensions/browser/content_verify_job.cc |
@@ -20,6 +20,7 @@ namespace extensions { |
namespace { |
ContentVerifyJob::TestDelegate* g_test_delegate = NULL; |
+ContentVerifyJob::TestObserver* g_test_observer = NULL; |
class ScopedElapsedTimer { |
public: |
@@ -60,6 +61,9 @@ ContentVerifyJob::~ContentVerifyJob() { |
void ContentVerifyJob::Start() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
+ if (g_test_observer) |
+ g_test_observer->JobStarted(hash_reader_->extension_id(), |
+ hash_reader_->relative_path()); |
base::PostTaskAndReplyWithResult( |
content::BrowserThread::GetBlockingPool(), |
FROM_HERE, |
@@ -130,6 +134,10 @@ void ContentVerifyJob::DoneReading() { |
done_reading_ = true; |
if (hashes_ready_ && !FinishBlock()) |
DispatchFailureCallback(HASH_MISMATCH); |
+ |
+ if (!failed_ && g_test_observer) |
+ g_test_observer->JobFinished( |
+ hash_reader_->extension_id(), hash_reader_->relative_path(), failed_); |
} |
bool ContentVerifyJob::FinishBlock() { |
@@ -182,6 +190,11 @@ void ContentVerifyJob::SetDelegateForTests(TestDelegate* delegate) { |
g_test_delegate = delegate; |
} |
+// static |
+void ContentVerifyJob::SetObserverForTests(TestObserver* observer) { |
+ g_test_observer = observer; |
+} |
+ |
void ContentVerifyJob::DispatchFailureCallback(FailureReason reason) { |
DCHECK(!failed_); |
failed_ = true; |
@@ -192,6 +205,9 @@ void ContentVerifyJob::DispatchFailureCallback(FailureReason reason) { |
failure_callback_.Run(reason); |
failure_callback_.Reset(); |
} |
+ if (g_test_observer) |
+ g_test_observer->JobFinished( |
+ hash_reader_->extension_id(), hash_reader_->relative_path(), failed_); |
} |
} // namespace extensions |