diff options
Diffstat (limited to 'content/renderer')
-rw-r--r-- | content/renderer/indexed_db_dispatcher.cc | 34 | ||||
-rw-r--r-- | content/renderer/indexed_db_dispatcher.h | 8 | ||||
-rw-r--r-- | content/renderer/renderer_webidbfactory_impl.cc | 13 | ||||
-rw-r--r-- | content/renderer/renderer_webidbfactory_impl.h | 9 |
4 files changed, 64 insertions, 0 deletions
diff --git a/content/renderer/indexed_db_dispatcher.cc b/content/renderer/indexed_db_dispatcher.cc index eb00ac3..3e57137 100644 --- a/content/renderer/indexed_db_dispatcher.cc +++ b/content/renderer/indexed_db_dispatcher.cc @@ -20,6 +20,7 @@ #include "third_party/WebKit/Source/WebKit/chromium/public/WebSerializedScriptValue.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" +using WebKit::WebDOMStringList; using WebKit::WebExceptionCode; using WebKit::WebFrame; using WebKit::WebIDBCallbacks; @@ -47,6 +48,8 @@ bool IndexedDBDispatcher::OnMessageReceived(const IPC::Message& msg) { OnSuccessIndexedDBKey) IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBTransaction, OnSuccessIDBTransaction) + IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessStringList, + OnSuccessStringList) IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessSerializedScriptValue, OnSuccessSerializedScriptValue) IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksError, OnError) @@ -122,6 +125,26 @@ void IndexedDBDispatcher::RequestIDBFactoryOpen( RenderThread::current()->Send(new IndexedDBHostMsg_FactoryOpen(params)); } +void IndexedDBDispatcher::RequestIDBFactoryGetDatabaseNames( + WebIDBCallbacks* callbacks_ptr, + const string16& origin, + WebFrame* web_frame) { + scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); + + if (!web_frame) + return; // We must be shutting down. + RenderView* render_view = RenderView::FromWebView(web_frame->view()); + if (!render_view) + return; // We must be shutting down. + + IndexedDBHostMsg_FactoryGetDatabaseNames_Params params; + params.routing_id = render_view->routing_id(); + params.response_id = pending_callbacks_.Add(callbacks.release()); + params.origin = origin; + RenderThread::current()->Send( + new IndexedDBHostMsg_FactoryGetDatabaseNames(params)); +} + void IndexedDBDispatcher::RequestIDBFactoryDeleteDatabase( const string16& name, WebIDBCallbacks* callbacks_ptr, @@ -384,6 +407,17 @@ void IndexedDBDispatcher::OnSuccessIDBTransaction(int32 response_id, pending_callbacks_.Remove(response_id); } +void IndexedDBDispatcher::OnSuccessStringList( + int32 response_id, const std::vector<string16>& value) { + WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id); + WebDOMStringList string_list; + for (std::vector<string16>::const_iterator it = value.begin(); + it != value.end(); ++it) + string_list.append(*it); + callbacks->onSuccess(string_list); + pending_callbacks_.Remove(response_id); +} + void IndexedDBDispatcher::OnSuccessSerializedScriptValue( int32 response_id, const SerializedScriptValue& value) { WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id); diff --git a/content/renderer/indexed_db_dispatcher.h b/content/renderer/indexed_db_dispatcher.h index edfd9a7..1e0a404 100644 --- a/content/renderer/indexed_db_dispatcher.h +++ b/content/renderer/indexed_db_dispatcher.h @@ -19,6 +19,7 @@ class IndexedDBKey; class SerializedScriptValue; namespace WebKit { +class WebDOMStringList; class WebFrame; class WebIDBKeyRange; class WebIDBTransaction; @@ -33,6 +34,11 @@ class IndexedDBDispatcher : public IPC::Channel::Listener { // IPC::Channel::Listener implementation. virtual bool OnMessageReceived(const IPC::Message& msg); + void RequestIDBFactoryGetDatabaseNames( + WebKit::WebIDBCallbacks* callbacks, + const string16& origin, + WebKit::WebFrame* web_frame); + void RequestIDBFactoryOpen( const string16& name, WebKit::WebIDBCallbacks* callbacks, @@ -151,6 +157,8 @@ class IndexedDBDispatcher : public IPC::Channel::Listener { void OnSuccessIndexedDBKey(int32 response_id, const IndexedDBKey& key); void OnSuccessIDBTransaction(int32 response_id, int32 object_id); void OnSuccessOpenCursor(int32 response_id, int32 object_id); + void OnSuccessStringList(int32 response_id, + const std::vector<string16>& value); void OnSuccessSerializedScriptValue(int32 response_id, const SerializedScriptValue& value); void OnError(int32 response_id, int code, const string16& message); diff --git a/content/renderer/renderer_webidbfactory_impl.cc b/content/renderer/renderer_webidbfactory_impl.cc index 98102d6..f52be45 100644 --- a/content/renderer/renderer_webidbfactory_impl.cc +++ b/content/renderer/renderer_webidbfactory_impl.cc @@ -22,6 +22,19 @@ RendererWebIDBFactoryImpl::RendererWebIDBFactoryImpl() { RendererWebIDBFactoryImpl::~RendererWebIDBFactoryImpl() { } +void RendererWebIDBFactoryImpl::getDatabaseNames( + WebIDBCallbacks* callbacks, + const WebSecurityOrigin& origin, + WebFrame* web_frame, + const WebString& data_dir_unused, + unsigned long long maximum_size_unused, + WebKit::WebIDBFactory::BackingStoreType) { + IndexedDBDispatcher* dispatcher = + RenderThread::current()->indexed_db_dispatcher(); + dispatcher->RequestIDBFactoryGetDatabaseNames( + callbacks, origin.databaseIdentifier(), web_frame); +} + void RendererWebIDBFactoryImpl::open( const WebString& name, WebIDBCallbacks* callbacks, diff --git a/content/renderer/renderer_webidbfactory_impl.h b/content/renderer/renderer_webidbfactory_impl.h index 2837911..a04f2da 100644 --- a/content/renderer/renderer_webidbfactory_impl.h +++ b/content/renderer/renderer_webidbfactory_impl.h @@ -24,6 +24,15 @@ class RendererWebIDBFactoryImpl : public WebKit::WebIDBFactory { virtual ~RendererWebIDBFactoryImpl(); // See WebIDBFactory.h for documentation on these functions. + virtual void getDatabaseNames( + WebKit::WebIDBCallbacks* callbacks, + const WebKit::WebSecurityOrigin& origin, + WebKit::WebFrame* web_frame, + const WebKit::WebString& data_dir, + // TODO(dgrogan): Remove maximum_size after it's out of the webkit api. + unsigned long long maximum_size, + WebKit::WebIDBFactory::BackingStoreType); + virtual void open( const WebKit::WebString& name, WebKit::WebIDBCallbacks* callbacks, |