Index: content/renderer/render_widget.cc |
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc |
index 928d1df4803aafcee6e45846b5d6c30e449ecb42..4e89eb4a020cfd56b7ebb7bc100247a14efdd0d9 100644 |
--- a/content/renderer/render_widget.cc |
+++ b/content/renderer/render_widget.cc |
@@ -213,6 +213,12 @@ content::RenderWidgetInputHandlerDelegate* GetRenderWidgetInputHandlerDelegate( |
return widget; |
} |
+content::RenderWidget::CreateRenderWidgetFunction g_create_render_widget = |
+ nullptr; |
+ |
+content::RenderWidget::RenderWidgetCreatedCallback g_render_widget_created = |
+ nullptr; |
+ |
} // namespace |
namespace content { |
@@ -288,6 +294,15 @@ RenderWidget::~RenderWidget() { |
} |
// static |
+void RenderWidget::InstallCreateHook( |
+ CreateRenderWidgetFunction create_render_widget, |
+ RenderWidgetCreatedCallback render_widget_created) { |
+ CHECK(!g_create_render_widget && !g_render_widget_created); |
+ g_create_render_widget = create_render_widget; |
+ g_render_widget_created = render_widget_created; |
+} |
+ |
+// static |
RenderWidget* RenderWidget::Create(int32_t opener_id, |
CompositorDependencies* compositor_deps, |
blink::WebPopupType popup_type, |
@@ -319,8 +334,11 @@ RenderWidget* RenderWidget::CreateForFrame( |
return view->GetWidget(); |
} |
scoped_refptr<RenderWidget> widget( |
- new RenderWidget(compositor_deps, blink::WebPopupTypeNone, screen_info, |
- false, hidden, false)); |
+ g_create_render_widget |
+ ? g_create_render_widget(compositor_deps, blink::WebPopupTypeNone, |
+ screen_info, false, hidden, false) |
+ : new RenderWidget(compositor_deps, blink::WebPopupTypeNone, |
+ screen_info, false, hidden, false)); |
widget->SetRoutingID(routing_id); |
widget->for_oopif_ = true; |
// DoInit increments the reference count on |widget|, keeping it alive after |
@@ -328,6 +346,8 @@ RenderWidget* RenderWidget::CreateForFrame( |
if (widget->DoInit(MSG_ROUTING_NONE, |
RenderWidget::CreateWebFrameWidget(widget.get(), frame), |
nullptr)) { |
+ if (g_render_widget_created) |
+ g_render_widget_created(widget.get()); |
return widget.get(); |
} |
return nullptr; |