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

Side by Side Diff: components/html_viewer/web_url_loader_impl.cc

Issue 1568073002: Reduce string copies in GURL creation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months 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 | « components/html_viewer/html_document.cc ('k') | components/web_view/frame.cc » ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "components/html_viewer/web_url_loader_impl.h" 5 #include "components/html_viewer/web_url_loader_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 if (base::StartsWith(status_line.get(), "HTTP/1.1", 42 if (base::StartsWith(status_line.get(), "HTTP/1.1",
43 base::CompareCase::SENSITIVE)) 43 base::CompareCase::SENSITIVE))
44 return blink::WebURLResponse::HTTPVersion_1_1; 44 return blink::WebURLResponse::HTTPVersion_1_1;
45 45
46 return blink::WebURLResponse::HTTPVersionUnknown; 46 return blink::WebURLResponse::HTTPVersionUnknown;
47 } 47 }
48 48
49 blink::WebURLResponse ToWebURLResponse(const URLResponsePtr& url_response) { 49 blink::WebURLResponse ToWebURLResponse(const URLResponsePtr& url_response) {
50 blink::WebURLResponse result; 50 blink::WebURLResponse result;
51 result.initialize(); 51 result.initialize();
52 result.setURL(GURL(url_response->url)); 52 result.setURL(GURL(url_response->url.get()));
53 result.setMIMEType(blink::WebString::fromUTF8(url_response->mime_type)); 53 result.setMIMEType(blink::WebString::fromUTF8(url_response->mime_type));
54 result.setTextEncodingName(blink::WebString::fromUTF8(url_response->charset)); 54 result.setTextEncodingName(blink::WebString::fromUTF8(url_response->charset));
55 result.setHTTPVersion(StatusLineToHTTPVersion(url_response->status_line)); 55 result.setHTTPVersion(StatusLineToHTTPVersion(url_response->status_line));
56 result.setHTTPStatusCode(url_response->status_code); 56 result.setHTTPStatusCode(url_response->status_code);
57 result.setExpectedContentLength(-1); // Not available. 57 result.setExpectedContentLength(-1); // Not available.
58 58
59 // TODO(darin): Initialize timing properly. 59 // TODO(darin): Initialize timing properly.
60 blink::WebURLLoadTiming timing; 60 blink::WebURLLoadTiming timing;
61 timing.initialize(); 61 timing.initialize();
62 result.setLoadTiming(timing); 62 result.setLoadTiming(timing);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 url_request->auto_follow_redirects = true; 99 url_request->auto_follow_redirects = true;
100 URLResponsePtr url_response; 100 URLResponsePtr url_response;
101 url_loader_->Start(std::move(url_request), 101 url_loader_->Start(std::move(url_request),
102 [&url_response](URLResponsePtr url_response_result) { 102 [&url_response](URLResponsePtr url_response_result) {
103 url_response = std::move(url_response_result); 103 url_response = std::move(url_response_result);
104 }); 104 });
105 url_loader_.WaitForIncomingResponse(); 105 url_loader_.WaitForIncomingResponse();
106 if (url_response->error) { 106 if (url_response->error) {
107 error.domain = WebString::fromUTF8(net::kErrorDomain); 107 error.domain = WebString::fromUTF8(net::kErrorDomain);
108 error.reason = url_response->error->code; 108 error.reason = url_response->error->code;
109 error.unreachableURL = GURL(url_response->url); 109 error.unreachableURL = GURL(url_response->url.get());
110 return; 110 return;
111 } 111 }
112 112
113 response = ToWebURLResponse(url_response); 113 response = ToWebURLResponse(url_response);
114 std::string body; 114 std::string body;
115 mojo::common::BlockingCopyToString(std::move(url_response->body), &body); 115 mojo::common::BlockingCopyToString(std::move(url_response->body), &body);
116 data.assign(body.data(), body.length()); 116 data.assign(body.data(), body.length());
117 } 117 }
118 118
119 void WebURLLoaderImpl::loadAsynchronously(const blink::WebURLRequest& request, 119 void WebURLLoaderImpl::loadAsynchronously(const blink::WebURLRequest& request,
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 blink::WebURLRequest(), 170 blink::WebURLRequest(),
171 base::Passed(&failed_response))); 171 base::Passed(&failed_response)));
172 } 172 }
173 173
174 void WebURLLoaderImpl::setDefersLoading(bool defers_loading) { 174 void WebURLLoaderImpl::setDefersLoading(bool defers_loading) {
175 NOTIMPLEMENTED(); 175 NOTIMPLEMENTED();
176 } 176 }
177 177
178 void WebURLLoaderImpl::OnReceivedResponse(const blink::WebURLRequest& request, 178 void WebURLLoaderImpl::OnReceivedResponse(const blink::WebURLRequest& request,
179 URLResponsePtr url_response) { 179 URLResponsePtr url_response) {
180 url_ = GURL(url_response->url); 180 url_ = GURL(url_response->url.get());
181 181
182 if (url_response->error) { 182 if (url_response->error) {
183 OnReceivedError(std::move(url_response)); 183 OnReceivedError(std::move(url_response));
184 } else if (url_response->redirect_url) { 184 } else if (url_response->redirect_url) {
185 OnReceivedRedirect(request, std::move(url_response)); 185 OnReceivedRedirect(request, std::move(url_response));
186 } else { 186 } else {
187 base::WeakPtr<WebURLLoaderImpl> self(weak_factory_.GetWeakPtr()); 187 base::WeakPtr<WebURLLoaderImpl> self(weak_factory_.GetWeakPtr());
188 client_->didReceiveResponse(this, ToWebURLResponse(url_response)); 188 client_->didReceiveResponse(this, ToWebURLResponse(url_response));
189 189
190 // We may have been deleted during didReceiveResponse. 190 // We may have been deleted during didReceiveResponse.
191 if (!self) 191 if (!self)
192 return; 192 return;
193 193
194 // Start streaming data 194 // Start streaming data
195 response_body_stream_ = std::move(url_response->body); 195 response_body_stream_ = std::move(url_response->body);
196 ReadMore(); 196 ReadMore();
197 } 197 }
198 } 198 }
199 199
200 void WebURLLoaderImpl::OnReceivedError(URLResponsePtr url_response) { 200 void WebURLLoaderImpl::OnReceivedError(URLResponsePtr url_response) {
201 blink::WebURLError web_error; 201 blink::WebURLError web_error;
202 web_error.domain = blink::WebString::fromUTF8(net::kErrorDomain); 202 web_error.domain = blink::WebString::fromUTF8(net::kErrorDomain);
203 web_error.reason = url_response->error->code; 203 web_error.reason = url_response->error->code;
204 web_error.unreachableURL = GURL(url_response->url); 204 web_error.unreachableURL = GURL(url_response->url.get());
205 web_error.staleCopyInCache = false; 205 web_error.staleCopyInCache = false;
206 web_error.isCancellation = 206 web_error.isCancellation =
207 url_response->error->code == net::ERR_ABORTED ? true : false; 207 url_response->error->code == net::ERR_ABORTED ? true : false;
208 208
209 client_->didFail(this, web_error); 209 client_->didFail(this, web_error);
210 } 210 }
211 211
212 void WebURLLoaderImpl::OnReceivedRedirect(const blink::WebURLRequest& request, 212 void WebURLLoaderImpl::OnReceivedRedirect(const blink::WebURLRequest& request,
213 URLResponsePtr url_response) { 213 URLResponsePtr url_response) {
214 // TODO(erg): setFirstPartyForCookies() and setHTTPReferrer() are unset here. 214 // TODO(erg): setFirstPartyForCookies() and setHTTPReferrer() are unset here.
215 blink::WebURLRequest new_request; 215 blink::WebURLRequest new_request;
216 new_request.initialize(); 216 new_request.initialize();
217 new_request.setURL(GURL(url_response->redirect_url)); 217 new_request.setURL(GURL(url_response->redirect_url.get()));
218 new_request.setDownloadToFile(request.downloadToFile()); 218 new_request.setDownloadToFile(request.downloadToFile());
219 new_request.setRequestContext(request.requestContext()); 219 new_request.setRequestContext(request.requestContext());
220 new_request.setFrameType(request.frameType()); 220 new_request.setFrameType(request.frameType());
221 new_request.setSkipServiceWorker(request.skipServiceWorker()); 221 new_request.setSkipServiceWorker(request.skipServiceWorker());
222 new_request.setFetchRequestMode(request.fetchRequestMode()); 222 new_request.setFetchRequestMode(request.fetchRequestMode());
223 new_request.setFetchCredentialsMode(request.fetchCredentialsMode()); 223 new_request.setFetchCredentialsMode(request.fetchCredentialsMode());
224 new_request.setHTTPReferrer( 224 new_request.setHTTPReferrer(
225 WebString::fromUTF8(url_response->redirect_referrer), 225 WebString::fromUTF8(url_response->redirect_referrer),
226 referrer_policy_); 226 referrer_policy_);
227 227
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 void WebURLLoaderImpl::OnResponseBodyStreamReady(MojoResult result) { 315 void WebURLLoaderImpl::OnResponseBodyStreamReady(MojoResult result) {
316 ReadMore(); 316 ReadMore();
317 } 317 }
318 318
319 void WebURLLoaderImpl::setLoadingTaskRunner( 319 void WebURLLoaderImpl::setLoadingTaskRunner(
320 blink::WebTaskRunner* web_task_runner) { 320 blink::WebTaskRunner* web_task_runner) {
321 // TODO(alexclarke): Consider hooking this up. 321 // TODO(alexclarke): Consider hooking this up.
322 } 322 }
323 323
324 } // namespace html_viewer 324 } // namespace html_viewer
OLDNEW
« no previous file with comments | « components/html_viewer/html_document.cc ('k') | components/web_view/frame.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698