diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/platform/exported/web_url_request.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/platform/exported/web_url_request.cc | 131 |
1 files changed, 90 insertions, 41 deletions
diff --git a/chromium/third_party/blink/renderer/platform/exported/web_url_request.cc b/chromium/third_party/blink/renderer/platform/exported/web_url_request.cc index 50ebdbbad7c..651e79a8859 100644 --- a/chromium/third_party/blink/renderer/platform/exported/web_url_request.cc +++ b/chromium/third_party/blink/renderer/platform/exported/web_url_request.cc @@ -35,12 +35,15 @@ #include "base/time/time.h" #include "net/base/load_flags.h" #include "services/network/public/cpp/features.h" +#include "services/network/public/cpp/optional_trust_token_params.h" #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink.h" +#include "third_party/blink/public/platform/url_conversion.h" #include "third_party/blink/public/platform/web_http_body.h" #include "third_party/blink/public/platform/web_http_header_visitor.h" #include "third_party/blink/public/platform/web_security_origin.h" #include "third_party/blink/public/platform/web_url.h" #include "third_party/blink/renderer/platform/loader/fetch/resource_request.h" +#include "third_party/blink/renderer/platform/loader/fetch/trust_token_params_conversion.h" #include "third_party/blink/renderer/platform/network/encoded_form_data.h" #include "third_party/blink/renderer/platform/weborigin/referrer.h" #include "third_party/blink/renderer/platform/weborigin/security_origin.h" @@ -50,43 +53,74 @@ using blink::mojom::FetchCacheMode; namespace blink { -WebURLRequest::ExtraData::ExtraData() : render_frame_id_(MSG_ROUTING_NONE) {} +// This is complementary to ConvertNetPriorityToWebKitPriority, defined in +// service_worker_context_client.cc. +net::RequestPriority ConvertWebKitPriorityToNetPriority( + WebURLRequest::Priority priority) { + switch (priority) { + case WebURLRequest::Priority::kVeryHigh: + return net::HIGHEST; + + case WebURLRequest::Priority::kHigh: + return net::MEDIUM; + + case WebURLRequest::Priority::kMedium: + return net::LOW; -// The purpose of this struct is to permit allocating a ResourceRequest on the -// heap, which is otherwise disallowed by DISALLOW_NEW annotation on -// ResourceRequest. -// TODO(keishi): Replace with GCWrapper<ResourceRequest> -struct WebURLRequest::ResourceRequestContainer { - ResourceRequestContainer() = default; - explicit ResourceRequestContainer(const ResourceRequest& r) - : resource_request(r) {} + case WebURLRequest::Priority::kLow: + return net::LOWEST; - ResourceRequest resource_request; -}; + case WebURLRequest::Priority::kVeryLow: + return net::IDLE; + + case WebURLRequest::Priority::kUnresolved: + default: + NOTREACHED(); + return net::LOW; + } +} + +WebURLRequest::ExtraData::ExtraData() : render_frame_id_(MSG_ROUTING_NONE) {} WebURLRequest::~WebURLRequest() = default; WebURLRequest::WebURLRequest() - : owned_resource_request_(new ResourceRequestContainer()), - resource_request_(&owned_resource_request_->resource_request) {} + : owned_resource_request_(std::make_unique<ResourceRequest>()), + resource_request_(owned_resource_request_.get()) {} + +WebURLRequest::WebURLRequest(WebURLRequest&& src) { + *this = std::move(src); +} -WebURLRequest::WebURLRequest(const WebURLRequest& r) - : owned_resource_request_( - new ResourceRequestContainer(*r.resource_request_)), - resource_request_(&owned_resource_request_->resource_request) {} +WebURLRequest& WebURLRequest::operator=(WebURLRequest&& src) { + if (this == &src) { + return *this; + } + if (src.owned_resource_request_) { + owned_resource_request_ = std::move(src.owned_resource_request_); + resource_request_ = owned_resource_request_.get(); + } else { + owned_resource_request_ = std::make_unique<ResourceRequest>(); + resource_request_ = owned_resource_request_.get(); + CopyFrom(src); + } + src.resource_request_ = nullptr; + return *this; +} WebURLRequest::WebURLRequest(const WebURL& url) : WebURLRequest() { SetUrl(url); } -WebURLRequest& WebURLRequest::operator=(const WebURLRequest& r) { +void WebURLRequest::CopyFrom(const WebURLRequest& r) { // Copying subclasses that have different m_resourceRequest ownership // semantics via this operator is just not supported. DCHECK(owned_resource_request_); - DCHECK(resource_request_); - if (&r != this) - *resource_request_ = *r.resource_request_; - return *this; + DCHECK_EQ(owned_resource_request_.get(), resource_request_); + DCHECK(owned_resource_request_->IsNull()); + DCHECK(this != &r); + resource_request_->CopyHeadFrom(*r.resource_request_); + resource_request_->SetHttpBody(r.resource_request_->HttpBody()); } bool WebURLRequest::IsNull() const { @@ -101,11 +135,12 @@ void WebURLRequest::SetUrl(const WebURL& url) { resource_request_->SetUrl(url); } -WebURL WebURLRequest::SiteForCookies() const { +const net::SiteForCookies& WebURLRequest::SiteForCookies() const { return resource_request_->SiteForCookies(); } -void WebURLRequest::SetSiteForCookies(const WebURL& site_for_cookies) { +void WebURLRequest::SetSiteForCookies( + const net::SiteForCookies& site_for_cookies) { resource_request_->SetSiteForCookies(site_for_cookies); } @@ -166,24 +201,10 @@ WebString WebURLRequest::HttpHeaderField(const WebString& name) const { void WebURLRequest::SetHttpHeaderField(const WebString& name, const WebString& value) { - CHECK(!DeprecatedEqualIgnoringCase(name, "referer")); + CHECK(!EqualIgnoringASCIICase(name, "referer")); resource_request_->SetHttpHeaderField(name, value); } -void WebURLRequest::SetHttpReferrer( - const WebString& web_referrer, - network::mojom::ReferrerPolicy referrer_policy) { - // WebString doesn't have the distinction between empty and null. We use - // the null WTFString for referrer. - DCHECK_EQ(Referrer::NoReferrer(), String()); - String referrer = - web_referrer.IsEmpty() ? Referrer::NoReferrer() : String(web_referrer); - // TODO(domfarolino): Stop storing ResourceRequest's generated referrer as a - // header and instead use a separate member. See https://crbug.com/850813. - resource_request_->SetHttpReferrer(Referrer(referrer, referrer_policy)); - resource_request_->SetReferrerString(referrer); -} - void WebURLRequest::AddHttpHeaderField(const WebString& name, const WebString& value) { resource_request_->AddHttpHeaderField(name, value); @@ -227,6 +248,24 @@ mojom::RequestContextType WebURLRequest::GetRequestContext() const { return resource_request_->GetRequestContext(); } +network::mojom::RequestDestination WebURLRequest::GetRequestDestination() + const { + return resource_request_->GetRequestDestination(); +} + +void WebURLRequest::SetReferrerString(const WebString& referrer) { + resource_request_->SetReferrerString(referrer); +} + +void WebURLRequest::SetReferrerPolicy( + network::mojom::ReferrerPolicy referrer_policy) { + resource_request_->SetReferrerPolicy(referrer_policy); +} + +WebString WebURLRequest::ReferrerString() const { + return resource_request_->ReferrerString(); +} + network::mojom::ReferrerPolicy WebURLRequest::GetReferrerPolicy() const { return resource_request_->GetReferrerPolicy(); } @@ -248,6 +287,11 @@ void WebURLRequest::SetRequestContext( resource_request_->SetRequestContext(request_context); } +void WebURLRequest::SetRequestDestination( + network::mojom::RequestDestination destination) { + resource_request_->SetRequestDestination(destination); +} + int WebURLRequest::RequestorID() const { return resource_request_->RequestorID(); } @@ -333,11 +377,12 @@ void WebURLRequest::SetPreviewsState( return resource_request_->SetPreviewsState(previews_state); } -WebURLRequest::ExtraData* WebURLRequest::GetExtraData() const { +const scoped_refptr<WebURLRequest::ExtraData>& WebURLRequest::GetExtraData() + const { return resource_request_->GetExtraData(); } -void WebURLRequest::SetExtraData(std::unique_ptr<ExtraData> extra_data) { +void WebURLRequest::SetExtraData(scoped_refptr<ExtraData> extra_data) { resource_request_->SetExtraData(std::move(extra_data)); } @@ -504,6 +549,10 @@ base::Optional<base::UnguessableToken> WebURLRequest::RecursivePrefetchToken() return resource_request_->RecursivePrefetchToken(); } +network::OptionalTrustTokenParams WebURLRequest::TrustTokenParams() const { + return ConvertTrustTokenParams(resource_request_->TrustTokenParams()); +} + WebURLRequest::WebURLRequest(ResourceRequest& r) : resource_request_(&r) {} } // namespace blink |