1// 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
7import "content/common/document_scoped_interface_bundle.mojom";
8import "content/common/frame_messages.mojom";
9import "content/common/native_types.mojom";
10import "content/common/navigation_client.mojom";
11import "content/common/navigation_params.mojom";
12import "content/common/web_ui.mojom";
13import "content/public/common/browser_controls_state.mojom";
14import "content/public/common/window_container_type.mojom";
15import "mojo/public/mojom/base/file_path.mojom";
16import "mojo/public/mojom/base/string16.mojom";
17import "mojo/public/mojom/base/unguessable_token.mojom";
18import "mojo/public/mojom/base/values.mojom";
19import "services/network/public/mojom/content_security_policy.mojom";
20import "services/network/public/mojom/web_sandbox_flags.mojom";
21import "services/network/public/mojom/url_loader.mojom";
22import "services/network/public/mojom/url_loader_factory.mojom";
23import "services/network/public/mojom/url_response_head.mojom";
24import "services/service_manager/public/mojom/interface_provider.mojom";
25import "services/viz/public/mojom/compositing/frame_sink_id.mojom";
26import "services/viz/public/mojom/compositing/surface_id.mojom";
27import "third_party/blink/public/mojom/blob/blob_url_store.mojom";
28import "third_party/blink/public/mojom/browser_interface_broker.mojom";
29import "third_party/blink/public/mojom/commit_result/commit_result.mojom";
30import "third_party/blink/public/mojom/devtools/console_message.mojom";
31import "third_party/blink/public/mojom/devtools/devtools_agent.mojom";
32import "third_party/blink/public/mojom/feature_policy/document_policy_feature.mojom";
33import "third_party/blink/public/mojom/feature_policy/feature_policy.mojom";
34import "third_party/blink/public/mojom/feature_policy/feature_policy_feature.mojom";
35import "third_party/blink/public/mojom/feature_policy/policy_value.mojom";
36import "third_party/blink/public/mojom/frame/frame_owner_element_type.mojom";
37import "third_party/blink/public/mojom/frame/frame_owner_properties.mojom";
38import "third_party/blink/public/mojom/frame/frame_policy.mojom";
39import "third_party/blink/public/mojom/frame/lifecycle.mojom";
40import "third_party/blink/public/mojom/frame/navigation_initiator.mojom";
41import "third_party/blink/public/mojom/frame/policy_container.mojom";
42import "third_party/blink/public/mojom/frame/tree_scope_type.mojom";
43import "third_party/blink/public/mojom/loader/resource_load_info.mojom";
44import "third_party/blink/public/mojom/loader/url_loader_factory_bundle.mojom";
45import "third_party/blink/public/mojom/messaging/transferable_message.mojom";
46import "third_party/blink/public/mojom/page/page.mojom";
47import "third_party/blink/public/mojom/page/widget.mojom";
48import "third_party/blink/public/mojom/portal/portal.mojom";
49import "third_party/blink/public/mojom/loader/referrer.mojom";
50import "third_party/blink/public/mojom/service_worker/controller_service_worker.mojom";
51import "third_party/blink/public/mojom/service_worker/service_worker_container.mojom";
52import "third_party/blink/public/mojom/tokens/tokens.mojom";
53import "third_party/blink/public/mojom/widget/visual_properties.mojom";
54import "third_party/blink/public/mojom/window_features/window_features.mojom";
55import "ui/accessibility/mojom/ax_tree_update.mojom";
56import "ui/base/mojom/window_open_disposition.mojom";
57import "ui/gfx/geometry/mojom/geometry.mojom";
58import "url/mojom/origin.mojom";
59import "url/mojom/url.mojom";
60
61[Native]
62struct PageState;
63
64// The name of the InterfaceProviderSpec in service manifests used by the
65// frame tree to expose frame-specific interfaces between renderer and browser.
66const string kNavigation_FrameSpec = "navigation:frame";
67
68// Provided with each call to Frame::GetSerializedHtmlWithLocalLinks() so that
69// the renderer can notify the browser process each time that a chunk of HTML
70// data gets serialized, as well as when the entire process is finished.
71interface FrameHTMLSerializerHandler {
72  // Sent by the renderer as a response to GetSerializedHtmlWithLocalLinks() to
73  // indicate that HTML data has been serialized, included in |data_buffer|.
74  DidReceiveData(string data_buffer);
75
76  // Reports that the serialization process is finished. It is expected to
77  // receive this message right after the last time DidReceiveData() is called.
78  Done();
79};
80
81// Implemented by the frame provider (e.g. renderer processes).
82interface Frame {
83  GetInterfaceProvider(
84      pending_receiver<service_manager.mojom.InterfaceProvider> interfaces);
85  GetCanonicalUrlForSharing() => (url.mojom.Url? canonical_url);
86
87  // Causes all new subresource requests to be blocked (not being started) until
88  // ResumeBlockedRequests is called.
89  BlockRequests();
90
91  // Resumes blocked requests.
92  // It is safe to call this without calling BlockRequests.
93  ResumeBlockedRequests();
94
95  // Samsung Galaxy Note-specific "smart clip" stylus text getter.
96  // Extracts the data at the given rect.
97  [EnableIf=is_android]
98  ExtractSmartClipData(gfx.mojom.Rect rect)
99      => (mojo_base.mojom.String16 text, mojo_base.mojom.String16 html,
100              gfx.mojom.Rect clip_rect);
101
102  // Notifies the renderer whether hiding/showing the browser controls is
103  // enabled, what the current state should be, and whether or not to
104  // animate to the proper state.
105  UpdateBrowserControlsState(BrowserControlsState constraints,
106                             BrowserControlsState current,
107                             bool animate);
108
109  // Requests a one-time snapshot of the accessibility tree without enabling
110  // accessibility if it wasn't already enabled.
111  // See ui/accessibility/ax_mode.h for valid values of |ax_mode|.
112  //
113  // TODO(crbug.com/1141990): AXTreeUpdate can be quite large, hence the
114  // [UnlimitedSize] tag. It may be possible to remove this if AXTreeUpdate
115  // can be reworked to avoid very large serialized values.
116  SnapshotAccessibilityTree(uint32 ax_mode)
117      => (ax.mojom.AXTreeUpdate snapshot);
118
119  // Get HTML data by serializing the target frame and replacing all resource
120  // links with a path to the local copy passed in the message payload. In order
121  // to report progress to the the browser process, a pending remote is passed
122  // via |callback_remote|, so that direct communication with the SavePackage
123  // object that initiated the process can be established.
124  GetSerializedHtmlWithLocalLinks(
125      map<url.mojom.Url, mojo_base.mojom.FilePath> url_map,
126      map<mojo_base.mojom.UnguessableToken, mojo_base.mojom.FilePath>
127          frame_token_map, bool save_with_empty_url,
128          pending_remote<FrameHTMLSerializerHandler> handler_remote);
129};
130
131// Implemented by the frame provider and currently must be associated with the
132// legacy IPC channel.
133// KEEP THE COMMIT FUNCTIONS IN SYNC in content/common/navigation_client.mojom.
134// These will eventually be removed from FrameNavigationControl.
135interface FrameNavigationControl {
136  // Tells the renderer that a same-document navigation should be committed.
137  // The renderer will return a status value indicating whether the commit
138  // could proceed as expected or not. In particular, it might be necessary to
139  // restart the navigation if it is no-longer same-document, which can happen
140  // if the renderer committed another navigation in the meantime.
141  CommitSameDocumentNavigation(
142      CommonNavigationParams common_params,
143      CommitNavigationParams request_params)
144      => (blink.mojom.CommitResult commit_result);
145
146  // Asks the renderer to handle a renderer-debug URL.
147  HandleRendererDebugURL(url.mojom.Url url);
148
149  // Provides the renderer an updated |subresource_loader_factories|.
150  //
151  // This method is intended to fix broken loaders after a Network Service
152  // crash, and is only used when Network Service is enabled.
153  //
154  // The new bundle contains replacement factories for a subset of the
155  // receiver's existing bundle.
156  UpdateSubresourceLoaderFactories(
157      blink.mojom.URLLoaderFactoryBundle subresource_loader_factories);
158
159  // Returns a DevToolsAgent interface for this frame, used for
160  // remote debugging. See DevToolsAgent for details.
161  // Returned DevToolsAgent must be associated with navigation control,
162  // due to various ordering dependencies between DevTools protocol and
163  // navigation.
164  BindDevToolsAgent(
165      pending_associated_remote<blink.mojom.DevToolsAgentHost> agent_host,
166      pending_associated_receiver<blink.mojom.DevToolsAgent> agent);
167
168  // Request for the renderer to execute a given JavaScript method on a given
169  // object (both identified by name) in the frame's context.
170  //
171  // |object_name| is the global name of the object.
172  //
173  // |method_name| is the name of the method on the object.
174  //
175  // |arguments| is the list of arguments to pass to the method invocation.
176  //
177  // |wants_result| is true if the result of this execution is required by the
178  // caller. If it is false, a reply is still required by Mojo, but a null value
179  // should be returned to avoid issues serializing a large, unwanted reply.
180  JavaScriptMethodExecuteRequest(
181      mojo_base.mojom.String16 object_name,
182      mojo_base.mojom.String16 method_name,
183      mojo_base.mojom.ListValue arguments,
184      bool wants_result) => (mojo_base.mojom.Value result);
185
186  // Request for the renderer to execute JavaScript in the frame's context.
187  //
188  // |javascript| is the string containing the JavaScript to be executed in the
189  // target frame's context. Note that this uses BigString16 rather than
190  // String16 as this is used in contexts, like DevTools, where the contents of
191  // the JavaScript script is user-provided, and therefore we can't guarantee
192  // the size of the script.
193  //
194  // |wants_result| is true if the result of this execution is required by the
195  // caller. If it is false, a reply is still required by Mojo, but a null value
196  // should be returned to avoid issues serializing a large, unwanted reply.
197  //
198  // TODO(hajimehoshi): This requires navigate association to keep the message
199  // order with other navigation-related messages. Fix this and move this to a
200  // non-navigate-related interface if possible.
201  JavaScriptExecuteRequest(
202      mojo_base.mojom.BigString16 javascript,
203      bool wants_result) => (mojo_base.mojom.Value result);
204
205  // ONLY FOR TESTS: Same as above but this can optionally trigger a fake user
206  // activation notification to test functionalities that are gated by user
207  // activation.
208  JavaScriptExecuteRequestForTests(
209      mojo_base.mojom.BigString16 javascript,
210      bool wants_result,
211      bool has_user_gesture,
212      int32 world_id)
213      => (mojo_base.mojom.Value result);
214
215  // Same as JavaScriptExecuteRequest above except the script is run in the
216  // isolated world specified by the fourth parameter.
217  JavaScriptExecuteRequestInIsolatedWorld(
218      mojo_base.mojom.BigString16 javascript,
219      bool wants_result,
220      int32 world_id) => (mojo_base.mojom.Value result);
221
222  // Requests that a provisional RenderFrame swap itself into the frame tree,
223  // replacing the RenderFrameProxy that it is associated with. This is used
224  // with remote-to-local frame navigations when the RenderFrameProxy
225  // corresponds to a non-live (crashed) frame. In that case, the browser
226  // process will send this message as part of an early commit to stop showing
227  // the sad iframe without waiting for the provisional RenderFrame's navigation
228  // to commit.
229  SwapIn();
230};
231
232// Implemented by the frame (e.g. renderer processes).
233// Instances of this interface must be associated with (i.e., FIFO with) the
234// legacy IPC channel.
235interface FrameBindingsControl {
236  // Used to tell a render frame whether it should expose various bindings
237  // that allow JS content extended privileges. See BindingsPolicy for valid
238  // flag values.
239  AllowBindings(int32 enabled_bindings_flags);
240
241  // Used to tell the RenderFrame to enable Mojo JS bindings, which allows
242  // JS code running in the renderer process to connect to Mojo interfaces
243  // and make method calls on them.
244  // This is used for WebUI only at this time.
245  EnableMojoJsBindings();
246
247  // Used to bind WebUI and WebUIHost mojo connections.
248  BindWebUI(pending_receiver<content.mojom.WebUI> receiver,
249            pending_remote<content.mojom.WebUIHost> remote);
250};
251
252// Implemented by a service that provides implementations of the Frame
253// interface. (e.g. renderer processes).
254interface FrameFactory {
255  CreateFrame(int32 frame_routing_id, pending_receiver<Frame> frame);
256};
257
258struct CreateNewWindowParams {
259  // True if ContentRendererClient allows popups.  This is the case only for
260  // extensions.
261  bool allow_popup;
262
263  // Type of window requested.
264  WindowContainerType window_container_type;
265
266  // The session storage namespace ID this window should use.
267  string session_storage_namespace_id;
268
269  // The session storage namespace ID this window should clone from.
270  // TODO(dmurph): Remove this once session storage is fully mojo'd, as the
271  // clone call happens on a different interface. https://crbug.com/716490
272  string clone_from_session_storage_namespace_id;
273
274  // The name of the resulting frame that should be created (empty if none
275  // has been specified). UTF8 encoded string.
276  string frame_name;
277
278  // Whether the opener will be suppressed in the new window, in which case
279  // scripting the new window is not allowed.
280  bool opener_suppressed;
281
282  // Whether the window should be opened in the foreground, background, etc.
283  ui.mojom.WindowOpenDisposition disposition;
284
285  // The URL that will be loaded in the new window (empty if none has been
286  // specified).
287  url.mojom.Url target_url;
288
289  // The referrer that will be used to load |target_url| (empty if none has
290  // been specified).
291  blink.mojom.Referrer referrer;
292
293  // The window features to use for the new window.
294  blink.mojom.WindowFeatures features;
295};
296
297// Operation result when the renderer asks the browser to create a new window.
298enum CreateNewWindowStatus {
299  // Ignore creation of the new window. This can happen because creation is
300  // blocked or because the new window should have no opener relationship.
301  kIgnore,
302  // Reuse the current window rather than creating a new window.
303  kReuse,
304  // Create a new window using the corresponding params in |reply|.
305  kSuccess,
306};
307
308// All routing IDs in this struct must be set to a valid routing ID.
309struct CreateNewWindowReply {
310  // The ID of the view to be created.
311  int32 route_id;
312
313  // The ID of the main frame hosted in the view.
314  int32 main_frame_route_id;
315
316  // The unique identifier of the RenderFrameHost
317  mojo_base.mojom.UnguessableToken main_frame_frame_token;
318
319  // The ID of the widget for the main frame.
320  int32 main_frame_widget_route_id;
321
322  // Initial properties for the main frame RenderWidget.
323  blink.mojom.VisualProperties visual_properties;
324
325  // The communication interfaces for the WebFrameWidget in blink.
326  pending_associated_remote<blink.mojom.FrameWidgetHost> frame_widget_host;
327  pending_associated_receiver<blink.mojom.FrameWidget> frame_widget;
328  pending_associated_remote<blink.mojom.WidgetHost> widget_host;
329  pending_associated_receiver<blink.mojom.Widget> widget;
330
331  // The communication interfaces for the PageBroadcast.
332  pending_associated_receiver<blink.mojom.PageBroadcast> page_broadcast;
333
334  DocumentScopedInterfaceBundle main_frame_interface_bundle;
335
336  // Duplicated from CreateNewWindowParams because legacy code.
337  string cloned_session_storage_namespace_id;
338
339  // Used for devtools instrumentation and trace-ability. The token is
340  // propagated to Blink's LocalFrame and both Blink and content/
341  // can tag calls and requests with this instrumentation token in order to
342  // attribute them to the context frame.
343  // |devtools_frame_token| is only defined by the browser and is never
344  // sent back from the renderer in the control calls.
345  mojo_base.mojom.UnguessableToken devtools_main_frame_token;
346
347  // Used by devtools instrumentation to tell devtools agent in the renderer
348  // that it should pause created window and wait for an explicit resume command
349  // from the client.
350  bool wait_for_debugger;
351
352  // The policy container for the new frame that will be created by Blink in
353  // response.
354  blink.mojom.PolicyContainer policy_container;
355};
356
357[Native]
358enum TriggeringEventInfo;
359
360// This struct holds parameters included in the OpenURL method sent by the
361// renderer to the browser, |is_history_navigation_in_new_child_frame| is true
362// in the case that the browser process should look for an existing history item
363// for the frame.
364struct OpenURLParams {
365  // The main URL to open.
366  url.mojom.Url url;
367  url.mojom.Origin initiator_origin;
368  int32 initiator_routing_id;
369  network.mojom.URLRequestBody? post_body;
370  string extra_headers;
371  blink.mojom.Referrer referrer;
372
373  // The window position to open the URL.
374  ui.mojom.WindowOpenDisposition disposition;
375  bool should_replace_current_entry;
376  bool user_gesture;
377
378  // Extra information about the triggering of the OpenURL.
379  TriggeringEventInfo triggering_event_info;
380  handle<message_pipe>? blob_url_token;
381  string href_translate;
382  Impression? impression;
383  NavigationDownloadPolicy download_policy;
384};
385
386// An opaque handle that keeps alive the associated render process even after
387// the frame is detached. Used by resource requests with "keepalive" specified.
388interface KeepAliveHandle {};
389
390// Implemented by the frame server (i.e. the browser process). For messages that
391// must be associated with the IPC channel.
392interface FrameHost {
393  // Sent by the renderer to request the browser to create a new window. |reply|
394  // is only non-null on when status == CreateNewWindowStatus::kSuccess.
395  [Sync] CreateNewWindow(CreateNewWindowParams params)
396      => (CreateNewWindowStatus status, CreateNewWindowReply? reply);
397
398  // Sent by the renderer process to request the creation of a new portal.
399  // |portal| is the pipe to be used for the Portal object, |client| is the pipe
400  // used to communicate back with the caller. Returns:
401  // |proxy_routing_id| - the routing id of the RenderFrameProxy
402  // |initial_replicated_state| - the replicated state associated with that
403  //                              RenderFrameProxy
404  // |portal_token| - the unique identifier for the portal
405  // |frame_token| - the unique identifier of the RenderFrameProxy
406  // |devtools_frame_token| - the unique identifier of the frame node in the
407  //                          frame tree
408  [Sync] CreatePortal(
409      pending_associated_receiver<blink.mojom.Portal> portal,
410      pending_associated_remote<blink.mojom.PortalClient> client)
411      => (int32 proxy_routing_id,
412          FrameReplicationState initial_replicated_state,
413          blink.mojom.PortalToken portal_token,
414          mojo_base.mojom.UnguessableToken frame_token,
415          mojo_base.mojom.UnguessableToken devtools_frame_token);
416
417  // Requests that this frame adopts the portal identified by |portal_token|.
418  // Returns:
419  // |proxy_routing_id| - the routing id of the portal's RenderFrameProxy
420  // |replicated_state| - the replicated state associated with that
421  //                      RenderFrameProxy
422  // |frame_token| - the unique identifier of the RenderFrameProxy
423  // |devtools_frame_token| - the unique identifier of the frame node in the
424  //                          frame tree
425  [Sync] AdoptPortal(blink.mojom.PortalToken portal_token)
426      => (int32 proxy_routing_id,
427          viz.mojom.FrameSinkId frame_sink_id,
428          FrameReplicationState replicated_state,
429          mojo_base.mojom.UnguessableToken frame_token,
430          mojo_base.mojom.UnguessableToken devtools_frame_token);
431
432
433  // Similar to CreateNewWindow, except used for sub-widgets, like <select>
434  // dropdowns. Upon return, the renderer side popup will be owned by the
435  // PopupWidgetHost.
436  CreateNewPopupWidget(
437         pending_associated_receiver<blink.mojom.PopupWidgetHost> popup_host,
438         pending_associated_receiver<blink.mojom.WidgetHost> blink_widget_host,
439         pending_associated_remote<blink.mojom.Widget> blink_widget);
440
441  // Asynchronously creates a child frame. A routing ID must be allocated first
442  // by calling RenderMessageFilter::GenerateFrameRoutingID()
443  // Each of these messages will have a corresponding mojom::FrameHost::Detach
444  // API sent when the frame is detached from the DOM.
445  CreateChildFrame(int32 child_routing_id,
446                   pending_receiver<service_manager.mojom.InterfaceProvider>
447                     new_interface_provider,
448                   pending_receiver<blink.mojom.BrowserInterfaceBroker>
449                     browser_interface_broker,
450                   blink.mojom.TreeScopeType scope,
451                   string frame_name,
452                   string frame_unique_name,
453                   bool is_created_by_script,
454                   blink.mojom.FramePolicy frame_policy,
455                   blink.mojom.FrameOwnerProperties frame_owner_properties,
456                   blink.mojom.FrameOwnerElementType frame_owner_element_type);
457
458  // Creates and returns a KeepAliveHandle.
459  IssueKeepAliveHandle(pending_receiver<KeepAliveHandle> keep_alive_handle);
460
461  // Sent by the renderer when a navigation commits in the frame.
462
463  // If |interface_params| is non-empty, the FrameHost implementation
464  // must unbind the old InterfaceProvider and BrowserInterfaceBroker
465  // connections, and drop any interface requests pending on them.
466  // Then it should bind the appropriate requests and start servicing
467  // GetInterface messages coming in on these new connections
468  // in a security context that is appropriate for the committed navigation.
469  //
470  // The FrameHost implementation must enforce that |interface_params|
471  // is set for cross-document navigations. This prevents origin confusion by
472  // ensuring that interface requests racing with navigation commit will be
473  // either ignored, or serviced correctly in the security context of the
474  // document they originated from (based on which InterfaceProvider or
475  // BrowserInterfaceBroker connection the GetInterface messages arrive on).
476  DidCommitProvisionalLoad(
477      DidCommitProvisionalLoadParams params,
478      DidCommitProvisionalLoadInterfaceParams? interface_params);
479
480  // Sent by the renderer to indicate that a same document navigation
481  // committed in the renderer process.
482  DidCommitSameDocumentNavigation(
483      DidCommitProvisionalLoadParams params);
484
485  // Sent by the renderer to request a navigation.
486  // |blob_url_token| should be non-null when this is a navigation to a blob:
487  // URL. The token will then be used to look up the blob associated with the
488  // blob URL. Without this by the time the navigation code starts fetching
489  // the URL the blob URL might no longer be valid. |blob_url_token| is
490  // not part of BeginNavigationParams because that struct needs to be
491  // cloneable, and thus can't contain mojo interfaces.
492  // If an invalid BlobURLToken is passed in, or if the token doesn't match the
493  // url in |common_params|, the navigation will result in a network error.
494  // |navigation_client| is passed to the renderer to allow for further control
495  // of the navigation. Allows for Commit and Cancels/Aborts. It is only valid
496  // when PerNavigationMojoInterface is enabled.
497  // TODO(ahemery): |navigation_client| should not be optional. Make it
498  // mandatory when removing PerNavigationMojoInterface feature flag.
499  BeginNavigation(
500      CommonNavigationParams common_params,
501      BeginNavigationParams begin_params,
502      pending_remote<blink.mojom.BlobURLToken>? blob_url_token,
503      pending_associated_remote<NavigationClient>? navigation_client,
504      pending_remote<blink.mojom.NavigationInitiator>? navigation_initiator);
505
506  // Sent when a subresource response has started.
507  // |cert_status| is the bitmask of status info of the SSL certificate. (see
508  // net/cert/cert_status_flags.h).
509  SubresourceResponseStarted(url.mojom.Url url, uint32 cert_status);
510
511  // Sent when a resource load finished, successfully or not.
512  ResourceLoadComplete(blink.mojom.ResourceLoadInfo url_load_info);
513
514  // Sent when the frame changes its window.name.
515  DidChangeName(string name, string unique_name);
516
517  // Notifies the browser process that HTTP headers which affect the frame
518  // polices were delivered with the document being loaded into the frame. This
519  // can be any or all of 'Feature-Policy' or 'Content-Security-Policy' (
520  // which can set sandbox flags) or 'Document-Policy'.
521  //
522  // |feature_policy_header| is a list of an origin whitelist for each feature
523  // in the policy.
524  DidSetFramePolicyHeaders(
525      network.mojom.WebSandboxFlags sandbox_flags,
526      array<blink.mojom.ParsedFeaturePolicyDeclaration> feature_policy_header,
527      map<blink.mojom.DocumentPolicyFeature, blink.mojom.PolicyValue>
528        document_policy_header);
529
530  // If a cross-process navigation was started for the initial history load in
531  // this subframe, this tries to cancel it to allow a client redirect to happen
532  // instead.
533  CancelInitialHistoryLoad();
534
535  // Change the encoding name of the page in UI when the page has detected
536  // proper encoding name. Sent for top-level frames.
537  UpdateEncoding(string encoding_name);
538
539  // The frame's size is replicated in the browser so that the browser can
540  // correctly set the initial size of the frame in case of a cross-process
541  // navigation.
542  FrameSizeChanged(gfx.mojom.Size size);
543
544  // Updates information to determine whether a user gesture should carryover to
545  // future navigations. This is needed so navigations within a certain
546  // timeframe of a request initiated by a gesture will be treated as if they
547  // were initiated by a gesture too, otherwise the navigation may be blocked.
548  [EnableIf=is_android]
549  UpdateUserGestureCarryoverInfo();
550
551  // Blink and JavaScript error messages to log to the console or debugger UI.
552  DidAddMessageToConsole(
553      blink.mojom.ConsoleMessageLevel log_level,
554      mojo_base.mojom.BigString16 msg,
555      int32 line_number,
556      mojo_base.mojom.String16 source_id);
557
558  // Notifies the browser that this frame has new session history information.
559  //
560  // NOTE: PageState can be quite large when serialized, and its message
561  // structure must remain stable; hence [UnlimitedSize] for this message.
562  [UnlimitedSize]
563  UpdateState(PageState state);
564
565  // Requests that the given URL be opened in the specified manner.
566  OpenURL(OpenURLParams params);
567
568  // Called when the renderer is done loading a frame.
569  DidStopLoading();
570};
571