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