Commit 99076174 authored by Yoichi Osato's avatar Yoichi Osato Committed by Commit Bot

Make WebURLRequest hold ResourceRequest ptr directly.

ResourceRequestContainer is a wrapper class of ResourceRequest to
keep the instance on heap since historycally ResourceRequest had
been stated DISALLOW_NEW.
However crrev.com/c/776407 has changed ResourceRequest to be newed.
This CL refactors the structure simplify.

Bug: 787704
Change-Id: I8cf85085d939e9053b84513bc0e23824991a98c4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2024392
Commit-Queue: Yoichi Osato <yoichio@chromium.org>
Reviewed-by: default avatarTakashi Toyoshima <toyoshim@chromium.org>
Reviewed-by: default avatarYutaka Hirano <yhirano@chromium.org>
Reviewed-by: default avatarKeishi Hattori <keishi@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#736252}
parent a7b561cb
...@@ -400,12 +400,10 @@ class WebURLRequest { ...@@ -400,12 +400,10 @@ class WebURLRequest {
#endif #endif
private: private:
struct ResourceRequestContainer;
// If this instance owns a ResourceRequest then |owned_resource_request_| // If this instance owns a ResourceRequest then |owned_resource_request_|
// is non-null and |resource_request_| points to the ResourceRequest // is non-null and |resource_request_| points to the ResourceRequest
// instance it contains. // instance it contains.
std::unique_ptr<ResourceRequestContainer> owned_resource_request_; std::unique_ptr<ResourceRequest> owned_resource_request_;
// Should never be null. // Should never be null.
ResourceRequest* resource_request_; ResourceRequest* resource_request_;
......
...@@ -52,29 +52,17 @@ namespace blink { ...@@ -52,29 +52,17 @@ namespace blink {
WebURLRequest::ExtraData::ExtraData() : render_frame_id_(MSG_ROUTING_NONE) {} WebURLRequest::ExtraData::ExtraData() : render_frame_id_(MSG_ROUTING_NONE) {}
// 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.CopyFrom(r);
}
ResourceRequest resource_request;
};
WebURLRequest::~WebURLRequest() = default; WebURLRequest::~WebURLRequest() = default;
WebURLRequest::WebURLRequest() WebURLRequest::WebURLRequest()
: owned_resource_request_(new ResourceRequestContainer()), : owned_resource_request_(std::make_unique<ResourceRequest>()),
resource_request_(&owned_resource_request_->resource_request) {} resource_request_(owned_resource_request_.get()) {}
WebURLRequest::WebURLRequest(const WebURLRequest& r) WebURLRequest::WebURLRequest(const WebURLRequest& r)
: owned_resource_request_( : owned_resource_request_(std::make_unique<ResourceRequest>()),
new ResourceRequestContainer(*r.resource_request_)), resource_request_(owned_resource_request_.get()) {
resource_request_(&owned_resource_request_->resource_request) {} resource_request_->CopyFrom(*r.resource_request_);
}
WebURLRequest::WebURLRequest(const WebURL& url) : WebURLRequest() { WebURLRequest::WebURLRequest(const WebURL& url) : WebURLRequest() {
SetUrl(url); SetUrl(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