| // Copyright 2016 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module content.mojom; |
| |
| import "content/common/agent_scheduling_group.mojom"; |
| import "content/common/native_types.mojom"; |
| import "ipc/ipc.mojom"; |
| import "mojo/public/mojom/base/generic_pending_receiver.mojom"; |
| import "mojo/public/mojom/base/process_priority.mojom"; |
| import "mojo/public/mojom/base/shared_memory.mojom"; |
| import "mojo/public/mojom/base/time.mojom"; |
| import "services/network/public/mojom/network_types.mojom"; |
| import "third_party/blink/public/mojom/browser_interface_broker.mojom"; |
| import "third_party/blink/public/mojom/origin_trials/origin_trials_settings.mojom"; |
| import "third_party/blink/public/mojom/user_agent/user_agent_metadata.mojom"; |
| import "url/mojom/url.mojom"; |
| |
| struct UpdateScrollbarThemeParams { |
| // TODO(avi): Update these to optional values when optional numeric types are |
| // allowed. (https://crbug.com/657632) |
| bool has_initial_button_delay; |
| float initial_button_delay; |
| bool has_autoscroll_button_delay; |
| float autoscroll_button_delay; |
| |
| bool jump_on_track_click; |
| ScrollerStyle preferred_scroller_style; |
| bool redraw; |
| |
| bool scroll_view_rubber_banding; |
| }; |
| |
| struct UpdateSystemColorInfoParams { |
| // Accent color used by the system. Currently only set on ChromeOS. |
| uint32? accent_color; |
| }; |
| |
| // The visibility state for the renderer process, indicating whether or not any |
| // of the frames associated with the renderer process are visible. |
| enum RenderProcessVisibleState { |
| kVisible, |
| kHidden, |
| }; |
| |
| // The primordial Channel-associated interface implemented by a render process. |
| // This should be used for implementing browser-to-renderer control messages |
| // which need to retain FIFO with respect to legacy IPC messages. |
| interface Renderer { |
| // Tells the renderer to create a new AgentSchedulingGroup, and initialize its |
| // legacy IPC Channel using the pipe provided by `bootstrap`. The channel will |
| // later be used to bind the mojom::AgentSchedulingGroup receiver, that |
| // listens to messages sent by the host. |
| // This will create an "independent" agent scheduling group that is not |
| // associated with the process-wide or other groups' IPC channels, meaning |
| // there is no guaranteed ordering between them. |
| CreateAgentSchedulingGroup( |
| pending_receiver<IPC.mojom.ChannelBootstrap> bootstrap); |
| |
| // Tells the renderer to create a new AgentSchedulingGroup, that will |
| // listen to messages sent by the host via the pending |
| // |agent_scheduling_group|. |
| // This will create an agent scheduling group that is associated with the |
| // process-wide IPC channel, preserving message ordering across different |
| // agent scheduling groups. |
| CreateAssociatedAgentSchedulingGroup( |
| pending_associated_receiver<AgentSchedulingGroup> agent_scheduling_group); |
| |
| // Transfers the ReadOnlySharedMemoryRegion which is used to communicate the |
| // `std::atomic<base::TimeTicks>` representing the time at which this renderer |
| // was last upgraded to run at foreground priority or a null TimeTicks if it's |
| // currently running at best-effort priority. |
| TransferSharedLastForegroundTime( |
| mojo_base.mojom.ReadOnlySharedMemoryRegion last_foreground_time_region); |
| |
| // Tells the renderer that the network type has changed so that |
| // navigator.onLine and navigator.connection can be updated. |
| OnNetworkConnectionChanged(NetworkConnectionType connection_type, |
| double max_bandwidth_mbps); |
| |
| // Tells the renderer process that the network quality estimate has changed. |
| // EffectiveConnectionType is the connection type whose typical performance is |
| // most similar to the measured performance of the network in use. |
| // The downstream throughput is computed in kilobits per second. If an |
| // estimate of the HTTP or transport RTT is unavailable, it will be set to |
| // net::nqe::internal::InvalidRTT(). If the throughput estimate is |
| // unavailable, it will be set to net::nqe::internal::INVALID_RTT_THROUGHPUT. |
| OnNetworkQualityChanged( |
| network.mojom.EffectiveConnectionType effective_connection_type, |
| mojo_base.mojom.TimeDelta http_rtt, |
| mojo_base.mojom.TimeDelta transport_rtt, |
| double bandwidth_kbps); |
| |
| // Tells the renderer to suspend/resume the webkit timers. Only for use on |
| // Android. |
| SetWebKitSharedTimersSuspended(bool suspend); |
| |
| // Tells the renderer about a scrollbar appearance change. Only for use on |
| // OS X. |
| UpdateScrollbarTheme(UpdateScrollbarThemeParams params); |
| |
| // Notification that the OS X Aqua color preferences changed. |
| OnSystemColorsChanged(int32 aqua_color_variant); |
| |
| // Tells the renderer process the new system color info. |
| UpdateSystemColorInfo(UpdateSystemColorInfoParams params); |
| |
| // Tells the renderer to empty its plugin list cache, optional reloading |
| // pages containing plugins. |
| PurgePluginListCache(bool reload_pages); |
| |
| // Tells the renderer to purge its in-memory resource cache. |
| PurgeResourceCache() => (); |
| |
| // Tells the renderer process of a change in visibility or priority state. |
| SetProcessState(mojo_base.mojom.ProcessPriority process_priority, |
| RenderProcessVisibleState visible_state); |
| |
| // Tells the renderer process that it has been locked to a site (i.e., a |
| // scheme plus eTLD+1, such as https://google.com), or to a more specific |
| // origin. |
| SetIsLockedToSite(); |
| |
| // Write out the accumulated code profiling profile to the configured file. |
| // The callback is invoked once the profile has been flushed to disk. |
| [EnableIf=clang_profiling_inside_sandbox] |
| WriteClangProfilingProfile() => (); |
| |
| // Set whether this renderer process is "cross-origin isolated". This |
| // corresponds to agent cluster's "cross-origin isolated" concept. |
| // TODO(yhirano): Have the spec URL. |
| // This property is process global because we ensure that a renderer process |
| // host only cross-origin isolated agents or only non-cross-origin isolated |
| // agents, not both. |
| // This is called at most once, prior to committing a navigation. |
| SetIsCrossOriginIsolated(bool value); |
| |
| // Sets whether `--disable-web-security` has been set. |
| // |
| // This is called at most once on process startup. |
| SetIsWebSecurityDisabled(bool value); |
| |
| // Set whether this renderer process is allowed to use Isolated Context APIs. |
| // Similarly to the `SetIsCrossOriginIsolated()` method above, this flag is |
| // process global, and called at most once, prior to committing a navigation. |
| // |
| // TODO(crbug.com/40180791): We need a specification for this restriction. |
| SetIsIsolatedContext(bool value); |
| |
| // Sets the mapping from WebUI resource URLs to the resource ID of their |
| // corresponding bundled bytecode cache. This is called once after a |
| // renderer's process lock has been set. |
| SetWebUIResourceUrlToCodeCacheMap(map<url.mojom.Url, int32> resource_map); |
| |
| // Initialize renderer user agent string, user agent metadata, CORS exempt |
| // header list and origin trials settings on renderer startup. |
| // |
| // |user_agent| sets the user-agent string. This is needed because getting the |
| // value in the renderer from the system leads to a wrong value due to |
| // sandboxing. This must be called as early as possible, during the renderer |
| // process initialization. |
| // |
| // |metadata| sets the user agent metadata. This will replace `SetUserAgent()` |
| // if we decide to ship https://github.com/WICG/ua-client-hints. |
| // |
| // |cors_exempt_header_list| sets the CORS exempt header list for sanity |
| // checking (e.g. DCHECKs). |
| // |
| // |origin_trials_settings| sets the settings used to build a |
| // blink::OriginTrialPolicy for the renderer. It can be null if the embedder |
| // does not support origin trials. |
| // |
| // |trace_id| allows us to trace this IPC from the browser to the renderer. |
| InitializeRenderer(string user_agent, |
| blink.mojom.UserAgentMetadata metadata, |
| array<string> cors_exempt_header_list, |
| blink.mojom.OriginTrialsSettings? origin_trials_settings, |
| uint64 trace_id); |
| }; |