Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(90)

Side by Side Diff: content/child/resource_dispatcher.cc

Issue 2466263008: Revert of [Mojo-Loading] Dispatch body data after response is received (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | content/child/url_response_body_consumer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading 5 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading
6 6
7 #include "content/child/resource_dispatcher.h" 7 #include "content/child/resource_dispatcher.h"
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 : binding_(this), 82 : binding_(this),
83 request_id_(request_id), 83 request_id_(request_id),
84 resource_dispatcher_(resource_dispatcher), 84 resource_dispatcher_(resource_dispatcher),
85 task_runner_(std::move(task_runner)) {} 85 task_runner_(std::move(task_runner)) {}
86 ~URLLoaderClientImpl() override { 86 ~URLLoaderClientImpl() override {
87 if (body_consumer_) 87 if (body_consumer_)
88 body_consumer_->Cancel(); 88 body_consumer_->Cancel();
89 } 89 }
90 90
91 void OnReceiveResponse(const ResourceResponseHead& response_head) override { 91 void OnReceiveResponse(const ResourceResponseHead& response_head) override {
92 has_received_response_ = true;
93 if (body_consumer_)
94 body_consumer_->Start(task_runner_.get());
95 resource_dispatcher_->OnMessageReceived( 92 resource_dispatcher_->OnMessageReceived(
96 ResourceMsg_ReceivedResponse(request_id_, response_head)); 93 ResourceMsg_ReceivedResponse(request_id_, response_head));
97 } 94 }
98 95
99 void OnStartLoadingResponseBody( 96 void OnStartLoadingResponseBody(
100 mojo::ScopedDataPipeConsumerHandle body) override { 97 mojo::ScopedDataPipeConsumerHandle body) override {
101 DCHECK(!body_consumer_); 98 DCHECK(!body_consumer_);
102 body_consumer_ = new URLResponseBodyConsumer( 99 body_consumer_ = new URLResponseBodyConsumer(
103 request_id_, resource_dispatcher_, std::move(body), task_runner_); 100 request_id_, resource_dispatcher_, std::move(body), task_runner_);
104 if (has_received_response_)
105 body_consumer_->Start(task_runner_.get());
106 } 101 }
107 102
108 void OnComplete(const ResourceRequestCompletionStatus& status) override { 103 void OnComplete(const ResourceRequestCompletionStatus& status) override {
109 if (!body_consumer_) { 104 if (!body_consumer_) {
110 resource_dispatcher_->OnMessageReceived( 105 resource_dispatcher_->OnMessageReceived(
111 ResourceMsg_RequestComplete(request_id_, status)); 106 ResourceMsg_RequestComplete(request_id_, status));
112 return; 107 return;
113 } 108 }
114 body_consumer_->OnComplete(status); 109 body_consumer_->OnComplete(status);
115 } 110 }
116 111
117 mojom::URLLoaderClientPtr CreateInterfacePtrAndBind() { 112 mojom::URLLoaderClientPtr CreateInterfacePtrAndBind() {
118 return binding_.CreateInterfacePtrAndBind(); 113 return binding_.CreateInterfacePtrAndBind();
119 } 114 }
120 115
121 private: 116 private:
122 mojo::Binding<mojom::URLLoaderClient> binding_; 117 mojo::Binding<mojom::URLLoaderClient> binding_;
123 scoped_refptr<URLResponseBodyConsumer> body_consumer_; 118 scoped_refptr<URLResponseBodyConsumer> body_consumer_;
124 const int request_id_; 119 const int request_id_;
125 bool has_received_response_ = false;
126 ResourceDispatcher* const resource_dispatcher_; 120 ResourceDispatcher* const resource_dispatcher_;
127 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 121 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
128 }; 122 };
129 123
130 void CheckSchemeForReferrerPolicy(const ResourceRequest& request) { 124 void CheckSchemeForReferrerPolicy(const ResourceRequest& request) {
131 if ((request.referrer_policy == blink::WebReferrerPolicyDefault || 125 if ((request.referrer_policy == blink::WebReferrerPolicyDefault ||
132 request.referrer_policy == 126 request.referrer_policy ==
133 blink::WebReferrerPolicyNoReferrerWhenDowngrade) && 127 blink::WebReferrerPolicyNoReferrerWhenDowngrade) &&
134 request.referrer.SchemeIsCryptographic() && 128 request.referrer.SchemeIsCryptographic() &&
135 !request.url.SchemeIsCryptographic()) { 129 !request.url.SchemeIsCryptographic()) {
(...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 delete message; 823 delete message;
830 } 824 }
831 } 825 }
832 826
833 void ResourceDispatcher::SetResourceSchedulingFilter( 827 void ResourceDispatcher::SetResourceSchedulingFilter(
834 scoped_refptr<ResourceSchedulingFilter> resource_scheduling_filter) { 828 scoped_refptr<ResourceSchedulingFilter> resource_scheduling_filter) {
835 resource_scheduling_filter_ = resource_scheduling_filter; 829 resource_scheduling_filter_ = resource_scheduling_filter;
836 } 830 }
837 831
838 } // namespace content 832 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/child/url_response_body_consumer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698