| Index: content/renderer/render_widget.h
|
| diff --git a/content/renderer/render_widget.h b/content/renderer/render_widget.h
|
| index 22f071a8b6d394c02e93e3e6b7de8355c8b014cc..847a4810f75219fa95f5b9be0b16a06836114e30 100644
|
| --- a/content/renderer/render_widget.h
|
| +++ b/content/renderer/render_widget.h
|
| @@ -101,6 +101,7 @@ class ImeEventGuard;
|
| class PepperPluginInstanceImpl;
|
| class RenderFrameImpl;
|
| class RenderFrameProxy;
|
| +class RenderViewImpl;
|
| class RenderWidgetCompositor;
|
| class RenderWidgetOwnerDelegate;
|
| class RenderWidgetScreenMetricsEmulator;
|
| @@ -126,12 +127,12 @@ class CONTENT_EXPORT RenderWidget
|
| public RenderWidgetScreenMetricsEmulatorDelegate,
|
| public base::RefCounted<RenderWidget> {
|
| public:
|
| - // Creates a new RenderWidget. The opener_id is the routing ID of the
|
| - // RenderView that this widget lives inside.
|
| - static RenderWidget* Create(int32_t opener_id,
|
| - CompositorDependencies* compositor_deps,
|
| - blink::WebPopupType popup_type,
|
| - const ScreenInfo& screen_info);
|
| + // Creates a new RenderWidget for a popup. |opener| is the RenderView that
|
| + // this widget lives inside.
|
| + static RenderWidget* CreateForPopup(RenderViewImpl* opener,
|
| + CompositorDependencies* compositor_deps,
|
| + blink::WebPopupType popup_type,
|
| + const ScreenInfo& screen_info);
|
|
|
| // Creates a new RenderWidget that will be attached to a RenderFrame.
|
| static RenderWidget* CreateForFrame(int widget_routing_id,
|
| @@ -150,6 +151,9 @@ class CONTENT_EXPORT RenderWidget
|
| bool,
|
| bool);
|
| using RenderWidgetInitializedCallback = void (*)(RenderWidget*);
|
| + using ShowCallback = base::Callback<void(RenderWidget* widget_to_show,
|
| + blink::WebNavigationPolicy policy,
|
| + const gfx::Rect& initial_rect)>;
|
| static void InstallCreateHook(
|
| CreateRenderWidgetFunction create_render_widget,
|
| RenderWidgetInitializedCallback render_widget_initialized_callback);
|
| @@ -442,7 +446,9 @@ class CONTENT_EXPORT RenderWidget
|
| static blink::WebWidget* CreateWebWidget(RenderWidget* render_widget);
|
|
|
| // Called by Create() functions and subclasses to finish initialization.
|
| - void Init(int32_t opener_id, blink::WebWidget* web_widget);
|
| + // |show_callback| will be invoked once WebWidgetClient::show() occurs, and
|
| + // should be null if show() won't be triggered for this widget.
|
| + void Init(const ShowCallback& show_callback, blink::WebWidget* web_widget);
|
|
|
| // Allows the process to exit once the unload handler has finished, if there
|
| // are no other active RenderWidgets.
|
| @@ -621,15 +627,6 @@ class CONTENT_EXPORT RenderWidget
|
| // This is lazily constructed and must not outlive webwidget_.
|
| std::unique_ptr<RenderWidgetCompositor> compositor_;
|
|
|
| - // Set to the ID of the view that initiated creating this view, if any. When
|
| - // the view was initiated by the browser (the common case), this will be
|
| - // MSG_ROUTING_NONE. This is used in determining ownership when opening
|
| - // child tabs. See RenderWidget::createWebViewWithRequest.
|
| - //
|
| - // This ID may refer to an invalid view if that view is closed before this
|
| - // view is.
|
| - int32_t opener_id_;
|
| -
|
| // The rect where this view should be initially shown.
|
| gfx::Rect initial_rect_;
|
|
|
| @@ -805,6 +802,10 @@ class CONTENT_EXPORT RenderWidget
|
| // Indicates whether this widget has focus.
|
| bool has_focus_;
|
|
|
| + // A callback into the creator/opener of this widget, to be executed when
|
| + // WebWidgetClient::show() occurs.
|
| + ShowCallback show_callback_;
|
| +
|
| #if defined(OS_MACOSX)
|
| // Responds to IPCs from TextInputClientMac regarding getting string at given
|
| // position or range as well as finding character index at a given position.
|
|
|