diff options
| author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-06-25 13:35:59 +0200 |
|---|---|---|
| committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-06-25 13:35:59 +0200 |
| commit | 79ad030d505ccf79cf10aa9f8189ca3e2f61f6f4 (patch) | |
| tree | 0287b1a69d84492c901e8bc820e635e7133809a0 /Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp | |
| parent | 682ab87480e7757346802ce7f54cfdbdfeb2339e (diff) | |
| download | qtwebkit-79ad030d505ccf79cf10aa9f8189ca3e2f61f6f4.tar.gz | |
Imported WebKit commit c4b613825abd39ac739a47d7b4410468fcef66dc (http://svn.webkit.org/repository/webkit/trunk@121147)
New snapshot that includes Win32 debug build fix (use SVGAllInOne)
Diffstat (limited to 'Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp')
| -rw-r--r-- | Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp b/Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp index 098a7327f..17dd24bc6 100644 --- a/Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp +++ b/Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp @@ -67,6 +67,70 @@ TEST(IDBDatabaseBackendTest, BackingStoreRetention) EXPECT_TRUE(backingStore->hasOneRef()); } +class MockIDBCallbacks : public IDBCallbacks { +public: + static PassRefPtr<MockIDBCallbacks> create() { return adoptRef(new MockIDBCallbacks()); } + virtual ~MockIDBCallbacks() + { + EXPECT_TRUE(m_wasSuccessDBCalled); + } + virtual void onError(PassRefPtr<IDBDatabaseError>) OVERRIDE { } + virtual void onSuccess(PassRefPtr<DOMStringList>) OVERRIDE { } + virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>) OVERRIDE { } + virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>) OVERRIDE + { + m_wasSuccessDBCalled = true; + } + virtual void onSuccess(PassRefPtr<IDBKey>) OVERRIDE { } + virtual void onSuccess(PassRefPtr<IDBTransactionBackendInterface>) OVERRIDE { } + virtual void onSuccess(PassRefPtr<SerializedScriptValue>) OVERRIDE { } + virtual void onSuccessWithContinuation() OVERRIDE { } + virtual void onSuccessWithPrefetch(const Vector<RefPtr<IDBKey> >&, const Vector<RefPtr<IDBKey> >&, const Vector<RefPtr<SerializedScriptValue> >&) OVERRIDE { } + virtual void onBlocked() OVERRIDE { } +private: + MockIDBCallbacks() + : m_wasSuccessDBCalled(false) { } + bool m_wasSuccessDBCalled; +}; + +class FakeIDBDatabaseCallbacks : public IDBDatabaseCallbacks { +public: + static PassRefPtr<FakeIDBDatabaseCallbacks> create() { return adoptRef(new FakeIDBDatabaseCallbacks()); } + virtual ~FakeIDBDatabaseCallbacks() { } + virtual void onVersionChange(const String& version) OVERRIDE { } +private: + FakeIDBDatabaseCallbacks() { } +}; + +TEST(IDBDatabaseBackendTest, ConnectionLifecycle) +{ + RefPtr<IDBFakeBackingStore> backingStore = adoptRef(new IDBFakeBackingStore()); + EXPECT_TRUE(backingStore->hasOneRef()); + + IDBTransactionCoordinator* coordinator = 0; + IDBFactoryBackendImpl* factory = 0; + RefPtr<IDBDatabaseBackendImpl> db = IDBDatabaseBackendImpl::create("db", backingStore.get(), coordinator, factory, "uniqueid"); + EXPECT_GT(backingStore->refCount(), 1); + + RefPtr<MockIDBCallbacks> request1 = MockIDBCallbacks::create(); + db->openConnection(request1); + + RefPtr<FakeIDBDatabaseCallbacks> connection1 = FakeIDBDatabaseCallbacks::create(); + db->registerFrontendCallbacks(connection1); + + RefPtr<MockIDBCallbacks> request2 = MockIDBCallbacks::create(); + db->openConnection(request2); + + db->close(connection1); + EXPECT_GT(backingStore->refCount(), 1); + + RefPtr<FakeIDBDatabaseCallbacks> connection2 = FakeIDBDatabaseCallbacks::create(); + db->registerFrontendCallbacks(connection2); + + db->close(connection2); + EXPECT_TRUE(backingStore->hasOneRef()); +} + } // namespace #endif // ENABLE(INDEXED_DATABASE) |
