Chromium Code Reviews| Index: content/common/frame.mojom |
| diff --git a/content/common/frame.mojom b/content/common/frame.mojom |
| index affcff1f5cbb82374823444bcbd30a46388c8e84..c864e2f6efec7cc37e4ec935d184d18233026bbd 100644 |
| --- a/content/common/frame.mojom |
| +++ b/content/common/frame.mojom |
| @@ -4,7 +4,12 @@ |
| module content.mojom; |
| +import "content/public/common/window_container_type.mojom"; |
| import "services/service_manager/public/interfaces/interface_provider.mojom"; |
| +import "third_party/WebKit/public/platform/referrer.mojom"; |
| +import "third_party/WebKit/public/web/window_features.mojom"; |
| +import "ui/base/mojo/window_open_disposition.mojom"; |
| +import "url/mojo/url.mojom"; |
| // The name of the InterfaceProviderSpec in service manifests used by the |
| // frame tree to expose frame-specific interfaces between renderer and browser. |
| @@ -26,12 +31,85 @@ interface FrameBindingsControl { |
| }; |
| // Implemented by the frame server (i.e. the browser process). |
| -interface FrameHost { |
| +interface FrameHostInterfaceBroker { |
| GetInterfaceProvider(service_manager.mojom.InterfaceProvider& interfaces); |
| }; |
| // Implemented by a service that provides implementations of the Frame |
| // interface. (e.g. renderer processes). |
| interface FrameFactory { |
| - CreateFrame(int32 frame_routing_id, Frame& frame, FrameHost host); |
| + CreateFrame(int32 frame_routing_id, Frame& frame, FrameHostInterfaceBroker host); |
| +}; |
| + |
| +// TODO(csharrison): Clean up this struct. Some of the entries (like |
| +// opener_top_level_frame_url) are better suited to be computed in the browser |
| +// process. See http://crbug.com/674307. |
| +struct CreateNewWindowParams { |
| + // True if this open request came in the context of a user gesture. |
| + bool user_gesture; |
| + |
| + // Type of window requested. |
| + WindowContainerType window_container_type; |
| + |
| + // The session storage namespace ID this window should use. |
| + int64 session_storage_namespace_id; |
| + |
| + // The name of the resulting frame that should be created (empty if none |
| + // has been specified). UTF8 encoded string. |
| + string frame_name; |
| + |
| + // The URL of the frame initiating the open. |
| + url.mojom.Url opener_url; |
| + |
| + // The URL of the top frame containing the opener. |
| + url.mojom.Url opener_top_level_frame_url; |
| + |
| + // The security origin of the frame initiating the open. |
| + url.mojom.Url opener_security_origin; |
| + |
| + // Whether the opener will be suppressed in the new window, in which case |
| + // scripting the new window is not allowed. |
| + bool opener_suppressed; |
| + |
| + // Whether the window should be opened in the foreground, background, etc. |
| + ui.mojom.WindowOpenDisposition disposition; |
| + |
| + // The URL that will be loaded in the new window (empty if none has been |
| + // specified). |
| + url.mojom.Url target_url; |
| + |
| + // The referrer that will be used to load |target_url| (empty if none has |
| + // been specified). |
| + blink.mojom.Referrer referrer; |
| + |
| + // The window features to use for the new window. |
| + blink.mojom.WindowFeatures features; |
| +}; |
| + |
| +struct CreateNewWindowReply { |
| + // The ID of the view to be created. If the ID is MSG_ROUTING_NONE, then the |
| + // opener RenderFrame should not create a RenderView in its process. |
| + // MSG_ROUTING_NONE does not necessarily indicate failure; it may also occur |
| + // in cases where a window was created, but the opener relationship is |
| + // severed. |
| + int32 route_id; |
| + |
| + // The ID of the main frame hosted in the view. |
| + int32 main_frame_route_id; |
| + |
| + // The ID of the widget for the main frame. |
| + int32 main_frame_widget_route_id; |
| + |
| + // Duplicated from CreateNewWindowParams because legacy code. |
| + int64 cloned_session_storage_namespace_id; |
| +}; |
| + |
| +// Implemented by the frame server (i.e. the browser process). For messages that |
| +// must be associated with the IPC channel. |
| +interface FrameHost { |
| + // Sent by the renderer when it is creating a new window. The browser creates |
| + // a tab for it. If |reply.route_id| is MSG_ROUTING_NONE, the window couldn't |
|
dcheng
2017/04/24 14:00:40
It's not necessary to change in this CL, but I kin
|
| + // be created. |
| + [Sync] CreateNewWindow(CreateNewWindowParams params) |
| + => (CreateNewWindowReply reply); |
| }; |