OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 using namespace WebCore; | 44 using namespace WebCore; |
45 using WebKit::IDBDatabaseCallbacksProxy; | 45 using WebKit::IDBDatabaseCallbacksProxy; |
46 using WebKit::WebIDBDatabase; | 46 using WebKit::WebIDBDatabase; |
47 using WebKit::WebIDBDatabaseImpl; | 47 using WebKit::WebIDBDatabaseImpl; |
48 using WebKit::WebIDBDatabaseCallbacksImpl; | 48 using WebKit::WebIDBDatabaseCallbacksImpl; |
49 | 49 |
50 namespace { | 50 namespace { |
51 | 51 |
52 TEST(IDBDatabaseBackendTest, BackingStoreRetention) | 52 TEST(IDBDatabaseBackendTest, BackingStoreRetention) |
53 { | 53 { |
54 RefPtr<IDBFakeBackingStore> backingStore = adoptRef(new IDBFakeBackingStore(
)); | 54 RefPtr<IDBFakeBackingStore> backingStore; |
55 EXPECT_TRUE(backingStore->hasOneRef()); | 55 { |
| 56 backingStore = adoptRef(new IDBFakeBackingStore()); |
| 57 EXPECT_TRUE(backingStore->hasOneRef()); |
56 | 58 |
57 IDBFactoryBackendImpl* factory = 0; | 59 IDBFactoryBackendImpl* factory = 0; |
58 RefPtr<IDBDatabaseBackendImpl> db = IDBDatabaseBackendImpl::create("db", bac
kingStore.get(), factory, "uniqueid"); | 60 IDBDatabaseBackendImpl::create("db", backingStore.get(), factory, "uniqu
eid"); |
59 EXPECT_GT(backingStore->refCount(), 1); | 61 EXPECT_GT(backingStore->refCount(), 1); |
60 | 62 } |
61 db.clear(); | 63 Heap::collectGarbage(ThreadState::NoHeapPointersOnStack); |
62 EXPECT_TRUE(backingStore->hasOneRef()); | 64 EXPECT_TRUE(backingStore->hasOneRef()); |
63 } | 65 } |
64 | 66 |
65 class MockIDBCallbacks : public IDBCallbacks { | 67 class MockIDBCallbacks : public IDBCallbacks { |
66 public: | 68 public: |
67 static PassRefPtr<MockIDBCallbacks> create() { return adoptRef(new MockIDBCa
llbacks()); } | 69 static MockIDBCallbacks* create() { return new MockIDBCallbacks(); } |
68 virtual ~MockIDBCallbacks() | 70 virtual ~MockIDBCallbacks() |
69 { | 71 { |
70 EXPECT_TRUE(m_wasSuccessDBCalled); | 72 EXPECT_TRUE(m_wasSuccessDBCalled); |
71 } | 73 } |
72 virtual void onError(PassRefPtr<IDBDatabaseError>) OVERRIDE { } | 74 virtual void onError(PassRefPtr<IDBDatabaseError>) OVERRIDE { } |
73 virtual void onSuccess(const Vector<String>&) OVERRIDE { } | 75 virtual void onSuccess(const Vector<String>&) OVERRIDE { } |
74 virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>, PassRefPtr<IDB
Key>, PassRefPtr<IDBKey>, PassRefPtr<SharedBuffer>) OVERRIDE { } | 76 virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>, PassRefPtr<IDB
Key>, PassRefPtr<IDBKey>, PassRefPtr<SharedBuffer>) OVERRIDE { } |
75 virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>, const IDBDat
abaseMetadata&) OVERRIDE | 77 virtual void onSuccess(IDBDatabaseBackendInterface*, const IDBDatabaseMetada
ta&) OVERRIDE |
76 { | 78 { |
77 m_wasSuccessDBCalled = true; | 79 m_wasSuccessDBCalled = true; |
78 } | 80 } |
79 virtual void onSuccess(PassRefPtr<IDBKey>) OVERRIDE { } | 81 virtual void onSuccess(PassRefPtr<IDBKey>) OVERRIDE { } |
80 virtual void onSuccess(PassRefPtr<SharedBuffer>) OVERRIDE { } | 82 virtual void onSuccess(PassRefPtr<SharedBuffer>) OVERRIDE { } |
81 virtual void onSuccess(PassRefPtr<SharedBuffer>, PassRefPtr<IDBKey>, const I
DBKeyPath&) OVERRIDE { }; | 83 virtual void onSuccess(PassRefPtr<SharedBuffer>, PassRefPtr<IDBKey>, const I
DBKeyPath&) OVERRIDE { }; |
82 virtual void onSuccess(int64_t) OVERRIDE { } | 84 virtual void onSuccess(int64_t) OVERRIDE { } |
83 virtual void onSuccess() OVERRIDE { } | 85 virtual void onSuccess() OVERRIDE { } |
84 virtual void onSuccess(PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<Sh
aredBuffer>) OVERRIDE { }; | 86 virtual void onSuccess(PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<Sh
aredBuffer>) OVERRIDE { }; |
85 virtual void onSuccessWithPrefetch(const Vector<RefPtr<IDBKey> >&, const Vec
tor<RefPtr<IDBKey> >&, const Vector<RefPtr<SharedBuffer> >&) OVERRIDE { } | 87 virtual void onSuccessWithPrefetch(const Vector<RefPtr<IDBKey> >&, const Vec
tor<RefPtr<IDBKey> >&, const Vector<RefPtr<SharedBuffer> >&) OVERRIDE { } |
86 private: | 88 private: |
87 MockIDBCallbacks() | 89 MockIDBCallbacks() |
88 : m_wasSuccessDBCalled(false) { } | 90 : m_wasSuccessDBCalled(false) { } |
89 bool m_wasSuccessDBCalled; | 91 bool m_wasSuccessDBCalled; |
90 }; | 92 }; |
91 | 93 |
92 class FakeIDBDatabaseCallbacks : public IDBDatabaseCallbacks { | 94 class FakeIDBDatabaseCallbacks : public IDBDatabaseCallbacks { |
93 public: | 95 public: |
94 static PassRefPtr<FakeIDBDatabaseCallbacks> create() { return adoptRef(new F
akeIDBDatabaseCallbacks()); } | 96 static FakeIDBDatabaseCallbacks* create() { return new FakeIDBDatabaseCallba
cks(); } |
95 virtual ~FakeIDBDatabaseCallbacks() { } | 97 virtual ~FakeIDBDatabaseCallbacks() { } |
96 virtual void onVersionChange(int64_t oldVersion, int64_t newVersion) OVERRID
E { } | 98 virtual void onVersionChange(int64_t oldVersion, int64_t newVersion) OVERRID
E { } |
97 virtual void onForcedClose() OVERRIDE { } | 99 virtual void onForcedClose() OVERRIDE { } |
98 virtual void onAbort(int64_t transactionId, PassRefPtr<IDBDatabaseError> err
or) OVERRIDE { } | 100 virtual void onAbort(int64_t transactionId, PassRefPtr<IDBDatabaseError> err
or) OVERRIDE { } |
99 virtual void onComplete(int64_t transactionId) OVERRIDE { } | 101 virtual void onComplete(int64_t transactionId) OVERRIDE { } |
| 102 virtual void trace(Visitor*) OVERRIDE { } |
100 private: | 103 private: |
101 FakeIDBDatabaseCallbacks() { } | 104 FakeIDBDatabaseCallbacks() { } |
102 }; | 105 }; |
103 | 106 |
104 TEST(IDBDatabaseBackendTest, ConnectionLifecycle) | 107 TEST(IDBDatabaseBackendTest, ConnectionLifecycle) |
105 { | 108 { |
106 RefPtr<IDBFakeBackingStore> backingStore = adoptRef(new IDBFakeBackingStore(
)); | 109 RefPtr<IDBFakeBackingStore> backingStore = adoptRef(new IDBFakeBackingStore(
)); |
107 EXPECT_TRUE(backingStore->hasOneRef()); | 110 EXPECT_TRUE(backingStore->hasOneRef()); |
108 | 111 |
109 IDBFactoryBackendImpl* factory = 0; | 112 IDBFactoryBackendImpl* factory = 0; |
110 RefPtr<IDBDatabaseBackendImpl> db = IDBDatabaseBackendImpl::create("db", bac
kingStore.get(), factory, "uniqueid"); | 113 IDBDatabaseBackendImpl* db = IDBDatabaseBackendImpl::create("db", backingSto
re.get(), factory, "uniqueid"); |
111 EXPECT_GT(backingStore->refCount(), 1); | 114 EXPECT_GT(backingStore->refCount(), 1); |
112 | 115 |
113 RefPtr<MockIDBCallbacks> request1 = MockIDBCallbacks::create(); | 116 MockIDBCallbacks* request1 = MockIDBCallbacks::create(); |
114 RefPtr<FakeIDBDatabaseCallbacks> connection1 = FakeIDBDatabaseCallbacks::cre
ate(); | 117 FakeIDBDatabaseCallbacks* connection1 = FakeIDBDatabaseCallbacks::create(); |
115 db->openConnection(request1, connection1, 1, IDBDatabaseMetadata::DefaultInt
Version); | 118 db->openConnection(request1, connection1, 1, IDBDatabaseMetadata::DefaultInt
Version); |
116 | 119 |
117 RefPtr<MockIDBCallbacks> request2 = MockIDBCallbacks::create(); | 120 MockIDBCallbacks* request2 = MockIDBCallbacks::create(); |
118 RefPtr<FakeIDBDatabaseCallbacks> connection2 = FakeIDBDatabaseCallbacks::cre
ate(); | 121 FakeIDBDatabaseCallbacks* connection2 = FakeIDBDatabaseCallbacks::create(); |
119 db->openConnection(request2, connection2, 2, IDBDatabaseMetadata::DefaultInt
Version); | 122 db->openConnection(request2, connection2, 2, IDBDatabaseMetadata::DefaultInt
Version); |
120 | 123 |
121 db->close(connection1); | 124 db->close(connection1); |
122 EXPECT_GT(backingStore->refCount(), 1); | 125 EXPECT_GT(backingStore->refCount(), 1); |
123 | 126 |
124 db->close(connection2); | 127 db->close(connection2); |
125 EXPECT_TRUE(backingStore->hasOneRef()); | 128 EXPECT_TRUE(backingStore->hasOneRef()); |
126 } | 129 } |
127 | 130 |
128 class MockIDBDatabaseBackendProxy : public IDBDatabaseBackendInterface { | 131 class MockIDBDatabaseBackendProxy : public IDBDatabaseBackendInterface { |
129 public: | 132 public: |
130 static PassRefPtr<MockIDBDatabaseBackendProxy> create(WebIDBDatabaseImpl* da
tabase) | 133 static MockIDBDatabaseBackendProxy* create(WebIDBDatabaseImpl* database) |
131 { | 134 { |
132 return adoptRef(new MockIDBDatabaseBackendProxy(database)); | 135 return new MockIDBDatabaseBackendProxy(database); |
133 } | 136 } |
134 | 137 |
135 ~MockIDBDatabaseBackendProxy() | 138 ~MockIDBDatabaseBackendProxy() |
136 { | 139 { |
137 EXPECT_TRUE(m_wasCloseCalled); | 140 EXPECT_TRUE(m_wasCloseCalled); |
138 delete m_webDatabase; | 141 delete m_webDatabase; |
139 } | 142 } |
140 | 143 |
141 virtual IDBDatabaseMetadata metadata() const { return IDBDatabaseMetadata();
} | 144 virtual IDBDatabaseMetadata metadata() const { return IDBDatabaseMetadata();
} |
142 virtual void createObjectStore(int64_t transactionId, int64_t objectStoreId,
const String& name, const IDBKeyPath&, bool autoIncrement) OVERRIDE { }; | 145 virtual void createObjectStore(int64_t transactionId, int64_t objectStoreId,
const String& name, const IDBKeyPath&, bool autoIncrement) OVERRIDE { }; |
143 virtual void deleteObjectStore(int64_t transactionId, int64_t objectStoreId)
OVERRIDE { } | 146 virtual void deleteObjectStore(int64_t transactionId, int64_t objectStoreId)
OVERRIDE { } |
144 virtual void createTransaction(int64_t, PassRefPtr<IDBDatabaseCallbacks>, co
nst Vector<int64_t>&, unsigned short mode) OVERRIDE { } | 147 virtual void createTransaction(int64_t, IDBDatabaseCallbacks*, const Vector<
int64_t>&, unsigned short mode) OVERRIDE { } |
145 | 148 |
146 virtual void close(PassRefPtr<IDBDatabaseCallbacks>) OVERRIDE | 149 virtual void close(IDBDatabaseCallbacks*) OVERRIDE |
147 { | 150 { |
148 m_wasCloseCalled = true; | 151 m_wasCloseCalled = true; |
149 m_webDatabase->close(); | 152 m_webDatabase->close(); |
150 } | 153 } |
151 | 154 |
152 virtual void abort(int64_t transactionId) OVERRIDE { } | 155 virtual void abort(int64_t transactionId) OVERRIDE { } |
153 virtual void abort(int64_t transactionId, PassRefPtr<IDBDatabaseError>) OVER
RIDE { } | 156 virtual void abort(int64_t transactionId, PassRefPtr<IDBDatabaseError>) OVER
RIDE { } |
154 virtual void commit(int64_t transactionId) OVERRIDE { } | 157 virtual void commit(int64_t transactionId) OVERRIDE { } |
155 | 158 |
156 virtual void openCursor(int64_t transactionId, int64_t objectStoreId, int64_
t indexId, PassRefPtr<IDBKeyRange>, IndexedDB::CursorDirection, bool keyOnly, Ta
skType, PassRefPtr<IDBCallbacks>) OVERRIDE { } | 159 virtual void openCursor(int64_t transactionId, int64_t objectStoreId, int64_
t indexId, PassRefPtr<IDBKeyRange>, IndexedDB::CursorDirection, bool keyOnly, Ta
skType, IDBCallbacks*) OVERRIDE { } |
157 virtual void count(int64_t objectStoreId, int64_t indexId, int64_t transacti
onId, PassRefPtr<IDBKeyRange>, PassRefPtr<IDBCallbacks>) OVERRIDE { } | 160 virtual void count(int64_t objectStoreId, int64_t indexId, int64_t transacti
onId, PassRefPtr<IDBKeyRange>, IDBCallbacks*) OVERRIDE { } |
158 virtual void get(int64_t objectStoreId, int64_t indexId, int64_t transaction
Id, PassRefPtr<IDBKeyRange>, bool keyOnly, PassRefPtr<IDBCallbacks>) OVERRIDE {
} | 161 virtual void get(int64_t objectStoreId, int64_t indexId, int64_t transaction
Id, PassRefPtr<IDBKeyRange>, bool keyOnly, IDBCallbacks*) OVERRIDE { } |
159 virtual void put(int64_t transactionId, int64_t objectStoreId, PassRefPtr<Sh
aredBuffer>, PassRefPtr<IDBKey>, PutMode, PassRefPtr<IDBCallbacks>, const Vector
<int64_t>& indexIds, const Vector<IndexKeys>&) OVERRIDE { } | 162 virtual void put(int64_t transactionId, int64_t objectStoreId, PassRefPtr<Sh
aredBuffer>, PassRefPtr<IDBKey>, PutMode, IDBCallbacks*, const Vector<int64_t>&
indexIds, const Vector<IndexKeys>&) OVERRIDE { } |
160 virtual void setIndexKeys(int64_t transactionId, int64_t objectStoreId, Pass
RefPtr<IDBKey> prpPrimaryKey, const Vector<int64_t>& indexIds, const Vector<Inde
xKeys>&) OVERRIDE { } | 163 virtual void setIndexKeys(int64_t transactionId, int64_t objectStoreId, Pass
RefPtr<IDBKey> prpPrimaryKey, const Vector<int64_t>& indexIds, const Vector<Inde
xKeys>&) OVERRIDE { } |
161 virtual void setIndexesReady(int64_t transactionId, int64_t objectStoreId, c
onst Vector<int64_t>& indexIds) OVERRIDE { } | 164 virtual void setIndexesReady(int64_t transactionId, int64_t objectStoreId, c
onst Vector<int64_t>& indexIds) OVERRIDE { } |
162 virtual void deleteRange(int64_t transactionId, int64_t objectStoreId, PassR
efPtr<IDBKeyRange>, PassRefPtr<IDBCallbacks>) OVERRIDE { } | 165 virtual void deleteRange(int64_t transactionId, int64_t objectStoreId, PassR
efPtr<IDBKeyRange>, IDBCallbacks*) OVERRIDE { } |
163 virtual void clear(int64_t transactionId, int64_t objectStoreId, PassRefPtr<
IDBCallbacks>) OVERRIDE { } | 166 virtual void clear(int64_t transactionId, int64_t objectStoreId, IDBCallback
s*) OVERRIDE { } |
164 | 167 |
165 virtual void createIndex(int64_t transactionId, int64_t objectStoreId, int64
_t indexId, const String& name, const IDBKeyPath&, bool unique, bool multiEntry)
OVERRIDE { ASSERT_NOT_REACHED(); } | 168 virtual void createIndex(int64_t transactionId, int64_t objectStoreId, int64
_t indexId, const String& name, const IDBKeyPath&, bool unique, bool multiEntry)
OVERRIDE { ASSERT_NOT_REACHED(); } |
166 virtual void deleteIndex(int64_t transactionId, int64_t objectStoreId, int64
_t indexId) OVERRIDE { ASSERT_NOT_REACHED(); } | 169 virtual void deleteIndex(int64_t transactionId, int64_t objectStoreId, int64
_t indexId) OVERRIDE { ASSERT_NOT_REACHED(); } |
167 | 170 |
| 171 virtual void trace(Visitor*) { } |
| 172 |
168 private: | 173 private: |
169 MockIDBDatabaseBackendProxy(WebIDBDatabaseImpl* webDatabase) | 174 MockIDBDatabaseBackendProxy(WebIDBDatabaseImpl* webDatabase) |
170 : m_wasCloseCalled(false) | 175 : m_wasCloseCalled(false) |
171 , m_webDatabase(webDatabase) { } | 176 , m_webDatabase(webDatabase) { } |
172 | 177 |
173 bool m_wasCloseCalled; | 178 bool m_wasCloseCalled; |
174 | 179 |
175 WebIDBDatabaseImpl* m_webDatabase; | 180 WebIDBDatabaseImpl* m_webDatabase; |
176 }; | 181 }; |
177 | 182 |
178 class MockIDBDatabaseCallbacks : public IDBDatabaseCallbacks { | 183 class MockIDBDatabaseCallbacks : public IDBDatabaseCallbacks { |
179 public: | 184 public: |
180 static PassRefPtr<MockIDBDatabaseCallbacks> create() { return adoptRef(new M
ockIDBDatabaseCallbacks()); } | 185 static MockIDBDatabaseCallbacks* create() { return new MockIDBDatabaseCallba
cks(); } |
181 virtual ~MockIDBDatabaseCallbacks() | 186 virtual ~MockIDBDatabaseCallbacks() |
182 { | 187 { |
183 EXPECT_TRUE(m_wasAbortCalled); | 188 EXPECT_TRUE(m_wasAbortCalled); |
184 } | 189 } |
185 virtual void onVersionChange(int64_t oldVersion, int64_t newVersion) OVERRID
E { } | 190 virtual void onVersionChange(int64_t oldVersion, int64_t newVersion) OVERRID
E { } |
186 virtual void onForcedClose() OVERRIDE { } | 191 virtual void onForcedClose() OVERRIDE { } |
187 virtual void onAbort(int64_t transactionId, PassRefPtr<IDBDatabaseError> err
or) OVERRIDE | 192 virtual void onAbort(int64_t transactionId, PassRefPtr<IDBDatabaseError> err
or) OVERRIDE |
188 { | 193 { |
189 m_wasAbortCalled = true; | 194 m_wasAbortCalled = true; |
190 } | 195 } |
191 virtual void onComplete(int64_t transactionId) OVERRIDE { } | 196 virtual void onComplete(int64_t transactionId) OVERRIDE { } |
| 197 virtual void trace(Visitor*) OVERRIDE { } |
192 private: | 198 private: |
193 MockIDBDatabaseCallbacks() | 199 MockIDBDatabaseCallbacks() |
194 : m_wasAbortCalled(false) { } | 200 : m_wasAbortCalled(false) { } |
195 bool m_wasAbortCalled; | 201 bool m_wasAbortCalled; |
196 }; | 202 }; |
197 | 203 |
198 TEST(IDBDatabaseBackendTest, ForcedClose) | 204 TEST(IDBDatabaseBackendTest, ForcedClose) |
199 { | 205 { |
200 RefPtr<IDBFakeBackingStore> backingStore = adoptRef(new IDBFakeBackingStore(
)); | 206 RefPtr<IDBFakeBackingStore> backingStore = adoptRef(new IDBFakeBackingStore(
)); |
201 EXPECT_TRUE(backingStore->hasOneRef()); | 207 EXPECT_TRUE(backingStore->hasOneRef()); |
202 | 208 |
203 IDBFactoryBackendImpl* factory = 0; | 209 IDBFactoryBackendImpl* factory = 0; |
204 RefPtr<IDBDatabaseBackendImpl> backend = IDBDatabaseBackendImpl::create("db"
, backingStore.get(), factory, "uniqueid"); | 210 IDBDatabaseBackendImpl* backend = IDBDatabaseBackendImpl::create("db", backi
ngStore.get(), factory, "uniqueid"); |
205 EXPECT_GT(backingStore->refCount(), 1); | 211 EXPECT_GT(backingStore->refCount(), 1); |
206 | 212 |
207 RefPtr<MockIDBDatabaseCallbacks> connection = MockIDBDatabaseCallbacks::crea
te(); | 213 MockIDBDatabaseCallbacks* connection = MockIDBDatabaseCallbacks::create(); |
208 RefPtr<IDBDatabaseCallbacksProxy> connectionProxy = IDBDatabaseCallbacksProx
y::create(adoptPtr(new WebIDBDatabaseCallbacksImpl(connection))); | 214 IDBDatabaseCallbacksProxy* connectionProxy = IDBDatabaseCallbacksProxy::crea
te(adoptPtr(new WebIDBDatabaseCallbacksImpl(connection))); |
209 WebIDBDatabaseImpl* webDatabase = new WebIDBDatabaseImpl(backend, connection
Proxy); | 215 WebIDBDatabaseImpl* webDatabase = new WebIDBDatabaseImpl(backend, connection
Proxy); |
210 | 216 |
211 RefPtr<MockIDBDatabaseBackendProxy> proxy = MockIDBDatabaseBackendProxy::cre
ate(webDatabase); | 217 MockIDBDatabaseBackendProxy* proxy = MockIDBDatabaseBackendProxy::create(web
Database); |
212 RefPtr<MockIDBCallbacks> request = MockIDBCallbacks::create(); | 218 MockIDBCallbacks* request = MockIDBCallbacks::create(); |
213 const int64_t upgradeTransactionId = 3; | 219 const int64_t upgradeTransactionId = 3; |
214 backend->openConnection(request, connectionProxy, upgradeTransactionId, IDBD
atabaseMetadata::DefaultIntVersion); | 220 backend->openConnection(request, connectionProxy, upgradeTransactionId, IDBD
atabaseMetadata::DefaultIntVersion); |
215 | 221 |
216 ScriptExecutionContext* context = nullptr; | 222 ScriptExecutionContext* context = nullptr; |
217 RefPtr<IDBDatabase> idbDatabase = IDBDatabase::create(context, proxy, connec
tion); | 223 RefPtr<IDBDatabase> idbDatabase = IDBDatabase::create(context, proxy, connec
tion); |
218 | 224 |
219 const int64_t transactionId = 123; | 225 const int64_t transactionId = 123; |
220 const Vector<int64_t> scope; | 226 const Vector<int64_t> scope; |
221 backend->createTransaction(transactionId, connectionProxy, scope, IndexedDB:
:TransactionReadOnly); | 227 backend->createTransaction(transactionId, connectionProxy, scope, IndexedDB:
:TransactionReadOnly); |
222 | 228 |
223 webDatabase->forceClose(); | 229 webDatabase->forceClose(); |
224 | 230 |
225 EXPECT_TRUE(backingStore->hasOneRef()); | 231 EXPECT_TRUE(backingStore->hasOneRef()); |
226 } | 232 } |
227 | 233 |
228 } // namespace | 234 } // namespace |
OLD | NEW |