Index: content/common/frame.mojom |
diff --git a/content/common/frame.mojom b/content/common/frame.mojom |
index affcff1f5cbb82374823444bcbd30a46388c8e84..708c0022623d22a91195f731addb19e45d35e959 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. |
@@ -35,3 +40,79 @@ interface FrameHost { |
interface FrameFactory { |
CreateFrame(int32 frame_routing_id, Frame& frame, FrameHost 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. |
+struct CreateNewWindowParams { |
+ // The routing id of the frame initiating the open. |
+ int32 opener_render_frame_id; |
+ |
+ // 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 view 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 view. |
+ 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 FrameHostIPC { |
+ // 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 view couldn't |
+ // be created. |
+ [Sync] CreateNewWindow(CreateNewWindowParams params) |
+ => (CreateNewWindowReply reply); |
+}; |