| 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 c5e2aaad76bed544144475b772879f56b7edfb2a..8489d2300017bc2a975ebfe9945fc0f5526afa80 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>
|
| @@ -131,6 +132,20 @@ 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);
|
| @@ -403,6 +418,10 @@ void IDBRequest::stop()
|
| m_result->contextWillBeDestroyed();
|
| if (m_pendingCursor)
|
| m_pendingCursor->contextWillBeDestroyed();
|
| + if (m_webCallbacks) {
|
| + m_webCallbacks->detach();
|
| + m_webCallbacks = nullptr;
|
| + }
|
| }
|
|
|
| const AtomicString& IDBRequest::interfaceName() const
|
|
|