| Index: content/common/url_loader.mojom
|
| diff --git a/content/common/url_loader.mojom b/content/common/url_loader.mojom
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..27f14c34a5920e00ceb62fc0dca393521fa6956a
|
| --- /dev/null
|
| +++ b/content/common/url_loader.mojom
|
| @@ -0,0 +1,231 @@
|
| +// 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 "url/mojo/origin.mojom";
|
| +import "url/mojo/url.mojom";
|
| +
|
| +enum ReferrerPolicy {
|
| + Always,
|
| + Default,
|
| + NoReferrerWhenDowngrade,
|
| + Never,
|
| + Origin,
|
| + OriginWhenCrossOrigin,
|
| + NoReferrerWhenDowngradeOriginWhenCrossOrigin,
|
| + Last = NoReferrerWhenDowngradeOriginWhenCrossOrigin,
|
| +};
|
| +
|
| +enum ServiceWorkerResponseType {
|
| + Basic,
|
| + CORS,
|
| + Default,
|
| + Error,
|
| + Opaque,
|
| + OpaqueRedirect,
|
| + Last = OpaqueRedirect,
|
| +};
|
| +
|
| +struct URLRequest {
|
| + // The request method: GET, POST, etc.
|
| + string method;
|
| +
|
| + // The requested URL.
|
| + url.mojom.Url url;
|
| +
|
| + // Usually the URL of the document in the top-level window, which may be
|
| + // checked by the third-party cookie blocking policy. Leaving it empty may
|
| + // lead to undesired cookie blocking. Third-party cookie blocking can be
|
| + // bypassed by setting first_party_for_cookies = url, but this should ideally
|
| + // only be done if there really is no way to determine the correct value.
|
| + url.mojom.Url first_party_for_cookies;
|
| +
|
| + // The origin of the context which initiated the request, which will be used
|
| + // for cookie checks like 'First-Party-Only'.
|
| + url.mojom.Origin request_initiator;
|
| +
|
| + // The referrer to use (may be empty).
|
| + url.mojom.Url referrer;
|
| +
|
| + // The referrer policy to use.
|
| + ReferrerPolicy referrer_policy;
|
| +
|
| + // TODO(yhirano): Add more members from ResourceMsg_Request.
|
| +
|
| + // These are needed for compatibility with the existing ChromeIPC.
|
| + int32 request_id;
|
| + int32 routing_id;
|
| +};
|
| +
|
| +struct URLResponse {
|
| + // TimeTicks::Now() when the browser received the request from the renderer.
|
| + int64 request_start;
|
| + // TimeTicks::Now() when the browser sent the response to the renderer.
|
| + int64 response_start;
|
| +
|
| + // The time at which the request was made that resulted in this response.
|
| + // For cached responses, this time could be "far" in the past.
|
| + int64 request_time;
|
| +
|
| + // The time at which the response headers were received. For cached responses,
|
| + // this time could be "far" in the past.
|
| + int64 response_time;
|
| +
|
| + // The HTTP response headers.
|
| + string? headers;
|
| +
|
| + // The HTTP response body.
|
| + handle<data_pipe_consumer>? body;
|
| +
|
| + // The MIME type of the response body.
|
| + string mime_type;
|
| +
|
| + // The character set of the response body.
|
| + string charset;
|
| +
|
| + // An opaque string carrying security information pertaining to this
|
| + // response. This may include information about the SSL connection used.
|
| + string security_info;
|
| +
|
| + // True if the resource was loaded in spite of certificate errors.
|
| + bool has_major_certificate_errors;
|
| +
|
| + // Content length if available.
|
| + int64 content_length;
|
| +
|
| + // Length of the encoded data transferred over the network.
|
| + int64 encoded_data_length;
|
| +
|
| + // The appcache this response was loaded from.
|
| + int64 appcache_id;
|
| +
|
| + // The appcache this response was loaded from.
|
| + url.mojom.Url appcache_manifest_url;
|
| +
|
| + // Detailed timing information used by the WebTiming, HAR and Developer
|
| + // Tools. Includes socket ID and socket reuse information.
|
| + // TODO(yhirano): Add this.
|
| + // LoadTimingInfo load_timing;
|
| +
|
| + // Actual request and response headers, as obtained from the network stack.
|
| + // Only present if renderer set report_raw_headers to true and had the
|
| + // CanReadRawCookies permission.
|
| + // TODO(yhirano): Add this.
|
| + // ResourceDevToolsInfo? devtools_info;
|
| +
|
| + // The path to a file that will contain the response body. It may only
|
| + // contain a portion of the response body at the time that the ResponseInfo
|
| + // becomes available.
|
| + // TODO(yhirano): Add this.
|
| + // base::FilePath download_file_path;
|
| +
|
| + // True if the response was delivered using SPDY.
|
| + bool was_fetched_via_spdy;
|
| +
|
| + // True if the response was delivered after NPN is negotiated.
|
| + bool was_npn_negotiated;
|
| +
|
| + // True if response could use alternate protocol. However, browser will
|
| + // ignore the alternate protocol when spdy is not enable on browser side.
|
| + bool was_alternate_protocol_available;
|
| +
|
| + // Information about the type of connection used to fetch this response.
|
| + // TODO(yhirano): Add this.
|
| + // ConnectionInfo connection_info;
|
| +
|
| + // True if the response was fetched via an explicit proxy (as opposed to a
|
| + // transparent proxy). The proxy could be any type of proxy, HTTP or SOCKS.
|
| + // Note: we cannot tell if a transparent proxy may have been involved. If
|
| + // true, |proxy_server| contains the name of the proxy server that was used.
|
| + bool was_fetched_via_proxy;
|
| +
|
| + // TODO(yhirano): Add this.
|
| + // net::HostPortPair proxy_server;
|
| +
|
| + // NPN protocol negotiated with the server.
|
| + string npn_negotiated_protocol;
|
| +
|
| + // Remote address of the socket which fetched this resource.
|
| + // TODO(yhirano): Add this.
|
| + // net::HostPortPair socket_address;
|
| +
|
| + // True if the response was fetched by a ServiceWorker.
|
| + bool was_fetched_via_service_worker;
|
| +
|
| + // True when the request whoes mode is |CORS| or |CORS-with-forced-preflight|
|
| + // is sent to a ServiceWorker but FetchEvent.respondWith is not called. So the
|
| + // renderer have to resend the request with skip service worker flag
|
| + // considering the CORS preflight logic.
|
| + bool was_fallback_required_by_service_worker;
|
| +
|
| + // The original URL of the response which was fetched by the ServiceWorker.
|
| + // This may be empty if the response was created inside the ServiceWorker.
|
| + url.mojom.Url original_url_via_service_worker;
|
| +
|
| + // The type of the response which was fetched by the ServiceWorker.
|
| + ServiceWorkerResponseType response_type_via_service_worker;
|
| +
|
| + // The time immediately before starting ServiceWorker. If the response is not
|
| + // provided by the ServiceWorker, kept empty.
|
| + // TODO(ksakamoto): Move this to net::LoadTimingInfo.
|
| + int64 service_worker_start_time;
|
| +
|
| + // The time immediately before dispatching fetch event in ServiceWorker.
|
| + // If the response is not provided by the ServiceWorker, kept empty.
|
| + // TODO(ksakamoto): Move this to net::LoadTimingInfo.
|
| + int64 service_worker_ready_time;
|
| +
|
| + // True when the response is served from the CacheStorage via the
|
| + // ServiceWorker.
|
| + bool is_in_cache_storage;
|
| +
|
| + // The cache name of the CacheStorage from where the response is served via
|
| + // the ServiceWorker. Empty if the response isn't from the CacheStorage.
|
| + string cache_storage_cache_name;
|
| +
|
| + // Whether or not the request was for a LoFi version of the resource.
|
| + bool is_using_lofi;
|
| +};
|
| +
|
| +struct URLLoaderStatus {
|
| + // The error code.
|
| + int32 network_error;
|
| +
|
| + // True when the request was ignored by the request handler.
|
| + bool was_ignored_by_handler;
|
| +
|
| + // True when the resource for the request exists in the cache.
|
| + bool exists_in_cache;
|
| +
|
| + // Serialized securify info; see content/common/ssl_status_serialization.h.
|
| + string security_info;
|
| +
|
| + // Time the request completed.
|
| + int64 completion_time;
|
| +
|
| + // Total amount of data received from the network.
|
| + int64 encoded_data_length;
|
| +};
|
| +
|
| +interface URLLoader {
|
| + // Loads the given |request|, asynchronously producing |response|. Consult
|
| + // |response| to determine if the request resulted in an error, was
|
| + // redirected, or has a response body to be consumed.
|
| + Load(URLRequest request, URLLoaderClient client);
|
| +
|
| + // If the request passed to |Load| had |auto_follow_redirects| set to false,
|
| + // then upon receiving an URLResponse with a non-NULL |redirect_url| field,
|
| + // |FollowRedirect| may be called to load the URL indicated by the redirect.
|
| + FollowRedirect();
|
| +
|
| + // Cancels the request.
|
| + Cancel();
|
| +};
|
| +
|
| +interface URLLoaderClient {
|
| + OnReceiveResponse(URLResponse response);
|
| + OnComplete(URLLoaderStatus completion_status);
|
| +};
|
| +
|
|
|