| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // 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/time.mojom"; |
| import "services/network/public/mojom/network_types.mojom"; |
| import "third_party/blink/public/mojom/user_agent/user_agent_metadata.mojom"; |
| import "ui/gfx/geometry/mojom/geometry.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 { |
| bool is_dark_mode; |
| bool forced_colors; |
| // uint32 represents a SkColor in the map. |
| map<SystemThemeColor, uint32> colors; |
| }; |
| |
| // The background state for the render process. When backgrounded the process's |
| // priority will be lower (via base::Process::SetProcessBackgrounded()) if |
| // allowed on the current platform (as determined by |
| // base::Process::CanBackgroundProcesses()). |
| enum RenderProcessBackgroundState { |
| // The renderer process has not been backgrounded, a hidden renderer may still |
| // be foregrounded, e.g. when it is playing audio. |
| kForegrounded, |
| // The renderer process has been backgrounded, a visible renderer may still |
| // be backgrounded, e.g. when it is hosting only low priority frames. |
| kBackgrounded, |
| }; |
| |
| // 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); |
| |
| // 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); |
| |
| // 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. |
| SetUserAgent(string user_agent); |
| |
| // Sets the user agent metadata. This will replace `SetUserAgent()` if we |
| // decide to ship https://github.com/WICG/ua-client-hints. |
| SetUserAgentMetadata(blink.mojom.UserAgentMetadata metadata); |
| |
| // Sets the CORS exempt header list for sanity checking (e.g. DCHECKs). |
| SetCorsExemptHeaderList(array<string> list); |
| |
| // 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, string highlight_text_color, |
| string highlight_color); |
| |
| // 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 process of a change in visibility or background state. |
| SetProcessState(RenderProcessBackgroundState background_state, |
| RenderProcessVisibleState visible_state); |
| |
| // Tells the scheduler about "keep-alive" state which can be due to: |
| // service workers, shared workers, or fetch keep-alive. |
| // If set to true, then the scheduler should not freeze the renderer. |
| SetSchedulerKeepActive(bool keep_active); |
| |
| // 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. This is called earlier than any frame commit. |
| SetIsCrossOriginIsolated(bool value); |
| }; |