Index: content/renderer/render_widget.cc |
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc |
index c9e985fad75c4b9c652c2f98d429a97ecca5f54f..e198f4b8da256c9cad71a7a018b8b091515995df 100644 |
--- a/content/renderer/render_widget.cc |
+++ b/content/renderer/render_widget.cc |
@@ -212,6 +212,12 @@ content::RenderWidgetInputHandlerDelegate* GetRenderWidgetInputHandlerDelegate( |
return widget; |
} |
+content::RenderWidget::CreateRenderWidgetFunction g_create_render_widget = |
+ nullptr; |
+ |
+content::RenderWidget::RenderWidgetInitializedCallback |
+ g_render_widget_initialized = nullptr; |
+ |
} // namespace |
namespace content { |
@@ -287,6 +293,15 @@ RenderWidget::~RenderWidget() { |
} |
// static |
+void RenderWidget::InstallCreateHook( |
+ CreateRenderWidgetFunction create_render_widget, |
+ RenderWidgetInitializedCallback render_widget_initialized) { |
+ CHECK(!g_create_render_widget && !g_render_widget_initialized); |
+ g_create_render_widget = create_render_widget; |
+ g_render_widget_initialized = render_widget_initialized; |
+} |
+ |
+// static |
RenderWidget* RenderWidget::Create(int32_t opener_id, |
CompositorDependencies* compositor_deps, |
blink::WebPopupType popup_type, |
@@ -318,8 +333,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 |
@@ -327,6 +345,8 @@ RenderWidget* RenderWidget::CreateForFrame( |
if (widget->DoInit(MSG_ROUTING_NONE, |
RenderWidget::CreateWebFrameWidget(widget.get(), frame), |
nullptr)) { |
+ if (g_render_widget_initialized) |
+ g_render_widget_initialized(widget.get()); |
return widget.get(); |
} |
return nullptr; |