blob: 9ab40d6483156cfbbc71e1fdb8a618a419611e75 [file] [log] [blame]
ben76f52b242016-06-18 05:42:481// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5module content.mojom;
6
Oksana Zhuravlova8b88e572019-01-07 21:54:007import "content/common/document_scoped_interface_bundle.mojom";
Arthur Hemery9c035732019-01-07 16:12:418import "content/common/frame_messages.mojom";
Jeremy Roman62fee222019-07-09 17:34:149import "content/common/native_types.mojom";
Arthur Hemeryd3011f62018-05-30 10:38:4410import "content/common/navigation_client.mojom";
Arthur Hemery7b67a972017-12-01 15:24:4911import "content/common/navigation_params.mojom";
Scott Violet0de3837c2019-09-06 22:51:5412import "content/public/common/browser_controls_state.mojom";
John Abd-El-Malekd4882642017-12-04 21:45:1913import "content/public/common/resource_type.mojom";
Jay Civelli116683f2018-03-27 19:56:2314import "content/public/common/resource_load_info.mojom";
John Abd-El-Malekecc6f5f2018-03-02 18:47:3915import "content/public/common/transferrable_url_loader.mojom";
csharrison95f01e922017-04-24 18:52:3516import "content/public/common/window_container_type.mojom";
Ken Rockot8b447d72018-02-03 20:30:4717import "mojo/public/mojom/base/string16.mojom";
Oksana Zhuravlova34579e912018-03-23 00:18:4918import "mojo/public/mojom/base/unguessable_token.mojom";
Hajime Hoshi35ad74f2019-03-07 08:38:0519import "mojo/public/mojom/base/values.mojom";
Lucas Furukawa Gadani3f61b95d2019-08-16 05:34:1020import "services/network/public/mojom/url_response_head.mojom";
Ken Rockot54311e62018-02-10 19:01:5221import "services/network/public/mojom/url_loader.mojom";
Kinuko Yasudad795ac72018-07-11 08:07:5322import "services/network/public/mojom/url_loader_factory.mojom";
Ken Rockot543f5e32018-02-04 02:13:5023import "services/service_manager/public/mojom/interface_provider.mojom";
Miyoung Shin99505dd2019-07-27 12:45:3524import "services/viz/public/mojom/compositing/surface_id.mojom";
Blink Reformata30d4232018-04-07 15:31:0625import "third_party/blink/public/mojom/blob/blob_url_store.mojom";
Julie Jeongeun Kim42a90df2019-03-20 23:13:1026import "third_party/blink/public/mojom/commit_result/commit_result.mojom";
Lowell Mannersf03ea5a2019-04-23 11:47:5827import "third_party/blink/public/mojom/devtools/console_message.mojom";
Blink Reformata30d4232018-04-07 15:31:0628import "third_party/blink/public/mojom/feature_policy/feature_policy.mojom";
Dave Tapuskad6703f912019-01-31 23:13:1129import "third_party/blink/public/mojom/frame/lifecycle.mojom";
Andy Paicuc93d30862018-10-10 15:33:4530import "third_party/blink/public/mojom/frame/navigation_initiator.mojom";
Jeremy Roman3c83b162019-03-12 16:55:5231import "third_party/blink/public/mojom/messaging/transferable_message.mojom";
Hiroki Nakagawa753758342018-12-27 04:13:4932import "third_party/blink/public/mojom/loader/url_loader_factory_bundle.mojom";
Yuzu Saijoaae91702019-03-13 07:38:0533import "third_party/blink/public/mojom/messaging/transferable_message.mojom";
Lucas Furukawa Gadani89a74182019-01-10 19:33:2234import "third_party/blink/public/mojom/portal/portal.mojom";
Leon Han075e0b32018-11-06 07:59:4435import "third_party/blink/public/mojom/referrer.mojom";
Hiroki Nakagawacdbc7912018-11-30 11:30:0536import "third_party/blink/public/mojom/service_worker/controller_service_worker.mojom";
Leon Han49c3ff62019-03-13 00:08:0137import "third_party/blink/public/mojom/service_worker/service_worker_provider.mojom";
Hiroki Nakagawa7c0a7e72018-12-10 04:31:2938import "third_party/blink/public/mojom/devtools/devtools_agent.mojom";
Lucas Furukawa Gadani99125822019-01-03 15:41:4939import "third_party/blink/public/mojom/portal/portal.mojom";
Julie Jeongeun Kim42a90df2019-03-20 23:13:1040import "third_party/blink/public/mojom/window_features/window_features.mojom";
Julie Jeongeun Kim2b1d45a2019-06-28 23:37:5441import "ui/base/mojom/window_open_disposition.mojom";
Daniel Cheng7a059b02018-02-03 10:04:1342import "url/mojom/url.mojom";
Adithya Srinivasan57f44d0d2019-03-22 15:36:0243import "url/mojom/origin.mojom";
Miyoung Shin87943f502019-07-26 13:31:5844import "ui/gfx/geometry/mojom/geometry.mojom";
ben76f52b242016-06-18 05:42:4845
ben275a5652016-10-28 16:55:5046// The name of the InterfaceProviderSpec in service manifests used by the
47// frame tree to expose frame-specific interfaces between renderer and browser.
48const string kNavigation_FrameSpec = "navigation:frame";
49
ben76f52b242016-06-18 05:42:4850// Implemented by the frame provider (e.g. renderer processes).
51interface Frame {
rockot400ea35b2016-10-15 19:15:3252 GetInterfaceProvider(service_manager.mojom.InterfaceProvider& interfaces);
Daniel Cheng118f9e282017-11-10 03:28:4453 GetCanonicalUrlForSharing() => (url.mojom.Url? canonical_url);
Luciano Pacheco8528c16f2017-12-14 07:10:5654
John Abd-El-Malek9405d80e2018-08-08 16:50:2155 // Causes all new subresource requests to be blocked (not being started) until
56 // ResumeBlockedRequests is called.
57 BlockRequests();
58
59 // Resumes blocked requests.
60 // It is safe to call this without calling BlockRequests.
61 ResumeBlockedRequests();
62
63 // Cancels blocked requests. BlockRequests must have been called before.
64 CancelBlockedRequests();
65
Dave Tapuska1dd57742019-02-07 01:07:3766 // Set the lifecycle state.
67 SetLifecycleState(blink.mojom.FrameLifecycleState state);
68
Luciano Pacheco8528c16f2017-12-14 07:10:5669 // Samsung Galaxy Note-specific "smart clip" stylus text getter.
70 // Extracts the data at the given rect.
Eve Martin-Jones40f552c2018-02-14 22:47:3271 [EnableIf=is_android]
Luciano Pacheco8528c16f2017-12-14 07:10:5672 ExtractSmartClipData(gfx.mojom.Rect rect)
Mahesh Machavolu346cd2662018-05-24 12:40:1173 => (mojo_base.mojom.String16 text, mojo_base.mojom.String16 html,
74 gfx.mojom.Rect clip_rect);
Scott Violet0de3837c2019-09-06 22:51:5475
76 // Notifies the renderer whether hiding/showing the browser controls is
77 // enabled, what the current state should be, and whether or not to
78 // animate to the proper state.
79 UpdateBrowserControlsState(BrowserControlsState constraints,
80 BrowserControlsState current,
81 bool animate);
ben76f52b242016-06-18 05:42:4882};
83
Ken Rockot48785452017-10-25 19:33:1484// Implemented by the frame provider and currently must be associated with the
85// legacy IPC channel.
Arthur Hemeryd3011f62018-05-30 10:38:4486// KEEP THE COMMIT FUNCTIONS IN SYNC in content/common/navigation_client.mojom.
87// These will eventually be removed from FrameNavigationControl.
Ken Rockot48785452017-10-25 19:33:1488interface FrameNavigationControl {
arthursonzogni3a4ca9f2017-12-07 17:58:3489 // Tells the renderer that a navigation is ready to commit.
90 //
arthursonzognif34adf092018-04-24 17:06:1391 // The renderer should bind the |url_loader_client_endpoints| to an
92 // URLLoaderClient implementation to continue loading the document that will
93 // be the result of the committed navigation.
arthursonzogni3a4ca9f2017-12-07 17:58:3494 //
arthursonzognif34adf092018-04-24 17:06:1395 // Note: |url_loader_client_endpoints| will be empty iff the navigation URL
Arthur Hemeryd3011f62018-05-30 10:38:4496 // wasn't handled by the network stack (i.e. about:blank, ...)
arthursonzogni3a4ca9f2017-12-07 17:58:3497 //
Minggang Wang47a78222019-06-28 17:05:4698 // Note: |response_body| is only used when NavigationImmediateResponseBody is
99 // enabled. It contains the datapipe used to read the response body.
100 //
arthursonzogni3a4ca9f2017-12-07 17:58:34101 // When the Network Service is enabled, |subresource_loader_factories| may
102 // also be provided by the browser as a a means for the renderer to load
103 // subresources where applicable.
Pavel Feldmanf20fc9d2017-11-17 09:13:30104 //
arthursonzognib950d902018-02-08 09:27:13105 // |controller_service_worker_info| may also be provided by the browser if the
106 // frame that is being navigated is supposed to be controlled by a Service
107 // Worker.
Leon Han49c3ff62019-03-13 00:08:01108 // |provider_info| may also be provided if the browser has created a
109 // ServiceWorkerProviderHost for this navigation.
Kinuko Yasudad795ac72018-07-11 08:07:53110 // |prefetch_loader_factory| is populated only when Network Service is
111 // enabled. The pointer is used to start a prefetch loading via the browser
112 // process.
Kinuko Yasudaba384082018-01-11 08:30:16113 //
Pavel Feldmanf20fc9d2017-11-17 09:13:30114 // For automation driver-initiated navigations over the devtools protocol,
115 // |devtools_navigation_token_| is used to tag the navigation. This navigation
116 // token is then sent into the renderer and lands on the DocumentLoader. That
117 // way subsequent Blink-level frame lifecycle events can be associated with
118 // the concrete navigation.
119 // - The value should not be sent back to the browser.
120 // - The value on DocumentLoader may be generated in the renderer in some
121 // cases, and thus shouldn't be trusted.
122 // TODO(crbug.com/783506): Replace devtools navigation token with the generic
123 // navigation token that can be passed from renderer to the browser.
arthursonzogni3a4ca9f2017-12-07 17:58:34124 CommitNavigation(
arthursonzogni3a4ca9f2017-12-07 17:58:34125 CommonNavigationParams common_params,
Nasko Oskovc36327d2019-01-03 23:23:04126 CommitNavigationParams request_params,
Minggang Wang47a78222019-06-28 17:05:46127 network.mojom.URLResponseHead response_head,
128 handle<data_pipe_consumer>? response_body,
John Abd-El-Malekb165dc52018-01-18 17:12:18129 network.mojom.URLLoaderClientEndpoints? url_loader_client_endpoints,
Hiroki Nakagawa753758342018-12-27 04:13:49130 blink.mojom.URLLoaderFactoryBundle? subresource_loader_factories,
John Abd-El-Malekecc6f5f2018-03-02 18:47:39131 array<TransferrableURLLoader>? subresource_overrides,
Hiroki Nakagawacdbc7912018-11-30 11:30:05132 blink.mojom.ControllerServiceWorkerInfo? controller_service_worker_info,
Matt Falkenhagen5e340f12019-07-21 01:28:37133 blink.mojom.ServiceWorkerProviderInfoForClient? provider_info,
Kinuko Yasuda8fb556c2019-07-16 05:47:55134 pending_remote<network.mojom.URLLoaderFactory>? prefetch_loader_factory,
clamy6b92fcf2018-06-01 13:51:37135 mojo_base.mojom.UnguessableToken devtools_navigation_token)
136 => (blink.mojom.CommitResult commit_result);
Doug Turner84693be2017-12-19 00:18:46137
138 // Tells the renderer that a failed navigation is ready to commit.
139 //
140 // The result of this commit usually results in displaying an error page.
141 // Note |error_page_content| may contain the content of the error page
142 // (i.e. flattened HTML, JS, CSS).
143 //
144 // When the Network Service is enabled, |subresource_loader_factories| may
Conley Owens7a78fab2018-03-10 06:27:49145 // also be provided by the browser as a means for the renderer to load
Doug Turner84693be2017-12-19 00:18:46146 // subresources where applicable.
147 CommitFailedNavigation(
148 CommonNavigationParams common_params,
Nasko Oskovc36327d2019-01-03 23:23:04149 CommitNavigationParams request_params,
Doug Turner84693be2017-12-19 00:18:46150 bool has_stale_copy_in_cache,
151 int32 error_code,
152 string? error_page_content,
Hiroki Nakagawa753758342018-12-27 04:13:49153 blink.mojom.URLLoaderFactoryBundle? subresource_loader_factories)
clamy6b92fcf2018-06-01 13:51:37154 => (blink.mojom.CommitResult commit_result);
Chong Zhang7306b0b2018-01-24 05:59:24155
clamyaf4bf2d92018-02-06 10:54:36156 // Tells the renderer that a same-document navigation should be committed.
157 // The renderer will return a status value indicating whether the commit
158 // could proceed as expected or not. In particular, it might be necessary to
159 // restart the navigation if it is no-longer same-document, which can happen
160 // if the renderer committed another navigation in the meantime.
161 CommitSameDocumentNavigation(
162 CommonNavigationParams common_params,
Nasko Oskovc36327d2019-01-03 23:23:04163 CommitNavigationParams request_params)
clamyaf4bf2d92018-02-06 10:54:36164 => (blink.mojom.CommitResult commit_result);
165
clamyb1df7b962018-02-01 17:38:17166 // Asks the renderer to handle a renderer-debug URL.
167 HandleRendererDebugURL(url.mojom.Url url);
168
Chong Zhang7306b0b2018-01-24 05:59:24169 // Provides the renderer an updated |subresource_loader_factories|.
170 //
171 // This method is intended to fix broken loaders after a Network Service
172 // crash, and is only used when Network Service is enabled.
173 //
174 // The new bundle contains replacement factories for a subset of the
175 // receiver's existing bundle.
176 UpdateSubresourceLoaderFactories(
Hiroki Nakagawa753758342018-12-27 04:13:49177 blink.mojom.URLLoaderFactoryBundle subresource_loader_factories);
Dmitry Gozman6adf95b2018-10-10 22:12:19178
179 // Returns a DevToolsAgent interface for this frame, used for
180 // remote debugging. See DevToolsAgent for details.
181 // Returned DevToolsAgent must be associated with navigation control,
182 // due to various ordering dependencies between DevTools protocol and
183 // navigation.
Julie Jeongeun Kim07887792019-08-13 11:05:48184 BindDevToolsAgent(
185 pending_associated_remote<blink.mojom.DevToolsAgentHost> agent_host,
186 pending_associated_receiver<blink.mojom.DevToolsAgent> agent);
Hajime Hoshi35ad74f2019-03-07 08:38:05187
188 // Request for the renderer to execute JavaScript in the frame's context.
189 //
190 // |javascript| is the string containing the JavaScript to be executed in the
191 // target frame's context.
192 //
Avi Drissman8e3ebe92019-06-10 20:26:11193 // |wants_result| is true if the result of this execution is required by the
194 // caller. If it is false, a reply is still required by Mojo, but a null value
195 // should be returned to avoid issues serializing a large, unwanted reply.
196 //
Hajime Hoshi35ad74f2019-03-07 08:38:05197 // TODO(hajimehoshi): This requires navigate association to keep the message
198 // order with other navigation-related messages. Fix this and move this to a
199 // non-navigate-related interface if possible.
Avi Drissman4544828f2019-03-11 20:37:32200 JavaScriptExecuteRequest(
Avi Drissman8e3ebe92019-06-10 20:26:11201 mojo_base.mojom.String16 javascript,
202 bool wants_result) => (mojo_base.mojom.Value result);
Hajime Hoshi35ad74f2019-03-07 08:38:05203
Avi Drissman4544828f2019-03-11 20:37:32204 // ONLY FOR TESTS: Same as above but adds a fake UserGestureIndicator around
Hajime Hoshi35ad74f2019-03-07 08:38:05205 // execution. (crbug.com/408426)
Avi Drissman4544828f2019-03-11 20:37:32206 JavaScriptExecuteRequestForTests(
207 mojo_base.mojom.String16 javascript,
Avi Drissman8e3ebe92019-06-10 20:26:11208 bool wants_result,
Hajime Hoshif85e7cf722019-07-19 00:54:49209 bool has_user_gesture,
210 int32 world_id)
Avi Drissman4544828f2019-03-11 20:37:32211 => (mojo_base.mojom.Value result);
Hajime Hoshi35ad74f2019-03-07 08:38:05212
213 // Same as JavaScriptExecuteRequest above except the script is run in the
214 // isolated world specified by the fourth parameter.
Avi Drissman4544828f2019-03-11 20:37:32215 JavaScriptExecuteRequestInIsolatedWorld(
216 mojo_base.mojom.String16 javascript,
Avi Drissman8e3ebe92019-06-10 20:26:11217 bool wants_result,
Avi Drissman4544828f2019-03-11 20:37:32218 int32 world_id) => (mojo_base.mojom.Value result);
Yuzu Saijoaae91702019-03-13 07:38:05219
220 // Posts a message from a frame in another process to the current renderer.
221 // |source_routing_id| is the routing ID of the source frame in the source
222 // process when sent to the browser. The browser replaces it with the routing
223 // ID of the equivalent frame proxy in the destination process.
224 // |source_origin| is the origin of the source frame when the message was
225 // sent, and |target_origin| specifies what the origin of the target frame
226 // must be for the message to be dispatched. An empty string allows the
227 // message to be dispatched to any origin.
228 // |message| is the encoded data, and any extra properties such as
229 // transferred ports or blobs.
230 PostMessageEvent(int32 source_routing_id,
231 mojo_base.mojom.String16 source_origin,
232 mojo_base.mojom.String16 target_origin,
233 blink.mojom.TransferableMessage message);
Lucas Furukawa Gadani56dd5452019-03-22 18:23:12234
Adithya Srinivasane8bf80e2019-05-01 15:39:31235 // Forwards a message from a portal's host to the main frame in the portal's
236 // guest contents.
237 ForwardMessageFromHost(blink.mojom.TransferableMessage message,
238 url.mojom.Origin source_origin,
239 url.mojom.Origin? target_origin);
Adithya Srinivasan324086b2019-03-26 17:06:58240
Lucas Furukawa Gadani56dd5452019-03-22 18:23:12241 // Called on the main frame of a page embedded in a Portal when it is
242 // activated. The frame has the option to adopt the previous page as a portal
243 // identified by |portal_token| with the interface |portal|. The activation
244 // can optionally include a message |data| dispatched with the
Adithya Srinivasane4f0e0702019-04-18 23:17:20245 // PortalActivateEvent. The return value |was_adopted| indicates if the portal
246 // for the predecessor (identified by |portal_token|) was adopted by the
247 // current frame.
Jeremy Romand92e1372019-06-04 16:31:17248 OnPortalActivated(
249 mojo_base.mojom.UnguessableToken portal_token,
250 pending_associated_remote<blink.mojom.Portal> portal,
251 pending_associated_receiver<blink.mojom.PortalClient> portal_client,
252 blink.mojom.TransferableMessage data) => (bool was_adopted);
Ken Rockot48785452017-10-25 19:33:14253};
254
sammc7f6c6a02017-01-30 00:53:51255// Implemented by the frame (e.g. renderer processes).
256// Instances of this interface must be associated with (i.e., FIFO with) the
257// legacy IPC channel.
258interface FrameBindingsControl {
259 // Used to tell a render frame whether it should expose various bindings
260 // that allow JS content extended privileges. See BindingsPolicy for valid
261 // flag values.
262 AllowBindings(int32 enabled_bindings_flags);
Nasko Oskov8a73f7d2019-09-27 22:29:32263
264 // Used to tell the RenderFrame to enable Mojo JS bindings, which allows
265 // JS code running in the renderer process to connect to Mojo interfaces
266 // and make method calls on them.
267 // This is used for WebUI only at this time.
268 EnableMojoJsBindings();
sammc7f6c6a02017-01-30 00:53:51269};
270
ben76f52b242016-06-18 05:42:48271// Implemented by a service that provides implementations of the Frame
272// interface. (e.g. renderer processes).
273interface FrameFactory {
Balazs Engedyba034e72017-10-27 22:26:28274 CreateFrame(int32 frame_routing_id, Frame& frame);
csharrison95f01e922017-04-24 18:52:35275};
276
csharrison95f01e922017-04-24 18:52:35277struct CreateNewWindowParams {
278 // True if this open request came in the context of a user gesture.
Mustaq Ahmedc4cb7162018-06-05 16:28:36279 //
280 // TODO(mustaq): We have cases where a user gesture is assumed to be
281 // there even when it's not the case. See https://crbug.com/843233.
282 bool mimic_user_gesture;
csharrison95f01e922017-04-24 18:52:35283
284 // Type of window requested.
285 WindowContainerType window_container_type;
286
287 // The session storage namespace ID this window should use.
Daniel Murphy31bbb8b12018-02-07 21:44:10288 string session_storage_namespace_id;
csharrison95f01e922017-04-24 18:52:35289
Daniel Murphye3eec92c2018-02-23 19:09:15290 // The session storage namespace ID this window should clone from.
291 // TODO(dmurph): Remove this once session storage is fully mojo'd, as the
292 // clone call happens on a different interface. https://crbug.com/716490
293 string clone_from_session_storage_namespace_id;
294
csharrison95f01e922017-04-24 18:52:35295 // The name of the resulting frame that should be created (empty if none
296 // has been specified). UTF8 encoded string.
297 string frame_name;
298
csharrison95f01e922017-04-24 18:52:35299 // Whether the opener will be suppressed in the new window, in which case
300 // scripting the new window is not allowed.
301 bool opener_suppressed;
302
303 // Whether the window should be opened in the foreground, background, etc.
304 ui.mojom.WindowOpenDisposition disposition;
305
306 // The URL that will be loaded in the new window (empty if none has been
307 // specified).
308 url.mojom.Url target_url;
309
310 // The referrer that will be used to load |target_url| (empty if none has
311 // been specified).
312 blink.mojom.Referrer referrer;
313
314 // The window features to use for the new window.
315 blink.mojom.WindowFeatures features;
316};
317
Daniel Cheng8bb30c62017-10-23 20:40:47318// Operation result when the renderer asks the browser to create a new window.
319enum CreateNewWindowStatus {
320 // Ignore creation of the new window. This can happen because creation is
321 // blocked or because the new window should have no opener relationship.
322 kIgnore,
323 // Reuse the current window rather than creating a new window.
324 kReuse,
325 // Create a new window using the corresponding params in |reply|.
326 kSuccess,
327};
328
329// All routing IDs in this struct must be set to a valid routing ID.
csharrison95f01e922017-04-24 18:52:35330struct CreateNewWindowReply {
Daniel Cheng8bb30c62017-10-23 20:40:47331 // The ID of the view to be created.
csharrison95f01e922017-04-24 18:52:35332 int32 route_id;
333
334 // The ID of the main frame hosted in the view.
335 int32 main_frame_route_id;
336
337 // The ID of the widget for the main frame.
338 int32 main_frame_widget_route_id;
339
Oksana Zhuravlova8b88e572019-01-07 21:54:00340 DocumentScopedInterfaceBundle main_frame_interface_bundle;
Balazs Engedyba034e72017-10-27 22:26:28341
csharrison95f01e922017-04-24 18:52:35342 // Duplicated from CreateNewWindowParams because legacy code.
Daniel Murphy31bbb8b12018-02-07 21:44:10343 string cloned_session_storage_namespace_id;
Pavel Feldman08beed7842017-10-17 19:18:11344
345 // Used for devtools instrumentation and trace-ability. The token is
346 // propagated to Blink's LocalFrame and both Blink and content/
347 // can tag calls and requests with this instrumentation token in order to
348 // attribute them to the context frame.
349 // |devtools_frame_token| is only defined by the browser and is never
350 // sent back from the renderer in the control calls.
Oksana Zhuravlova34579e912018-03-23 00:18:49351 mojo_base.mojom.UnguessableToken devtools_main_frame_token;
csharrison95f01e922017-04-24 18:52:35352};
353
Yutaka Hiranof7f2f632017-09-06 10:40:08354// An opaque handle that keeps alive the associated render process even after
355// the frame is detached. Used by resource requests with "keepalive" specified.
356interface KeepAliveHandle {};
357
csharrison95f01e922017-04-24 18:52:35358// Implemented by the frame server (i.e. the browser process). For messages that
359// must be associated with the IPC channel.
360interface FrameHost {
Daniel Cheng8bb30c62017-10-23 20:40:47361 // Sent by the renderer to request the browser to create a new window. |reply|
362 // is only non-null on when status == CreateNewWindowStatus::kSuccess.
csharrison95f01e922017-04-24 18:52:35363 [Sync] CreateNewWindow(CreateNewWindowParams params)
Daniel Cheng8bb30c62017-10-23 20:40:47364 => (CreateNewWindowStatus status, CreateNewWindowReply? reply);
Yutaka Hiranof7f2f632017-09-06 10:40:08365
Lucas Furukawa Gadani99125822019-01-03 15:41:49366 // Sent by the renderer process to request the creation of a new portal.
Adithya Srinivasane8bf80e2019-05-01 15:39:31367 // |portal| is the pipe to be used for the Portal object, |client| is the pipe
368 // used to communicate back with the caller. Returns |proxy_routing_id|, which
369 // is the routing id of the RenderFrameProxy and |portal_token|, which is the
370 // unique identifier for the portal.
Jeremy Romand92e1372019-06-04 16:31:17371 [Sync] CreatePortal(
372 pending_associated_receiver<blink.mojom.Portal> portal,
373 pending_associated_remote<blink.mojom.PortalClient> client)
Lucas Furukawa Gadani99125822019-01-03 15:41:49374 => (int32 proxy_routing_id,
Lucas Furukawa Gadanif68204d2019-04-30 17:30:24375 mojo_base.mojom.UnguessableToken portal_token,
376 mojo_base.mojom.UnguessableToken devtools_frame_token);
Lucas Furukawa Gadani99125822019-01-03 15:41:49377
Lucas Furukawa Gadani56dd5452019-03-22 18:23:12378 // Requests that this frame adopts the portal identified by |portal_token|.
379 // Returns |proxy_routing_id|, which is the routing id of the portal's
Jeremy Roman62fee222019-07-09 17:34:14380 // RenderFrameProxy, |replicated_state|, the replicated state associated with
381 // that RFP, and the |devtools_frame_token|.
Lucas Furukawa Gadani56dd5452019-03-22 18:23:12382 [Sync] AdoptPortal(mojo_base.mojom.UnguessableToken portal_token)
Lucas Furukawa Gadanif68204d2019-04-30 17:30:24383 => (int32 proxy_routing_id,
Jeremy Roman62fee222019-07-09 17:34:14384 FrameReplicationState replicated_state,
Lucas Furukawa Gadanif68204d2019-04-30 17:30:24385 mojo_base.mojom.UnguessableToken devtools_frame_token);
Lucas Furukawa Gadani56dd5452019-03-22 18:23:12386
Yutaka Hiranof7f2f632017-09-06 10:40:08387 // Creates and returns a KeepAliveHandle.
388 IssueKeepAliveHandle(KeepAliveHandle& keep_alive_handle);
Balazs Engedya40712f2017-09-15 15:01:11389
390 // Sent by the renderer when a navigation commits in the frame.
Oksana Zhuravlova8b88e572019-01-07 21:54:00391
392 // If |interface_params| is non-empty, the FrameHost implementation
393 // must unbind the old InterfaceProvider and DocumentInterfaceBroker
394 // connections, and drop any interface requests pending on them.
395 // Then it should bind the appropriate requests and start servicing
396 // GetInterface messages coming in on these new connections
Balazs Engedy0c8d550b2017-12-06 21:30:23397 // in a security context that is appropriate for the committed navigation.
398 //
Oksana Zhuravlova8b88e572019-01-07 21:54:00399 // The FrameHost implementation must enforce that |interface_params|
Balazs Engedy0c8d550b2017-12-06 21:30:23400 // is set for cross-document navigations. This prevents origin confusion by
401 // ensuring that interface requests racing with navigation commit will be
402 // either ignored, or serviced correctly in the security context of the
403 // document they originated from (based on which InterfaceProvider connection
Oksana Zhuravlova8b88e572019-01-07 21:54:00404 // the GetInterface messages arrive on or DocumentInterfaceBroker
405 // connection the Get<interface> messages arrive on).
Balazs Engedya40712f2017-09-15 15:01:11406 DidCommitProvisionalLoad(
Balazs Engedy0c8d550b2017-12-06 21:30:23407 DidCommitProvisionalLoadParams params,
Oksana Zhuravlova8b88e572019-01-07 21:54:00408 DidCommitProvisionalLoadInterfaceParams? interface_params);
Arthur Hemery7b67a972017-12-01 15:24:49409
Arthur Hemery7b0ae492018-02-05 16:04:45410 // Sent by the renderer to indicate that a same document navigation
411 // committed in the renderer process.
412 DidCommitSameDocumentNavigation(
413 DidCommitProvisionalLoadParams params);
414
Arthur Hemery7b67a972017-12-01 15:24:49415 // Sent by the renderer to request a navigation.
Marijn Kruisselbrink07bf59d52018-04-03 21:50:25416 // |blob_url_token| should be non-null when this is a navigation to a blob:
417 // URL. The token will then be used to look up the blob associated with the
418 // blob URL. Without this by the time the navigation code starts fetching
419 // the URL the blob URL might no longer be valid. |blob_url_token| is
420 // not part of BeginNavigationParams because that struct needs to be
421 // cloneable, and thus can't contain mojo interfaces.
422 // If an invalid BlobURLToken is passed in, or if the token doesn't match the
423 // url in |common_params|, the navigation will result in a network error.
Arthur Hemeryd3011f62018-05-30 10:38:44424 // |navigation_client| is passed to the renderer to allow for further control
425 // of the navigation. Allows for Commit and Cancels/Aborts. It is only valid
426 // when PerNavigationMojoInterface is enabled.
427 // TODO(ahemery): |navigation_client| should not be optional. Make it
428 // mandatory when removing PerNavigationMojoInterface feature flag.
Arthur Hemery7b67a972017-12-01 15:24:49429 BeginNavigation(
430 CommonNavigationParams common_params,
Marijn Kruisselbrink07bf59d52018-04-03 21:50:25431 BeginNavigationParams begin_params,
Julie Jeongeun Kim249cfbb2019-08-30 06:44:05432 pending_remote<blink.mojom.BlobURLToken>? blob_url_token,
Julie Jeongeun Kimed2e5ba72019-09-12 10:14:17433 pending_associated_remote<NavigationClient>? navigation_client,
Miyoung Shinda5da322019-09-02 10:07:37434 pending_remote<blink.mojom.NavigationInitiator>? navigation_initiator);
John Abd-El-Malekd4882642017-12-04 21:45:19435
436 // Sent when a subresource response has started.
Jay Civellid5904f02018-03-23 19:43:57437 // |cert_status| is the bitmask of status info of the SSL certificate. (see
438 // net/cert/cert_status_flags.h).
439 SubresourceResponseStarted(url.mojom.Url url, uint32 cert_status);
440
Jay Civelli116683f2018-03-27 19:56:23441 // Sent when a resource load finished, successfully or not.
442 ResourceLoadComplete(ResourceLoadInfo url_load_info);
Luciano Pacheco8def47f2017-12-07 06:52:30443
444 // Sent when the frame changes its window.name.
445 DidChangeName(string name, string unique_name);
446
447 // Sent when the frame starts enforcing an insecure request policy. Sending
448 // this information in DidCommitProvisionalLoad isn't sufficient; this
449 // message is needed because, for example, a document can dynamically insert
450 // a <meta> tag that causes strict mixed content checking to be enforced.
451 //
452 // Argument |policy_bitmap| represents blink::WebInsecureRequestPolicy uint8
453 // bitfield.
454 EnforceInsecureRequestPolicy(uint8 policy_bitmap);
arthursonzogni4b62a5cb2018-01-17 14:14:26455 // Elements of |set| are hashes of hosts to upgrade.
456 EnforceInsecureNavigationsSet(array<uint32> set);
Luciano Pacheco8def47f2017-12-07 06:52:30457
458 // Notifies the browser process that HTTP headers which affect the frame
459 // polices were delivered with the document being loaded into the frame. This
460 // can be either or both of 'Feature-Policy' or 'Content-Security-Policy' (
461 // which can set sandbox flags).
462 //
463 // |parsed_header| is a list of an origin whitelist for each feature in the
464 // policy.
465 DidSetFramePolicyHeaders(
466 blink.mojom.WebSandboxFlags sandbox_flags,
467 array<blink.mojom.ParsedFeaturePolicyDeclaration> parsed_header);
Austin Tankiang10d64832017-12-20 02:43:55468
469 // If a cross-process navigation was started for the initial history load in
470 // this subframe, this tries to cancel it to allow a client redirect to happen
471 // instead.
472 CancelInitialHistoryLoad();
473
474 // Change the encoding name of the page in UI when the page has detected
475 // proper encoding name. Sent for top-level frames.
476 UpdateEncoding(string encoding_name);
Lucas Furukawa Gadanie5d27a362018-02-13 14:26:02477
Lucas Gadani471160f92018-03-01 03:13:21478 // The frame's size is replicated in the browser so that the browser can
479 // correctly set the initial size of the frame in case of a cross-process
480 // navigation.
481 FrameSizeChanged(gfx.mojom.Size size);
Becca Hughesfd5d8f892018-06-14 18:23:36482
483 // Notifies the browser that the current frame has either become or is no
484 // longer fullscreen.
485 FullscreenStateChanged(bool is_fullscreen);
Clark DuValla0e42992018-09-17 17:00:11486
Dave Tapuskad6703f912019-01-31 23:13:11487 // Notifies the browser that the current frame has changed its visibility
488 // status.
489 VisibilityChanged(blink.mojom.FrameVisibility visibility);
490
Dave Tapuskaa42101f2019-06-28 17:12:50491 // Notifies the browser that the current frame has changed its lifecycle
492 // state.
493 LifecycleStateChanged(blink.mojom.FrameLifecycleState state);
494
Clark DuValla0e42992018-09-17 17:00:11495 // Updates information to determine whether a user gesture should carryover to
496 // future navigations. This is needed so navigations within a certain
497 // timeframe of a request initiated by a gesture will be treated as if they
498 // were initiated by a gesture too, otherwise the navigation may be blocked.
499 [EnableIf=is_android]
500 UpdateUserGestureCarryoverInfo();
Lowell Manners9499addc2019-03-12 11:05:32501
502 // Sent after the onload handler has been invoked for the document
503 // in this frame. Sent for top-level frames.
504 DocumentOnLoadCompleted();
Alexander Timin50be4492019-04-17 23:07:59505
506 // Sent by the blink's FrameScheduler when a list of active features
507 // the scheduler tracks changes.
508 // See blink::scheduler::SchedulingPolicy::Feature for the meaning
509 // of the individual bits.
510 // TODO(altimin): Move into a separate scheduling interface.
511 UpdateActiveSchedulerTrackedFeatures(uint64 features_mask);
Lowell Mannersf03ea5a2019-04-23 11:47:58512
513 // Blink and JavaScript error messages to log to the console or debugger UI.
514 DidAddMessageToConsole(
515 blink.mojom.ConsoleMessageLevel log_level,
516 mojo_base.mojom.BigString16 msg,
517 int32 line_number,
518 mojo_base.mojom.String16 source_id);
519
Lowell Mannersc39e58272019-05-20 15:46:38520 // Sent when the renderer fails a provisional load with an error.
521 //
522 // |url| is the URL that the error is reported for.
523 //
524 // |error_code| is a net::Error code as reported in the
525 // DidFailProvisionalLoad callback.
526 //
527 // |error_description| is an error message generated from the error_code.
528 // This can be an empty string if we were unable to find a meaningful
529 // description.
530 //
531 // |showing_repost_interstitial| is true if the failure is the result of
532 // navigating to a POST again and we're going to show the POST interstitial.
533 // TODO(https://crbug.com/963806): Delete this method.
534 DidFailProvisionalLoadWithError(
535 url.mojom.Url url,
536 int32 error_code,
537 mojo_base.mojom.String16 error_description,
538 bool showing_repost_interstitial);
539
540 // Sent when the renderer fails to load with an error.
541 DidFailLoadWithError(
542 url.mojom.Url url,
543 int32 error_code,
544 mojo_base.mojom.String16 error_description);
Lowell Manners07a8cac2019-06-04 16:48:07545
546 // Sent to the browser process to transfer the user activation state from the
547 // source frame to the frame sending this IPC. The browser will update the
548 // user activation state of the frames in the frame tree in the non-source and
549 // non-target renderer processes.
550 TransferUserActivationFrom(int32 source_routing_id);
Lowell Manners88da5ec2019-06-18 09:46:17551
552 // Causes a window previously opened via RenderMessageFilter::CreateNewWindow
553 // to be shown on the screen. This message is routed to the preexisting frame
554 // that opened the window, and |pending_widget_routing_id| corresponds to the
555 // widget routing id from the CreateNewWindow reply.
556 ShowCreatedWindow(int32 pending_widget_routing_id,
557 ui.mojom.WindowOpenDisposition disposition,
558 gfx.mojom.Rect rect, bool opened_by_user_gesture);
Lowell Mannersa9530382019-08-01 09:46:57559
560 // Sent by the renderer when the frame becomes focused.
561 FrameFocused();
Hajime Hoshia2f68032019-08-05 13:22:38562
563 // Evicts the page from the back/forward cache due to e.g., JavaScript
564 // execution.
565 EvictFromBackForwardCache();
ben76f52b242016-06-18 05:42:48566};