| 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;
|
| +}
|
| +
|
| 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 {
|
|
|