Index: content/renderer/render_widget.cc |
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc |
index 8a771c9ee7bfb6aad650489888624ebfcc58670b..7a8a7974640fb4a535acedc179b4effbf3a03871 100644 |
--- a/content/renderer/render_widget.cc |
+++ b/content/renderer/render_widget.cc |
@@ -212,6 +212,9 @@ content::RenderWidgetInputHandlerDelegate* GetRenderWidgetInputHandlerDelegate( |
return widget; |
} |
+content::RenderWidget::CreateRenderWidgetFunction g_create_render_widget = |
+ nullptr; |
+ |
} // namespace |
namespace content { |
@@ -285,6 +288,13 @@ RenderWidget::~RenderWidget() { |
} |
// static |
+void RenderWidget::InstallCreateHook( |
+ CreateRenderWidgetFunction create_render_widget) { |
+ CHECK(!g_create_render_widget); |
+ g_create_render_widget = create_render_widget; |
+} |
+ |
+// static |
RenderWidget* RenderWidget::Create(int32_t opener_id, |
CompositorDependencies* compositor_deps, |
blink::WebPopupType popup_type, |
@@ -316,8 +326,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 |