| 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 29 matching lines...) Expand all Loading... |
| 40 #include "modules/indexeddb/IDBCursorWithValue.h" | 40 #include "modules/indexeddb/IDBCursorWithValue.h" |
| 41 #include "modules/indexeddb/IDBDatabase.h" | 41 #include "modules/indexeddb/IDBDatabase.h" |
| 42 #include "modules/indexeddb/IDBEventDispatcher.h" | 42 #include "modules/indexeddb/IDBEventDispatcher.h" |
| 43 #include "modules/indexeddb/IDBTracing.h" | 43 #include "modules/indexeddb/IDBTracing.h" |
| 44 #include "modules/indexeddb/IDBTransaction.h" | 44 #include "modules/indexeddb/IDBTransaction.h" |
| 45 | 45 |
| 46 namespace WebCore { | 46 namespace WebCore { |
| 47 | 47 |
| 48 DEFINE_GC_INFO(IDBCallbacks); | 48 DEFINE_GC_INFO(IDBCallbacks); |
| 49 | 49 |
| 50 PassRefPtr<IDBRequest> IDBRequest::create(ScriptExecutionContext* context, PassR
efPtr<IDBAny> source, IDBTransaction* transaction) | 50 IDBRequest* IDBRequest::create(ScriptExecutionContext* context, PassRefPtr<IDBAn
y> source, IDBTransaction* transaction) |
| 51 { | 51 { |
| 52 RefPtr<IDBRequest> request(adoptRef(new IDBRequest(context, source, IDBDatab
aseBackendInterface::NormalTask, transaction))); | 52 IDBRequest* request = new IDBRequest(context, source, IDBDatabaseBackendInte
rface::NormalTask, transaction); |
| 53 request->suspendIfNeeded(); | 53 request->suspendIfNeeded(); |
| 54 // Requests associated with IDBFactory (open/deleteDatabase/getDatabaseNames
) are not associated with transactions. | 54 // Requests associated with IDBFactory (open/deleteDatabase/getDatabaseNames
) are not associated with transactions. |
| 55 if (transaction) | 55 if (transaction) |
| 56 transaction->registerRequest(request.get()); | 56 transaction->registerRequest(request); |
| 57 return request.release(); | 57 return request; |
| 58 } | 58 } |
| 59 | 59 |
| 60 PassRefPtr<IDBRequest> IDBRequest::create(ScriptExecutionContext* context, PassR
efPtr<IDBAny> source, IDBDatabaseBackendInterface::TaskType taskType, IDBTransac
tion* transaction) | 60 IDBRequest* IDBRequest::create(ScriptExecutionContext* context, PassRefPtr<IDBAn
y> source, IDBDatabaseBackendInterface::TaskType taskType, IDBTransaction* trans
action) |
| 61 { | 61 { |
| 62 RefPtr<IDBRequest> request(adoptRef(new IDBRequest(context, source, taskType
, transaction))); | 62 IDBRequest* request = new IDBRequest(context, source, taskType, transaction)
; |
| 63 request->suspendIfNeeded(); | 63 request->suspendIfNeeded(); |
| 64 // Requests associated with IDBFactory (open/deleteDatabase/getDatabaseNames
) are not associated with transactions. | 64 // Requests associated with IDBFactory (open/deleteDatabase/getDatabaseNames
) are not associated with transactions. |
| 65 if (transaction) | 65 if (transaction) |
| 66 transaction->registerRequest(request.get()); | 66 transaction->registerRequest(request); |
| 67 return request.release(); | 67 return request; |
| 68 } | 68 } |
| 69 | 69 |
| 70 IDBRequest::IDBRequest(ScriptExecutionContext* context, PassRefPtr<IDBAny> sourc
e, IDBDatabaseBackendInterface::TaskType taskType, IDBTransaction* transaction) | 70 IDBRequest::IDBRequest(ScriptExecutionContext* context, PassRefPtr<IDBAny> sourc
e, IDBDatabaseBackendInterface::TaskType taskType, IDBTransaction* transaction) |
| 71 : ActiveDOMObject(context) | 71 : ActiveDOMObject(context) |
| 72 , m_result(0) | 72 , m_result(0) |
| 73 , m_errorCode(0) | 73 , m_errorCode(0) |
| 74 , m_contextStopped(false) | 74 , m_contextStopped(false) |
| 75 , m_transaction(transaction) | 75 , m_transaction(transaction) |
| 76 , m_readyState(PENDING) | 76 , m_readyState(PENDING) |
| 77 , m_requestAborted(false) | 77 , m_requestAborted(false) |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 | 164 |
| 165 void IDBRequest::abort() | 165 void IDBRequest::abort() |
| 166 { | 166 { |
| 167 ASSERT(!m_requestAborted); | 167 ASSERT(!m_requestAborted); |
| 168 if (m_contextStopped || !scriptExecutionContext()) | 168 if (m_contextStopped || !scriptExecutionContext()) |
| 169 return; | 169 return; |
| 170 ASSERT(m_readyState == PENDING || m_readyState == DONE); | 170 ASSERT(m_readyState == PENDING || m_readyState == DONE); |
| 171 if (m_readyState == DONE) | 171 if (m_readyState == DONE) |
| 172 return; | 172 return; |
| 173 | 173 |
| 174 // Enqueued events may be the only reference to this object. | |
| 175 RefPtr<IDBRequest> self(this); | |
| 176 | |
| 177 EventQueue* eventQueue = scriptExecutionContext()->eventQueue(); | 174 EventQueue* eventQueue = scriptExecutionContext()->eventQueue(); |
| 178 for (size_t i = 0; i < m_enqueuedEvents.size(); ++i) { | 175 for (size_t i = 0; i < m_enqueuedEvents.size(); ++i) { |
| 179 bool removed = eventQueue->cancelEvent(m_enqueuedEvents[i].get()); | 176 bool removed = eventQueue->cancelEvent(m_enqueuedEvents[i].get()); |
| 180 ASSERT_UNUSED(removed, removed); | 177 ASSERT_UNUSED(removed, removed); |
| 181 } | 178 } |
| 182 m_enqueuedEvents.clear(); | 179 m_enqueuedEvents.clear(); |
| 183 | 180 |
| 184 m_errorCode = 0; | 181 m_errorCode = 0; |
| 185 m_error.clear(); | 182 m_error.clear(); |
| 186 m_errorMessage = String(); | 183 m_errorMessage = String(); |
| (...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 568 EventTargetData* IDBRequest::eventTargetData() | 565 EventTargetData* IDBRequest::eventTargetData() |
| 569 { | 566 { |
| 570 return &m_eventTargetData; | 567 return &m_eventTargetData; |
| 571 } | 568 } |
| 572 | 569 |
| 573 EventTargetData* IDBRequest::ensureEventTargetData() | 570 EventTargetData* IDBRequest::ensureEventTargetData() |
| 574 { | 571 { |
| 575 return &m_eventTargetData; | 572 return &m_eventTargetData; |
| 576 } | 573 } |
| 577 | 574 |
| 575 void IDBRequest::trace(Visitor* visitor) |
| 576 { |
| 577 IDBCallbacks::trace(visitor); |
| 578 } |
| 579 |
| 580 |
| 578 } // namespace WebCore | 581 } // namespace WebCore |
| OLD | NEW |