Index: content/shell/shell_content_renderer_client.cc |
diff --git a/content/shell/shell_content_renderer_client.cc b/content/shell/shell_content_renderer_client.cc |
index a17fbe024de3498c9d53924cc42cbadc0009d203..83d8e98b31aed85f16f076bdc1089756a118e96e 100644 |
--- a/content/shell/shell_content_renderer_client.cc |
+++ b/content/shell/shell_content_renderer_client.cc |
@@ -4,19 +4,30 @@ |
#include "content/shell/shell_content_renderer_client.h" |
+#include "base/callback.h" |
#include "base/command_line.h" |
#include "content/public/common/content_constants.h" |
#include "content/public/common/content_switches.h" |
+#include "content/public/test/layouttest_support.h" |
#include "content/shell/shell_render_process_observer.h" |
#include "content/shell/shell_switches.h" |
#include "content/shell/webkit_test_runner.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginParams.h" |
+#include "third_party/WebKit/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h" |
#include "v8/include/v8.h" |
+using WebTestRunner::WebTestProxyBase; |
+ |
namespace content { |
-ShellContentRendererClient::ShellContentRendererClient() { |
+ShellContentRendererClient::ShellContentRendererClient() |
+ : latest_test_runner_(NULL) { |
+ if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree)) { |
+ EnableWebTestProxyCreation( |
+ base::Bind(&ShellContentRendererClient::WebTestProxyCreated, |
+ base::Unretained(this))); |
+ } |
} |
ShellContentRendererClient::~ShellContentRendererClient() { |
@@ -30,7 +41,8 @@ void ShellContentRendererClient::RenderViewCreated(RenderView* render_view) { |
if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree)) |
return; |
- new WebKitTestRunner(render_view); |
+ CHECK(!latest_test_runner_); |
+ latest_test_runner_ = new WebKitTestRunner(render_view); |
} |
bool ShellContentRendererClient::OverrideCreatePlugin( |
@@ -48,4 +60,12 @@ bool ShellContentRendererClient::OverrideCreatePlugin( |
return false; |
} |
+void ShellContentRendererClient::WebTestProxyCreated(WebTestProxyBase* proxy) { |
+ CHECK(latest_test_runner_); |
+ proxy->setDelegate(latest_test_runner_); |
+ latest_test_runner_ = NULL; |
+ proxy->setInterfaces( |
+ ShellRenderProcessObserver::GetInstance()->test_interfaces()); |
+} |
+ |
} // namespace content |