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

Unified 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: Ready for review. Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: content/shell/renderer/layout_test/blink_test_runner.cc
diff --git a/content/shell/renderer/layout_test/blink_test_runner.cc b/content/shell/renderer/layout_test/blink_test_runner.cc
index 15fee621c0ca891a73c512e19ec168931dd71acf..f3e99e10619ad197e99baf7fac59e186fe9703c2 100644
--- a/content/shell/renderer/layout_test/blink_test_runner.cc
+++ b/content/shell/renderer/layout_test/blink_test_runner.cc
@@ -30,6 +30,8 @@
#include "components/plugins/renderer/plugin_placeholder.h"
#include "components/test_runner/app_banner_client.h"
#include "components/test_runner/gamepad_controller.h"
+#include "components/test_runner/layout_dump.h"
+#include "components/test_runner/layout_dump_flags.h"
#include "components/test_runner/mock_screen_orientation_client.h"
#include "components/test_runner/test_interfaces.h"
#include "components/test_runner/web_task.h"
@@ -819,6 +821,7 @@ bool BlinkTestRunner::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(ShellViewMsg_TryLeakDetection, OnTryLeakDetection)
IPC_MESSAGE_HANDLER(ShellViewMsg_ReplyBluetoothManualChooserEvents,
OnReplyBluetoothManualChooserEvents)
+ IPC_MESSAGE_HANDLER(ShellViewMsg_LayoutDumpCompleted, OnLayoutDumpCompleted)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
@@ -887,33 +890,70 @@ void BlinkTestRunner::CaptureDump() {
std::vector<unsigned char> vector_data;
interfaces->TestRunner()->GetAudioData(&vector_data);
Send(new ShellViewHostMsg_AudioDump(routing_id(), vector_data));
- } else {
- const base::CommandLine& command_line =
- *base::CommandLine::ForCurrentProcess();
- Send(new ShellViewHostMsg_TextDump(
- routing_id(), proxy()->CaptureTree(
- false, command_line.HasSwitch(switches::kDumpLineBoxTrees))));
-
- if (test_config_.enable_pixel_dumping &&
- interfaces->TestRunner()->ShouldGeneratePixelResults()) {
- CHECK(render_view()->GetWebView()->isAcceleratedCompositingActive());
- proxy()->CapturePixelsAsync(base::Bind(
- &BlinkTestRunner::CaptureDumpPixels, base::Unretained(this)));
- return;
- }
+ CaptureDumpContinued();
+ return;
}
-#ifndef NDEBUG
- // Force a layout/paint by the end of the test to ensure test coverage of
- // incremental painting.
- proxy()->LayoutAndPaintAsyncThen(base::Bind(
- &BlinkTestRunner::CaptureDumpComplete, base::Unretained(this)));
+
+ std::string custom_text_dump;
+ if (interfaces->TestRunner()->HasCustomTextDump(&custom_text_dump)) {
+ Send(new ShellViewHostMsg_TextDump(routing_id(), custom_text_dump + "\n"));
+ CaptureDumpContinued();
+ return;
+ }
+
+ test_runner::LayoutDumpFlags layout_dump_flags =
+ interfaces->TestRunner()->GetLayoutDumpFlags();
+ layout_dump_flags.dump_line_box_trees =
+ base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kDumpLineBoxTrees);
+
+ if (!layout_dump_flags.dump_child_frames) {
+ std::string layout_dump = DumpLayout(
+ render_view()->GetMainRenderFrame()->GetWebFrame(), layout_dump_flags);
+ OnLayoutDumpCompleted(layout_dump);
return;
+ }
+
+ Send(
+ new ShellViewHostMsg_InitiateLayoutDump(routing_id(), layout_dump_flags));
+ // OnLayoutDumpCompleted will be eventually called by an IPC from the browser.
+}
+
+void BlinkTestRunner::OnLayoutDumpCompleted(std::string completed_layout_dump) {
+ test_runner::WebTestInterfaces* interfaces =
+ LayoutTestRenderProcessObserver::GetInstance()->test_interfaces();
+ if (interfaces->TestRunner()->ShouldDumpBackForwardList()) {
+ completed_layout_dump.append(proxy()->DumpBackForwardLists());
+ }
+
+ Send(new ShellViewHostMsg_TextDump(routing_id(), completed_layout_dump));
+
+ CaptureDumpContinued();
+}
+
+void BlinkTestRunner::CaptureDumpContinued() {
+ test_runner::WebTestInterfaces* interfaces =
+ LayoutTestRenderProcessObserver::GetInstance()->test_interfaces();
+ if (test_config_.enable_pixel_dumping &&
+ interfaces->TestRunner()->ShouldGeneratePixelResults() &&
+ !interfaces->TestRunner()->ShouldDumpAsAudio()) {
+ CHECK(render_view()->GetWebView()->isAcceleratedCompositingActive());
+ proxy()->CapturePixelsAsync(base::Bind(
+ &BlinkTestRunner::OnPixelsDumpCompleted, base::Unretained(this)));
+ return;
+ }
+
+#ifndef NDEBUG
+ // Force a layout/paint by the end of the test to ensure test coverage of
+ // incremental painting.
+ proxy()->LayoutAndPaintAsyncThen(base::Bind(
+ &BlinkTestRunner::CaptureDumpComplete, base::Unretained(this)));
#else
CaptureDumpComplete();
#endif
}
-void BlinkTestRunner::CaptureDumpPixels(const SkBitmap& snapshot) {
+void BlinkTestRunner::OnPixelsDumpCompleted(const SkBitmap& snapshot) {
DCHECK_NE(0, snapshot.info().width());
DCHECK_NE(0, snapshot.info().height());

Powered by Google App Engine
This is Rietveld 408576698