summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorericu@chromium.org <ericu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-30 19:50:11 +0000
committerericu@chromium.org <ericu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-30 19:50:11 +0000
commit7227371800845ac2dc8131e9ef4165cbb92ff884 (patch)
tree2d739d29bacbbfad10b8125adc0ee607734ed4c1
parentd33af8a423c744ac12a12340a4326be716737b76 (diff)
downloadchromium_src-7227371800845ac2dc8131e9ef4165cbb92ff884.zip
chromium_src-7227371800845ac2dc8131e9ef4165cbb92ff884.tar.gz
chromium_src-7227371800845ac2dc8131e9ef4165cbb92ff884.tar.bz2
Fix an unsafe test pattern.
Relying on a destructor's call for test validation is dangerous if it's in a ref-counted object. In many failures, there's a reference left hanging, and the destructor won't get called. I found this by accident, by noticing that a test that should have been failing wasn't. BUG=none Review URL: https://codereview.chromium.org/260123009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267305 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/indexed_db/indexed_db_database_unittest.cc4
-rw-r--r--content/browser/indexed_db/indexed_db_factory_unittest.cc12
2 files changed, 10 insertions, 6 deletions
diff --git a/content/browser/indexed_db/indexed_db_database_unittest.cc b/content/browser/indexed_db/indexed_db_database_unittest.cc
index 33ba330..7feed82 100644
--- a/content/browser/indexed_db/indexed_db_database_unittest.cc
+++ b/content/browser/indexed_db/indexed_db_database_unittest.cc
@@ -161,9 +161,10 @@ class MockDeleteCallbacks : public IndexedDBCallbacks {
virtual void OnSuccess(int64) OVERRIDE { success_called_ = true; }
bool blocked_called() const { return blocked_called_; }
+ bool success_called() const { return success_called_; }
private:
- virtual ~MockDeleteCallbacks() { EXPECT_TRUE(success_called_); }
+ virtual ~MockDeleteCallbacks() {}
bool blocked_called_;
bool success_called_;
@@ -209,6 +210,7 @@ TEST(IndexedDBDatabaseTest, PendingDelete) {
EXPECT_FALSE(db->backing_store());
EXPECT_TRUE(backing_store->HasOneRef()); // local
+ EXPECT_TRUE(request2->success_called());
}
} // namespace content
diff --git a/content/browser/indexed_db/indexed_db_factory_unittest.cc b/content/browser/indexed_db/indexed_db_factory_unittest.cc
index dd5c8cd..f30f451 100644
--- a/content/browser/indexed_db/indexed_db_factory_unittest.cc
+++ b/content/browser/indexed_db/indexed_db_factory_unittest.cc
@@ -220,9 +220,10 @@ class LookingForQuotaErrorMockCallbacks : public IndexedDBCallbacks {
error_called_ = true;
EXPECT_EQ(blink::WebIDBDatabaseExceptionQuotaError, error.code());
}
+ bool error_called() const { return error_called_; }
private:
- virtual ~LookingForQuotaErrorMockCallbacks() { EXPECT_TRUE(error_called_); }
+ virtual ~LookingForQuotaErrorMockCallbacks() {}
bool error_called_;
};
@@ -247,6 +248,7 @@ TEST_F(IndexedDBFactoryTest, QuotaErrorOnDiskFull) {
NULL /* request_context */,
origin,
temp_directory.path());
+ EXPECT_TRUE(callbacks->error_called());
}
TEST_F(IndexedDBFactoryTest, BackingStoreReleasedOnForcedClose) {
@@ -443,11 +445,10 @@ class ErrorCallbacks : public MockIndexedDBCallbacks {
virtual void OnError(const IndexedDBDatabaseError& error) OVERRIDE {
saw_error_= true;
}
-
- protected:
- virtual ~ErrorCallbacks() { EXPECT_TRUE(saw_error_); }
+ bool saw_error() const { return saw_error_; }
private:
+ virtual ~ErrorCallbacks() {}
bool saw_error_;
};
@@ -491,7 +492,7 @@ TEST_F(IndexedDBFactoryTest, DatabaseFailedOpen) {
// Open at version < 2, which will fail; ensure factory doesn't retain
// the database object.
{
- scoped_refptr<IndexedDBCallbacks> callbacks(new ErrorCallbacks());
+ scoped_refptr<ErrorCallbacks> callbacks(new ErrorCallbacks());
IndexedDBPendingConnection connection(callbacks,
db_callbacks,
0, /* child_process_id */
@@ -502,6 +503,7 @@ TEST_F(IndexedDBFactoryTest, DatabaseFailedOpen) {
NULL /* request_context */,
origin,
temp_directory.path());
+ EXPECT_TRUE(callbacks->saw_error());
EXPECT_FALSE(factory()->IsDatabaseOpen(origin, db_name));
}