OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/shell/browser/blink_test_controller.h" | 5 #include "content/shell/browser/blink_test_controller.h" |
6 | 6 |
7 #include <iostream> | 7 #include <iostream> |
8 | 8 |
9 #include "base/base64.h" | 9 #include "base/base64.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
11 #include "base/message_loop/message_loop.h" | 11 #include "base/location.h" |
12 #include "base/run_loop.h" | 12 #include "base/run_loop.h" |
| 13 #include "base/single_thread_task_runner.h" |
13 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
14 #include "base/strings/stringprintf.h" | 15 #include "base/strings/stringprintf.h" |
| 16 #include "base/thread_task_runner_handle.h" |
15 #include "content/public/browser/devtools_agent_host.h" | 17 #include "content/public/browser/devtools_agent_host.h" |
16 #include "content/public/browser/dom_storage_context.h" | 18 #include "content/public/browser/dom_storage_context.h" |
17 #include "content/public/browser/gpu_data_manager.h" | 19 #include "content/public/browser/gpu_data_manager.h" |
18 #include "content/public/browser/navigation_controller.h" | 20 #include "content/public/browser/navigation_controller.h" |
19 #include "content/public/browser/navigation_entry.h" | 21 #include "content/public/browser/navigation_entry.h" |
20 #include "content/public/browser/notification_service.h" | 22 #include "content/public/browser/notification_service.h" |
21 #include "content/public/browser/notification_types.h" | 23 #include "content/public/browser/notification_types.h" |
22 #include "content/public/browser/render_process_host.h" | 24 #include "content/public/browser/render_process_host.h" |
23 #include "content/public/browser/render_view_host.h" | 25 #include "content/public/browser/render_view_host.h" |
24 #include "content/public/browser/render_widget_host_view.h" | 26 #include "content/public/browser/render_widget_host_view.h" |
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 IPC_END_MESSAGE_MAP() | 395 IPC_END_MESSAGE_MAP() |
394 | 396 |
395 return handled; | 397 return handled; |
396 } | 398 } |
397 | 399 |
398 void BlinkTestController::PluginCrashed(const base::FilePath& plugin_path, | 400 void BlinkTestController::PluginCrashed(const base::FilePath& plugin_path, |
399 base::ProcessId plugin_pid) { | 401 base::ProcessId plugin_pid) { |
400 DCHECK(CalledOnValidThread()); | 402 DCHECK(CalledOnValidThread()); |
401 printer_->AddErrorMessage( | 403 printer_->AddErrorMessage( |
402 base::StringPrintf("#CRASHED - plugin (pid %d)", plugin_pid)); | 404 base::StringPrintf("#CRASHED - plugin (pid %d)", plugin_pid)); |
403 base::MessageLoop::current()->PostTask( | 405 base::ThreadTaskRunnerHandle::Get()->PostTask( |
404 FROM_HERE, | 406 FROM_HERE, |
405 base::Bind(base::IgnoreResult(&BlinkTestController::DiscardMainWindow), | 407 base::Bind(base::IgnoreResult(&BlinkTestController::DiscardMainWindow), |
406 base::Unretained(this))); | 408 base::Unretained(this))); |
407 } | 409 } |
408 | 410 |
409 void BlinkTestController::RenderViewCreated(RenderViewHost* render_view_host) { | 411 void BlinkTestController::RenderViewCreated(RenderViewHost* render_view_host) { |
410 DCHECK(CalledOnValidThread()); | 412 DCHECK(CalledOnValidThread()); |
411 // Might be kNullProcessHandle, in which case we will receive a notification | 413 // Might be kNullProcessHandle, in which case we will receive a notification |
412 // later when the RenderProcessHost was created. | 414 // later when the RenderProcessHost was created. |
413 if (render_view_host->GetProcess()->GetHandle() != base::kNullProcessHandle) | 415 if (render_view_host->GetProcess()->GetHandle() != base::kNullProcessHandle) |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
474 DiscardMainWindow(); | 476 DiscardMainWindow(); |
475 } | 477 } |
476 | 478 |
477 void BlinkTestController::DiscardMainWindow() { | 479 void BlinkTestController::DiscardMainWindow() { |
478 // If we're running a test, we need to close all windows and exit the message | 480 // If we're running a test, we need to close all windows and exit the message |
479 // loop. Otherwise, we're already outside of the message loop, and we just | 481 // loop. Otherwise, we're already outside of the message loop, and we just |
480 // discard the main window. | 482 // discard the main window. |
481 WebContentsObserver::Observe(NULL); | 483 WebContentsObserver::Observe(NULL); |
482 if (test_phase_ != BETWEEN_TESTS) { | 484 if (test_phase_ != BETWEEN_TESTS) { |
483 Shell::CloseAllWindows(); | 485 Shell::CloseAllWindows(); |
484 base::MessageLoop::current()->PostTask(FROM_HERE, | 486 base::ThreadTaskRunnerHandle::Get()->PostTask( |
485 base::MessageLoop::QuitClosure()); | 487 FROM_HERE, base::MessageLoop::QuitClosure()); |
486 test_phase_ = CLEAN_UP; | 488 test_phase_ = CLEAN_UP; |
487 } else if (main_window_) { | 489 } else if (main_window_) { |
488 main_window_->Close(); | 490 main_window_->Close(); |
489 } | 491 } |
490 main_window_ = NULL; | 492 main_window_ = NULL; |
491 current_pid_ = base::kNullProcessId; | 493 current_pid_ = base::kNullProcessId; |
492 } | 494 } |
493 | 495 |
494 void BlinkTestController::SendTestConfiguration() { | 496 void BlinkTestController::SendTestConfiguration() { |
495 RenderViewHost* render_view_host = | 497 RenderViewHost* render_view_host = |
(...skipping 12 matching lines...) Expand all Loading... |
508 render_view_host->GetRoutingID(), params)); | 510 render_view_host->GetRoutingID(), params)); |
509 } | 511 } |
510 | 512 |
511 void BlinkTestController::OnTestFinished() { | 513 void BlinkTestController::OnTestFinished() { |
512 test_phase_ = CLEAN_UP; | 514 test_phase_ = CLEAN_UP; |
513 if (!printer_->output_finished()) | 515 if (!printer_->output_finished()) |
514 printer_->PrintImageFooter(); | 516 printer_->PrintImageFooter(); |
515 RenderViewHost* render_view_host = | 517 RenderViewHost* render_view_host = |
516 main_window_->web_contents()->GetRenderViewHost(); | 518 main_window_->web_contents()->GetRenderViewHost(); |
517 main_window_->web_contents()->ExitFullscreen(); | 519 main_window_->web_contents()->ExitFullscreen(); |
518 base::MessageLoop::current()->PostTask( | 520 base::ThreadTaskRunnerHandle::Get()->PostTask( |
519 FROM_HERE, | 521 FROM_HERE, |
520 base::Bind(base::IgnoreResult(&BlinkTestController::Send), | 522 base::Bind(base::IgnoreResult(&BlinkTestController::Send), |
521 base::Unretained(this), | 523 base::Unretained(this), |
522 new ShellViewMsg_Reset(render_view_host->GetRoutingID()))); | 524 new ShellViewMsg_Reset(render_view_host->GetRoutingID()))); |
523 } | 525 } |
524 | 526 |
525 void BlinkTestController::OnImageDump(const std::string& actual_pixel_hash, | 527 void BlinkTestController::OnImageDump(const std::string& actual_pixel_hash, |
526 const SkBitmap& image) { | 528 const SkBitmap& image) { |
527 SkAutoLockPixels image_lock(image); | 529 SkAutoLockPixels image_lock(image); |
528 | 530 |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
673 if (is_leak_detection_enabled_) { | 675 if (is_leak_detection_enabled_) { |
674 if (main_window_ && main_window_->web_contents()) { | 676 if (main_window_ && main_window_->web_contents()) { |
675 RenderViewHost* render_view_host = | 677 RenderViewHost* render_view_host = |
676 main_window_->web_contents()->GetRenderViewHost(); | 678 main_window_->web_contents()->GetRenderViewHost(); |
677 render_view_host->Send( | 679 render_view_host->Send( |
678 new ShellViewMsg_TryLeakDetection(render_view_host->GetRoutingID())); | 680 new ShellViewMsg_TryLeakDetection(render_view_host->GetRoutingID())); |
679 } | 681 } |
680 return; | 682 return; |
681 } | 683 } |
682 | 684 |
683 base::MessageLoop::current()->PostTask(FROM_HERE, | 685 base::ThreadTaskRunnerHandle::Get()->PostTask( |
684 base::MessageLoop::QuitClosure()); | 686 FROM_HERE, base::MessageLoop::QuitClosure()); |
685 } | 687 } |
686 | 688 |
687 void BlinkTestController::OnLeakDetectionDone( | 689 void BlinkTestController::OnLeakDetectionDone( |
688 const LeakDetectionResult& result) { | 690 const LeakDetectionResult& result) { |
689 if (!result.leaked) { | 691 if (!result.leaked) { |
690 base::MessageLoop::current()->PostTask(FROM_HERE, | 692 base::ThreadTaskRunnerHandle::Get()->PostTask( |
691 base::MessageLoop::QuitClosure()); | 693 FROM_HERE, base::MessageLoop::QuitClosure()); |
692 return; | 694 return; |
693 } | 695 } |
694 | 696 |
695 printer_->AddErrorMessage( | 697 printer_->AddErrorMessage( |
696 base::StringPrintf("#LEAK - renderer pid %d (%s)", current_pid_, | 698 base::StringPrintf("#LEAK - renderer pid %d (%s)", current_pid_, |
697 result.detail.c_str())); | 699 result.detail.c_str())); |
698 CHECK(!crash_when_leak_found_); | 700 CHECK(!crash_when_leak_found_); |
699 | 701 |
700 DiscardMainWindow(); | 702 DiscardMainWindow(); |
701 } | 703 } |
702 | 704 |
703 } // namespace content | 705 } // namespace content |
OLD | NEW |