Index: content/renderer/indexed_db_dispatcher.cc |
diff --git a/content/renderer/indexed_db_dispatcher.cc b/content/renderer/indexed_db_dispatcher.cc |
index eb00ac395dd1db889e8a8510a0ae96eba2ae2319..3e571374bbff55a9946f18c8afad82fa39102e39 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); |