Index: content/test/layouttest_support.cc |
diff --git a/content/test/layouttest_support.cc b/content/test/layouttest_support.cc |
index 01d7e40887e2b5ac50b951ff9636b6d7d3c497cd..f0fe2113f28f1e8645a3d9d3e6fda390c1d7c01f 100644 |
--- a/content/test/layouttest_support.cc |
+++ b/content/test/layouttest_support.cc |
@@ -18,6 +18,7 @@ |
#include "components/test_runner/test_common.h" |
#include "components/test_runner/web_frame_test_proxy.h" |
#include "components/test_runner/web_view_test_proxy.h" |
+#include "components/test_runner/web_widget_test_proxy.h" |
#include "content/browser/bluetooth/bluetooth_device_chooser_controller.h" |
#include "content/browser/renderer_host/render_process_host_impl.h" |
#include "content/browser/renderer_host/render_widget_host_impl.h" |
@@ -33,6 +34,7 @@ |
#include "content/renderer/render_frame_impl.h" |
#include "content/renderer/render_thread_impl.h" |
#include "content/renderer/render_view_impl.h" |
+#include "content/renderer/render_widget.h" |
#include "content/renderer/renderer_blink_platform_impl.h" |
#include "content/shell/common/shell_switches.h" |
#include "gpu/ipc/service/image_transport_surface.h" |
@@ -68,6 +70,9 @@ namespace { |
base::LazyInstance<ViewProxyCreationCallback>::Leaky |
g_view_test_proxy_callback = LAZY_INSTANCE_INITIALIZER; |
+base::LazyInstance<WidgetProxyCreationCallback>::Leaky |
+ g_widget_test_proxy_callback = LAZY_INSTANCE_INITIALIZER; |
+ |
base::LazyInstance<FrameProxyCreationCallback>::Leaky |
g_frame_test_proxy_callback = LAZY_INSTANCE_INITIALIZER; |
@@ -75,6 +80,14 @@ using WebViewTestProxyType = |
test_runner::WebViewTestProxy<RenderViewImpl, |
CompositorDependencies*, |
const ViewMsg_New_Params&>; |
+using WebWidgetTestProxyType = |
+ test_runner::WebWidgetTestProxy<RenderWidget, |
+ CompositorDependencies*, |
+ blink::WebPopupType, |
+ const blink::WebScreenInfo&, |
+ bool, |
+ bool, |
+ bool>; |
using WebFrameTestProxyType = |
test_runner::WebFrameTestProxy<RenderFrameImpl, |
const RenderFrameImpl::CreateParams&>; |
@@ -89,6 +102,27 @@ RenderViewImpl* CreateWebViewTestProxy(CompositorDependencies* compositor_deps, |
return render_view_proxy; |
} |
+RenderWidget* CreateWebWidgetTestProxy(CompositorDependencies* compositor_deps, |
+ blink::WebPopupType popup_type, |
+ const blink::WebScreenInfo& screen_info, |
+ bool swapped_out, |
+ bool hidden, |
+ bool never_visible) { |
+ WebWidgetTestProxyType* render_widget_proxy = |
+ new WebWidgetTestProxyType(compositor_deps, popup_type, screen_info, |
+ swapped_out, hidden, never_visible); |
+ return render_widget_proxy; |
+} |
+ |
+void RenderWidgetInitialized(RenderWidget* render_widget) { |
+ WebWidgetTestProxyType* render_widget_proxy = |
+ static_cast<WebWidgetTestProxyType*>(render_widget); |
+ if (!g_widget_test_proxy_callback.Get().is_null()) { |
+ g_widget_test_proxy_callback.Get().Run(render_widget->webwidget(), |
+ render_widget_proxy); |
+ } |
+} |
+ |
RenderFrameImpl* CreateWebFrameTestProxy( |
const RenderFrameImpl::CreateParams& params) { |
WebFrameTestProxyType* render_frame_proxy = new WebFrameTestProxyType(params); |
@@ -130,10 +164,14 @@ test_runner::WebFrameTestProxyBase* GetWebFrameTestProxyBase( |
void EnableWebTestProxyCreation( |
const ViewProxyCreationCallback& view_proxy_creation_callback, |
+ const WidgetProxyCreationCallback& widget_proxy_creation_callback, |
const FrameProxyCreationCallback& frame_proxy_creation_callback) { |
g_view_test_proxy_callback.Get() = view_proxy_creation_callback; |
+ g_widget_test_proxy_callback.Get() = widget_proxy_creation_callback; |
g_frame_test_proxy_callback.Get() = frame_proxy_creation_callback; |
RenderViewImpl::InstallCreateHook(CreateWebViewTestProxy); |
+ RenderWidget::InstallCreateHook(CreateWebWidgetTestProxy, |
+ RenderWidgetInitialized); |
RenderFrameImpl::InstallCreateHook(CreateWebFrameTestProxy); |
} |