IDBFactoryBackendProxy.cpp [plain text]
#include "config.h"
#include "IDBFactoryBackendProxy.h"
#if ENABLE(INDEXED_DATABASE)
#include "DOMStringList.h"
#include "IDBDatabaseBackendProxy.h"
#include "IDBDatabaseError.h"
#include "SecurityOrigin.h"
#include "WebFrameImpl.h"
#include "WebIDBCallbacksImpl.h"
#include "WebIDBDatabase.h"
#include "WebIDBDatabaseError.h"
#include "WebIDBFactory.h"
#include "WebKit.h"
#include "WebKitClient.h"
#include "WebPermissionClient.h"
#include "WebVector.h"
#include "WebViewImpl.h"
using namespace WebCore;
namespace WebKit {
PassRefPtr<IDBFactoryBackendInterface> IDBFactoryBackendProxy::create()
{
return adoptRef(new IDBFactoryBackendProxy());
}
IDBFactoryBackendProxy::IDBFactoryBackendProxy()
: m_webIDBFactory(webKitClient()->idbFactory())
{
}
IDBFactoryBackendProxy::~IDBFactoryBackendProxy()
{
}
void IDBFactoryBackendProxy::open(const String& name, PassRefPtr<IDBCallbacks> callbacks, PassRefPtr<SecurityOrigin> prpOrigin, Frame* frame, const String& dataDir, int64_t maximumSize, BackingStoreType backingStoreType)
{
WebSecurityOrigin origin(prpOrigin);
WebFrameImpl* webFrame = WebFrameImpl::fromFrame(frame);
WebViewImpl* webView = webFrame->viewImpl();
if (webView->permissionClient() && !webView->permissionClient()->allowIndexedDB(webFrame, name, origin)) {
callbacks->onError(WebIDBDatabaseError(0, "The user denied permission to access the database."));
return;
}
m_webIDBFactory->open(name, new WebIDBCallbacksImpl(callbacks), origin, webFrame, dataDir, maximumSize, static_cast<WebIDBFactory::BackingStoreType>(backingStoreType));
}
}
#endif // ENABLE(INDEXED_DATABASE)