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

Side by Side Diff: content/browser/indexed_db/idbbindingutilities_browsertest.cc

Issue 9317074: Create an API around UtilityProcessHost and use that from chrome. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 8 years, 10 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/utf_string_conversions.h" 6 #include "base/utf_string_conversions.h"
7 #include "chrome/test/base/in_process_browser_test.h" 7 #include "chrome/test/base/in_process_browser_test.h"
8 #include "chrome/test/base/ui_test_utils.h" 8 #include "chrome/test/base/ui_test_utils.h"
9 #include "content/browser/renderer_host/resource_dispatcher_host.h" 9 #include "content/browser/renderer_host/resource_dispatcher_host.h"
10 #include "content/browser/utility_process_host.h" 10 #include "content/browser/utility_process_host_impl.h"
11 #include "content/public/browser/utility_process_host_client.h"
11 #include "content/common/indexed_db/indexed_db_key.h" 12 #include "content/common/indexed_db/indexed_db_key.h"
12 #include "content/common/utility_messages.h" 13 #include "content/common/utility_messages.h"
13 #include "content/common/webkitplatformsupport_impl.h" 14 #include "content/common/webkitplatformsupport_impl.h"
14 #include "content/public/common/serialized_script_value.h" 15 #include "content/public/common/serialized_script_value.h"
15 #include "googleurl/src/gurl.h" 16 #include "googleurl/src/gurl.h"
16 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
17 #include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h" 18 #include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h"
18 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSerialize dScriptValue.h" 19 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSerialize dScriptValue.h"
19 #include "webkit/glue/idb_bindings.h" 20 #include "webkit/glue/idb_bindings.h"
20 #include "webkit/glue/web_io_operators.h" 21 #include "webkit/glue/web_io_operators.h"
21 22
22 using content::BrowserThread; 23 using content::BrowserThread;
24 using content::UtilityProcessHost;
25 using content::UtilityProcessHostClient;
23 using WebKit::WebSerializedScriptValue; 26 using WebKit::WebSerializedScriptValue;
24 27
25 // Enables calling WebKit::shutdown no matter where a "return" happens. 28 // Enables calling WebKit::shutdown no matter where a "return" happens.
26 class ScopedShutdownWebKit { 29 class ScopedShutdownWebKit {
27 public: 30 public:
28 ScopedShutdownWebKit() { 31 ScopedShutdownWebKit() {
29 } 32 }
30 33
31 ~ScopedShutdownWebKit() { 34 ~ScopedShutdownWebKit() {
32 WebKit::shutdown(); 35 WebKit::shutdown();
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 serialized_values, key_path, &values); 100 serialized_values, key_path, &values);
98 101
99 ASSERT_TRUE(error); 102 ASSERT_TRUE(error);
100 ASSERT_EQ(size_t(4), values.size()); 103 ASSERT_EQ(size_t(4), values.size());
101 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[0].type()); 104 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[0].type());
102 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[1].type()); 105 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[1].type());
103 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[2].type()); 106 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[2].type());
104 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[3].type()); 107 ASSERT_EQ(WebKit::WebIDBKey::NullType, values[3].type());
105 } 108 }
106 109
107 class IDBKeyPathHelper : public UtilityProcessHost::Client { 110 class IDBKeyPathHelper : public UtilityProcessHostClient {
108 public: 111 public:
109 IDBKeyPathHelper() 112 IDBKeyPathHelper()
110 : expected_id_(0), 113 : expected_id_(0),
111 value_for_key_path_failed_(false) { 114 value_for_key_path_failed_(false) {
112 } 115 }
113 116
114 void CreateUtilityProcess() { 117 void CreateUtilityProcess() {
115 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { 118 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
116 BrowserThread::PostTask( 119 BrowserThread::PostTask(
117 BrowserThread::IO, FROM_HERE, 120 BrowserThread::IO, FROM_HERE,
118 base::Bind(&IDBKeyPathHelper::CreateUtilityProcess, this)); 121 base::Bind(&IDBKeyPathHelper::CreateUtilityProcess, this));
119 return; 122 return;
120 } 123 }
121 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 124 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
122 utility_process_host_ = 125 utility_process_host_ =
123 (new UtilityProcessHost(this, BrowserThread::IO))->AsWeakPtr(); 126 (new UtilityProcessHostImpl(this, BrowserThread::IO))->AsWeakPtr();
124 utility_process_host_->set_use_linux_zygote(true); 127 utility_process_host_->EnableZygote();
125 utility_process_host_->StartBatchMode(); 128 utility_process_host_->StartBatchMode();
126 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 129 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
127 MessageLoop::QuitClosure()); 130 MessageLoop::QuitClosure());
128 } 131 }
129 132
130 void DestroyUtilityProcess() { 133 void DestroyUtilityProcess() {
131 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { 134 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
132 BrowserThread::PostTask( 135 BrowserThread::PostTask(
133 BrowserThread::IO, FROM_HERE, 136 BrowserThread::IO, FROM_HERE,
134 base::Bind(&IDBKeyPathHelper::DestroyUtilityProcess, this)); 137 base::Bind(&IDBKeyPathHelper::DestroyUtilityProcess, this));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 base::Bind(&IDBKeyPathHelper::CheckInjectValue, this, key, value, 183 base::Bind(&IDBKeyPathHelper::CheckInjectValue, this, key, value,
181 key_path)); 184 key_path));
182 return; 185 return;
183 } 186 }
184 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 187 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
185 bool ret = utility_process_host_->Send(new UtilityMsg_InjectIDBKey( 188 bool ret = utility_process_host_->Send(new UtilityMsg_InjectIDBKey(
186 key, value, key_path)); 189 key, value, key_path));
187 ASSERT_TRUE(ret); 190 ASSERT_TRUE(ret);
188 } 191 }
189 192
190 // UtilityProcessHost::Client 193 // UtilityProcessHostClient
191 bool OnMessageReceived(const IPC::Message& message) { 194 bool OnMessageReceived(const IPC::Message& message) {
192 bool msg_is_ok = true; 195 bool msg_is_ok = true;
193 bool handled = true; 196 bool handled = true;
194 IPC_BEGIN_MESSAGE_MAP_EX(IDBKeyPathHelper, message, msg_is_ok) 197 IPC_BEGIN_MESSAGE_MAP_EX(IDBKeyPathHelper, message, msg_is_ok)
195 IPC_MESSAGE_HANDLER(UtilityHostMsg_IDBKeysFromValuesAndKeyPath_Succeeded, 198 IPC_MESSAGE_HANDLER(UtilityHostMsg_IDBKeysFromValuesAndKeyPath_Succeeded,
196 OnIDBKeysFromValuesAndKeyPathSucceeded) 199 OnIDBKeysFromValuesAndKeyPathSucceeded)
197 IPC_MESSAGE_HANDLER(UtilityHostMsg_IDBKeysFromValuesAndKeyPath_Failed, 200 IPC_MESSAGE_HANDLER(UtilityHostMsg_IDBKeysFromValuesAndKeyPath_Failed,
198 OnIDBKeysFromValuesAndKeyPathFailed) 201 OnIDBKeysFromValuesAndKeyPathFailed)
199 IPC_MESSAGE_HANDLER(UtilityHostMsg_InjectIDBKey_Finished, 202 IPC_MESSAGE_HANDLER(UtilityHostMsg_InjectIDBKey_Finished,
200 OnInjectIDBKeyFinished) 203 OnInjectIDBKeyFinished)
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 0x6f6f, 0x013f, 0x0353, 0x6f7a, 0x3f6f, 429 0x6f6f, 0x013f, 0x0353, 0x6f7a, 0x3f6f,
427 0x5301, 0x6203, 0x7261, 0x013f, 0x3f6f, 430 0x5301, 0x6203, 0x7261, 0x013f, 0x3f6f,
428 0x5302, 0x6203, 0x7a61, 0x023f, 0x0853, 431 0x5302, 0x6203, 0x7a61, 0x023f, 0x0853,
429 0x796d, 0x654e, 0x4b77, 0x7965, 0x017b, 432 0x796d, 0x654e, 0x4b77, 0x7965, 0x017b,
430 0x027b}; 433 0x027b};
431 content::SerializedScriptValue expected_value2( 434 content::SerializedScriptValue expected_value2(
432 false, false, string16(expected_data2, arraysize(expected_data2))); 435 false, false, string16(expected_data2, arraysize(expected_data2)));
433 scoped_helper.SetExpectedValue(expected_value2); 436 scoped_helper.SetExpectedValue(expected_value2);
434 scoped_helper.CheckInjectValue(key, value, UTF8ToUTF16("bar.baz")); 437 scoped_helper.CheckInjectValue(key, value, UTF8ToUTF16("bar.baz"));
435 } 438 }
OLDNEW
« no previous file with comments | « content/browser/in_process_webkit/indexed_db_key_utility_client.cc ('k') | content/browser/plugin_loader_posix.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698