Index: chrome/browser/extensions/content_verifier_browsertest.cc |
diff --git a/chrome/browser/extensions/content_verifier_browsertest.cc b/chrome/browser/extensions/content_verifier_browsertest.cc |
index a547f1d2b4b5a65c22ba0b043e8b272175f1d93f..04f0144e3503292492404b0e8405f9f7cea23591 100644 |
--- a/chrome/browser/extensions/content_verifier_browsertest.cc |
+++ b/chrome/browser/extensions/content_verifier_browsertest.cc |
@@ -56,7 +56,11 @@ class UnloadObserver : public ExtensionRegistryObserver { |
// Helper for forcing ContentVerifyJob's to return an error. |
class JobDelegate : public ContentVerifyJob::TestDelegate { |
public: |
- JobDelegate() : fail_next_read_(false), fail_next_done_(false) {} |
+ JobDelegate() |
+ : fail_next_read_(false), |
+ fail_next_done_(false), |
+ bytes_read_failed_(0), |
+ done_reading_failed_(0) {} |
virtual ~JobDelegate() {} |
@@ -64,11 +68,17 @@ class JobDelegate : public ContentVerifyJob::TestDelegate { |
void fail_next_read() { fail_next_read_ = true; } |
void fail_next_done() { fail_next_done_ = true; } |
+ // Return the number of BytesRead/DoneReading calls we actually failed, |
+ // respectively. |
+ int bytes_read_failed() { return bytes_read_failed_; } |
+ int done_reading_failed() { return done_reading_failed_; } |
+ |
ContentVerifyJob::FailureReason BytesRead(const ExtensionId& id, |
int count, |
const char* data) override { |
if (id == id_ && fail_next_read_) { |
fail_next_read_ = false; |
+ bytes_read_failed_++; |
return ContentVerifyJob::HASH_MISMATCH; |
} |
return ContentVerifyJob::NONE; |
@@ -77,17 +87,20 @@ class JobDelegate : public ContentVerifyJob::TestDelegate { |
ContentVerifyJob::FailureReason DoneReading(const ExtensionId& id) override { |
if (id == id_ && fail_next_done_) { |
fail_next_done_ = false; |
+ done_reading_failed_++; |
return ContentVerifyJob::HASH_MISMATCH; |
} |
return ContentVerifyJob::NONE; |
} |
private: |
- DISALLOW_COPY_AND_ASSIGN(JobDelegate); |
- |
ExtensionId id_; |
bool fail_next_read_; |
bool fail_next_done_; |
+ int bytes_read_failed_; |
+ int done_reading_failed_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(JobDelegate); |
}; |
class JobObserver : public ContentVerifyJob::TestObserver { |
@@ -262,15 +275,16 @@ class ContentVerifierTest : public ExtensionBrowserTest { |
} |
virtual void OpenPageAndWaitForUnload() { |
+ ContentVerifyJob::SetDelegateForTests(&delegate_); |
+ std::string id = "npnbmohejbjohgpjnmjagbafnjhkmgko"; |
+ delegate_.set_id(id); |
unload_observer_.reset( |
new UnloadObserver(ExtensionRegistry::Get(profile()))); |
const Extension* extension = InstallExtensionFromWebstore( |
test_data_dir_.AppendASCII("content_verifier/v1.crx"), 1); |
ASSERT_TRUE(extension); |
- id_ = extension->id(); |
+ ASSERT_EQ(id, extension->id()); |
page_url_ = extension->GetResourceURL("page.html"); |
- delegate_.set_id(id_); |
- ContentVerifyJob::SetDelegateForTests(&delegate_); |
// This call passes false for |check_navigation_success|, because checking |
// for navigation success needs the WebContents to still exist after the |
@@ -279,9 +293,9 @@ class ContentVerifierTest : public ExtensionBrowserTest { |
AddTabAtIndexToBrowser(browser(), 1, page_url_, ui::PAGE_TRANSITION_LINK, |
false); |
- unload_observer_->WaitForUnload(id_); |
+ unload_observer_->WaitForUnload(id); |
ExtensionPrefs* prefs = ExtensionPrefs::Get(profile()); |
- int reasons = prefs->GetDisableReasons(id_); |
+ int reasons = prefs->GetDisableReasons(id); |
EXPECT_TRUE(reasons & Extension::DISABLE_CORRUPTED); |
// This needs to happen before the ExtensionRegistry gets deleted, which |
@@ -292,18 +306,21 @@ class ContentVerifierTest : public ExtensionBrowserTest { |
protected: |
JobDelegate delegate_; |
scoped_ptr<UnloadObserver> unload_observer_; |
- ExtensionId id_; |
GURL page_url_; |
}; |
IN_PROC_BROWSER_TEST_F(ContentVerifierTest, FailOnRead) { |
+ EXPECT_EQ(0, delegate_.bytes_read_failed()); |
delegate_.fail_next_read(); |
OpenPageAndWaitForUnload(); |
+ EXPECT_EQ(1, delegate_.bytes_read_failed()); |
} |
IN_PROC_BROWSER_TEST_F(ContentVerifierTest, FailOnDone) { |
+ EXPECT_EQ(0, delegate_.done_reading_failed()); |
delegate_.fail_next_done(); |
OpenPageAndWaitForUnload(); |
+ EXPECT_EQ(1, delegate_.done_reading_failed()); |
} |
IN_PROC_BROWSER_TEST_F(ContentVerifierTest, DotSlashPaths) { |