Index: content/utility/utility_thread_impl.cc |
=================================================================== |
--- content/utility/utility_thread_impl.cc (revision 152976) |
+++ content/utility/utility_thread_impl.cc (working copy) |
@@ -11,11 +11,15 @@ |
#include "base/memory/scoped_vector.h" |
#include "content/common/child_process.h" |
#include "content/common/child_process_messages.h" |
+#include "content/common/indexed_db/indexed_db_key.h" |
+#include "content/common/indexed_db/indexed_db_key_path.h" |
#include "content/common/utility_messages.h" |
#include "content/common/webkitplatformsupport_impl.h" |
#include "content/public/utility/content_utility_client.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBKey.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSerializedScriptValue.h" |
+#include "webkit/glue/idb_bindings.h" |
#include "webkit/plugins/npapi/plugin_list.h" |
#if defined(TOOLKIT_GTK) |
@@ -75,6 +79,9 @@ |
bool handled = true; |
IPC_BEGIN_MESSAGE_MAP(UtilityThreadImpl, msg) |
+ IPC_MESSAGE_HANDLER(UtilityMsg_IDBKeysFromValuesAndKeyPath, |
+ OnIDBKeysFromValuesAndKeyPath) |
+ IPC_MESSAGE_HANDLER(UtilityMsg_InjectIDBKey, OnInjectIDBKey) |
IPC_MESSAGE_HANDLER(UtilityMsg_BatchMode_Started, OnBatchModeStarted) |
IPC_MESSAGE_HANDLER(UtilityMsg_BatchMode_Finished, OnBatchModeFinished) |
#if defined(OS_POSIX) |
@@ -85,6 +92,31 @@ |
return handled; |
} |
+void UtilityThreadImpl::OnIDBKeysFromValuesAndKeyPath( |
+ int id, |
+ const std::vector<content::SerializedScriptValue>& serialized_script_values, |
+ const content::IndexedDBKeyPath& idb_key_path) { |
+ std::vector<WebKit::WebSerializedScriptValue> web_values; |
+ ConvertVector(serialized_script_values, &web_values); |
+ std::vector<WebKit::WebIDBKey> web_keys; |
+ webkit_glue::IDBKeysFromValuesAndKeyPath( |
+ web_values, idb_key_path, &web_keys); |
+ std::vector<content::IndexedDBKey> keys; |
+ ConvertVector(web_keys, &keys); |
+ Send(new UtilityHostMsg_IDBKeysFromValuesAndKeyPath_Succeeded(id, keys)); |
+ ReleaseProcessIfNeeded(); |
+} |
+ |
+void UtilityThreadImpl::OnInjectIDBKey( |
+ const content::IndexedDBKey& key, |
+ const content::SerializedScriptValue& value, |
+ const content::IndexedDBKeyPath& key_path) { |
+ content::SerializedScriptValue new_value( |
+ webkit_glue::InjectIDBKey(key, value, key_path)); |
+ Send(new UtilityHostMsg_InjectIDBKey_Finished(new_value)); |
+ ReleaseProcessIfNeeded(); |
+} |
+ |
void UtilityThreadImpl::OnBatchModeStarted() { |
batch_mode_ = true; |
} |