Improve ContentVerifierTest.Fail* tests
A bug report pointed out the FailOnDone test isn't succeeding for
the right reason, so this makes it more explicit.
Also fix a few lint errors in affected files.
BUG=534500
Review URL: https://codereview.chromium.org/1361513002
Cr-Commit-Position: refs/heads/master@{#357383}
diff --git a/chrome/browser/extensions/content_verifier_browsertest.cc b/chrome/browser/extensions/content_verifier_browsertest.cc
index a547f1d2..04f0144 100644
--- a/chrome/browser/extensions/content_verifier_browsertest.cc
+++ b/chrome/browser/extensions/content_verifier_browsertest.cc
@@ -56,7 +56,11 @@
// 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 @@
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 @@
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 @@
}
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 @@
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 @@
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) {