Commit 645abf98 authored by Yoichi Osato's avatar Yoichi Osato Committed by Chromium LUCI CQ

Remove body copy in WorkerMainScriptLoader::Start()

This CL changes WorkerMainScriptLoader to have ResourceRequestHead
rather than ResourceRequest so that we can avoid body copy.
With this CL, we remove all ResourceRequest body copy.

This CL also changes the function parameter to const ref.

Bug: 787704
Change-Id: I0f57cfd89b2f804e0c6f8eb167798591f1e5f0c1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2631399Reviewed-by: default avatarYutaka Hirano <yhirano@chromium.org>
Commit-Queue: Yoichi Osato <yoichio@chromium.org>
Cr-Commit-Position: refs/heads/master@{#845085}
parent ef6958a3
...@@ -160,26 +160,12 @@ ResourceRequest::ResourceRequest(const KURL& url) : ResourceRequestHead(url) {} ...@@ -160,26 +160,12 @@ ResourceRequest::ResourceRequest(const KURL& url) : ResourceRequestHead(url) {}
ResourceRequest::ResourceRequest(const ResourceRequestHead& head) ResourceRequest::ResourceRequest(const ResourceRequestHead& head)
: ResourceRequestHead(head) {} : ResourceRequestHead(head) {}
ResourceRequest& ResourceRequest::operator=(const ResourceRequest& src) {
DCHECK(!body_.StreamBody().is_valid());
DCHECK(!src.body_.StreamBody().is_valid());
this->ResourceRequestHead::operator=(src);
body_.SetFormBody(src.body_.FormBody());
return *this;
}
ResourceRequest::ResourceRequest(ResourceRequest&&) = default; ResourceRequest::ResourceRequest(ResourceRequest&&) = default;
ResourceRequest& ResourceRequest::operator=(ResourceRequest&&) = default; ResourceRequest& ResourceRequest::operator=(ResourceRequest&&) = default;
ResourceRequest::~ResourceRequest() = default; ResourceRequest::~ResourceRequest() = default;
void ResourceRequest::CopyFrom(const ResourceRequest& src) {
DCHECK(!body_.StreamBody().is_valid());
DCHECK(!src.body_.StreamBody().is_valid());
*this = src;
}
void ResourceRequest::CopyHeadFrom(const ResourceRequestHead& src) { void ResourceRequest::CopyHeadFrom(const ResourceRequestHead& src) {
this->ResourceRequestHead::operator=(src); this->ResourceRequestHead::operator=(src);
} }
......
...@@ -676,13 +676,11 @@ class PLATFORM_EXPORT ResourceRequest final : public ResourceRequestHead { ...@@ -676,13 +676,11 @@ class PLATFORM_EXPORT ResourceRequest final : public ResourceRequestHead {
ResourceRequest(const ResourceRequest&) = delete; ResourceRequest(const ResourceRequest&) = delete;
ResourceRequest(ResourceRequest&&); ResourceRequest(ResourceRequest&&);
ResourceRequest& operator=(const ResourceRequest&) = delete;
ResourceRequest& operator=(ResourceRequest&&); ResourceRequest& operator=(ResourceRequest&&);
~ResourceRequest(); ~ResourceRequest();
// TODO(yoichio): Use move semantics as much as possible.
// See crbug.com/787704.
void CopyFrom(const ResourceRequest&);
void CopyHeadFrom(const ResourceRequestHead&); void CopyHeadFrom(const ResourceRequestHead&);
const scoped_refptr<EncodedFormData>& HttpBody() const; const scoped_refptr<EncodedFormData>& HttpBody() const;
...@@ -691,8 +689,6 @@ class PLATFORM_EXPORT ResourceRequest final : public ResourceRequestHead { ...@@ -691,8 +689,6 @@ class PLATFORM_EXPORT ResourceRequest final : public ResourceRequestHead {
ResourceRequestBody& MutableBody() { return body_; } ResourceRequestBody& MutableBody() { return body_; }
private: private:
ResourceRequest& operator=(const ResourceRequest&);
ResourceRequestBody body_; ResourceRequestBody body_;
}; };
......
...@@ -31,7 +31,7 @@ WorkerMainScriptLoader::WorkerMainScriptLoader() = default; ...@@ -31,7 +31,7 @@ WorkerMainScriptLoader::WorkerMainScriptLoader() = default;
WorkerMainScriptLoader::~WorkerMainScriptLoader() = default; WorkerMainScriptLoader::~WorkerMainScriptLoader() = default;
void WorkerMainScriptLoader::Start( void WorkerMainScriptLoader::Start(
FetchParameters& fetch_params, const FetchParameters& fetch_params,
std::unique_ptr<WorkerMainScriptLoadParameters> std::unique_ptr<WorkerMainScriptLoadParameters>
worker_main_script_load_params, worker_main_script_load_params,
FetchContext* fetch_context, FetchContext* fetch_context,
...@@ -39,7 +39,7 @@ void WorkerMainScriptLoader::Start( ...@@ -39,7 +39,7 @@ void WorkerMainScriptLoader::Start(
WorkerMainScriptLoaderClient* client) { WorkerMainScriptLoaderClient* client) {
DCHECK(resource_load_observer); DCHECK(resource_load_observer);
DCHECK(client); DCHECK(client);
initial_request_.CopyFrom(fetch_params.GetResourceRequest()); initial_request_ = fetch_params.GetResourceRequest();
resource_loader_options_ = fetch_params.Options(); resource_loader_options_ = fetch_params.Options();
initial_request_url_ = fetch_params.GetResourceRequest().Url(); initial_request_url_ = fetch_params.GetResourceRequest().Url();
last_request_url_ = initial_request_url_; last_request_url_ = initial_request_url_;
...@@ -53,8 +53,9 @@ void WorkerMainScriptLoader::Start( ...@@ -53,8 +53,9 @@ void WorkerMainScriptLoader::Start(
// TODO(crbug.com/929370): Support CSP check to post violation reports for // TODO(crbug.com/929370): Support CSP check to post violation reports for
// worker top-level scripts, if off-the-main-thread fetch is enabled. // worker top-level scripts, if off-the-main-thread fetch is enabled.
ResourceRequest resource_request(initial_request_);
resource_load_observer_->WillSendRequest( resource_load_observer_->WillSendRequest(
initial_request_.InspectorId(), initial_request_, initial_request_.InspectorId(), resource_request,
/*redirect_response=*/ResourceResponse(), ResourceType::kScript, /*redirect_response=*/ResourceResponse(), ResourceType::kScript,
resource_loader_options_.initiator_info); resource_loader_options_.initiator_info);
...@@ -79,7 +80,7 @@ void WorkerMainScriptLoader::Start( ...@@ -79,7 +80,7 @@ void WorkerMainScriptLoader::Start(
std::move(response_head), PreviewsTypes::kPreviewsUnspecified); std::move(response_head), PreviewsTypes::kPreviewsUnspecified);
resource_load_observer_->DidReceiveResponse( resource_load_observer_->DidReceiveResponse(
initial_request_.InspectorId(), initial_request_, resource_response_, initial_request_.InspectorId(), resource_request, resource_response_,
/*resource=*/nullptr, /*resource=*/nullptr,
ResourceLoadObserver::ResponseSource::kNotFromMemoryCache); ResourceLoadObserver::ResponseSource::kNotFromMemoryCache);
......
...@@ -47,7 +47,7 @@ class PLATFORM_EXPORT WorkerMainScriptLoader final ...@@ -47,7 +47,7 @@ class PLATFORM_EXPORT WorkerMainScriptLoader final
~WorkerMainScriptLoader() override; ~WorkerMainScriptLoader() override;
// Starts to load the main script. // Starts to load the main script.
void Start(FetchParameters& fetch_params, void Start(const FetchParameters& fetch_params,
std::unique_ptr<WorkerMainScriptLoadParameters> std::unique_ptr<WorkerMainScriptLoadParameters>
worker_main_script_load_params, worker_main_script_load_params,
FetchContext* fetch_context, FetchContext* fetch_context,
...@@ -98,7 +98,7 @@ class PLATFORM_EXPORT WorkerMainScriptLoader final ...@@ -98,7 +98,7 @@ class PLATFORM_EXPORT WorkerMainScriptLoader final
Member<WorkerMainScriptLoaderClient> client_; Member<WorkerMainScriptLoaderClient> client_;
Member<ResourceLoadObserver> resource_load_observer_; Member<ResourceLoadObserver> resource_load_observer_;
ResourceRequest initial_request_; ResourceRequestHead initial_request_;
ResourceLoaderOptions resource_loader_options_{nullptr /* world */}; ResourceLoaderOptions resource_loader_options_{nullptr /* world */};
KURL initial_request_url_; KURL initial_request_url_;
KURL last_request_url_; KURL last_request_url_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment