| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 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 17 matching lines...) Expand all Loading... |
| 28 #include "bindings/core/v8/ExceptionState.h" | 28 #include "bindings/core/v8/ExceptionState.h" |
| 29 #include "bindings/modules/v8/ToV8ForModules.h" | 29 #include "bindings/modules/v8/ToV8ForModules.h" |
| 30 #include "bindings/modules/v8/V8BindingForModules.h" | 30 #include "bindings/modules/v8/V8BindingForModules.h" |
| 31 #include "core/dom/ExceptionCode.h" | 31 #include "core/dom/ExceptionCode.h" |
| 32 #include "core/dom/ExecutionContext.h" | 32 #include "core/dom/ExecutionContext.h" |
| 33 #include "modules/indexeddb/IDBDatabase.h" | 33 #include "modules/indexeddb/IDBDatabase.h" |
| 34 #include "modules/indexeddb/IDBKey.h" | 34 #include "modules/indexeddb/IDBKey.h" |
| 35 #include "modules/indexeddb/IDBObjectStore.h" | 35 #include "modules/indexeddb/IDBObjectStore.h" |
| 36 #include "modules/indexeddb/IDBTracing.h" | 36 #include "modules/indexeddb/IDBTracing.h" |
| 37 #include "modules/indexeddb/IDBTransaction.h" | 37 #include "modules/indexeddb/IDBTransaction.h" |
| 38 #include "modules/indexeddb/WebIDBCallbacksImpl.h" | |
| 39 #include "public/platform/modules/indexeddb/WebIDBKeyRange.h" | 38 #include "public/platform/modules/indexeddb/WebIDBKeyRange.h" |
| 40 #include <memory> | 39 #include <memory> |
| 41 | 40 |
| 42 using blink::WebIDBCallbacks; | 41 using blink::WebIDBCallbacks; |
| 43 using blink::WebIDBCursor; | 42 using blink::WebIDBCursor; |
| 44 using blink::WebIDBDatabase; | 43 using blink::WebIDBDatabase; |
| 45 | 44 |
| 46 namespace blink { | 45 namespace blink { |
| 47 | 46 |
| 48 IDBIndex::IDBIndex(RefPtr<IDBIndexMetadata> metadata, | 47 IDBIndex::IDBIndex(RefPtr<IDBIndexMetadata> metadata, |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 } | 155 } |
| 157 | 156 |
| 158 IDBRequest* IDBIndex::openCursor(ScriptState* scriptState, | 157 IDBRequest* IDBIndex::openCursor(ScriptState* scriptState, |
| 159 IDBKeyRange* keyRange, | 158 IDBKeyRange* keyRange, |
| 160 WebIDBCursorDirection direction) { | 159 WebIDBCursorDirection direction) { |
| 161 IDBRequest* request = IDBRequest::create(scriptState, IDBAny::create(this), | 160 IDBRequest* request = IDBRequest::create(scriptState, IDBAny::create(this), |
| 162 m_transaction.get()); | 161 m_transaction.get()); |
| 163 request->setCursorDetails(IndexedDB::CursorKeyAndValue, direction); | 162 request->setCursorDetails(IndexedDB::CursorKeyAndValue, direction); |
| 164 backendDB()->openCursor(m_transaction->id(), m_objectStore->id(), id(), | 163 backendDB()->openCursor(m_transaction->id(), m_objectStore->id(), id(), |
| 165 keyRange, direction, false, WebIDBTaskTypeNormal, | 164 keyRange, direction, false, WebIDBTaskTypeNormal, |
| 166 WebIDBCallbacksImpl::create(request).release()); | 165 request->createWebCallbacks().release()); |
| 167 return request; | 166 return request; |
| 168 } | 167 } |
| 169 | 168 |
| 170 IDBRequest* IDBIndex::count(ScriptState* scriptState, | 169 IDBRequest* IDBIndex::count(ScriptState* scriptState, |
| 171 const ScriptValue& range, | 170 const ScriptValue& range, |
| 172 ExceptionState& exceptionState) { | 171 ExceptionState& exceptionState) { |
| 173 IDB_TRACE("IDBIndex::count"); | 172 IDB_TRACE("IDBIndex::count"); |
| 174 if (isDeleted()) { | 173 if (isDeleted()) { |
| 175 exceptionState.throwDOMException(InvalidStateError, | 174 exceptionState.throwDOMException(InvalidStateError, |
| 176 IDBDatabase::indexDeletedErrorMessage); | 175 IDBDatabase::indexDeletedErrorMessage); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 194 | 193 |
| 195 if (!backendDB()) { | 194 if (!backendDB()) { |
| 196 exceptionState.throwDOMException(InvalidStateError, | 195 exceptionState.throwDOMException(InvalidStateError, |
| 197 IDBDatabase::databaseClosedErrorMessage); | 196 IDBDatabase::databaseClosedErrorMessage); |
| 198 return nullptr; | 197 return nullptr; |
| 199 } | 198 } |
| 200 | 199 |
| 201 IDBRequest* request = IDBRequest::create(scriptState, IDBAny::create(this), | 200 IDBRequest* request = IDBRequest::create(scriptState, IDBAny::create(this), |
| 202 m_transaction.get()); | 201 m_transaction.get()); |
| 203 backendDB()->count(m_transaction->id(), m_objectStore->id(), id(), keyRange, | 202 backendDB()->count(m_transaction->id(), m_objectStore->id(), id(), keyRange, |
| 204 WebIDBCallbacksImpl::create(request).release()); | 203 request->createWebCallbacks().release()); |
| 205 return request; | 204 return request; |
| 206 } | 205 } |
| 207 | 206 |
| 208 IDBRequest* IDBIndex::openKeyCursor(ScriptState* scriptState, | 207 IDBRequest* IDBIndex::openKeyCursor(ScriptState* scriptState, |
| 209 const ScriptValue& range, | 208 const ScriptValue& range, |
| 210 const String& directionString, | 209 const String& directionString, |
| 211 ExceptionState& exceptionState) { | 210 ExceptionState& exceptionState) { |
| 212 IDB_TRACE("IDBIndex::openKeyCursor"); | 211 IDB_TRACE("IDBIndex::openKeyCursor"); |
| 213 if (isDeleted()) { | 212 if (isDeleted()) { |
| 214 exceptionState.throwDOMException(InvalidStateError, | 213 exceptionState.throwDOMException(InvalidStateError, |
| (...skipping 20 matching lines...) Expand all Loading... |
| 235 exceptionState.throwDOMException(InvalidStateError, | 234 exceptionState.throwDOMException(InvalidStateError, |
| 236 IDBDatabase::databaseClosedErrorMessage); | 235 IDBDatabase::databaseClosedErrorMessage); |
| 237 return nullptr; | 236 return nullptr; |
| 238 } | 237 } |
| 239 | 238 |
| 240 IDBRequest* request = IDBRequest::create(scriptState, IDBAny::create(this), | 239 IDBRequest* request = IDBRequest::create(scriptState, IDBAny::create(this), |
| 241 m_transaction.get()); | 240 m_transaction.get()); |
| 242 request->setCursorDetails(IndexedDB::CursorKeyOnly, direction); | 241 request->setCursorDetails(IndexedDB::CursorKeyOnly, direction); |
| 243 backendDB()->openCursor(m_transaction->id(), m_objectStore->id(), id(), | 242 backendDB()->openCursor(m_transaction->id(), m_objectStore->id(), id(), |
| 244 keyRange, direction, true, WebIDBTaskTypeNormal, | 243 keyRange, direction, true, WebIDBTaskTypeNormal, |
| 245 WebIDBCallbacksImpl::create(request).release()); | 244 request->createWebCallbacks().release()); |
| 246 return request; | 245 return request; |
| 247 } | 246 } |
| 248 | 247 |
| 249 IDBRequest* IDBIndex::get(ScriptState* scriptState, | 248 IDBRequest* IDBIndex::get(ScriptState* scriptState, |
| 250 const ScriptValue& key, | 249 const ScriptValue& key, |
| 251 ExceptionState& exceptionState) { | 250 ExceptionState& exceptionState) { |
| 252 IDB_TRACE("IDBIndex::get"); | 251 IDB_TRACE("IDBIndex::get"); |
| 253 return getInternal(scriptState, key, exceptionState, false); | 252 return getInternal(scriptState, key, exceptionState, false); |
| 254 } | 253 } |
| 255 | 254 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 322 } | 321 } |
| 323 if (!backendDB()) { | 322 if (!backendDB()) { |
| 324 exceptionState.throwDOMException(InvalidStateError, | 323 exceptionState.throwDOMException(InvalidStateError, |
| 325 IDBDatabase::databaseClosedErrorMessage); | 324 IDBDatabase::databaseClosedErrorMessage); |
| 326 return nullptr; | 325 return nullptr; |
| 327 } | 326 } |
| 328 | 327 |
| 329 IDBRequest* request = IDBRequest::create(scriptState, IDBAny::create(this), | 328 IDBRequest* request = IDBRequest::create(scriptState, IDBAny::create(this), |
| 330 m_transaction.get()); | 329 m_transaction.get()); |
| 331 backendDB()->get(m_transaction->id(), m_objectStore->id(), id(), keyRange, | 330 backendDB()->get(m_transaction->id(), m_objectStore->id(), id(), keyRange, |
| 332 keyOnly, WebIDBCallbacksImpl::create(request).release()); | 331 keyOnly, request->createWebCallbacks().release()); |
| 333 return request; | 332 return request; |
| 334 } | 333 } |
| 335 | 334 |
| 336 IDBRequest* IDBIndex::getAllInternal(ScriptState* scriptState, | 335 IDBRequest* IDBIndex::getAllInternal(ScriptState* scriptState, |
| 337 const ScriptValue& range, | 336 const ScriptValue& range, |
| 338 unsigned long maxCount, | 337 unsigned long maxCount, |
| 339 ExceptionState& exceptionState, | 338 ExceptionState& exceptionState, |
| 340 bool keyOnly) { | 339 bool keyOnly) { |
| 341 if (!maxCount) | 340 if (!maxCount) |
| 342 maxCount = std::numeric_limits<uint32_t>::max(); | 341 maxCount = std::numeric_limits<uint32_t>::max(); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 364 if (!backendDB()) { | 363 if (!backendDB()) { |
| 365 exceptionState.throwDOMException(InvalidStateError, | 364 exceptionState.throwDOMException(InvalidStateError, |
| 366 IDBDatabase::databaseClosedErrorMessage); | 365 IDBDatabase::databaseClosedErrorMessage); |
| 367 return nullptr; | 366 return nullptr; |
| 368 } | 367 } |
| 369 | 368 |
| 370 IDBRequest* request = IDBRequest::create(scriptState, IDBAny::create(this), | 369 IDBRequest* request = IDBRequest::create(scriptState, IDBAny::create(this), |
| 371 m_transaction.get()); | 370 m_transaction.get()); |
| 372 backendDB()->getAll(m_transaction->id(), m_objectStore->id(), id(), keyRange, | 371 backendDB()->getAll(m_transaction->id(), m_objectStore->id(), id(), keyRange, |
| 373 maxCount, keyOnly, | 372 maxCount, keyOnly, |
| 374 WebIDBCallbacksImpl::create(request).release()); | 373 request->createWebCallbacks().release()); |
| 375 return request; | 374 return request; |
| 376 } | 375 } |
| 377 | 376 |
| 378 WebIDBDatabase* IDBIndex::backendDB() const { | 377 WebIDBDatabase* IDBIndex::backendDB() const { |
| 379 return m_transaction->backendDB(); | 378 return m_transaction->backendDB(); |
| 380 } | 379 } |
| 381 | 380 |
| 382 } // namespace blink | 381 } // namespace blink |
| OLD | NEW |