Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(524)

Side by Side Diff: Source/modules/indexeddb/IDBDatabaseBackendImpl.cpp

Issue 78053006: [oilpan] Move IDBDatabase, IDBDatabaseCallbacks, IDBDatabaseBackendInterface and other related clas… (Closed) Base URL: svn://svn.chromium.org/blink/branches/oilpan
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 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 23 matching lines...) Expand all
34 #include "modules/indexeddb/IDBKeyRange.h" 34 #include "modules/indexeddb/IDBKeyRange.h"
35 #include "modules/indexeddb/IDBObjectStoreBackendImpl.h" 35 #include "modules/indexeddb/IDBObjectStoreBackendImpl.h"
36 #include "modules/indexeddb/IDBTracing.h" 36 #include "modules/indexeddb/IDBTracing.h"
37 #include "modules/indexeddb/IDBTransactionBackendImpl.h" 37 #include "modules/indexeddb/IDBTransactionBackendImpl.h"
38 #include "modules/indexeddb/IDBTransactionCoordinator.h" 38 #include "modules/indexeddb/IDBTransactionCoordinator.h"
39 #include <public/Platform.h> 39 #include <public/Platform.h>
40 #include "wtf/TemporaryChange.h" 40 #include "wtf/TemporaryChange.h"
41 41
42 namespace WebCore { 42 namespace WebCore {
43 43
44 DEFINE_GC_INFO(IDBDatabaseBackendInterface);
45
44 class CreateObjectStoreOperation : public IDBTransactionBackendImpl::Operation { 46 class CreateObjectStoreOperation : public IDBTransactionBackendImpl::Operation {
45 public: 47 public:
46 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, const IDBObjectStoreMetadata& objectStoreMetadata) 48 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, const IDBObjectStoreMetadata& objectStoreMetadata)
47 { 49 {
48 return adoptPtr(new CreateObjectStoreOperation(backingStore, objectStore Metadata)); 50 return adoptPtr(new CreateObjectStoreOperation(backingStore, objectStore Metadata));
49 } 51 }
50 virtual void perform(IDBTransactionBackendImpl*); 52 virtual void perform(IDBTransactionBackendImpl*);
51 private: 53 private:
52 CreateObjectStoreOperation(PassRefPtr<IDBBackingStore> backingStore, const I DBObjectStoreMetadata& objectStoreMetadata) 54 CreateObjectStoreOperation(PassRefPtr<IDBBackingStore> backingStore, const I DBObjectStoreMetadata& objectStoreMetadata)
53 : m_backingStore(backingStore) 55 : m_backingStore(backingStore)
(...skipping 18 matching lines...) Expand all
72 , m_objectStoreMetadata(objectStoreMetadata) 74 , m_objectStoreMetadata(objectStoreMetadata)
73 { 75 {
74 } 76 }
75 77
76 const RefPtr<IDBBackingStore> m_backingStore; 78 const RefPtr<IDBBackingStore> m_backingStore;
77 const IDBObjectStoreMetadata m_objectStoreMetadata; 79 const IDBObjectStoreMetadata m_objectStoreMetadata;
78 }; 80 };
79 81
80 class IDBDatabaseBackendImpl::VersionChangeOperation : public IDBTransactionBack endImpl::Operation { 82 class IDBDatabaseBackendImpl::VersionChangeOperation : public IDBTransactionBack endImpl::Operation {
81 public: 83 public:
82 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BDatabaseBackendImpl> database, int64_t transactionId, int64_t version, PassRefP tr<IDBCallbacks> callbacks, PassRefPtr<IDBDatabaseCallbacks> databaseCallbacks) 84 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(IDBDatabaseBa ckendImpl* database, int64_t transactionId, int64_t version, IDBCallbacks* callb acks, IDBDatabaseCallbacks* databaseCallbacks)
83 { 85 {
84 return adoptPtr(new VersionChangeOperation(database, transactionId, vers ion, callbacks, databaseCallbacks)); 86 return adoptPtr(new VersionChangeOperation(database, transactionId, vers ion, callbacks, databaseCallbacks));
85 } 87 }
86 virtual void perform(IDBTransactionBackendImpl*); 88 virtual void perform(IDBTransactionBackendImpl*);
87 private: 89 private:
88 VersionChangeOperation(PassRefPtr<IDBDatabaseBackendImpl> database, int64_t transactionId, int64_t version, PassRefPtr<IDBCallbacks> callbacks, PassRefPtr<I DBDatabaseCallbacks> databaseCallbacks) 90 VersionChangeOperation(IDBDatabaseBackendImpl* database, int64_t transaction Id, int64_t version, IDBCallbacks* callbacks, IDBDatabaseCallbacks* databaseCall backs)
89 : m_database(database) 91 : m_database(database)
90 , m_transactionId(transactionId) 92 , m_transactionId(transactionId)
91 , m_version(version) 93 , m_version(version)
92 , m_callbacks(callbacks) 94 , m_callbacks(callbacks)
93 , m_databaseCallbacks(databaseCallbacks) 95 , m_databaseCallbacks(databaseCallbacks)
94 { 96 {
95 } 97 }
96 98
97 RefPtr<IDBDatabaseBackendImpl> m_database; 99 Persistent<IDBDatabaseBackendImpl> m_database;
98 int64_t m_transactionId; 100 int64_t m_transactionId;
99 int64_t m_version; 101 int64_t m_version;
100 RefPtr<IDBCallbacks> m_callbacks; 102 Persistent<IDBCallbacks> m_callbacks;
101 RefPtr<IDBDatabaseCallbacks> m_databaseCallbacks; 103 Persistent<IDBDatabaseCallbacks> m_databaseCallbacks;
102 }; 104 };
103 105
104 class CreateObjectStoreAbortOperation : public IDBTransactionBackendImpl::Operat ion { 106 class CreateObjectStoreAbortOperation : public IDBTransactionBackendImpl::Operat ion {
105 public: 107 public:
106 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BDatabaseBackendImpl> database, int64_t objectStoreId) 108 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(IDBDatabaseBa ckendImpl* database, int64_t objectStoreId)
107 { 109 {
108 return adoptPtr(new CreateObjectStoreAbortOperation(database, objectStor eId)); 110 return adoptPtr(new CreateObjectStoreAbortOperation(database, objectStor eId));
109 } 111 }
110 virtual void perform(IDBTransactionBackendImpl*); 112 virtual void perform(IDBTransactionBackendImpl*);
111 private: 113 private:
112 CreateObjectStoreAbortOperation(PassRefPtr<IDBDatabaseBackendImpl> database, int64_t objectStoreId) 114 CreateObjectStoreAbortOperation(IDBDatabaseBackendImpl* database, int64_t ob jectStoreId)
113 : m_database(database) 115 : m_database(database)
114 , m_objectStoreId(objectStoreId) 116 , m_objectStoreId(objectStoreId)
115 { 117 {
116 } 118 }
117 119
118 const RefPtr<IDBDatabaseBackendImpl> m_database; 120 const Persistent<IDBDatabaseBackendImpl> m_database;
119 const int64_t m_objectStoreId; 121 const int64_t m_objectStoreId;
120 }; 122 };
121 123
122 class DeleteObjectStoreAbortOperation : public IDBTransactionBackendImpl::Operat ion { 124 class DeleteObjectStoreAbortOperation : public IDBTransactionBackendImpl::Operat ion {
123 public: 125 public:
124 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BDatabaseBackendImpl> database, const IDBObjectStoreMetadata& objectStore) 126 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(IDBDatabaseBa ckendImpl* database, const IDBObjectStoreMetadata& objectStore)
125 { 127 {
126 return adoptPtr(new DeleteObjectStoreAbortOperation(database, objectStor e)); 128 return adoptPtr(new DeleteObjectStoreAbortOperation(database, objectStor e));
127 } 129 }
128 virtual void perform(IDBTransactionBackendImpl*); 130 virtual void perform(IDBTransactionBackendImpl*);
129 private: 131 private:
130 DeleteObjectStoreAbortOperation(PassRefPtr<IDBDatabaseBackendImpl> database, const IDBObjectStoreMetadata& objectStoreMetadata) 132 DeleteObjectStoreAbortOperation(IDBDatabaseBackendImpl* database, const IDBO bjectStoreMetadata& objectStoreMetadata)
131 : m_database(database) 133 : m_database(database)
132 , m_objectStoreMetadata(objectStoreMetadata) 134 , m_objectStoreMetadata(objectStoreMetadata)
133 { 135 {
134 } 136 }
135 137
136 RefPtr<IDBDatabaseBackendImpl> m_database; 138 Persistent<IDBDatabaseBackendImpl> m_database;
137 IDBObjectStoreMetadata m_objectStoreMetadata; 139 IDBObjectStoreMetadata m_objectStoreMetadata;
138 }; 140 };
139 141
140 class IDBDatabaseBackendImpl::VersionChangeAbortOperation : public IDBTransactio nBackendImpl::Operation { 142 class IDBDatabaseBackendImpl::VersionChangeAbortOperation : public IDBTransactio nBackendImpl::Operation {
141 public: 143 public:
142 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BDatabaseBackendImpl> database, const String& previousVersion, int64_t previousI ntVersion) 144 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(IDBDatabaseBa ckendImpl* database, const String& previousVersion, int64_t previousIntVersion)
143 { 145 {
144 return adoptPtr(new VersionChangeAbortOperation(database, previousVersio n, previousIntVersion)); 146 return adoptPtr(new VersionChangeAbortOperation(database, previousVersio n, previousIntVersion));
145 } 147 }
146 virtual void perform(IDBTransactionBackendImpl*); 148 virtual void perform(IDBTransactionBackendImpl*);
147 private: 149 private:
148 VersionChangeAbortOperation(PassRefPtr<IDBDatabaseBackendImpl> database, con st String& previousVersion, int64_t previousIntVersion) 150 VersionChangeAbortOperation(IDBDatabaseBackendImpl* database, const String& previousVersion, int64_t previousIntVersion)
149 : m_database(database) 151 : m_database(database)
150 , m_previousVersion(previousVersion) 152 , m_previousVersion(previousVersion)
151 , m_previousIntVersion(previousIntVersion) 153 , m_previousIntVersion(previousIntVersion)
152 { 154 {
153 } 155 }
154 156
155 RefPtr<IDBDatabaseBackendImpl> m_database; 157 Persistent<IDBDatabaseBackendImpl> m_database;
156 String m_previousVersion; 158 String m_previousVersion;
157 int64_t m_previousIntVersion; 159 int64_t m_previousIntVersion;
158 }; 160 };
159 161
160 class CreateIndexOperation : public IDBTransactionBackendImpl::Operation { 162 class CreateIndexOperation : public IDBTransactionBackendImpl::Operation {
161 public: 163 public:
162 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, int64_t objectStoreId, const IDBIndexMetadata& inde xMetadata) 164 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, int64_t objectStoreId, const IDBIndexMetadata& inde xMetadata)
163 { 165 {
164 return adoptPtr(new CreateIndexOperation(backingStore, objectStoreId, in dexMetadata)); 166 return adoptPtr(new CreateIndexOperation(backingStore, objectStoreId, in dexMetadata));
165 } 167 }
(...skipping 26 matching lines...) Expand all
192 { 194 {
193 } 195 }
194 196
195 const RefPtr<IDBBackingStore> m_backingStore; 197 const RefPtr<IDBBackingStore> m_backingStore;
196 const int64_t m_objectStoreId; 198 const int64_t m_objectStoreId;
197 const IDBIndexMetadata m_indexMetadata; 199 const IDBIndexMetadata m_indexMetadata;
198 }; 200 };
199 201
200 class CreateIndexAbortOperation : public IDBTransactionBackendImpl::Operation { 202 class CreateIndexAbortOperation : public IDBTransactionBackendImpl::Operation {
201 public: 203 public:
202 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BDatabaseBackendImpl> database, int64_t objectStoreId, int64_t indexId) 204 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(IDBDatabaseBa ckendImpl* database, int64_t objectStoreId, int64_t indexId)
203 { 205 {
204 return adoptPtr(new CreateIndexAbortOperation(database, objectStoreId, i ndexId)); 206 return adoptPtr(new CreateIndexAbortOperation(database, objectStoreId, i ndexId));
205 } 207 }
206 virtual void perform(IDBTransactionBackendImpl*); 208 virtual void perform(IDBTransactionBackendImpl*);
207 private: 209 private:
208 CreateIndexAbortOperation(PassRefPtr<IDBDatabaseBackendImpl> database, int64 _t objectStoreId, int64_t indexId) 210 CreateIndexAbortOperation(IDBDatabaseBackendImpl* database, int64_t objectSt oreId, int64_t indexId)
209 : m_database(database) 211 : m_database(database)
210 , m_objectStoreId(objectStoreId) 212 , m_objectStoreId(objectStoreId)
211 , m_indexId(indexId) 213 , m_indexId(indexId)
212 { 214 {
213 } 215 }
214 216
215 const RefPtr<IDBDatabaseBackendImpl> m_database; 217 const Persistent<IDBDatabaseBackendImpl> m_database;
216 const int64_t m_objectStoreId; 218 const int64_t m_objectStoreId;
217 const int64_t m_indexId; 219 const int64_t m_indexId;
218 }; 220 };
219 221
220 class DeleteIndexAbortOperation : public IDBTransactionBackendImpl::Operation { 222 class DeleteIndexAbortOperation : public IDBTransactionBackendImpl::Operation {
221 public: 223 public:
222 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BDatabaseBackendImpl> database, int64_t objectStoreId, const IDBIndexMetadata& i ndexMetadata) 224 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(IDBDatabaseBa ckendImpl* database, int64_t objectStoreId, const IDBIndexMetadata& indexMetadat a)
223 { 225 {
224 return adoptPtr(new DeleteIndexAbortOperation(database, objectStoreId, i ndexMetadata)); 226 return adoptPtr(new DeleteIndexAbortOperation(database, objectStoreId, i ndexMetadata));
225 } 227 }
226 virtual void perform(IDBTransactionBackendImpl*); 228 virtual void perform(IDBTransactionBackendImpl*);
227 private: 229 private:
228 DeleteIndexAbortOperation(PassRefPtr<IDBDatabaseBackendImpl> database, int64 _t objectStoreId, const IDBIndexMetadata& indexMetadata) 230 DeleteIndexAbortOperation(IDBDatabaseBackendImpl* database, int64_t objectSt oreId, const IDBIndexMetadata& indexMetadata)
229 : m_database(database) 231 : m_database(database)
230 , m_objectStoreId(objectStoreId) 232 , m_objectStoreId(objectStoreId)
231 , m_indexMetadata(indexMetadata) 233 , m_indexMetadata(indexMetadata)
232 { 234 {
233 } 235 }
234 236
235 const RefPtr<IDBDatabaseBackendImpl> m_database; 237 const Persistent<IDBDatabaseBackendImpl> m_database;
236 const int64_t m_objectStoreId; 238 const int64_t m_objectStoreId;
237 const IDBIndexMetadata m_indexMetadata; 239 const IDBIndexMetadata m_indexMetadata;
238 }; 240 };
239 241
240 class GetOperation : public IDBTransactionBackendImpl::Operation { 242 class GetOperation : public IDBTransactionBackendImpl::Operation {
241 public: 243 public:
242 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, const IDBDatabaseMetadata& metadata, int64_t object StoreId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, IndexedDB::CursorTyp e cursorType, PassRefPtr<IDBCallbacks> callbacks) 244 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, const IDBDatabaseMetadata& metadata, int64_t object StoreId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, IndexedDB::CursorTyp e cursorType, IDBCallbacks* callbacks)
243 { 245 {
244 return adoptPtr(new GetOperation(backingStore, metadata, objectStoreId, indexId, keyRange, cursorType, callbacks)); 246 return adoptPtr(new GetOperation(backingStore, metadata, objectStoreId, indexId, keyRange, cursorType, callbacks));
245 } 247 }
246 virtual void perform(IDBTransactionBackendImpl*); 248 virtual void perform(IDBTransactionBackendImpl*);
247 private: 249 private:
248 GetOperation(PassRefPtr<IDBBackingStore> backingStore, const IDBDatabaseMeta data& metadata, int64_t objectStoreId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, IndexedDB::CursorType cursorType, PassRefPtr<IDBCallbacks> callbacks) 250 GetOperation(PassRefPtr<IDBBackingStore> backingStore, const IDBDatabaseMeta data& metadata, int64_t objectStoreId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, IndexedDB::CursorType cursorType, IDBCallbacks* callbacks)
249 : m_backingStore(backingStore) 251 : m_backingStore(backingStore)
250 , m_databaseId(metadata.id) 252 , m_databaseId(metadata.id)
251 , m_objectStoreId(objectStoreId) 253 , m_objectStoreId(objectStoreId)
252 , m_indexId(indexId) 254 , m_indexId(indexId)
253 , m_keyPath(metadata.objectStores.get(objectStoreId).keyPath) 255 , m_keyPath(metadata.objectStores.get(objectStoreId).keyPath)
254 , m_autoIncrement(metadata.objectStores.get(objectStoreId).autoIncrement ) 256 , m_autoIncrement(metadata.objectStores.get(objectStoreId).autoIncrement )
255 , m_keyRange(keyRange) 257 , m_keyRange(keyRange)
256 , m_cursorType(cursorType) 258 , m_cursorType(cursorType)
257 , m_callbacks(callbacks) 259 , m_callbacks(callbacks)
258 { 260 {
259 ASSERT(metadata.objectStores.contains(objectStoreId)); 261 ASSERT(metadata.objectStores.contains(objectStoreId));
260 ASSERT(metadata.objectStores.get(objectStoreId).id == objectStoreId); 262 ASSERT(metadata.objectStores.get(objectStoreId).id == objectStoreId);
261 } 263 }
262 264
263 const RefPtr<IDBBackingStore> m_backingStore; 265 const RefPtr<IDBBackingStore> m_backingStore;
264 const int64_t m_databaseId; 266 const int64_t m_databaseId;
265 const int64_t m_objectStoreId; 267 const int64_t m_objectStoreId;
266 const int64_t m_indexId; 268 const int64_t m_indexId;
267 const IDBKeyPath m_keyPath; 269 const IDBKeyPath m_keyPath;
268 const bool m_autoIncrement; 270 const bool m_autoIncrement;
269 const RefPtr<IDBKeyRange> m_keyRange; 271 const RefPtr<IDBKeyRange> m_keyRange;
270 const IndexedDB::CursorType m_cursorType; 272 const IndexedDB::CursorType m_cursorType;
271 const RefPtr<IDBCallbacks> m_callbacks; 273 const Persistent<IDBCallbacks> m_callbacks;
272 }; 274 };
273 275
274 class PutOperation : public IDBTransactionBackendImpl::Operation { 276 class PutOperation : public IDBTransactionBackendImpl::Operation {
275 public: 277 public:
276 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, int64_t databaseId, const IDBObjectStoreMetadata& o bjectStore, PassRefPtr<SharedBuffer> value, PassRefPtr<IDBKey> key, IDBDatabaseB ackendInterface::PutMode putMode, PassRefPtr<IDBCallbacks> callbacks, const Vect or<int64_t>& indexIds, const Vector<IDBDatabaseBackendInterface::IndexKeys>& ind exKeys) 278 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, int64_t databaseId, const IDBObjectStoreMetadata& o bjectStore, PassRefPtr<SharedBuffer> value, PassRefPtr<IDBKey> key, IDBDatabaseB ackendInterface::PutMode putMode, IDBCallbacks* callbacks, const Vector<int64_t> & indexIds, const Vector<IDBDatabaseBackendInterface::IndexKeys>& indexKeys)
277 { 279 {
278 return adoptPtr(new PutOperation(backingStore, databaseId, objectStore, value, key, putMode, callbacks, indexIds, indexKeys)); 280 return adoptPtr(new PutOperation(backingStore, databaseId, objectStore, value, key, putMode, callbacks, indexIds, indexKeys));
279 } 281 }
280 virtual void perform(IDBTransactionBackendImpl*); 282 virtual void perform(IDBTransactionBackendImpl*);
281 private: 283 private:
282 PutOperation(PassRefPtr<IDBBackingStore> backingStore, int64_t databaseId, c onst IDBObjectStoreMetadata& objectStore, PassRefPtr<SharedBuffer>& value, PassR efPtr<IDBKey> key, IDBDatabaseBackendInterface::PutMode putMode, PassRefPtr<IDBC allbacks> callbacks, const Vector<int64_t>& indexIds, const Vector<IDBDatabaseBa ckendInterface::IndexKeys>& indexKeys) 284 PutOperation(PassRefPtr<IDBBackingStore> backingStore, int64_t databaseId, c onst IDBObjectStoreMetadata& objectStore, PassRefPtr<SharedBuffer>& value, PassR efPtr<IDBKey> key, IDBDatabaseBackendInterface::PutMode putMode, IDBCallbacks* c allbacks, const Vector<int64_t>& indexIds, const Vector<IDBDatabaseBackendInterf ace::IndexKeys>& indexKeys)
283 : m_backingStore(backingStore) 285 : m_backingStore(backingStore)
284 , m_databaseId(databaseId) 286 , m_databaseId(databaseId)
285 , m_objectStore(objectStore) 287 , m_objectStore(objectStore)
286 , m_value(value) 288 , m_value(value)
287 , m_key(key) 289 , m_key(key)
288 , m_putMode(putMode) 290 , m_putMode(putMode)
289 , m_callbacks(callbacks) 291 , m_callbacks(callbacks)
290 , m_indexIds(indexIds) 292 , m_indexIds(indexIds)
291 , m_indexKeys(indexKeys) 293 , m_indexKeys(indexKeys)
292 { 294 {
293 } 295 }
294 296
295 const RefPtr<IDBBackingStore> m_backingStore; 297 const RefPtr<IDBBackingStore> m_backingStore;
296 const int64_t m_databaseId; 298 const int64_t m_databaseId;
297 const IDBObjectStoreMetadata m_objectStore; 299 const IDBObjectStoreMetadata m_objectStore;
298 const RefPtr<SharedBuffer> m_value; 300 const RefPtr<SharedBuffer> m_value;
299 const RefPtr<IDBKey> m_key; 301 const RefPtr<IDBKey> m_key;
300 const IDBDatabaseBackendInterface::PutMode m_putMode; 302 const IDBDatabaseBackendInterface::PutMode m_putMode;
301 const RefPtr<IDBCallbacks> m_callbacks; 303 const Persistent<IDBCallbacks> m_callbacks;
302 const Vector<int64_t> m_indexIds; 304 const Vector<int64_t> m_indexIds;
303 const Vector<IDBDatabaseBackendInterface::IndexKeys> m_indexKeys; 305 const Vector<IDBDatabaseBackendInterface::IndexKeys> m_indexKeys;
304 }; 306 };
305 307
306 class SetIndexesReadyOperation : public IDBTransactionBackendImpl::Operation { 308 class SetIndexesReadyOperation : public IDBTransactionBackendImpl::Operation {
307 public: 309 public:
308 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(size_t indexC ount) 310 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(size_t indexC ount)
309 { 311 {
310 return adoptPtr(new SetIndexesReadyOperation(indexCount)); 312 return adoptPtr(new SetIndexesReadyOperation(indexCount));
311 } 313 }
312 virtual void perform(IDBTransactionBackendImpl*); 314 virtual void perform(IDBTransactionBackendImpl*);
313 private: 315 private:
314 SetIndexesReadyOperation(size_t indexCount) 316 SetIndexesReadyOperation(size_t indexCount)
315 : m_indexCount(indexCount) 317 : m_indexCount(indexCount)
316 { 318 {
317 } 319 }
318 320
319 const size_t m_indexCount; 321 const size_t m_indexCount;
320 }; 322 };
321 323
322 class OpenCursorOperation : public IDBTransactionBackendImpl::Operation { 324 class OpenCursorOperation : public IDBTransactionBackendImpl::Operation {
323 public: 325 public:
324 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, int64_t databaseId, int64_t objectStoreId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, IndexedDB::CursorDirection direction, IndexedDB::CursorType cursorType, IDBDatabaseBackendInterface::TaskType taskTyp e, PassRefPtr<IDBCallbacks> callbacks) 326 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, int64_t databaseId, int64_t objectStoreId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, IndexedDB::CursorDirection direction, IndexedDB::CursorType cursorType, IDBDatabaseBackendInterface::TaskType taskTyp e, IDBCallbacks* callbacks)
325 { 327 {
326 return adoptPtr(new OpenCursorOperation(backingStore, databaseId, object StoreId, indexId, keyRange, direction, cursorType, taskType, callbacks)); 328 return adoptPtr(new OpenCursorOperation(backingStore, databaseId, object StoreId, indexId, keyRange, direction, cursorType, taskType, callbacks));
327 } 329 }
328 virtual void perform(IDBTransactionBackendImpl*); 330 virtual void perform(IDBTransactionBackendImpl*);
329 private: 331 private:
330 OpenCursorOperation(PassRefPtr<IDBBackingStore> backingStore, int64_t databa seId, int64_t objectStoreId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, IndexedDB::CursorDirection direction, IndexedDB::CursorType cursorType, IDBDatab aseBackendInterface::TaskType taskType, PassRefPtr<IDBCallbacks> callbacks) 332 OpenCursorOperation(PassRefPtr<IDBBackingStore> backingStore, int64_t databa seId, int64_t objectStoreId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, IndexedDB::CursorDirection direction, IndexedDB::CursorType cursorType, IDBDatab aseBackendInterface::TaskType taskType, IDBCallbacks* callbacks)
331 : m_backingStore(backingStore) 333 : m_backingStore(backingStore)
332 , m_databaseId(databaseId) 334 , m_databaseId(databaseId)
333 , m_objectStoreId(objectStoreId) 335 , m_objectStoreId(objectStoreId)
334 , m_indexId(indexId) 336 , m_indexId(indexId)
335 , m_keyRange(keyRange) 337 , m_keyRange(keyRange)
336 , m_direction(direction) 338 , m_direction(direction)
337 , m_cursorType(cursorType) 339 , m_cursorType(cursorType)
338 , m_taskType(taskType) 340 , m_taskType(taskType)
339 , m_callbacks(callbacks) 341 , m_callbacks(callbacks)
340 { 342 {
341 } 343 }
342 344
343 const RefPtr<IDBBackingStore> m_backingStore; 345 const RefPtr<IDBBackingStore> m_backingStore;
344 const int64_t m_databaseId; 346 const int64_t m_databaseId;
345 const int64_t m_objectStoreId; 347 const int64_t m_objectStoreId;
346 const int64_t m_indexId; 348 const int64_t m_indexId;
347 const PassRefPtr<IDBKeyRange> m_keyRange; 349 const PassRefPtr<IDBKeyRange> m_keyRange;
348 const IndexedDB::CursorDirection m_direction; 350 const IndexedDB::CursorDirection m_direction;
349 const IndexedDB::CursorType m_cursorType; 351 const IndexedDB::CursorType m_cursorType;
350 const IDBDatabaseBackendInterface::TaskType m_taskType; 352 const IDBDatabaseBackendInterface::TaskType m_taskType;
351 const RefPtr<IDBCallbacks> m_callbacks; 353 const Persistent<IDBCallbacks> m_callbacks;
352 }; 354 };
353 355
354 class CountOperation : public IDBTransactionBackendImpl::Operation { 356 class CountOperation : public IDBTransactionBackendImpl::Operation {
355 public: 357 public:
356 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, int64_t databaseId, int64_t objectStoreId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, PassRefPtr<IDBCallbacks> callbacks) 358 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, int64_t databaseId, int64_t objectStoreId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, IDBCallbacks* callbacks)
357 { 359 {
358 return adoptPtr(new CountOperation(backingStore, databaseId, objectStore Id, indexId, keyRange, callbacks)); 360 return adoptPtr(new CountOperation(backingStore, databaseId, objectStore Id, indexId, keyRange, callbacks));
359 } 361 }
360 virtual void perform(IDBTransactionBackendImpl*); 362 virtual void perform(IDBTransactionBackendImpl*);
361 private: 363 private:
362 CountOperation(PassRefPtr<IDBBackingStore> backingStore, int64_t databaseId, int64_t objectStoreId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, PassR efPtr<IDBCallbacks> callbacks) 364 CountOperation(PassRefPtr<IDBBackingStore> backingStore, int64_t databaseId, int64_t objectStoreId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, IDBCa llbacks* callbacks)
363 : m_backingStore(backingStore) 365 : m_backingStore(backingStore)
364 , m_databaseId(databaseId) 366 , m_databaseId(databaseId)
365 , m_objectStoreId(objectStoreId) 367 , m_objectStoreId(objectStoreId)
366 , m_indexId(indexId) 368 , m_indexId(indexId)
367 , m_keyRange(keyRange) 369 , m_keyRange(keyRange)
368 , m_callbacks(callbacks) 370 , m_callbacks(callbacks)
369 { 371 {
370 } 372 }
371 373
372 const RefPtr<IDBBackingStore> m_backingStore; 374 const RefPtr<IDBBackingStore> m_backingStore;
373 const int64_t m_databaseId; 375 const int64_t m_databaseId;
374 const int64_t m_objectStoreId; 376 const int64_t m_objectStoreId;
375 const int64_t m_indexId; 377 const int64_t m_indexId;
376 const RefPtr<IDBKeyRange> m_keyRange; 378 const RefPtr<IDBKeyRange> m_keyRange;
377 const RefPtr<IDBCallbacks> m_callbacks; 379 const Persistent<IDBCallbacks> m_callbacks;
378 }; 380 };
379 381
380 class DeleteRangeOperation : public IDBTransactionBackendImpl::Operation { 382 class DeleteRangeOperation : public IDBTransactionBackendImpl::Operation {
381 public: 383 public:
382 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, int64_t databaseId, int64_t objectStoreId, PassRefP tr<IDBKeyRange> keyRange, PassRefPtr<IDBCallbacks> callbacks) 384 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, int64_t databaseId, int64_t objectStoreId, PassRefP tr<IDBKeyRange> keyRange, IDBCallbacks* callbacks)
383 { 385 {
384 return adoptPtr(new DeleteRangeOperation(backingStore, databaseId, objec tStoreId, keyRange, callbacks)); 386 return adoptPtr(new DeleteRangeOperation(backingStore, databaseId, objec tStoreId, keyRange, callbacks));
385 } 387 }
386 virtual void perform(IDBTransactionBackendImpl*); 388 virtual void perform(IDBTransactionBackendImpl*);
387 private: 389 private:
388 DeleteRangeOperation(PassRefPtr<IDBBackingStore> backingStore, int64_t datab aseId, int64_t objectStoreId, PassRefPtr<IDBKeyRange> keyRange, PassRefPtr<IDBCa llbacks> callbacks) 390 DeleteRangeOperation(PassRefPtr<IDBBackingStore> backingStore, int64_t datab aseId, int64_t objectStoreId, PassRefPtr<IDBKeyRange> keyRange, IDBCallbacks* ca llbacks)
389 : m_backingStore(backingStore) 391 : m_backingStore(backingStore)
390 , m_databaseId(databaseId) 392 , m_databaseId(databaseId)
391 , m_objectStoreId(objectStoreId) 393 , m_objectStoreId(objectStoreId)
392 , m_keyRange(keyRange) 394 , m_keyRange(keyRange)
393 , m_callbacks(callbacks) 395 , m_callbacks(callbacks)
394 { 396 {
395 } 397 }
396 398
397 const RefPtr<IDBBackingStore> m_backingStore; 399 const RefPtr<IDBBackingStore> m_backingStore;
398 const int64_t m_databaseId; 400 const int64_t m_databaseId;
399 const int64_t m_objectStoreId; 401 const int64_t m_objectStoreId;
400 const RefPtr<IDBKeyRange> m_keyRange; 402 const RefPtr<IDBKeyRange> m_keyRange;
401 const RefPtr<IDBCallbacks> m_callbacks; 403 const Persistent<IDBCallbacks> m_callbacks;
402 }; 404 };
403 405
404 class ClearOperation : public IDBTransactionBackendImpl::Operation { 406 class ClearOperation : public IDBTransactionBackendImpl::Operation {
405 public: 407 public:
406 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, int64_t databaseId, int64_t objectStoreId, PassRefP tr<IDBCallbacks> callbacks) 408 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BBackingStore> backingStore, int64_t databaseId, int64_t objectStoreId, IDBCallb acks* callbacks)
407 { 409 {
408 return adoptPtr(new ClearOperation(backingStore, databaseId, objectStore Id, callbacks)); 410 return adoptPtr(new ClearOperation(backingStore, databaseId, objectStore Id, callbacks));
409 } 411 }
410 virtual void perform(IDBTransactionBackendImpl*); 412 virtual void perform(IDBTransactionBackendImpl*);
411 private: 413 private:
412 ClearOperation(PassRefPtr<IDBBackingStore> backingStore, int64_t databaseId, int64_t objectStoreId, PassRefPtr<IDBCallbacks> callbacks) 414 ClearOperation(PassRefPtr<IDBBackingStore> backingStore, int64_t databaseId, int64_t objectStoreId, IDBCallbacks* callbacks)
413 : m_backingStore(backingStore) 415 : m_backingStore(backingStore)
414 , m_databaseId(databaseId) 416 , m_databaseId(databaseId)
415 , m_objectStoreId(objectStoreId) 417 , m_objectStoreId(objectStoreId)
416 , m_callbacks(callbacks) 418 , m_callbacks(callbacks)
417 { 419 {
418 } 420 }
419 421
420 const RefPtr<IDBBackingStore> m_backingStore; 422 const RefPtr<IDBBackingStore> m_backingStore;
421 const int64_t m_databaseId; 423 const int64_t m_databaseId;
422 const int64_t m_objectStoreId; 424 const int64_t m_objectStoreId;
423 const RefPtr<IDBCallbacks> m_callbacks; 425 const Persistent<IDBCallbacks> m_callbacks;
424 }; 426 };
425 427
426 class IDBDatabaseBackendImpl::PendingOpenCall { 428 class IDBDatabaseBackendImpl::PendingOpenCall {
427 public: 429 public:
428 static PassOwnPtr<PendingOpenCall> create(PassRefPtr<IDBCallbacks> callbacks , PassRefPtr<IDBDatabaseCallbacks> databaseCallbacks, int64_t transactionId, int 64_t version) 430 static PassOwnPtr<PendingOpenCall> create(IDBCallbacks* callbacks, IDBDataba seCallbacks* databaseCallbacks, int64_t transactionId, int64_t version)
429 { 431 {
430 return adoptPtr(new PendingOpenCall(callbacks, databaseCallbacks, transa ctionId, version)); 432 return adoptPtr(new PendingOpenCall(callbacks, databaseCallbacks, transa ctionId, version));
431 } 433 }
432 PassRefPtr<IDBCallbacks> callbacks() { return m_callbacks; } 434 IDBCallbacks* callbacks() { return m_callbacks; }
433 PassRefPtr<IDBDatabaseCallbacks> databaseCallbacks() { return m_databaseCall backs; } 435 IDBDatabaseCallbacks* databaseCallbacks() { return m_databaseCallbacks; }
434 int64_t version() { return m_version; } 436 int64_t version() { return m_version; }
435 int64_t transactionId() const { return m_transactionId; } 437 int64_t transactionId() const { return m_transactionId; }
436 438
437 private: 439 private:
438 PendingOpenCall(PassRefPtr<IDBCallbacks> callbacks, PassRefPtr<IDBDatabaseCa llbacks> databaseCallbacks, int64_t transactionId, int64_t version) 440 PendingOpenCall(IDBCallbacks* callbacks, IDBDatabaseCallbacks* databaseCallb acks, int64_t transactionId, int64_t version)
439 : m_callbacks(callbacks) 441 : m_callbacks(callbacks)
440 , m_databaseCallbacks(databaseCallbacks) 442 , m_databaseCallbacks(databaseCallbacks)
441 , m_version(version) 443 , m_version(version)
442 , m_transactionId(transactionId) 444 , m_transactionId(transactionId)
443 { 445 {
444 } 446 }
445 RefPtr<IDBCallbacks> m_callbacks; 447 Persistent<IDBCallbacks> m_callbacks;
446 RefPtr<IDBDatabaseCallbacks> m_databaseCallbacks; 448 Persistent<IDBDatabaseCallbacks> m_databaseCallbacks;
447 int64_t m_version; 449 int64_t m_version;
448 const int64_t m_transactionId; 450 const int64_t m_transactionId;
449 }; 451 };
450 452
451 class IDBDatabaseBackendImpl::PendingDeleteCall { 453 class IDBDatabaseBackendImpl::PendingDeleteCall {
452 public: 454 public:
453 static PassOwnPtr<PendingDeleteCall> create(PassRefPtr<IDBCallbacks> callbac ks) 455 static PassOwnPtr<PendingDeleteCall> create(IDBCallbacks* callbacks)
454 { 456 {
455 return adoptPtr(new PendingDeleteCall(callbacks)); 457 return adoptPtr(new PendingDeleteCall(callbacks));
456 } 458 }
457 PassRefPtr<IDBCallbacks> callbacks() { return m_callbacks; } 459 IDBCallbacks* callbacks() { return m_callbacks; }
458 460
459 private: 461 private:
460 PendingDeleteCall(PassRefPtr<IDBCallbacks> callbacks) 462 PendingDeleteCall(IDBCallbacks* callbacks)
461 : m_callbacks(callbacks) 463 : m_callbacks(callbacks)
462 { 464 {
463 } 465 }
464 RefPtr<IDBCallbacks> m_callbacks; 466 Persistent<IDBCallbacks> m_callbacks;
465 }; 467 };
466 468
467 PassRefPtr<IDBDatabaseBackendImpl> IDBDatabaseBackendImpl::create(const String& name, IDBBackingStore* database, IDBFactoryBackendImpl* factory, const String& u niqueIdentifier) 469 IDBDatabaseBackendImpl* IDBDatabaseBackendImpl::create(const String& name, IDBBa ckingStore* database, IDBFactoryBackendImpl* factory, const String& uniqueIdenti fier)
468 { 470 {
469 RefPtr<IDBDatabaseBackendImpl> backend = adoptRef(new IDBDatabaseBackendImpl (name, database, factory, uniqueIdentifier)); 471 IDBDatabaseBackendImpl* backend = new IDBDatabaseBackendImpl(name, database, factory, uniqueIdentifier);
470 if (!backend->openInternal()) 472 if (!backend->openInternal())
471 return 0; 473 return 0;
472 return backend.release(); 474 return backend;
473 } 475 }
474 476
475 namespace { 477 namespace {
476 const char* NoStringVersion = ""; 478 const char* NoStringVersion = "";
477 } 479 }
478 480
479 IDBDatabaseBackendImpl::IDBDatabaseBackendImpl(const String& name, IDBBackingSto re* backingStore, IDBFactoryBackendImpl* factory, const String& uniqueIdentifier ) 481 IDBDatabaseBackendImpl::IDBDatabaseBackendImpl(const String& name, IDBBackingSto re* backingStore, IDBFactoryBackendImpl* factory, const String& uniqueIdentifier )
480 : m_backingStore(backingStore) 482 : m_backingStore(backingStore)
481 , m_metadata(name, InvalidId, NoStringVersion, IDBDatabaseMetadata::NoIntVer sion, InvalidId) 483 , m_metadata(name, InvalidId, NoStringVersion, IDBDatabaseMetadata::NoIntVer sion, InvalidId)
482 , m_identifier(uniqueIdentifier) 484 , m_identifier(uniqueIdentifier)
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
675 m_transactions.get(transactionId)->abort(); 677 m_transactions.get(transactionId)->abort();
676 } 678 }
677 679
678 void IDBDatabaseBackendImpl::abort(int64_t transactionId, PassRefPtr<IDBDatabase Error> error) 680 void IDBDatabaseBackendImpl::abort(int64_t transactionId, PassRefPtr<IDBDatabase Error> error)
679 { 681 {
680 // If the transaction is unknown, then it has already been aborted by the ba ckend before this call so it is safe to ignore it. 682 // If the transaction is unknown, then it has already been aborted by the ba ckend before this call so it is safe to ignore it.
681 if (m_transactions.contains(transactionId)) 683 if (m_transactions.contains(transactionId))
682 m_transactions.get(transactionId)->abort(error); 684 m_transactions.get(transactionId)->abort(error);
683 } 685 }
684 686
685 void IDBDatabaseBackendImpl::get(int64_t transactionId, int64_t objectStoreId, i nt64_t indexId, PassRefPtr<IDBKeyRange> keyRange, bool keyOnly, PassRefPtr<IDBCa llbacks> callbacks) 687 void IDBDatabaseBackendImpl::get(int64_t transactionId, int64_t objectStoreId, i nt64_t indexId, PassRefPtr<IDBKeyRange> keyRange, bool keyOnly, IDBCallbacks* ca llbacks)
686 { 688 {
687 IDB_TRACE("IDBDatabaseBackendImpl::get"); 689 IDB_TRACE("IDBDatabaseBackendImpl::get");
688 IDBTransactionBackendImpl* transaction = m_transactions.get(transactionId); 690 IDBTransactionBackendImpl* transaction = m_transactions.get(transactionId);
689 if (!transaction) 691 if (!transaction)
690 return; 692 return;
691 693
692 transaction->scheduleTask(GetOperation::create(m_backingStore, m_metadata, o bjectStoreId, indexId, keyRange, keyOnly ? IndexedDB::CursorKeyOnly : IndexedDB: :CursorKeyAndValue, callbacks)); 694 transaction->scheduleTask(GetOperation::create(m_backingStore, m_metadata, o bjectStoreId, indexId, keyRange, keyOnly ? IndexedDB::CursorKeyOnly : IndexedDB: :CursorKeyAndValue, callbacks));
693 } 695 }
694 696
695 void GetOperation::perform(IDBTransactionBackendImpl* transaction) 697 void GetOperation::perform(IDBTransactionBackendImpl* transaction)
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
777 m_callbacks->onSuccess(); 779 m_callbacks->onSuccess();
778 return; 780 return;
779 } 781 }
780 if (m_autoIncrement && !m_keyPath.isNull()) { 782 if (m_autoIncrement && !m_keyPath.isNull()) {
781 m_callbacks->onSuccess(SharedBuffer::adoptVector(value), primaryKey, m_k eyPath); 783 m_callbacks->onSuccess(SharedBuffer::adoptVector(value), primaryKey, m_k eyPath);
782 return; 784 return;
783 } 785 }
784 m_callbacks->onSuccess(SharedBuffer::adoptVector(value)); 786 m_callbacks->onSuccess(SharedBuffer::adoptVector(value));
785 } 787 }
786 788
787 void IDBDatabaseBackendImpl::put(int64_t transactionId, int64_t objectStoreId, P assRefPtr<SharedBuffer> value, PassRefPtr<IDBKey> key, PutMode putMode, PassRefP tr<IDBCallbacks> callbacks, const Vector<int64_t>& indexIds, const Vector<IndexK eys>& indexKeys) 789 void IDBDatabaseBackendImpl::put(int64_t transactionId, int64_t objectStoreId, P assRefPtr<SharedBuffer> value, PassRefPtr<IDBKey> key, PutMode putMode, IDBCallb acks* callbacks, const Vector<int64_t>& indexIds, const Vector<IndexKeys>& index Keys)
788 { 790 {
789 IDB_TRACE("IDBDatabaseBackendImpl::put"); 791 IDB_TRACE("IDBDatabaseBackendImpl::put");
790 IDBTransactionBackendImpl* transaction = m_transactions.get(transactionId); 792 IDBTransactionBackendImpl* transaction = m_transactions.get(transactionId);
791 if (!transaction) 793 if (!transaction)
792 return; 794 return;
793 ASSERT(transaction->mode() != IndexedDB::TransactionReadOnly); 795 ASSERT(transaction->mode() != IndexedDB::TransactionReadOnly);
794 796
795 const IDBObjectStoreMetadata objectStoreMetadata = m_metadata.objectStores.g et(objectStoreId); 797 const IDBObjectStoreMetadata objectStoreMetadata = m_metadata.objectStores.g et(objectStoreId);
796 798
797 ASSERT(objectStoreMetadata.autoIncrement || key.get()); 799 ASSERT(objectStoreMetadata.autoIncrement || key.get());
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
926 transaction->scheduleTask(IDBDatabaseBackendInterface::PreemptiveTask, SetIn dexesReadyOperation::create(indexIds.size())); 928 transaction->scheduleTask(IDBDatabaseBackendInterface::PreemptiveTask, SetIn dexesReadyOperation::create(indexIds.size()));
927 } 929 }
928 930
929 void SetIndexesReadyOperation::perform(IDBTransactionBackendImpl* transaction) 931 void SetIndexesReadyOperation::perform(IDBTransactionBackendImpl* transaction)
930 { 932 {
931 IDB_TRACE("SetIndexesReadyOperation"); 933 IDB_TRACE("SetIndexesReadyOperation");
932 for (size_t i = 0; i < m_indexCount; ++i) 934 for (size_t i = 0; i < m_indexCount; ++i)
933 transaction->didCompletePreemptiveEvent(); 935 transaction->didCompletePreemptiveEvent();
934 } 936 }
935 937
936 void IDBDatabaseBackendImpl::openCursor(int64_t transactionId, int64_t objectSto reId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, IndexedDB::CursorDirect ion direction, bool keyOnly, TaskType taskType, PassRefPtr<IDBCallbacks> callbac ks) 938 void IDBDatabaseBackendImpl::openCursor(int64_t transactionId, int64_t objectSto reId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, IndexedDB::CursorDirect ion direction, bool keyOnly, TaskType taskType, IDBCallbacks* callbacks)
937 { 939 {
938 IDB_TRACE("IDBDatabaseBackendImpl::openCursor"); 940 IDB_TRACE("IDBDatabaseBackendImpl::openCursor");
939 IDBTransactionBackendImpl* transaction = m_transactions.get(transactionId); 941 IDBTransactionBackendImpl* transaction = m_transactions.get(transactionId);
940 if (!transaction) 942 if (!transaction)
941 return; 943 return;
942 944
943 transaction->scheduleTask(OpenCursorOperation::create(m_backingStore, id(), objectStoreId, indexId, keyRange, direction, keyOnly ? IndexedDB::CursorKeyOnly : IndexedDB::CursorKeyAndValue, taskType, callbacks)); 945 transaction->scheduleTask(OpenCursorOperation::create(m_backingStore, id(), objectStoreId, indexId, keyRange, direction, keyOnly ? IndexedDB::CursorKeyOnly : IndexedDB::CursorKeyAndValue, taskType, callbacks));
944 } 946 }
945 947
946 void OpenCursorOperation::perform(IDBTransactionBackendImpl* transaction) 948 void OpenCursorOperation::perform(IDBTransactionBackendImpl* transaction)
(...skipping 22 matching lines...) Expand all
969 if (!backingStoreCursor) { 971 if (!backingStoreCursor) {
970 m_callbacks->onSuccess(static_cast<SharedBuffer*>(0)); 972 m_callbacks->onSuccess(static_cast<SharedBuffer*>(0));
971 return; 973 return;
972 } 974 }
973 975
974 IDBDatabaseBackendInterface::TaskType taskType(static_cast<IDBDatabaseBacken dInterface::TaskType>(m_taskType)); 976 IDBDatabaseBackendInterface::TaskType taskType(static_cast<IDBDatabaseBacken dInterface::TaskType>(m_taskType));
975 RefPtr<IDBCursorBackendImpl> cursor = IDBCursorBackendImpl::create(backingSt oreCursor.get(), m_cursorType, taskType, transaction, m_objectStoreId); 977 RefPtr<IDBCursorBackendImpl> cursor = IDBCursorBackendImpl::create(backingSt oreCursor.get(), m_cursorType, taskType, transaction, m_objectStoreId);
976 m_callbacks->onSuccess(cursor, cursor->key(), cursor->primaryKey(), cursor-> value()); 978 m_callbacks->onSuccess(cursor, cursor->key(), cursor->primaryKey(), cursor-> value());
977 } 979 }
978 980
979 void IDBDatabaseBackendImpl::count(int64_t transactionId, int64_t objectStoreId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, PassRefPtr<IDBCallbacks> cal lbacks) 981 void IDBDatabaseBackendImpl::count(int64_t transactionId, int64_t objectStoreId, int64_t indexId, PassRefPtr<IDBKeyRange> keyRange, IDBCallbacks* callbacks)
980 { 982 {
981 IDB_TRACE("IDBDatabaseBackendImpl::count"); 983 IDB_TRACE("IDBDatabaseBackendImpl::count");
982 IDBTransactionBackendImpl* transaction = m_transactions.get(transactionId); 984 IDBTransactionBackendImpl* transaction = m_transactions.get(transactionId);
983 if (!transaction) 985 if (!transaction)
984 return; 986 return;
985 987
986 ASSERT(m_metadata.objectStores.contains(objectStoreId)); 988 ASSERT(m_metadata.objectStores.contains(objectStoreId));
987 transaction->scheduleTask(CountOperation::create(m_backingStore, id(), objec tStoreId, indexId, keyRange, callbacks)); 989 transaction->scheduleTask(CountOperation::create(m_backingStore, id(), objec tStoreId, indexId, keyRange, callbacks));
988 } 990 }
989 991
(...skipping 12 matching lines...) Expand all
1002 return; 1004 return;
1003 } 1005 }
1004 1006
1005 do { 1007 do {
1006 ++count; 1008 ++count;
1007 } while (backingStoreCursor->continueFunction(0)); 1009 } while (backingStoreCursor->continueFunction(0));
1008 1010
1009 m_callbacks->onSuccess(count); 1011 m_callbacks->onSuccess(count);
1010 } 1012 }
1011 1013
1012 void IDBDatabaseBackendImpl::deleteRange(int64_t transactionId, int64_t objectSt oreId, PassRefPtr<IDBKeyRange> keyRange, PassRefPtr<IDBCallbacks> callbacks) 1014 void IDBDatabaseBackendImpl::deleteRange(int64_t transactionId, int64_t objectSt oreId, PassRefPtr<IDBKeyRange> keyRange, IDBCallbacks* callbacks)
1013 { 1015 {
1014 IDB_TRACE("IDBDatabaseBackendImpl::deleteRange"); 1016 IDB_TRACE("IDBDatabaseBackendImpl::deleteRange");
1015 IDBTransactionBackendImpl* transaction = m_transactions.get(transactionId); 1017 IDBTransactionBackendImpl* transaction = m_transactions.get(transactionId);
1016 if (!transaction) 1018 if (!transaction)
1017 return; 1019 return;
1018 ASSERT(transaction->mode() != IndexedDB::TransactionReadOnly); 1020 ASSERT(transaction->mode() != IndexedDB::TransactionReadOnly);
1019 1021
1020 transaction->scheduleTask(DeleteRangeOperation::create(m_backingStore, id(), objectStoreId, keyRange, callbacks)); 1022 transaction->scheduleTask(DeleteRangeOperation::create(m_backingStore, id(), objectStoreId, keyRange, callbacks));
1021 } 1023 }
1022 1024
1023 void DeleteRangeOperation::perform(IDBTransactionBackendImpl* transaction) 1025 void DeleteRangeOperation::perform(IDBTransactionBackendImpl* transaction)
1024 { 1026 {
1025 IDB_TRACE("DeleteRangeOperation"); 1027 IDB_TRACE("DeleteRangeOperation");
1026 RefPtr<IDBBackingStore::Cursor> backingStoreCursor = m_backingStore->openObj ectStoreCursor(transaction->backingStoreTransaction(), m_databaseId, m_objectSto reId, m_keyRange.get(), IndexedDB::CursorNext); 1028 RefPtr<IDBBackingStore::Cursor> backingStoreCursor = m_backingStore->openObj ectStoreCursor(transaction->backingStoreTransaction(), m_databaseId, m_objectSto reId, m_keyRange.get(), IndexedDB::CursorNext);
1027 if (backingStoreCursor) { 1029 if (backingStoreCursor) {
1028 do { 1030 do {
1029 if (!m_backingStore->deleteRecord(transaction->backingStoreTransacti on(), m_databaseId, m_objectStoreId, backingStoreCursor->recordIdentifier())) { 1031 if (!m_backingStore->deleteRecord(transaction->backingStoreTransacti on(), m_databaseId, m_objectStoreId, backingStoreCursor->recordIdentifier())) {
1030 m_callbacks->onError(IDBDatabaseError::create(IDBDatabaseExcepti on::UnknownError, "Error deleting data in range")); 1032 m_callbacks->onError(IDBDatabaseError::create(IDBDatabaseExcepti on::UnknownError, "Error deleting data in range"));
1031 return; 1033 return;
1032 } 1034 }
1033 } while (backingStoreCursor->continueFunction(0)); 1035 } while (backingStoreCursor->continueFunction(0));
1034 } 1036 }
1035 1037
1036 m_callbacks->onSuccess(); 1038 m_callbacks->onSuccess();
1037 } 1039 }
1038 1040
1039 void IDBDatabaseBackendImpl::clear(int64_t transactionId, int64_t objectStoreId, PassRefPtr<IDBCallbacks> callbacks) 1041 void IDBDatabaseBackendImpl::clear(int64_t transactionId, int64_t objectStoreId, IDBCallbacks* callbacks)
1040 { 1042 {
1041 IDB_TRACE("IDBDatabaseBackendImpl::clear"); 1043 IDB_TRACE("IDBDatabaseBackendImpl::clear");
1042 IDBTransactionBackendImpl* transaction = m_transactions.get(transactionId); 1044 IDBTransactionBackendImpl* transaction = m_transactions.get(transactionId);
1043 if (!transaction) 1045 if (!transaction)
1044 return; 1046 return;
1045 ASSERT(transaction->mode() != IndexedDB::TransactionReadOnly); 1047 ASSERT(transaction->mode() != IndexedDB::TransactionReadOnly);
1046 1048
1047 transaction->scheduleTask(ClearOperation::create(m_backingStore, id(), objec tStoreId, callbacks)); 1049 transaction->scheduleTask(ClearOperation::create(m_backingStore, id(), objec tStoreId, callbacks));
1048 } 1050 }
1049 1051
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
1165 1167
1166 // Open calls can be requeued if an open call started a version change trans action. 1168 // Open calls can be requeued if an open call started a version change trans action.
1167 Deque<OwnPtr<PendingOpenCall> > pendingOpenCalls; 1169 Deque<OwnPtr<PendingOpenCall> > pendingOpenCalls;
1168 m_pendingOpenCalls.swap(pendingOpenCalls); 1170 m_pendingOpenCalls.swap(pendingOpenCalls);
1169 while (!pendingOpenCalls.isEmpty()) { 1171 while (!pendingOpenCalls.isEmpty()) {
1170 OwnPtr<PendingOpenCall> pendingOpenCall = pendingOpenCalls.takeFirst(); 1172 OwnPtr<PendingOpenCall> pendingOpenCall = pendingOpenCalls.takeFirst();
1171 openConnection(pendingOpenCall->callbacks(), pendingOpenCall->databaseCa llbacks(), pendingOpenCall->transactionId(), pendingOpenCall->version()); 1173 openConnection(pendingOpenCall->callbacks(), pendingOpenCall->databaseCa llbacks(), pendingOpenCall->transactionId(), pendingOpenCall->version());
1172 } 1174 }
1173 } 1175 }
1174 1176
1175 void IDBDatabaseBackendImpl::createTransaction(int64_t transactionId, PassRefPtr <IDBDatabaseCallbacks> callbacks, const Vector<int64_t>& objectStoreIds, unsigne d short mode) 1177 void IDBDatabaseBackendImpl::createTransaction(int64_t transactionId, IDBDatabas eCallbacks* callbacks, const Vector<int64_t>& objectStoreIds, unsigned short mod e)
1176 { 1178 {
1177 RefPtr<IDBTransactionBackendImpl> transaction = IDBTransactionBackendImpl::c reate(transactionId, callbacks, objectStoreIds, static_cast<IndexedDB::Transacti onMode>(mode), this); 1179 RefPtr<IDBTransactionBackendImpl> transaction = IDBTransactionBackendImpl::c reate(transactionId, callbacks, objectStoreIds, static_cast<IndexedDB::Transacti onMode>(mode), this);
1178 ASSERT(!m_transactions.contains(transactionId)); 1180 ASSERT(!m_transactions.contains(transactionId));
1179 m_transactions.add(transactionId, transaction.get()); 1181 m_transactions.add(transactionId, transaction.get());
1180 } 1182 }
1181 1183
1182 void IDBDatabaseBackendImpl::openConnection(PassRefPtr<IDBCallbacks> prpCallback s, PassRefPtr<IDBDatabaseCallbacks> prpDatabaseCallbacks, int64_t transactionId, int64_t version) 1184 void IDBDatabaseBackendImpl::openConnection(IDBCallbacks* callbacks, IDBDatabase Callbacks* databaseCallbacks, int64_t transactionId, int64_t version)
1183 { 1185 {
1184 ASSERT(m_backingStore.get()); 1186 ASSERT(m_backingStore.get());
1185 RefPtr<IDBCallbacks> callbacks = prpCallbacks;
1186 RefPtr<IDBDatabaseCallbacks> databaseCallbacks = prpDatabaseCallbacks;
1187 1187
1188 if (!m_pendingDeleteCalls.isEmpty() || m_runningVersionChangeTransaction) { 1188 if (!m_pendingDeleteCalls.isEmpty() || m_runningVersionChangeTransaction) {
1189 m_pendingOpenCalls.append(PendingOpenCall::create(callbacks, databaseCal lbacks, transactionId, version)); 1189 m_pendingOpenCalls.append(PendingOpenCall::create(callbacks, databaseCal lbacks, transactionId, version));
1190 return; 1190 return;
1191 } 1191 }
1192 1192
1193 if (m_metadata.id == InvalidId) { 1193 if (m_metadata.id == InvalidId) {
1194 // The database was deleted then immediately re-opened; openInternal() r ecreates it in the backing store. 1194 // The database was deleted then immediately re-opened; openInternal() r ecreates it in the backing store.
1195 if (openInternal()) 1195 if (openInternal())
1196 ASSERT(m_metadata.intVersion == IDBDatabaseMetadata::NoIntVersion); 1196 ASSERT(m_metadata.intVersion == IDBDatabaseMetadata::NoIntVersion);
(...skipping 16 matching lines...) Expand all
1213 // For unit tests only - skip upgrade steps. Calling from script with De faultIntVersion throws exception. 1213 // For unit tests only - skip upgrade steps. Calling from script with De faultIntVersion throws exception.
1214 ASSERT(WebKit::Platform::current()->unitTestSupport()); 1214 ASSERT(WebKit::Platform::current()->unitTestSupport());
1215 ASSERT(isNewDatabase); 1215 ASSERT(isNewDatabase);
1216 m_databaseCallbacksSet.add(databaseCallbacks); 1216 m_databaseCallbacksSet.add(databaseCallbacks);
1217 callbacks->onSuccess(this, this->metadata()); 1217 callbacks->onSuccess(this, this->metadata());
1218 return; 1218 return;
1219 } 1219 }
1220 1220
1221 if (version == IDBDatabaseMetadata::NoIntVersion) { 1221 if (version == IDBDatabaseMetadata::NoIntVersion) {
1222 if (!isNewDatabase) { 1222 if (!isNewDatabase) {
1223 m_databaseCallbacksSet.add(RefPtr<IDBDatabaseCallbacks>(databaseCall backs)); 1223 m_databaseCallbacksSet.add(databaseCallbacks);
1224 callbacks->onSuccess(this, this->metadata()); 1224 callbacks->onSuccess(this, this->metadata());
1225 return; 1225 return;
1226 } 1226 }
1227 // Spec says: If no version is specified and no database exists, set dat abase version to 1. 1227 // Spec says: If no version is specified and no database exists, set dat abase version to 1.
1228 version = 1; 1228 version = 1;
1229 } 1229 }
1230 1230
1231 if (version > m_metadata.intVersion) { 1231 if (version > m_metadata.intVersion) {
1232 runIntVersionChangeTransaction(callbacks, databaseCallbacks, transaction Id, version); 1232 runIntVersionChangeTransaction(callbacks, databaseCallbacks, transaction Id, version);
1233 return; 1233 return;
1234 } 1234 }
1235 if (version < m_metadata.intVersion) { 1235 if (version < m_metadata.intVersion) {
1236 callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::Versio nError, String::format("The requested version (%lld) is less than the existing v ersion (%lld).", static_cast<long long>(version), static_cast<long long>(m_metad ata.intVersion)))); 1236 callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::Versio nError, String::format("The requested version (%lld) is less than the existing v ersion (%lld).", static_cast<long long>(version), static_cast<long long>(m_metad ata.intVersion))));
1237 return; 1237 return;
1238 } 1238 }
1239 ASSERT(version == m_metadata.intVersion); 1239 ASSERT(version == m_metadata.intVersion);
1240 m_databaseCallbacksSet.add(databaseCallbacks); 1240 m_databaseCallbacksSet.add(databaseCallbacks);
1241 callbacks->onSuccess(this, this->metadata()); 1241 callbacks->onSuccess(this, this->metadata());
1242 } 1242 }
1243 1243
1244 void IDBDatabaseBackendImpl::runIntVersionChangeTransaction(PassRefPtr<IDBCallba cks> prpCallbacks, PassRefPtr<IDBDatabaseCallbacks> prpDatabaseCallbacks, int64_ t transactionId, int64_t requestedVersion) 1244 void IDBDatabaseBackendImpl::runIntVersionChangeTransaction(IDBCallbacks* callba cks, IDBDatabaseCallbacks* databaseCallbacks, int64_t transactionId, int64_t req uestedVersion)
1245 { 1245 {
1246 RefPtr<IDBCallbacks> callbacks = prpCallbacks;
1247 RefPtr<IDBDatabaseCallbacks> databaseCallbacks = prpDatabaseCallbacks;
1248 ASSERT(callbacks); 1246 ASSERT(callbacks);
1249 for (DatabaseCallbacksSet::const_iterator it = m_databaseCallbacksSet.begin( ); it != m_databaseCallbacksSet.end(); ++it) { 1247 for (DatabaseCallbacksSet::const_iterator it = m_databaseCallbacksSet.begin( ); it != m_databaseCallbacksSet.end(); ++it) {
1250 // Front end ensures the event is not fired at connections that have clo sePending set. 1248 // Front end ensures the event is not fired at connections that have clo sePending set.
1251 if (*it != databaseCallbacks) 1249 if (*it != databaseCallbacks)
1252 (*it)->onVersionChange(m_metadata.intVersion, requestedVersion); 1250 (*it)->onVersionChange(m_metadata.intVersion, requestedVersion);
1253 } 1251 }
1254 // The spec dictates we wait until all the version change events are 1252 // The spec dictates we wait until all the version change events are
1255 // delivered and then check m_databaseCallbacks.empty() before proceeding 1253 // delivered and then check m_databaseCallbacks.empty() before proceeding
1256 // or firing a blocked event, but instead we should be consistent with how 1254 // or firing a blocked event, but instead we should be consistent with how
1257 // the old setVersion (incorrectly) did it. 1255 // the old setVersion (incorrectly) did it.
(...skipping 11 matching lines...) Expand all
1269 Vector<int64_t> objectStoreIds; 1267 Vector<int64_t> objectStoreIds;
1270 createTransaction(transactionId, databaseCallbacks, objectStoreIds, IndexedD B::TransactionVersionChange); 1268 createTransaction(transactionId, databaseCallbacks, objectStoreIds, IndexedD B::TransactionVersionChange);
1271 RefPtr<IDBTransactionBackendImpl> transaction = m_transactions.get(transacti onId); 1269 RefPtr<IDBTransactionBackendImpl> transaction = m_transactions.get(transacti onId);
1272 1270
1273 transaction->scheduleTask(VersionChangeOperation::create(this, transactionId , requestedVersion, callbacks, databaseCallbacks), VersionChangeAbortOperation:: create(this, m_metadata.version, m_metadata.intVersion)); 1271 transaction->scheduleTask(VersionChangeOperation::create(this, transactionId , requestedVersion, callbacks, databaseCallbacks), VersionChangeAbortOperation:: create(this, m_metadata.version, m_metadata.intVersion));
1274 1272
1275 ASSERT(!m_pendingSecondHalfOpen); 1273 ASSERT(!m_pendingSecondHalfOpen);
1276 m_databaseCallbacksSet.add(databaseCallbacks); 1274 m_databaseCallbacksSet.add(databaseCallbacks);
1277 } 1275 }
1278 1276
1279 void IDBDatabaseBackendImpl::deleteDatabase(PassRefPtr<IDBCallbacks> prpCallback s) 1277 void IDBDatabaseBackendImpl::deleteDatabase(IDBCallbacks* callbacks)
1280 { 1278 {
1281 RefPtr<IDBCallbacks> callbacks = prpCallbacks;
1282 if (isDeleteDatabaseBlocked()) { 1279 if (isDeleteDatabaseBlocked()) {
1283 for (DatabaseCallbacksSet::const_iterator it = m_databaseCallbacksSet.be gin(); it != m_databaseCallbacksSet.end(); ++it) { 1280 for (DatabaseCallbacksSet::const_iterator it = m_databaseCallbacksSet.be gin(); it != m_databaseCallbacksSet.end(); ++it) {
1284 // Front end ensures the event is not fired at connections that have closePending set. 1281 // Front end ensures the event is not fired at connections that have closePending set.
1285 (*it)->onVersionChange(m_metadata.intVersion, IDBDatabaseMetadata::N oIntVersion); 1282 (*it)->onVersionChange(m_metadata.intVersion, IDBDatabaseMetadata::N oIntVersion);
1286 } 1283 }
1287 // FIXME: Only fire onBlocked if there are open connections after the 1284 // FIXME: Only fire onBlocked if there are open connections after the
1288 // VersionChangeEvents are received, not just set up to fire. 1285 // VersionChangeEvents are received, not just set up to fire.
1289 // https://bugs.webkit.org/show_bug.cgi?id=71130 1286 // https://bugs.webkit.org/show_bug.cgi?id=71130
1290 callbacks->onBlocked(m_metadata.intVersion); 1287 callbacks->onBlocked(m_metadata.intVersion);
1291 m_pendingDeleteCalls.append(PendingDeleteCall::create(callbacks.release( ))); 1288 m_pendingDeleteCalls.append(PendingDeleteCall::create(callbacks));
1292 return; 1289 return;
1293 } 1290 }
1294 deleteDatabaseFinal(callbacks.release()); 1291 deleteDatabaseFinal(callbacks);
1295 } 1292 }
1296 1293
1297 bool IDBDatabaseBackendImpl::isDeleteDatabaseBlocked() 1294 bool IDBDatabaseBackendImpl::isDeleteDatabaseBlocked()
1298 { 1295 {
1299 return connectionCount(); 1296 return connectionCount();
1300 } 1297 }
1301 1298
1302 void IDBDatabaseBackendImpl::deleteDatabaseFinal(PassRefPtr<IDBCallbacks> callba cks) 1299 void IDBDatabaseBackendImpl::deleteDatabaseFinal(IDBCallbacks* callbacks)
1303 { 1300 {
1304 ASSERT(!isDeleteDatabaseBlocked()); 1301 ASSERT(!isDeleteDatabaseBlocked());
1305 ASSERT(m_backingStore); 1302 ASSERT(m_backingStore);
1306 if (!m_backingStore->deleteDatabase(m_metadata.name)) { 1303 if (!m_backingStore->deleteDatabase(m_metadata.name)) {
1307 callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::Unknow nError, "Internal error deleting database.")); 1304 callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::Unknow nError, "Internal error deleting database."));
1308 return; 1305 return;
1309 } 1306 }
1310 m_metadata.version = NoStringVersion; 1307 m_metadata.version = NoStringVersion;
1311 m_metadata.id = InvalidId; 1308 m_metadata.id = InvalidId;
1312 m_metadata.intVersion = IDBDatabaseMetadata::NoIntVersion; 1309 m_metadata.intVersion = IDBDatabaseMetadata::NoIntVersion;
1313 m_metadata.objectStores.clear(); 1310 m_metadata.objectStores.clear();
1314 callbacks->onSuccess(); 1311 callbacks->onSuccess();
1315 } 1312 }
1316 1313
1317 void IDBDatabaseBackendImpl::close(PassRefPtr<IDBDatabaseCallbacks> prpCallbacks ) 1314 void IDBDatabaseBackendImpl::close(IDBDatabaseCallbacks* callbacks)
1318 { 1315 {
1319 RefPtr<IDBDatabaseCallbacks> callbacks = prpCallbacks;
1320 ASSERT(m_databaseCallbacksSet.contains(callbacks)); 1316 ASSERT(m_databaseCallbacksSet.contains(callbacks));
1321 1317
1322 // Close outstanding transactions from the closing connection. This can not happen 1318 // Close outstanding transactions from the closing connection. This can not happen
1323 // if the close is requested by the connection itself as the front-end defer s 1319 // if the close is requested by the connection itself as the front-end defer s
1324 // the close until all transactions are complete, so something unusual has h appened 1320 // the close until all transactions are complete, so something unusual has h appened
1325 // e.g. unexpected process termination. 1321 // e.g. unexpected process termination.
1326 { 1322 {
1327 TransactionMap transactions(m_transactions); 1323 TransactionMap transactions(m_transactions);
1328 for (TransactionMap::const_iterator::Values it = transactions.values().b egin(), end = transactions.values().end(); it != end; ++it) { 1324 for (TransactionMap::const_iterator::Values it = transactions.values().b egin(), end = transactions.values().end(); it != end; ++it) {
1329 if ((*it)->connection() == callbacks) 1325 if ((*it)->connection() == callbacks)
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1378 } 1374 }
1379 1375
1380 void IDBDatabaseBackendImpl::VersionChangeAbortOperation::perform(IDBTransaction BackendImpl* transaction) 1376 void IDBDatabaseBackendImpl::VersionChangeAbortOperation::perform(IDBTransaction BackendImpl* transaction)
1381 { 1377 {
1382 IDB_TRACE("VersionChangeAbortOperation"); 1378 IDB_TRACE("VersionChangeAbortOperation");
1383 ASSERT(!transaction); 1379 ASSERT(!transaction);
1384 m_database->m_metadata.version = m_previousVersion; 1380 m_database->m_metadata.version = m_previousVersion;
1385 m_database->m_metadata.intVersion = m_previousIntVersion; 1381 m_database->m_metadata.intVersion = m_previousIntVersion;
1386 } 1382 }
1387 1383
1384 void IDBDatabaseBackendImpl::trace(Visitor* visitor)
1385 {
1386 visitor->trace(m_factory);
1387 visitor->trace(m_databaseCallbacksSet);
1388 }
1389
1388 } // namespace WebCore 1390 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/modules/indexeddb/IDBDatabaseBackendImpl.h ('k') | Source/modules/indexeddb/IDBDatabaseBackendInterface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698