summaryrefslogtreecommitdiff
path: root/Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-06-25 13:35:59 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-06-25 13:35:59 +0200
commit79ad030d505ccf79cf10aa9f8189ca3e2f61f6f4 (patch)
tree0287b1a69d84492c901e8bc820e635e7133809a0 /Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp
parent682ab87480e7757346802ce7f54cfdbdfeb2339e (diff)
downloadqtwebkit-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.cpp64
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)