| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/utf_string_conversions.h" | 5 #include "base/utf_string_conversions.h" |
| 6 #include "chrome/browser/browser_process.h" | 6 #include "chrome/browser/browser_process.h" |
| 7 #include "chrome/browser/utility_process_host.h" | 7 #include "chrome/browser/utility_process_host.h" |
| 8 #include "chrome/test/in_process_browser_test.h" | 8 #include "chrome/test/in_process_browser_test.h" |
| 9 #include "chrome/test/ui_test_utils.h" | 9 #include "chrome/test/ui_test_utils.h" |
| 10 #include "content/browser/renderer_host/resource_dispatcher_host.h" | 10 #include "content/browser/renderer_host/resource_dispatcher_host.h" |
| 11 #include "content/common/indexed_db_key.h" | 11 #include "content/common/indexed_db_key.h" |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 } | 60 } |
| 61 | 61 |
| 62 class IDBKeyPathHelper : public UtilityProcessHost::Client { | 62 class IDBKeyPathHelper : public UtilityProcessHost::Client { |
| 63 public: | 63 public: |
| 64 IDBKeyPathHelper() | 64 IDBKeyPathHelper() |
| 65 : expected_id_(0), | 65 : expected_id_(0), |
| 66 utility_process_host_(NULL), | 66 utility_process_host_(NULL), |
| 67 value_for_key_path_failed_(false) { | 67 value_for_key_path_failed_(false) { |
| 68 } | 68 } |
| 69 | 69 |
| 70 void CreateUtilityProcess(ResourceDispatcherHost* resource_dispatcher_host) { | 70 void CreateUtilityProcess() { |
| 71 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { | 71 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { |
| 72 BrowserThread::PostTask( | 72 BrowserThread::PostTask( |
| 73 BrowserThread::IO, FROM_HERE, | 73 BrowserThread::IO, FROM_HERE, |
| 74 NewRunnableMethod(this, &IDBKeyPathHelper::CreateUtilityProcess, | 74 NewRunnableMethod(this, &IDBKeyPathHelper::CreateUtilityProcess)); |
| 75 resource_dispatcher_host)); | |
| 76 return; | 75 return; |
| 77 } | 76 } |
| 78 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 77 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 79 utility_process_host_ = | 78 utility_process_host_ = |
| 80 new UtilityProcessHost(resource_dispatcher_host, this, | 79 new UtilityProcessHost(this, BrowserThread::IO); |
| 81 BrowserThread::IO); | |
| 82 utility_process_host_->StartBatchMode(); | 80 utility_process_host_->StartBatchMode(); |
| 83 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 81 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| 84 new MessageLoop::QuitTask()); | 82 new MessageLoop::QuitTask()); |
| 85 } | 83 } |
| 86 | 84 |
| 87 void DestroyUtilityProcess() { | 85 void DestroyUtilityProcess() { |
| 88 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { | 86 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { |
| 89 BrowserThread::PostTask( | 87 BrowserThread::PostTask( |
| 90 BrowserThread::IO, FROM_HERE, | 88 BrowserThread::IO, FROM_HERE, |
| 91 NewRunnableMethod(this, &IDBKeyPathHelper::DestroyUtilityProcess)); | 89 NewRunnableMethod(this, &IDBKeyPathHelper::DestroyUtilityProcess)); |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 | 184 |
| 187 // This test fixture runs in the UI thread. However, most of the work done by | 185 // This test fixture runs in the UI thread. However, most of the work done by |
| 188 // UtilityProcessHost (and wrapped by IDBKeyPathHelper above) happens on the IO | 186 // UtilityProcessHost (and wrapped by IDBKeyPathHelper above) happens on the IO |
| 189 // thread. This fixture delegates to IDBKeyPathHelper and blocks via | 187 // thread. This fixture delegates to IDBKeyPathHelper and blocks via |
| 190 // "ui_test_utils::RunMessageLoop()", until IDBKeyPathHelper posts a quit | 188 // "ui_test_utils::RunMessageLoop()", until IDBKeyPathHelper posts a quit |
| 191 // message the MessageLoop. | 189 // message the MessageLoop. |
| 192 class ScopedIDBKeyPathHelper { | 190 class ScopedIDBKeyPathHelper { |
| 193 public: | 191 public: |
| 194 ScopedIDBKeyPathHelper() { | 192 ScopedIDBKeyPathHelper() { |
| 195 key_path_helper_ = new IDBKeyPathHelper(); | 193 key_path_helper_ = new IDBKeyPathHelper(); |
| 196 key_path_helper_->CreateUtilityProcess( | 194 key_path_helper_->CreateUtilityProcess(); |
| 197 g_browser_process->resource_dispatcher_host()); | |
| 198 ui_test_utils::RunMessageLoop(); | 195 ui_test_utils::RunMessageLoop(); |
| 199 } | 196 } |
| 200 | 197 |
| 201 ~ScopedIDBKeyPathHelper() { | 198 ~ScopedIDBKeyPathHelper() { |
| 202 key_path_helper_->DestroyUtilityProcess(); | 199 key_path_helper_->DestroyUtilityProcess(); |
| 203 ui_test_utils::RunMessageLoop(); | 200 ui_test_utils::RunMessageLoop(); |
| 204 } | 201 } |
| 205 | 202 |
| 206 void SetExpectedKeys(int id, const std::vector<IndexedDBKey>& expected_keys, | 203 void SetExpectedKeys(int id, const std::vector<IndexedDBKey>& expected_keys, |
| 207 bool failed) { | 204 bool failed) { |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 string16(expected_data, | 320 string16(expected_data, |
| 324 arraysize(expected_data))); | 321 arraysize(expected_data))); |
| 325 | 322 |
| 326 ScopedIDBKeyPathHelper scoped_helper; | 323 ScopedIDBKeyPathHelper scoped_helper; |
| 327 scoped_helper.SetExpectedValue(expected_value); | 324 scoped_helper.SetExpectedValue(expected_value); |
| 328 scoped_helper.CheckInjectValue(key, value, UTF8ToUTF16("bar")); | 325 scoped_helper.CheckInjectValue(key, value, UTF8ToUTF16("bar")); |
| 329 | 326 |
| 330 scoped_helper.SetExpectedValue(SerializedScriptValue()); // Expect null. | 327 scoped_helper.SetExpectedValue(SerializedScriptValue()); // Expect null. |
| 331 scoped_helper.CheckInjectValue(key, value, UTF8ToUTF16("bad.key.path")); | 328 scoped_helper.CheckInjectValue(key, value, UTF8ToUTF16("bad.key.path")); |
| 332 } | 329 } |
| OLD | NEW |