Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1364)

Unified Diff: Source/modules/indexeddb/IDBFactory.cpp

Issue 67463006: IndexedDB: Simplify WebIDBCallbacks exports, strip IDBFactoryBackend (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Re-up Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/modules/indexeddb/IDBFactory.h ('k') | Source/modules/indexeddb/IDBFactoryBackendInterface.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/indexeddb/IDBFactory.cpp
diff --git a/Source/modules/indexeddb/IDBFactory.cpp b/Source/modules/indexeddb/IDBFactory.cpp
index fe2f58b71f4bf10726ec4575db67a61febf26db9..a70646ef65b3015ec7e0885c6a0e69267d607b68 100644
--- a/Source/modules/indexeddb/IDBFactory.cpp
+++ b/Source/modules/indexeddb/IDBFactory.cpp
@@ -40,15 +40,19 @@
#include "modules/indexeddb/IDBHistograms.h"
#include "modules/indexeddb/IDBKey.h"
#include "modules/indexeddb/IDBTracing.h"
+#include "modules/indexeddb/WebIDBCallbacksImpl.h"
#include "modules/indexeddb/WebIDBDatabaseCallbacksImpl.h"
#include "platform/weborigin/DatabaseIdentifier.h"
#include "platform/weborigin/SecurityOrigin.h"
#include "public/platform/Platform.h"
+#include "public/platform/WebIDBFactory.h"
namespace WebCore {
-IDBFactory::IDBFactory(IDBFactoryBackendInterface* factory)
- : m_backend(factory)
+static const char permissionDeniedErrorMessage[] = "The user denied permission to access the database.";
+
+IDBFactory::IDBFactory(IDBFactoryBackendInterface* permissionClient)
+ : m_permissionClient(permissionClient)
{
// We pass a reference to this object before it can be adopted.
relaxAdoptionRequirement();
@@ -80,7 +84,14 @@ PassRefPtr<IDBRequest> IDBFactory::getDatabaseNames(ExecutionContext* context, E
}
RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this), 0);
- m_backend->getDatabaseNames(request, createDatabaseIdentifierFromSecurityOrigin(context->securityOrigin()), context);
+
+
+ if (!m_permissionClient->allowIndexedDB(context, "Database Listing")) {
+ request->onError(DOMError::create(UnknownError, permissionDeniedErrorMessage));
+ return request;
+ }
+
+ blink::Platform::current()->idbFactory()->getDatabaseNames(WebIDBCallbacksImpl::create(request).leakPtr(), createDatabaseIdentifierFromSecurityOrigin(context->securityOrigin()));
return request;
}
@@ -112,7 +123,13 @@ PassRefPtr<IDBOpenDBRequest> IDBFactory::openInternal(ExecutionContext* context,
RefPtr<IDBDatabaseCallbacks> databaseCallbacks = IDBDatabaseCallbacks::create();
int64_t transactionId = IDBDatabase::nextTransactionId();
RefPtr<IDBOpenDBRequest> request = IDBOpenDBRequest::create(context, databaseCallbacks, transactionId, version);
- m_backend->open(name, version, transactionId, request, WebIDBDatabaseCallbacksImpl::create(databaseCallbacks.release()), createDatabaseIdentifierFromSecurityOrigin(context->securityOrigin()), context);
+
+ if (!m_permissionClient->allowIndexedDB(context, name)) {
+ request->onError(DOMError::create(UnknownError, permissionDeniedErrorMessage));
+ return request;
+ }
+
+ blink::Platform::current()->idbFactory()->open(name, version, transactionId, WebIDBCallbacksImpl::create(request).leakPtr(), WebIDBDatabaseCallbacksImpl::create(databaseCallbacks.release()).leakPtr(), createDatabaseIdentifierFromSecurityOrigin(context->securityOrigin()));
return request;
}
@@ -138,7 +155,13 @@ PassRefPtr<IDBOpenDBRequest> IDBFactory::deleteDatabase(ExecutionContext* contex
}
RefPtr<IDBOpenDBRequest> request = IDBOpenDBRequest::create(context, 0, 0, IDBDatabaseMetadata::DefaultIntVersion);
- m_backend->deleteDatabase(name, request, createDatabaseIdentifierFromSecurityOrigin(context->securityOrigin()), context);
+
+ if (!m_permissionClient->allowIndexedDB(context, name)) {
+ request->onError(DOMError::create(UnknownError, permissionDeniedErrorMessage));
+ return request;
+ }
+
+ blink::Platform::current()->idbFactory()->deleteDatabase(name, WebIDBCallbacksImpl::create(request).leakPtr(), createDatabaseIdentifierFromSecurityOrigin(context->securityOrigin()));
return request;
}
« no previous file with comments | « Source/modules/indexeddb/IDBFactory.h ('k') | Source/modules/indexeddb/IDBFactoryBackendInterface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698