blob: 6990b84ec9c52836302afdfdea4b791c87e2db7e [file] [log] [blame]
// 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);
};