summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/platform/exported/web_url_request.cc
diff options
context:
space:
mode:
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.cc131
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