Chromium Code Reviews| Index: third_party/WebKit/Source/modules/indexeddb/IDBRequest.cpp |
| diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBRequest.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBRequest.cpp |
| index 98a496d4aa758f8f43343b3513516115990c90ab..ea832a61bd7829d8d877ca5ea69611d0da677ad5 100644 |
| --- a/third_party/WebKit/Source/modules/indexeddb/IDBRequest.cpp |
| +++ b/third_party/WebKit/Source/modules/indexeddb/IDBRequest.cpp |
| @@ -42,6 +42,7 @@ |
| #include "modules/indexeddb/IDBEventDispatcher.h" |
| #include "modules/indexeddb/IDBTracing.h" |
| #include "modules/indexeddb/IDBValue.h" |
| +#include "modules/indexeddb/WebIDBCallbacksImpl.h" |
| #include "platform/SharedBuffer.h" |
| #include "public/platform/WebBlobInfo.h" |
| #include <memory> |
| @@ -132,6 +133,19 @@ const String& IDBRequest::readyState() const { |
| return IndexedDBNames::done; |
| } |
| +std::unique_ptr<WebIDBCallbacks> IDBRequest::createWebCallbacks() { |
| + DCHECK(!m_webCallbacks); |
| + std::unique_ptr<WebIDBCallbacks> callbacks = |
| + WebIDBCallbacksImpl::create(this); |
| + m_webCallbacks = callbacks.get(); |
| + return callbacks; |
| +} |
| + |
| +void IDBRequest::webCallbacksDestroyed() { |
| + DCHECK(m_webCallbacks); |
| + m_webCallbacks = nullptr; |
|
haraken
2016/10/18 19:01:29
Don't we need to call m_webCallbacks->detach()?
J
Reilly Grant (use Gerrit)
2016/10/19 00:36:51
m_webCallbacks->detach() just clears the callback
|
| +} |
| + |
| void IDBRequest::abort() { |
| DCHECK(!m_requestAborted); |
| if (m_contextStopped || !getExecutionContext()) |
| @@ -397,6 +411,10 @@ void IDBRequest::contextDestroyed() { |
| m_result->contextWillBeDestroyed(); |
| if (m_pendingCursor) |
| m_pendingCursor->contextWillBeDestroyed(); |
| + if (m_webCallbacks) { |
| + m_webCallbacks->detach(); |
| + m_webCallbacks = nullptr; |
| + } |
| } |
| const AtomicString& IDBRequest::interfaceName() const { |