OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |