| Index: third_party/WebKit/Source/modules/indexeddb/IDBFactory.cpp
 | 
| diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBFactory.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBFactory.cpp
 | 
| index 737435363e2c49374c8f701e580bee84ac3ef43b..f485e1133654a1fb549e5569abb6de966ec9419f 100644
 | 
| --- a/third_party/WebKit/Source/modules/indexeddb/IDBFactory.cpp
 | 
| +++ b/third_party/WebKit/Source/modules/indexeddb/IDBFactory.cpp
 | 
| @@ -34,18 +34,15 @@
 | 
|  #include "core/dom/Document.h"
 | 
|  #include "core/dom/ExceptionCode.h"
 | 
|  #include "modules/indexeddb/IDBDatabase.h"
 | 
| -#include "modules/indexeddb/IDBDatabaseCallbacks.h"
 | 
| +#include "modules/indexeddb/IDBDatabaseObserverImpl.h"
 | 
|  #include "modules/indexeddb/IDBKey.h"
 | 
|  #include "modules/indexeddb/IDBTracing.h"
 | 
|  #include "modules/indexeddb/IndexedDBClient.h"
 | 
| -#include "modules/indexeddb/WebIDBCallbacksImpl.h"
 | 
| -#include "modules/indexeddb/WebIDBDatabaseCallbacksImpl.h"
 | 
|  #include "platform/Histogram.h"
 | 
|  #include "platform/weborigin/SecurityOrigin.h"
 | 
| +#include "public/platform/InterfaceProvider.h"
 | 
|  #include "public/platform/Platform.h"
 | 
|  #include "public/platform/WebSecurityOrigin.h"
 | 
| -#include "public/platform/modules/indexeddb/WebIDBFactory.h"
 | 
| -#include <memory>
 | 
|  
 | 
|  namespace blink {
 | 
|  
 | 
| @@ -53,6 +50,15 @@ static const char permissionDeniedErrorMessage[] = "The user denied permission t
 | 
|  
 | 
|  IDBFactory::IDBFactory()
 | 
|  {
 | 
| +    // TODO(cmumford): I'm sure this can fail.
 | 
| +    // TODO(cmumford): Should we connect (lazily) once and share the Mojo
 | 
| +    //                 factory between all IDBFactory's?
 | 
| +    Platform::current()->interfaceProvider()->getInterface(mojo::GetProxy(&m_proxy));
 | 
| +    DCHECK(m_proxy);
 | 
| +}
 | 
| +
 | 
| +IDBFactory::~IDBFactory()
 | 
| +{
 | 
|  }
 | 
|  
 | 
|  static bool isContextValid(ExecutionContext* context)
 | 
| @@ -82,7 +88,7 @@ IDBRequest* IDBFactory::getDatabaseNames(ScriptState* scriptState, ExceptionStat
 | 
|          return request;
 | 
|      }
 | 
|  
 | 
| -    Platform::current()->idbFactory()->getDatabaseNames(WebIDBCallbacksImpl::create(request).release(), WebSecurityOrigin(scriptState->getExecutionContext()->getSecurityOrigin()));
 | 
| +    m_proxy->GetDatabaseNames(scriptState->getExecutionContext()->getSecurityOrigin());
 | 
|      return request;
 | 
|  }
 | 
|  
 | 
| @@ -107,16 +113,19 @@ IDBOpenDBRequest* IDBFactory::openInternal(ScriptState* scriptState, const Strin
 | 
|          return nullptr;
 | 
|      }
 | 
|  
 | 
| -    IDBDatabaseCallbacks* databaseCallbacks = IDBDatabaseCallbacks::create();
 | 
|      int64_t transactionId = IDBDatabase::nextTransactionId();
 | 
| -    IDBOpenDBRequest* request = IDBOpenDBRequest::create(scriptState, databaseCallbacks, transactionId, version);
 | 
| +    indexed_db::mojom::blink::OpenRequestObserverPtr openRequestObserver;
 | 
| +    IDBOpenDBRequest* request = IDBOpenDBRequest::create(scriptState, transactionId, version, GetProxy(&openRequestObserver));
 | 
| +    indexed_db::mojom::blink::DatabaseObserverPtr databaseObserver = IDBDatabaseObserverImpl::Create(request);
 | 
|  
 | 
|      if (!IndexedDBClient::from(scriptState->getExecutionContext())->allowIndexedDB(scriptState->getExecutionContext(), name)) {
 | 
|          request->onError(DOMException::create(UnknownError, permissionDeniedErrorMessage));
 | 
|          return request;
 | 
|      }
 | 
|  
 | 
| -    Platform::current()->idbFactory()->open(name, version, transactionId, WebIDBCallbacksImpl::create(request).release(), WebIDBDatabaseCallbacksImpl::create(databaseCallbacks).release(), WebSecurityOrigin(scriptState->getExecutionContext()->getSecurityOrigin()));
 | 
| +    indexed_db::mojom::blink::DatabaseFactory::OpenCallback openCallback = convertToBaseCallback(WTF::bind(&IDBOpenDBRequest::onOpenResult, wrapWeakPersistent(request)));
 | 
| +
 | 
| +    m_proxy->Open(name, version, transactionId, scriptState->getExecutionContext()->getSecurityOrigin(), std::move(openRequestObserver), std::move(databaseObserver), openCallback);
 | 
|      return request;
 | 
|  }
 | 
|  
 | 
| @@ -137,14 +146,15 @@ IDBOpenDBRequest* IDBFactory::deleteDatabase(ScriptState* scriptState, const Str
 | 
|          return nullptr;
 | 
|      }
 | 
|  
 | 
| -    IDBOpenDBRequest* request = IDBOpenDBRequest::create(scriptState, nullptr, 0, IDBDatabaseMetadata::DefaultVersion);
 | 
| +    indexed_db::mojom::blink::OpenRequestObserverPtr openRequestObserver;
 | 
| +    IDBOpenDBRequest* request = IDBOpenDBRequest::create(scriptState, 0, IDBDatabaseMetadata::DefaultVersion, GetProxy(&openRequestObserver));
 | 
|  
 | 
|      if (!IndexedDBClient::from(scriptState->getExecutionContext())->allowIndexedDB(scriptState->getExecutionContext(), name)) {
 | 
|          request->onError(DOMException::create(UnknownError, permissionDeniedErrorMessage));
 | 
|          return request;
 | 
|      }
 | 
|  
 | 
| -    Platform::current()->idbFactory()->deleteDatabase(name, WebIDBCallbacksImpl::create(request).release(), WebSecurityOrigin(scriptState->getExecutionContext()->getSecurityOrigin()));
 | 
| +    m_proxy->DeleteDatabase(name, scriptState->getExecutionContext()->getSecurityOrigin());
 | 
|      return request;
 | 
|  }
 | 
|  
 | 
| 
 |