naiveproxy/content/public/common/network_service.mojom
2018-02-02 05:49:39 -05:00

156 lines
6.3 KiB
Plaintext

// Copyright 2017 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 "mojo/common/file_path.mojom";
import "mojo/common/time.mojom";
import "resource_type.mojom";
import "url_loader.mojom";
import "url_loader_factory.mojom";
import "url/mojo/url.mojom";
import "services/network/public/interfaces/cookie_manager.mojom";
import "services/network/public/interfaces/network_change_manager.mojom";
import "services/network/public/interfaces/restricted_cookie_manager.mojom";
[Native]
struct SSLInfo;
// Parameters for constructing a network context.
struct NetworkContextParams {
// Name used by memory tools to identify the context.
string? context_name;
// Whether Brotli content-encoding should be enabled for HTTPS responses.
bool enable_brotli = true;
// QUIC user agent.
string quic_user_agent_id;
// Points to the cookie file. Currently ignored. An in-memory cookie store is
// always used instead.
// TODO(mmenke): Respect this parameter.
mojo.common.mojom.FilePath? cookie_path;
// True if an HTTP cache should be used.
bool http_cache_enabled = true;
// Maximum size of the HTTP cache. 0 means to use the default size.
// Ignored if the cache is disabled.
int32 http_cache_max_size = 0;
// Points to the HTTP cache directory. Ignored if the cache is disabled.
// If null and the cache is enabled, an in-memory database is used.
mojo.common.mojom.FilePath? http_cache_path;
// The file to store cached server properties (Like HTTP2 and QUIC support).
// This information is used as a performance optimization in connection
// logic. If null, an in-memory cache will be used instead.
mojo.common.mojom.FilePath? http_server_properties_path;
// Enabled protocols. Note that these apply to all fetches, including those
// used to fetch PAC scripts.
// True if data URLs should be supported.
bool enable_data_url_support = false;
// True if file URLs should be supported.
// Must be false if built without file support.
bool enable_file_url_support = false;
// True if ftp URLs should be supported.
// Must be false if built without FTP support.
bool enable_ftp_url_support = false;
// Enables HTTP/0.9 on ports other than 80 for HTTP and 443 for HTTPS.
bool http_09_on_non_default_ports_enabled = false;
};
struct NetworkConditions {
// If set, the offline state is simulated and other fields are ignored.
bool offline;
// Channel round-trip latency, i.e. minimum time between request sent and
// response received.
mojo.common.mojom.TimeDelta latency;
// Maximal aggregated download throughput (bytes/sec). 0 disables download throttling.
double download_throughput;
// Maximal aggregated upload throughput (bytes/sec). 0 disables upload throttling.
double upload_throughput;
};
// Represents a distinct context for making network requests, with its own
// storage (e.g. cookies and cache).
interface NetworkContext {
// |process_id| is 0 for requests initiated in the browser process, otherwise
// it's the child process ID.
CreateURLLoaderFactory(URLLoaderFactory& url_loader_factory,
uint32 process_id);
// Handles a request to display cache data to the user. |url| is parsed to
// display different parts of the cache.
HandleViewCacheRequest(url.mojom.Url url,
URLLoaderClient client);
// Gets the CookieManager associated with this network context.
GetCookieManager(network.mojom.CookieManager& cookie_manager);
// TODO(crbug.com/729800): Switch from {process,frame}_id to the network
// service's representation of security principals.
GetRestrictedCookieManager(
network.mojom.RestrictedCookieManager& restricted_cookie_manager,
int32 render_process_id, int32 render_frame_id);
// Clears network objects with implicit URL history information. Data related
// to events that happened prior to |start_time| may be retained. Only applies
// to network objects without more specific methods (Channel ID, Cookies,
// and the cache have, or will have, their own clearing APIs). This currently
// only covers server properties and transport security state.
//
// The callback will be invoked once the data has been deleted.
ClearNetworkingHistorySince(mojo.common.mojom.Time start_time) => ();
// Configures network conditions for the specified throttling profile.
// The throttling will be applied only to requests that have
// X-DevTools-Emulate-Network-Conditions-Client-Id: <profile_id>
// header with matching <profile_id>.
// Passing null NetworkConditions disables the throttling.
// TODO(caseq): get rid of header, make profile_id part of ResourceRequest.
SetNetworkConditions(string profile_id, NetworkConditions? conditions);
};
// Network service interface to the browser.
interface NetworkServiceClient {
// Called when an SSL certificate is encountered.
// The callback argument is a net::ERROR value. If it's net::OK, then the
// request is resumed. Otherwise it's cancelled with the given error.
OnSSLCertificateError(ResourceType resource_type,
url.mojom.Url url,
uint32 process_id,
uint32 routing_id,
SSLInfo ssl_info,
bool fatal) => (int32 net_error);
};
// Browser interface to the network service.
interface NetworkService {
SetClient(NetworkServiceClient client);
// Creates a new network context with the given parameters.
CreateNetworkContext(NetworkContext& context,
NetworkContextParams params);
// Disables QUIC for the NetworkService. Affects all existing NetworkContexts,
// and all new ones that are created. Once called, QUIC cannot be re-enabled.
DisableQuic();
// Specifies whether requests for raw headers coming through URLLoaderFactory
// associated with the specified process will be granted. Granting such a
// permission increases risks in case the child process becomes compromised,
// so this should be done only in specific cases (e.g. DevTools attached).
SetRawHeadersAccess(uint32 process_id, bool allow);
// Gets the NetworkChangeManager.
GetNetworkChangeManager(
network.mojom.NetworkChangeManager& network_change_manager);
};