diff options
author | ericu@chromium.org <ericu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-30 19:50:11 +0000 |
---|---|---|
committer | ericu@chromium.org <ericu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-30 19:50:11 +0000 |
commit | 7227371800845ac2dc8131e9ef4165cbb92ff884 (patch) | |
tree | 2d739d29bacbbfad10b8125adc0ee607734ed4c1 | |
parent | d33af8a423c744ac12a12340a4326be716737b76 (diff) | |
download | chromium_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.cc | 4 | ||||
-rw-r--r-- | content/browser/indexed_db/indexed_db_factory_unittest.cc | 12 |
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)); } |