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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 IDBRequest::IDBRequest(ScriptState* scriptState, IDBAny* source, IDBTransaction*
transaction) | 59 IDBRequest::IDBRequest(ScriptState* scriptState, IDBAny* source, IDBTransaction*
transaction) |
60 : ActiveDOMObject(scriptState->executionContext()) | 60 : ActiveDOMObject(scriptState->executionContext()) |
61 , m_contextStopped(false) | 61 , m_contextStopped(false) |
62 , m_transaction(transaction) | 62 , m_transaction(transaction) |
63 , m_readyState(PENDING) | 63 , m_readyState(PENDING) |
64 , m_requestAborted(false) | 64 , m_requestAborted(false) |
65 , m_scriptState(scriptState) | 65 , m_scriptState(scriptState) |
66 , m_source(source) | 66 , m_source(source) |
67 , m_hasPendingActivity(true) | 67 , m_hasPendingActivity(true) |
68 , m_cursorType(IndexedDB::CursorKeyAndValue) | 68 , m_cursorType(IndexedDB::CursorKeyAndValue) |
69 , m_cursorDirection(blink::WebIDBCursorDirectionNext) | 69 , m_cursorDirection(WebIDBCursorDirectionNext) |
70 , m_pendingCursor(nullptr) | 70 , m_pendingCursor(nullptr) |
71 , m_didFireUpgradeNeededEvent(false) | 71 , m_didFireUpgradeNeededEvent(false) |
72 , m_preventPropagation(false) | 72 , m_preventPropagation(false) |
73 , m_resultDirty(true) | 73 , m_resultDirty(true) |
74 { | 74 { |
75 ScriptWrappable::init(this); | 75 ScriptWrappable::init(this); |
76 } | 76 } |
77 | 77 |
78 IDBRequest::~IDBRequest() | 78 IDBRequest::~IDBRequest() |
79 { | 79 { |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 ASSERT_UNUSED(removed, removed); | 152 ASSERT_UNUSED(removed, removed); |
153 } | 153 } |
154 m_enqueuedEvents.clear(); | 154 m_enqueuedEvents.clear(); |
155 | 155 |
156 m_error.clear(); | 156 m_error.clear(); |
157 m_result.clear(); | 157 m_result.clear(); |
158 onError(DOMError::create(AbortError, "The transaction was aborted, so the re
quest cannot be fulfilled.")); | 158 onError(DOMError::create(AbortError, "The transaction was aborted, so the re
quest cannot be fulfilled.")); |
159 m_requestAborted = true; | 159 m_requestAborted = true; |
160 } | 160 } |
161 | 161 |
162 void IDBRequest::setCursorDetails(IndexedDB::CursorType cursorType, blink::WebID
BCursorDirection direction) | 162 void IDBRequest::setCursorDetails(IndexedDB::CursorType cursorType, WebIDBCursor
Direction direction) |
163 { | 163 { |
164 ASSERT(m_readyState == PENDING); | 164 ASSERT(m_readyState == PENDING); |
165 ASSERT(!m_pendingCursor); | 165 ASSERT(!m_pendingCursor); |
166 m_cursorType = cursorType; | 166 m_cursorType = cursorType; |
167 m_cursorDirection = direction; | 167 m_cursorDirection = direction; |
168 } | 168 } |
169 | 169 |
170 void IDBRequest::setPendingCursor(IDBCursor* cursor) | 170 void IDBRequest::setPendingCursor(IDBCursor* cursor) |
171 { | 171 { |
172 ASSERT(m_readyState == DONE); | 172 ASSERT(m_readyState == DONE); |
(...skipping 14 matching lines...) Expand all Loading... |
187 { | 187 { |
188 if (!m_result) | 188 if (!m_result) |
189 return 0; | 189 return 0; |
190 if (m_result->type() == IDBAny::IDBCursorType) | 190 if (m_result->type() == IDBAny::IDBCursorType) |
191 return m_result->idbCursor(); | 191 return m_result->idbCursor(); |
192 if (m_result->type() == IDBAny::IDBCursorWithValueType) | 192 if (m_result->type() == IDBAny::IDBCursorWithValueType) |
193 return m_result->idbCursorWithValue(); | 193 return m_result->idbCursorWithValue(); |
194 return 0; | 194 return 0; |
195 } | 195 } |
196 | 196 |
197 void IDBRequest::setResultCursor(IDBCursor* cursor, IDBKey* key, IDBKey* primary
Key, PassRefPtr<SharedBuffer> value, PassOwnPtr<Vector<blink::WebBlobInfo> > blo
bInfo) | 197 void IDBRequest::setResultCursor(IDBCursor* cursor, IDBKey* key, IDBKey* primary
Key, PassRefPtr<SharedBuffer> value, PassOwnPtr<Vector<WebBlobInfo> > blobInfo) |
198 { | 198 { |
199 ASSERT(m_readyState == PENDING); | 199 ASSERT(m_readyState == PENDING); |
200 m_cursorKey = key; | 200 m_cursorKey = key; |
201 m_cursorPrimaryKey = primaryKey; | 201 m_cursorPrimaryKey = primaryKey; |
202 m_cursorValue = value; | 202 m_cursorValue = value; |
203 ASSERT(!m_blobInfo.get()); | 203 ASSERT(!m_blobInfo.get()); |
204 m_blobInfo = blobInfo; | 204 m_blobInfo = blobInfo; |
205 | 205 |
206 onSuccessInternal(IDBAny::create(cursor)); | 206 onSuccessInternal(IDBAny::create(cursor)); |
207 } | 207 } |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 IDB_TRACE("IDBRequest::onSuccess(StringList)"); | 243 IDB_TRACE("IDBRequest::onSuccess(StringList)"); |
244 if (!shouldEnqueueEvent()) | 244 if (!shouldEnqueueEvent()) |
245 return; | 245 return; |
246 | 246 |
247 RefPtrWillBeRawPtr<DOMStringList> domStringList = DOMStringList::create(); | 247 RefPtrWillBeRawPtr<DOMStringList> domStringList = DOMStringList::create(); |
248 for (size_t i = 0; i < stringList.size(); ++i) | 248 for (size_t i = 0; i < stringList.size(); ++i) |
249 domStringList->append(stringList[i]); | 249 domStringList->append(stringList[i]); |
250 onSuccessInternal(IDBAny::create(domStringList.release())); | 250 onSuccessInternal(IDBAny::create(domStringList.release())); |
251 } | 251 } |
252 | 252 |
253 void IDBRequest::onSuccess(PassOwnPtr<blink::WebIDBCursor> backend, IDBKey* key,
IDBKey* primaryKey, PassRefPtr<SharedBuffer> value, PassOwnPtr<Vector<blink::We
bBlobInfo> > blobInfo) | 253 void IDBRequest::onSuccess(PassOwnPtr<WebIDBCursor> backend, IDBKey* key, IDBKey
* primaryKey, PassRefPtr<SharedBuffer> value, PassOwnPtr<Vector<WebBlobInfo> > b
lobInfo) |
254 { | 254 { |
255 IDB_TRACE("IDBRequest::onSuccess(IDBCursor)"); | 255 IDB_TRACE("IDBRequest::onSuccess(IDBCursor)"); |
256 if (!shouldEnqueueEvent()) | 256 if (!shouldEnqueueEvent()) |
257 return; | 257 return; |
258 | 258 |
259 ASSERT(!m_pendingCursor); | 259 ASSERT(!m_pendingCursor); |
260 IDBCursor* cursor = 0; | 260 IDBCursor* cursor = 0; |
261 switch (m_cursorType) { | 261 switch (m_cursorType) { |
262 case IndexedDB::CursorKeyOnly: | 262 case IndexedDB::CursorKeyOnly: |
263 cursor = IDBCursor::create(backend, m_cursorDirection, this, m_source.ge
t(), m_transaction.get()); | 263 cursor = IDBCursor::create(backend, m_cursorDirection, this, m_source.ge
t(), m_transaction.get()); |
(...skipping 12 matching lines...) Expand all Loading... |
276 IDB_TRACE("IDBRequest::onSuccess(IDBKey)"); | 276 IDB_TRACE("IDBRequest::onSuccess(IDBKey)"); |
277 if (!shouldEnqueueEvent()) | 277 if (!shouldEnqueueEvent()) |
278 return; | 278 return; |
279 | 279 |
280 if (idbKey && idbKey->isValid()) | 280 if (idbKey && idbKey->isValid()) |
281 onSuccessInternal(IDBAny::create(idbKey)); | 281 onSuccessInternal(IDBAny::create(idbKey)); |
282 else | 282 else |
283 onSuccessInternal(IDBAny::createUndefined()); | 283 onSuccessInternal(IDBAny::createUndefined()); |
284 } | 284 } |
285 | 285 |
286 void IDBRequest::onSuccess(PassRefPtr<SharedBuffer> valueBuffer, PassOwnPtr<Vect
or<blink::WebBlobInfo> > blobInfo) | 286 void IDBRequest::onSuccess(PassRefPtr<SharedBuffer> valueBuffer, PassOwnPtr<Vect
or<WebBlobInfo> > blobInfo) |
287 { | 287 { |
288 IDB_TRACE("IDBRequest::onSuccess(SharedBuffer)"); | 288 IDB_TRACE("IDBRequest::onSuccess(SharedBuffer)"); |
289 if (!shouldEnqueueEvent()) | 289 if (!shouldEnqueueEvent()) |
290 return; | 290 return; |
291 | 291 |
292 if (m_pendingCursor) { | 292 if (m_pendingCursor) { |
293 // Value should be null, signifying the end of the cursor's range. | 293 // Value should be null, signifying the end of the cursor's range. |
294 ASSERT(!valueBuffer.get()); | 294 ASSERT(!valueBuffer.get()); |
295 ASSERT(!blobInfo->size()); | 295 ASSERT(!blobInfo->size()); |
296 m_pendingCursor->close(); | 296 m_pendingCursor->close(); |
(...skipping 11 matching lines...) Expand all Loading... |
308 if (source->type() == IDBAny::IDBObjectStoreType) | 308 if (source->type() == IDBAny::IDBObjectStoreType) |
309 return source->idbObjectStore(); | 309 return source->idbObjectStore(); |
310 if (source->type() == IDBAny::IDBIndexType) | 310 if (source->type() == IDBAny::IDBIndexType) |
311 return source->idbIndex()->objectStore(); | 311 return source->idbIndex()->objectStore(); |
312 | 312 |
313 ASSERT_NOT_REACHED(); | 313 ASSERT_NOT_REACHED(); |
314 return 0; | 314 return 0; |
315 } | 315 } |
316 #endif | 316 #endif |
317 | 317 |
318 void IDBRequest::onSuccess(PassRefPtr<SharedBuffer> prpValueBuffer, PassOwnPtr<V
ector<blink::WebBlobInfo> > blobInfo, IDBKey* prpPrimaryKey, const IDBKeyPath& k
eyPath) | 318 void IDBRequest::onSuccess(PassRefPtr<SharedBuffer> prpValueBuffer, PassOwnPtr<V
ector<WebBlobInfo> > blobInfo, IDBKey* prpPrimaryKey, const IDBKeyPath& keyPath) |
319 { | 319 { |
320 IDB_TRACE("IDBRequest::onSuccess(SharedBuffer, IDBKey, IDBKeyPath)"); | 320 IDB_TRACE("IDBRequest::onSuccess(SharedBuffer, IDBKey, IDBKeyPath)"); |
321 if (!shouldEnqueueEvent()) | 321 if (!shouldEnqueueEvent()) |
322 return; | 322 return; |
323 | 323 |
324 ASSERT(keyPath == effectiveObjectStore(m_source)->metadata().keyPath); | 324 ASSERT(keyPath == effectiveObjectStore(m_source)->metadata().keyPath); |
325 | 325 |
326 RefPtr<SharedBuffer> valueBuffer = prpValueBuffer; | 326 RefPtr<SharedBuffer> valueBuffer = prpValueBuffer; |
327 IDBKey* primaryKey = prpPrimaryKey; | 327 IDBKey* primaryKey = prpPrimaryKey; |
328 ASSERT(!m_blobInfo.get()); | 328 ASSERT(!m_blobInfo.get()); |
(...skipping 29 matching lines...) Expand all Loading... |
358 setResult(result); | 358 setResult(result); |
359 enqueueEvent(Event::create(EventTypeNames::success)); | 359 enqueueEvent(Event::create(EventTypeNames::success)); |
360 } | 360 } |
361 | 361 |
362 void IDBRequest::setResult(IDBAny* result) | 362 void IDBRequest::setResult(IDBAny* result) |
363 { | 363 { |
364 m_result = result; | 364 m_result = result; |
365 m_resultDirty = true; | 365 m_resultDirty = true; |
366 } | 366 } |
367 | 367 |
368 void IDBRequest::onSuccess(IDBKey* key, IDBKey* primaryKey, PassRefPtr<SharedBuf
fer> value, PassOwnPtr<Vector<blink::WebBlobInfo> > blobInfo) | 368 void IDBRequest::onSuccess(IDBKey* key, IDBKey* primaryKey, PassRefPtr<SharedBuf
fer> value, PassOwnPtr<Vector<WebBlobInfo> > blobInfo) |
369 { | 369 { |
370 IDB_TRACE("IDBRequest::onSuccess(key, primaryKey, value)"); | 370 IDB_TRACE("IDBRequest::onSuccess(key, primaryKey, value)"); |
371 if (!shouldEnqueueEvent()) | 371 if (!shouldEnqueueEvent()) |
372 return; | 372 return; |
373 | 373 |
374 ASSERT(m_pendingCursor); | 374 ASSERT(m_pendingCursor); |
375 setResultCursor(m_pendingCursor.release(), key, primaryKey, value, blobInfo)
; | 375 setResultCursor(m_pendingCursor.release(), key, primaryKey, value, blobInfo)
; |
376 } | 376 } |
377 | 377 |
378 bool IDBRequest::hasPendingActivity() const | 378 bool IDBRequest::hasPendingActivity() const |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 | 537 |
538 void IDBRequest::dequeueEvent(Event* event) | 538 void IDBRequest::dequeueEvent(Event* event) |
539 { | 539 { |
540 for (size_t i = 0; i < m_enqueuedEvents.size(); ++i) { | 540 for (size_t i = 0; i < m_enqueuedEvents.size(); ++i) { |
541 if (m_enqueuedEvents[i].get() == event) | 541 if (m_enqueuedEvents[i].get() == event) |
542 m_enqueuedEvents.remove(i); | 542 m_enqueuedEvents.remove(i); |
543 } | 543 } |
544 } | 544 } |
545 | 545 |
546 } // namespace blink | 546 } // namespace blink |
OLD | NEW |