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

Side by Side Diff: content/shell/browser/layout_test/blink_test_controller.cc

Issue 1736353002: ABANDONED CL: Shared-memory-based approach to layout tests runtime flags replication. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 9 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
OLDNEW
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/layout_test/blink_test_controller.h" 5 #include "content/shell/browser/layout_test/blink_test_controller.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <iostream> 9 #include <iostream>
10 #include <utility> 10 #include <utility>
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 DiscardMainWindow(); 253 DiscardMainWindow();
254 instance_ = NULL; 254 instance_ = NULL;
255 } 255 }
256 256
257 bool BlinkTestController::PrepareForLayoutTest( 257 bool BlinkTestController::PrepareForLayoutTest(
258 const GURL& test_url, 258 const GURL& test_url,
259 const base::FilePath& current_working_directory, 259 const base::FilePath& current_working_directory,
260 bool enable_pixel_dumping, 260 bool enable_pixel_dumping,
261 const std::string& expected_pixel_hash) { 261 const std::string& expected_pixel_hash) {
262 DCHECK(CalledOnValidThread()); 262 DCHECK(CalledOnValidThread());
263 VLOG(1) << "Preparing for the next layout test...";
264
265 if (!base::SharedMemory::IsHandleValid(layout_dump_flags_memory_.handle())) {
266 if (!layout_dump_flags_memory_.CreateAnonymous(
267 sizeof(test_runner::LayoutDumpFlags))) {
268 // TODO / DO NOT SUBMIT: Report the error somehow.
269 CHECK(false);
270 }
271 }
272 DCHECK(base::SharedMemory::IsHandleValid(layout_dump_flags_memory_.handle()));
273
263 test_phase_ = DURING_TEST; 274 test_phase_ = DURING_TEST;
264 current_working_directory_ = current_working_directory; 275 current_working_directory_ = current_working_directory;
265 enable_pixel_dumping_ = enable_pixel_dumping; 276 enable_pixel_dumping_ = enable_pixel_dumping;
266 expected_pixel_hash_ = expected_pixel_hash; 277 expected_pixel_hash_ = expected_pixel_hash;
267 test_url_ = test_url; 278 test_url_ = test_url;
268 need_to_send_test_configuration_to_renderer_ = true; 279 need_to_send_test_configuration_to_renderer_ = true;
269 printer_->reset(); 280 printer_->reset();
270 frame_to_layout_dump_map_.clear(); 281 frame_to_layout_dump_map_.clear();
271 render_process_host_observer_.RemoveAll(); 282 render_process_host_observer_.RemoveAll();
272 ShellBrowserContext* browser_context = 283 ShellBrowserContext* browser_context =
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 ShellTestConfiguration params; 598 ShellTestConfiguration params;
588 params.current_working_directory = current_working_directory_; 599 params.current_working_directory = current_working_directory_;
589 params.temp_path = temp_path_; 600 params.temp_path = temp_path_;
590 params.test_url = test_url_; 601 params.test_url = test_url_;
591 params.enable_pixel_dumping = enable_pixel_dumping_; 602 params.enable_pixel_dumping = enable_pixel_dumping_;
592 params.allow_external_pages = 603 params.allow_external_pages =
593 base::CommandLine::ForCurrentProcess()->HasSwitch( 604 base::CommandLine::ForCurrentProcess()->HasSwitch(
594 switches::kAllowExternalPages); 605 switches::kAllowExternalPages);
595 params.expected_pixel_hash = expected_pixel_hash_; 606 params.expected_pixel_hash = expected_pixel_hash_;
596 params.initial_size = initial_size_; 607 params.initial_size = initial_size_;
608 params.layout_dump_flags_memory_handle =
609 base::SharedMemory::DuplicateHandle(layout_dump_flags_memory_.handle());
597 610
598 if (need_to_send_test_configuration_to_renderer_) { 611 if (need_to_send_test_configuration_to_renderer_) {
599 need_to_send_test_configuration_to_renderer_ = false; 612 need_to_send_test_configuration_to_renderer_ = false;
600 frame->Send( 613 frame->Send(
601 new ShellViewMsg_SetTestConfiguration(frame->GetRoutingID(), params)); 614 new ShellViewMsg_SetTestConfiguration(frame->GetRoutingID(), params));
602 } else { 615 } else {
603 frame->Send(new ShellViewMsg_ReplicateTestConfiguration( 616 frame->Send(new ShellViewMsg_ReplicateTestConfiguration(
604 frame->GetRoutingID(), params)); 617 frame->GetRoutingID(), params));
605 } 618 }
606 } 619 }
607 620
608 void BlinkTestController::OnTestFinished() { 621 void BlinkTestController::OnTestFinished() {
622 VLOG(1) << "Test finished";
623
609 test_phase_ = CLEAN_UP; 624 test_phase_ = CLEAN_UP;
610 if (!printer_->output_finished()) 625 if (!printer_->output_finished())
611 printer_->PrintImageFooter(); 626 printer_->PrintImageFooter();
612 RenderViewHost* render_view_host = 627 RenderViewHost* render_view_host =
613 main_window_->web_contents()->GetRenderViewHost(); 628 main_window_->web_contents()->GetRenderViewHost();
614 main_window_->web_contents()->ExitFullscreen(/*will_cause_resize=*/false); 629 main_window_->web_contents()->ExitFullscreen(/*will_cause_resize=*/false);
615 630
616 ShellBrowserContext* browser_context = 631 ShellBrowserContext* browser_context =
617 ShellContentBrowserClient::Get()->browser_context(); 632 ShellContentBrowserClient::Get()->browser_context();
618 StoragePartition* storage_partition = 633 StoragePartition* storage_partition =
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 printer_->PrintAudioBlock(dump); 675 printer_->PrintAudioBlock(dump);
661 printer_->PrintAudioFooter(); 676 printer_->PrintAudioFooter();
662 } 677 }
663 678
664 void BlinkTestController::OnTextDump(const std::string& dump) { 679 void BlinkTestController::OnTextDump(const std::string& dump) {
665 printer_->PrintTextHeader(); 680 printer_->PrintTextHeader();
666 printer_->PrintTextBlock(dump); 681 printer_->PrintTextBlock(dump);
667 printer_->PrintTextFooter(); 682 printer_->PrintTextFooter();
668 } 683 }
669 684
670 void BlinkTestController::OnInitiateLayoutDump( 685 void BlinkTestController::OnInitiateLayoutDump(bool dump_child_frames) {
671 const test_runner::LayoutDumpFlags& layout_dump_flags) { 686 if (dump_child_frames) {
672 DCHECK(layout_dump_flags.dump_child_frames()); 687 pending_layout_dumps_ = main_window_->web_contents()->SendToAllFrames(
673 pending_layout_dumps_ = main_window_->web_contents()->SendToAllFrames( 688 new ShellViewMsg_LayoutDumpRequest(MSG_ROUTING_NONE));
674 new ShellViewMsg_LayoutDumpRequest(MSG_ROUTING_NONE, layout_dump_flags)); 689 VLOG(1) << "Asking all " << pending_layout_dumps_
690 << " frames for a layout dump.";
691 } else {
692 VLOG(1) << "Asking the main frame for a layout dump.";
693 RenderFrameHost* main_frame = main_window_->web_contents()->GetMainFrame();
694 main_frame->Send(
695 new ShellViewMsg_LayoutDumpRequest(main_frame->GetRoutingID()));
696 pending_layout_dumps_ = 1;
697 }
675 } 698 }
676 699
677 void BlinkTestController::OnLayoutDumpResponse(RenderFrameHost* sender, 700 void BlinkTestController::OnLayoutDumpResponse(RenderFrameHost* sender,
678 const std::string& dump) { 701 const std::string& dump) {
702 VLOG(1) << "Got layout dump response from frame "
703 << sender->GetFrameTreeNodeId();
704
679 // Store the result. 705 // Store the result.
680 auto pair = frame_to_layout_dump_map_.insert( 706 auto pair = frame_to_layout_dump_map_.insert(
681 std::make_pair(sender->GetFrameTreeNodeId(), dump)); 707 std::make_pair(sender->GetFrameTreeNodeId(), dump));
682 bool insertion_took_place = pair.second; 708 bool insertion_took_place = pair.second;
683 DCHECK(insertion_took_place); 709 DCHECK(insertion_took_place);
684 710
685 // See if we need to wait for more responses. 711 // See if we need to wait for more responses.
686 pending_layout_dumps_--; 712 pending_layout_dumps_--;
687 DCHECK_LE(0, pending_layout_dumps_); 713 DCHECK_LE(0, pending_layout_dumps_);
688 if (pending_layout_dumps_ > 0) 714 if (pending_layout_dumps_ > 0)
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 Shell* devtools_shell = devtools_frontend_ ? 829 Shell* devtools_shell = devtools_frontend_ ?
804 devtools_frontend_->frontend_shell() : NULL; 830 devtools_frontend_->frontend_shell() : NULL;
805 for (size_t i = 0; i < open_windows.size(); ++i) { 831 for (size_t i = 0; i < open_windows.size(); ++i) {
806 if (open_windows[i] != main_window_ && open_windows[i] != devtools_shell) 832 if (open_windows[i] != main_window_ && open_windows[i] != devtools_shell)
807 open_windows[i]->Close(); 833 open_windows[i]->Close();
808 } 834 }
809 base::MessageLoop::current()->RunUntilIdle(); 835 base::MessageLoop::current()->RunUntilIdle();
810 } 836 }
811 837
812 void BlinkTestController::OnResetDone() { 838 void BlinkTestController::OnResetDone() {
839 VLOG(1) << "Reset done.";
813 if (is_leak_detection_enabled_) { 840 if (is_leak_detection_enabled_) {
814 if (main_window_ && main_window_->web_contents()) { 841 if (main_window_ && main_window_->web_contents()) {
815 RenderViewHost* render_view_host = 842 RenderViewHost* render_view_host =
816 main_window_->web_contents()->GetRenderViewHost(); 843 main_window_->web_contents()->GetRenderViewHost();
817 render_view_host->Send( 844 render_view_host->Send(
818 new ShellViewMsg_TryLeakDetection(render_view_host->GetRoutingID())); 845 new ShellViewMsg_TryLeakDetection(render_view_host->GetRoutingID()));
819 } 846 }
820 return; 847 return;
821 } 848 }
822 849
850 VLOG(1) << "Quitting the message loop...";
823 base::ThreadTaskRunnerHandle::Get()->PostTask( 851 base::ThreadTaskRunnerHandle::Get()->PostTask(
824 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); 852 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
825 } 853 }
826 854
827 void BlinkTestController::OnLeakDetectionDone( 855 void BlinkTestController::OnLeakDetectionDone(
828 const LeakDetectionResult& result) { 856 const LeakDetectionResult& result) {
829 if (!result.leaked) { 857 if (!result.leaked) {
830 base::ThreadTaskRunnerHandle::Get()->PostTask( 858 base::ThreadTaskRunnerHandle::Get()->PostTask(
831 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); 859 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
832 return; 860 return;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 } else { 906 } else {
879 printer_->AddErrorMessage(base::StringPrintf( 907 printer_->AddErrorMessage(base::StringPrintf(
880 "FAIL: Unexpected sendBluetoothManualChooserEvent() event name '%s'.", 908 "FAIL: Unexpected sendBluetoothManualChooserEvent() event name '%s'.",
881 event_name.c_str())); 909 event_name.c_str()));
882 return; 910 return;
883 } 911 }
884 bluetooth_chooser_factory_->SendEvent(event, argument); 912 bluetooth_chooser_factory_->SendEvent(event, argument);
885 } 913 }
886 914
887 } // namespace content 915 } // namespace content
OLDNEW
« no previous file with comments | « content/shell/browser/layout_test/blink_test_controller.h ('k') | content/shell/common/shell_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698