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

Side by Side Diff: content/shell/renderer/layout_test/blink_test_runner.cc

Issue 1589643003: OOPIF support for testRunner.dumpAsText and similar layout dumps. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebasing... Created 4 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
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 "content/shell/renderer/layout_test/blink_test_runner.h" 5 #include "content/shell/renderer/layout_test/blink_test_runner.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <clocale> 9 #include <clocale>
10 #include <cmath> 10 #include <cmath>
(...skipping 12 matching lines...) Expand all
23 #include "base/strings/string_util.h" 23 #include "base/strings/string_util.h"
24 #include "base/strings/stringprintf.h" 24 #include "base/strings/stringprintf.h"
25 #include "base/strings/sys_string_conversions.h" 25 #include "base/strings/sys_string_conversions.h"
26 #include "base/strings/utf_string_conversions.h" 26 #include "base/strings/utf_string_conversions.h"
27 #include "base/thread_task_runner_handle.h" 27 #include "base/thread_task_runner_handle.h"
28 #include "base/time/time.h" 28 #include "base/time/time.h"
29 #include "build/build_config.h" 29 #include "build/build_config.h"
30 #include "components/plugins/renderer/plugin_placeholder.h" 30 #include "components/plugins/renderer/plugin_placeholder.h"
31 #include "components/test_runner/app_banner_client.h" 31 #include "components/test_runner/app_banner_client.h"
32 #include "components/test_runner/gamepad_controller.h" 32 #include "components/test_runner/gamepad_controller.h"
33 #include "components/test_runner/layout_dump.h"
34 #include "components/test_runner/layout_dump_flags.h"
33 #include "components/test_runner/mock_screen_orientation_client.h" 35 #include "components/test_runner/mock_screen_orientation_client.h"
34 #include "components/test_runner/test_interfaces.h" 36 #include "components/test_runner/test_interfaces.h"
35 #include "components/test_runner/web_task.h" 37 #include "components/test_runner/web_task.h"
36 #include "components/test_runner/web_test_interfaces.h" 38 #include "components/test_runner/web_test_interfaces.h"
37 #include "components/test_runner/web_test_proxy.h" 39 #include "components/test_runner/web_test_proxy.h"
38 #include "components/test_runner/web_test_runner.h" 40 #include "components/test_runner/web_test_runner.h"
39 #include "content/public/common/content_switches.h" 41 #include "content/public/common/content_switches.h"
40 #include "content/public/common/url_constants.h" 42 #include "content/public/common/url_constants.h"
41 #include "content/public/common/web_preferences.h" 43 #include "content/public/common/web_preferences.h"
42 #include "content/public/renderer/media_stream_api.h" 44 #include "content/public/renderer/media_stream_api.h"
(...skipping 769 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 bool handled = true; 814 bool handled = true;
813 IPC_BEGIN_MESSAGE_MAP(BlinkTestRunner, message) 815 IPC_BEGIN_MESSAGE_MAP(BlinkTestRunner, message)
814 IPC_MESSAGE_HANDLER(ShellViewMsg_SetTestConfiguration, 816 IPC_MESSAGE_HANDLER(ShellViewMsg_SetTestConfiguration,
815 OnSetTestConfiguration) 817 OnSetTestConfiguration)
816 IPC_MESSAGE_HANDLER(ShellViewMsg_SessionHistory, OnSessionHistory) 818 IPC_MESSAGE_HANDLER(ShellViewMsg_SessionHistory, OnSessionHistory)
817 IPC_MESSAGE_HANDLER(ShellViewMsg_Reset, OnReset) 819 IPC_MESSAGE_HANDLER(ShellViewMsg_Reset, OnReset)
818 IPC_MESSAGE_HANDLER(ShellViewMsg_NotifyDone, OnNotifyDone) 820 IPC_MESSAGE_HANDLER(ShellViewMsg_NotifyDone, OnNotifyDone)
819 IPC_MESSAGE_HANDLER(ShellViewMsg_TryLeakDetection, OnTryLeakDetection) 821 IPC_MESSAGE_HANDLER(ShellViewMsg_TryLeakDetection, OnTryLeakDetection)
820 IPC_MESSAGE_HANDLER(ShellViewMsg_ReplyBluetoothManualChooserEvents, 822 IPC_MESSAGE_HANDLER(ShellViewMsg_ReplyBluetoothManualChooserEvents,
821 OnReplyBluetoothManualChooserEvents) 823 OnReplyBluetoothManualChooserEvents)
824 IPC_MESSAGE_HANDLER(ShellViewMsg_LayoutDumpCompleted, OnLayoutDumpCompleted)
822 IPC_MESSAGE_UNHANDLED(handled = false) 825 IPC_MESSAGE_UNHANDLED(handled = false)
823 IPC_END_MESSAGE_MAP() 826 IPC_END_MESSAGE_MAP()
824 827
825 return handled; 828 return handled;
826 } 829 }
827 830
828 void BlinkTestRunner::Navigate(const GURL& url) { 831 void BlinkTestRunner::Navigate(const GURL& url) {
829 focus_on_next_commit_ = true; 832 focus_on_next_commit_ = true;
830 if (!is_main_window_ && 833 if (!is_main_window_ &&
831 LayoutTestRenderProcessObserver::GetInstance()->main_test_runner() == 834 LayoutTestRenderProcessObserver::GetInstance()->main_test_runner() ==
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
880 883
881 void BlinkTestRunner::CaptureDump() { 884 void BlinkTestRunner::CaptureDump() {
882 test_runner::WebTestInterfaces* interfaces = 885 test_runner::WebTestInterfaces* interfaces =
883 LayoutTestRenderProcessObserver::GetInstance()->test_interfaces(); 886 LayoutTestRenderProcessObserver::GetInstance()->test_interfaces();
884 TRACE_EVENT0("shell", "BlinkTestRunner::CaptureDump"); 887 TRACE_EVENT0("shell", "BlinkTestRunner::CaptureDump");
885 888
886 if (interfaces->TestRunner()->ShouldDumpAsAudio()) { 889 if (interfaces->TestRunner()->ShouldDumpAsAudio()) {
887 std::vector<unsigned char> vector_data; 890 std::vector<unsigned char> vector_data;
888 interfaces->TestRunner()->GetAudioData(&vector_data); 891 interfaces->TestRunner()->GetAudioData(&vector_data);
889 Send(new ShellViewHostMsg_AudioDump(routing_id(), vector_data)); 892 Send(new ShellViewHostMsg_AudioDump(routing_id(), vector_data));
890 } else { 893 CaptureDumpContinued();
891 const base::CommandLine& command_line = 894 return;
892 *base::CommandLine::ForCurrentProcess(); 895 }
893 Send(new ShellViewHostMsg_TextDump(
894 routing_id(), proxy()->CaptureTree(
895 false, command_line.HasSwitch(switches::kDumpLineBoxTrees))));
896 896
897 if (test_config_.enable_pixel_dumping && 897 std::string custom_text_dump;
898 interfaces->TestRunner()->ShouldGeneratePixelResults()) { 898 if (interfaces->TestRunner()->HasCustomTextDump(&custom_text_dump)) {
899 CHECK(render_view()->GetWebView()->isAcceleratedCompositingActive()); 899 Send(new ShellViewHostMsg_TextDump(routing_id(), custom_text_dump + "\n"));
900 proxy()->CapturePixelsAsync(base::Bind( 900 CaptureDumpContinued();
901 &BlinkTestRunner::CaptureDumpPixels, base::Unretained(this))); 901 return;
902 return;
903 }
904 } 902 }
903
904 test_runner::LayoutDumpFlags layout_dump_flags =
905 interfaces->TestRunner()->GetLayoutDumpFlags();
906 layout_dump_flags.dump_line_box_trees =
907 base::CommandLine::ForCurrentProcess()->HasSwitch(
908 switches::kDumpLineBoxTrees);
909
910 if (!layout_dump_flags.dump_child_frames) {
911 std::string layout_dump = DumpLayout(
912 render_view()->GetMainRenderFrame()->GetWebFrame(), layout_dump_flags);
913 OnLayoutDumpCompleted(layout_dump);
914 return;
915 }
916
917 Send(
918 new ShellViewHostMsg_InitiateLayoutDump(routing_id(), layout_dump_flags));
919 // OnLayoutDumpCompleted will be eventually called by an IPC from the browser.
920 }
921
922 void BlinkTestRunner::OnLayoutDumpCompleted(std::string completed_layout_dump) {
923 test_runner::WebTestInterfaces* interfaces =
924 LayoutTestRenderProcessObserver::GetInstance()->test_interfaces();
925 if (interfaces->TestRunner()->ShouldDumpBackForwardList()) {
926 completed_layout_dump.append(proxy()->DumpBackForwardLists());
927 }
928
929 Send(new ShellViewHostMsg_TextDump(routing_id(), completed_layout_dump));
930
931 CaptureDumpContinued();
932 }
933
934 void BlinkTestRunner::CaptureDumpContinued() {
935 test_runner::WebTestInterfaces* interfaces =
936 LayoutTestRenderProcessObserver::GetInstance()->test_interfaces();
937 if (test_config_.enable_pixel_dumping &&
938 interfaces->TestRunner()->ShouldGeneratePixelResults() &&
939 !interfaces->TestRunner()->ShouldDumpAsAudio()) {
940 CHECK(render_view()->GetWebView()->isAcceleratedCompositingActive());
941 proxy()->CapturePixelsAsync(base::Bind(
942 &BlinkTestRunner::OnPixelsDumpCompleted, base::Unretained(this)));
943 return;
944 }
945
905 #ifndef NDEBUG 946 #ifndef NDEBUG
906 // Force a layout/paint by the end of the test to ensure test coverage of 947 // Force a layout/paint by the end of the test to ensure test coverage of
907 // incremental painting. 948 // incremental painting.
908 proxy()->LayoutAndPaintAsyncThen(base::Bind( 949 proxy()->LayoutAndPaintAsyncThen(base::Bind(
909 &BlinkTestRunner::CaptureDumpComplete, base::Unretained(this))); 950 &BlinkTestRunner::CaptureDumpComplete, base::Unretained(this)));
910 return;
911 #else 951 #else
912 CaptureDumpComplete(); 952 CaptureDumpComplete();
913 #endif 953 #endif
914 } 954 }
915 955
916 void BlinkTestRunner::CaptureDumpPixels(const SkBitmap& snapshot) { 956 void BlinkTestRunner::OnPixelsDumpCompleted(const SkBitmap& snapshot) {
917 DCHECK_NE(0, snapshot.info().width()); 957 DCHECK_NE(0, snapshot.info().width());
918 DCHECK_NE(0, snapshot.info().height()); 958 DCHECK_NE(0, snapshot.info().height());
919 959
920 SkAutoLockPixels snapshot_lock(snapshot); 960 SkAutoLockPixels snapshot_lock(snapshot);
921 // The snapshot arrives from the GPU process via shared memory. Because MSan 961 // The snapshot arrives from the GPU process via shared memory. Because MSan
922 // can't track initializedness across processes, we must assure it that the 962 // can't track initializedness across processes, we must assure it that the
923 // pixels are in fact initialized. 963 // pixels are in fact initialized.
924 MSAN_UNPOISON(snapshot.getPixels(), snapshot.getSize()); 964 MSAN_UNPOISON(snapshot.getPixels(), snapshot.getSize());
925 base::MD5Digest digest; 965 base::MD5Digest digest;
926 base::MD5Sum(snapshot.getPixels(), snapshot.getSize(), &digest); 966 base::MD5Sum(snapshot.getPixels(), snapshot.getSize(), &digest);
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1006 get_bluetooth_events_callbacks_.pop_front(); 1046 get_bluetooth_events_callbacks_.pop_front();
1007 callback.Run(events); 1047 callback.Run(events);
1008 } 1048 }
1009 1049
1010 void BlinkTestRunner::ReportLeakDetectionResult( 1050 void BlinkTestRunner::ReportLeakDetectionResult(
1011 const LeakDetectionResult& report) { 1051 const LeakDetectionResult& report) {
1012 Send(new ShellViewHostMsg_LeakDetectionDone(routing_id(), report)); 1052 Send(new ShellViewHostMsg_LeakDetectionDone(routing_id(), report));
1013 } 1053 }
1014 1054
1015 } // namespace content 1055 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698