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 |
+ // be created. |
+ [Sync] CreateNewWindow(CreateNewWindowParams params) |
+ => (CreateNewWindowReply reply); |
}; |