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

Side by Side Diff: chrome/browser/debugger/devtools_sanity_unittest.cc

Issue 9317026: Hide WorkerProcessHost 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/cancelable_callback.h" 6 #include "base/cancelable_callback.h"
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
11 #include "base/stringprintf.h" 11 #include "base/stringprintf.h"
12 #include "base/test/test_timeouts.h" 12 #include "base/test/test_timeouts.h"
13 #include "base/utf_string_conversions.h" 13 #include "base/utf_string_conversions.h"
14 #include "chrome/browser/debugger/devtools_window.h" 14 #include "chrome/browser/debugger/devtools_window.h"
15 #include "chrome/browser/extensions/extension_host.h" 15 #include "chrome/browser/extensions/extension_host.h"
16 #include "chrome/browser/extensions/extension_service.h" 16 #include "chrome/browser/extensions/extension_service.h"
17 #include "chrome/browser/extensions/unpacked_installer.h" 17 #include "chrome/browser/extensions/unpacked_installer.h"
18 #include "chrome/browser/profiles/profile.h" 18 #include "chrome/browser/profiles/profile.h"
19 #include "chrome/browser/ui/browser.h" 19 #include "chrome/browser/ui/browser.h"
20 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 20 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
21 #include "chrome/common/chrome_notification_types.h" 21 #include "chrome/common/chrome_notification_types.h"
22 #include "chrome/common/chrome_paths.h" 22 #include "chrome/common/chrome_paths.h"
23 #include "chrome/common/chrome_switches.h" 23 #include "chrome/common/chrome_switches.h"
24 #include "chrome/test/base/in_process_browser_test.h" 24 #include "chrome/test/base/in_process_browser_test.h"
25 #include "chrome/test/base/ui_test_utils.h" 25 #include "chrome/test/base/ui_test_utils.h"
26 #include "content/browser/renderer_host/render_view_host.h" 26 #include "content/browser/renderer_host/render_view_host.h"
27 #include "content/browser/worker_host/worker_process_host.h"
28 #include "content/public/browser/browser_child_process_host_iterator.h"
29 #include "content/public/browser/child_process_data.h" 27 #include "content/public/browser/child_process_data.h"
30 #include "content/public/browser/content_browser_client.h" 28 #include "content/public/browser/content_browser_client.h"
31 #include "content/public/browser/devtools_agent_host_registry.h" 29 #include "content/public/browser/devtools_agent_host_registry.h"
32 #include "content/public/browser/devtools_client_host.h" 30 #include "content/public/browser/devtools_client_host.h"
33 #include "content/public/browser/devtools_manager.h" 31 #include "content/public/browser/devtools_manager.h"
34 #include "content/public/browser/notification_registrar.h" 32 #include "content/public/browser/notification_registrar.h"
35 #include "content/public/browser/notification_service.h" 33 #include "content/public/browser/notification_service.h"
36 #include "content/public/browser/render_view_host_delegate.h" 34 #include "content/public/browser/render_view_host_delegate.h"
37 #include "content/public/browser/web_contents.h" 35 #include "content/public/browser/web_contents.h"
38 #include "content/public/browser/worker_service.h" 36 #include "content/public/browser/worker_service.h"
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 class WorkerCreationObserver : public WorkerServiceObserver { 283 class WorkerCreationObserver : public WorkerServiceObserver {
286 public: 284 public:
287 explicit WorkerCreationObserver(WorkerData* worker_data) 285 explicit WorkerCreationObserver(WorkerData* worker_data)
288 : worker_data_(worker_data) { 286 : worker_data_(worker_data) {
289 } 287 }
290 288
291 private: 289 private:
292 virtual ~WorkerCreationObserver() {} 290 virtual ~WorkerCreationObserver() {}
293 291
294 virtual void WorkerCreated ( 292 virtual void WorkerCreated (
295 WorkerProcessHost* process, 293 const GURL& url,
296 const WorkerProcessHost::WorkerInstance& instance) OVERRIDE { 294 const string16& name,
297 worker_data_->worker_process_id = process->GetData().id; 295 int process_id,
298 worker_data_->worker_route_id = instance.worker_route_id(); 296 int route_id) OVERRIDE {
297 worker_data_->worker_process_id = process_id;
298 worker_data_->worker_route_id = route_id;
299 WorkerService::GetInstance()->RemoveObserver(this); 299 WorkerService::GetInstance()->RemoveObserver(this);
300 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 300 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
301 MessageLoop::QuitClosure()); 301 MessageLoop::QuitClosure());
302 delete this; 302 delete this;
303 } 303 }
304 virtual void WorkerDestroyed(
305 WorkerProcessHost*,
306 int worker_route_id) OVERRIDE {}
307 virtual void WorkerContextStarted(
308 WorkerProcessHost*,
309 int worker_route_id) OVERRIDE {}
310 scoped_refptr<WorkerData> worker_data_; 304 scoped_refptr<WorkerData> worker_data_;
311 }; 305 };
312 306
313 class WorkerTerminationObserver : public WorkerServiceObserver { 307 class WorkerTerminationObserver : public WorkerServiceObserver {
314 public: 308 public:
315 explicit WorkerTerminationObserver(WorkerData* worker_data) 309 explicit WorkerTerminationObserver(WorkerData* worker_data)
316 : worker_data_(worker_data) { 310 : worker_data_(worker_data) {
317 } 311 }
318 312
319 private: 313 private:
320 virtual ~WorkerTerminationObserver() {} 314 virtual ~WorkerTerminationObserver() {}
321 315
322 virtual void WorkerCreated ( 316 virtual void WorkerDestroyed(int process_id, int route_id) OVERRIDE {
323 WorkerProcessHost* process, 317 ASSERT_EQ(worker_data_->worker_process_id, process_id);
324 const WorkerProcessHost::WorkerInstance& instance) OVERRIDE {} 318 ASSERT_EQ(worker_data_->worker_route_id, route_id);
325 virtual void WorkerDestroyed(
326 WorkerProcessHost* process,
327 int worker_route_id) OVERRIDE {
328 ASSERT_EQ(worker_data_->worker_process_id, process->GetData().id);
329 ASSERT_EQ(worker_data_->worker_route_id, worker_route_id);
330 WorkerService::GetInstance()->RemoveObserver(this); 319 WorkerService::GetInstance()->RemoveObserver(this);
331 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 320 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
332 MessageLoop::QuitClosure()); 321 MessageLoop::QuitClosure());
333 delete this; 322 delete this;
334 } 323 }
335 virtual void WorkerContextStarted(
336 WorkerProcessHost*,
337 int worker_route_id) OVERRIDE {}
338 scoped_refptr<WorkerData> worker_data_; 324 scoped_refptr<WorkerData> worker_data_;
339 }; 325 };
340 326
341 void RunTest(const char* test_name, const char* test_page) { 327 void RunTest(const char* test_name, const char* test_page) {
342 ASSERT_TRUE(test_server()->Start()); 328 ASSERT_TRUE(test_server()->Start());
343 GURL url = test_server()->GetURL(test_page); 329 GURL url = test_server()->GetURL(test_page);
344 ui_test_utils::NavigateToURL(browser(), url); 330 ui_test_utils::NavigateToURL(browser(), url);
345 331
346 scoped_refptr<WorkerData> worker_data = WaitForFirstSharedWorker(); 332 scoped_refptr<WorkerData> worker_data = WaitForFirstSharedWorker();
347 OpenDevToolsWindowForSharedWorker(worker_data.get()); 333 OpenDevToolsWindowForSharedWorker(worker_data.get());
348 RunTestFunction(window_, test_name); 334 RunTestFunction(window_, test_name);
349 CloseDevToolsWindow(); 335 CloseDevToolsWindow();
350 } 336 }
351 337
352 static void TerminateWorkerOnIOThread( 338 static void TerminateWorkerOnIOThread(scoped_refptr<WorkerData> worker_data) {
353 scoped_refptr<WorkerData> worker_data) { 339 if (WorkerService::GetInstance()->TerminateWorker(
354 for (WorkerProcessHostIterator iter; !iter.Done(); ++iter) { 340 worker_data->worker_process_id, worker_data->worker_route_id)) {
355 if (iter.GetData().id == worker_data->worker_process_id) { 341 WorkerService::GetInstance()->AddObserver(
356 iter->TerminateWorker(worker_data->worker_route_id); 342 new WorkerTerminationObserver(worker_data));
357 WorkerService::GetInstance()->AddObserver( 343 return;
358 new WorkerTerminationObserver(worker_data));
359 return;
360 }
361 } 344 }
362 FAIL() << "Failed to terminate worker.\n"; 345 FAIL() << "Failed to terminate worker.\n";
363 } 346 }
364 347
365 static void TerminateWorker(scoped_refptr<WorkerData> worker_data) { 348 static void TerminateWorker(scoped_refptr<WorkerData> worker_data) {
366 BrowserThread::PostTask( 349 BrowserThread::PostTask(
367 BrowserThread::IO, FROM_HERE, 350 BrowserThread::IO, FROM_HERE,
368 base::Bind(&TerminateWorkerOnIOThread, worker_data)); 351 base::Bind(&TerminateWorkerOnIOThread, worker_data));
369 ui_test_utils::RunMessageLoop(); 352 ui_test_utils::RunMessageLoop();
370 } 353 }
371 354
372 static void WaitForFirstSharedWorkerOnIOThread( 355 static void WaitForFirstSharedWorkerOnIOThread(
373 scoped_refptr<WorkerData> worker_data) { 356 scoped_refptr<WorkerData> worker_data) {
374 for (WorkerProcessHostIterator iter; !iter.Done(); ++iter) { 357 std::vector<WorkerService::WorkerInfo> worker_info =
375 const WorkerProcessHost::Instances& instances = iter->instances(); 358 WorkerService::GetInstance()->GetWorkers();
376 for (WorkerProcessHost::Instances::const_iterator i = instances.begin(); 359 if (!worker_info.empty()) {
377 i != instances.end(); ++i) { 360 worker_data->worker_process_id = worker_info[0].process_id;
378 361 worker_data->worker_route_id = worker_info[0].route_id;
379 worker_data->worker_process_id = iter.GetData().id; 362 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
380 worker_data->worker_route_id = i->worker_route_id(); 363 MessageLoop::QuitClosure());
381 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 364 return;
382 MessageLoop::QuitClosure());
383 return;
384 }
385 } 365 }
386 366
387 WorkerService::GetInstance()->AddObserver( 367 WorkerService::GetInstance()->AddObserver(
388 new WorkerCreationObserver(worker_data.get())); 368 new WorkerCreationObserver(worker_data.get()));
389 } 369 }
390 370
391 static scoped_refptr<WorkerData> WaitForFirstSharedWorker() { 371 static scoped_refptr<WorkerData> WaitForFirstSharedWorker() {
392 scoped_refptr<WorkerData> worker_data(new WorkerData()); 372 scoped_refptr<WorkerData> worker_data(new WorkerData());
393 BrowserThread::PostTask( 373 BrowserThread::PostTask(
394 BrowserThread::IO, FROM_HERE, 374 BrowserThread::IO, FROM_HERE,
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 567
588 // Reload page to restart the worker. 568 // Reload page to restart the worker.
589 ui_test_utils::NavigateToURL(browser(), url); 569 ui_test_utils::NavigateToURL(browser(), url);
590 570
591 // Wait until worker script is paused on the debugger statement. 571 // Wait until worker script is paused on the debugger statement.
592 RunTestFunction(window_, "testPauseInSharedWorkerInitialization"); 572 RunTestFunction(window_, "testPauseInSharedWorkerInitialization");
593 CloseDevToolsWindow(); 573 CloseDevToolsWindow();
594 } 574 }
595 575
596 } // namespace 576 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/chrome_content_browser_client.cc ('k') | chrome/browser/notifications/desktop_notification_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698