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

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

Issue 2449933003: Use Associated interfaces for mojo-loading (Closed)
Patch Set: fix 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
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 "content/child/web_url_loader_impl.h" 5 #include "content/child/web_url_loader_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 20 matching lines...) Expand all
31 #include "content/child/web_url_request_util.h" 31 #include "content/child/web_url_request_util.h"
32 #include "content/child/weburlresponse_extradata_impl.h" 32 #include "content/child/weburlresponse_extradata_impl.h"
33 #include "content/common/resource_messages.h" 33 #include "content/common/resource_messages.h"
34 #include "content/common/resource_request.h" 34 #include "content/common/resource_request.h"
35 #include "content/common/resource_request_body_impl.h" 35 #include "content/common/resource_request_body_impl.h"
36 #include "content/common/service_worker/service_worker_types.h" 36 #include "content/common/service_worker/service_worker_types.h"
37 #include "content/common/url_loader.mojom.h" 37 #include "content/common/url_loader.mojom.h"
38 #include "content/public/child/fixed_received_data.h" 38 #include "content/public/child/fixed_received_data.h"
39 #include "content/public/child/request_peer.h" 39 #include "content/public/child/request_peer.h"
40 #include "content/public/common/browser_side_navigation_policy.h" 40 #include "content/public/common/browser_side_navigation_policy.h"
41 #include "mojo/public/cpp/bindings/associated_group.h"
41 #include "net/base/data_url.h" 42 #include "net/base/data_url.h"
42 #include "net/base/filename_util.h" 43 #include "net/base/filename_util.h"
43 #include "net/base/net_errors.h" 44 #include "net/base/net_errors.h"
44 #include "net/cert/cert_status_flags.h" 45 #include "net/cert/cert_status_flags.h"
45 #include "net/cert/ct_sct_to_string.h" 46 #include "net/cert/ct_sct_to_string.h"
46 #include "net/cert/x509_util.h" 47 #include "net/cert/x509_util.h"
47 #include "net/http/http_response_headers.h" 48 #include "net/http/http_response_headers.h"
48 #include "net/http/http_util.h" 49 #include "net/http/http_util.h"
49 #include "net/ssl/ssl_cipher_suite_names.h" 50 #include "net/ssl/ssl_cipher_suite_names.h"
50 #include "net/ssl/ssl_connection_status_flags.h" 51 #include "net/ssl/ssl_connection_status_flags.h"
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 357
357 // This inner class exists since the WebURLLoader may be deleted while inside a 358 // This inner class exists since the WebURLLoader may be deleted while inside a
358 // call to WebURLLoaderClient. Refcounting is to keep the context from being 359 // call to WebURLLoaderClient. Refcounting is to keep the context from being
359 // deleted if it may have work to do after calling into the client. 360 // deleted if it may have work to do after calling into the client.
360 class WebURLLoaderImpl::Context : public base::RefCounted<Context> { 361 class WebURLLoaderImpl::Context : public base::RefCounted<Context> {
361 public: 362 public:
362 using ReceivedData = RequestPeer::ReceivedData; 363 using ReceivedData = RequestPeer::ReceivedData;
363 364
364 Context(WebURLLoaderImpl* loader, 365 Context(WebURLLoaderImpl* loader,
365 ResourceDispatcher* resource_dispatcher, 366 ResourceDispatcher* resource_dispatcher,
366 mojom::URLLoaderFactory* factory); 367 mojom::URLLoaderFactory* factory,
368 mojo::AssociatedGroup* associated_group);
367 369
368 WebURLLoaderClient* client() const { return client_; } 370 WebURLLoaderClient* client() const { return client_; }
369 void set_client(WebURLLoaderClient* client) { client_ = client; } 371 void set_client(WebURLLoaderClient* client) { client_ = client; }
370 372
371 void Cancel(); 373 void Cancel();
372 void SetDefersLoading(bool value); 374 void SetDefersLoading(bool value);
373 void DidChangePriority(WebURLRequest::Priority new_priority, 375 void DidChangePriority(WebURLRequest::Priority new_priority,
374 int intra_priority_value); 376 int intra_priority_value);
375 void Start(const WebURLRequest& request, 377 void Start(const WebURLRequest& request,
376 SyncLoadResponse* sync_load_response); 378 SyncLoadResponse* sync_load_response);
(...skipping 28 matching lines...) Expand all
405 WebURLLoaderClient* client_; 407 WebURLLoaderClient* client_;
406 ResourceDispatcher* resource_dispatcher_; 408 ResourceDispatcher* resource_dispatcher_;
407 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 409 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
408 std::unique_ptr<FtpDirectoryListingResponseDelegate> ftp_listing_delegate_; 410 std::unique_ptr<FtpDirectoryListingResponseDelegate> ftp_listing_delegate_;
409 std::unique_ptr<StreamOverrideParameters> stream_override_; 411 std::unique_ptr<StreamOverrideParameters> stream_override_;
410 std::unique_ptr<SharedMemoryDataConsumerHandle::Writer> body_stream_writer_; 412 std::unique_ptr<SharedMemoryDataConsumerHandle::Writer> body_stream_writer_;
411 enum DeferState {NOT_DEFERRING, SHOULD_DEFER, DEFERRED_DATA}; 413 enum DeferState {NOT_DEFERRING, SHOULD_DEFER, DEFERRED_DATA};
412 DeferState defers_loading_; 414 DeferState defers_loading_;
413 int request_id_; 415 int request_id_;
414 416
417 // These are owned by the Blink::Platform singleton.
415 mojom::URLLoaderFactory* url_loader_factory_; 418 mojom::URLLoaderFactory* url_loader_factory_;
419 mojo::AssociatedGroup* associated_group_;
416 }; 420 };
417 421
418 // A thin wrapper class for Context to ensure its lifetime while it is 422 // A thin wrapper class for Context to ensure its lifetime while it is
419 // handling IPC messages coming from ResourceDispatcher. Owns one ref to 423 // handling IPC messages coming from ResourceDispatcher. Owns one ref to
420 // Context and held by ResourceDispatcher. 424 // Context and held by ResourceDispatcher.
421 class WebURLLoaderImpl::RequestPeerImpl : public RequestPeer { 425 class WebURLLoaderImpl::RequestPeerImpl : public RequestPeer {
422 public: 426 public:
423 explicit RequestPeerImpl(Context* context); 427 explicit RequestPeerImpl(Context* context);
424 428
425 // RequestPeer methods: 429 // RequestPeer methods:
(...skipping 12 matching lines...) Expand all
438 442
439 private: 443 private:
440 scoped_refptr<Context> context_; 444 scoped_refptr<Context> context_;
441 DISALLOW_COPY_AND_ASSIGN(RequestPeerImpl); 445 DISALLOW_COPY_AND_ASSIGN(RequestPeerImpl);
442 }; 446 };
443 447
444 // WebURLLoaderImpl::Context -------------------------------------------------- 448 // WebURLLoaderImpl::Context --------------------------------------------------
445 449
446 WebURLLoaderImpl::Context::Context(WebURLLoaderImpl* loader, 450 WebURLLoaderImpl::Context::Context(WebURLLoaderImpl* loader,
447 ResourceDispatcher* resource_dispatcher, 451 ResourceDispatcher* resource_dispatcher,
448 mojom::URLLoaderFactory* url_loader_factory) 452 mojom::URLLoaderFactory* url_loader_factory,
453 mojo::AssociatedGroup* associated_group)
449 : loader_(loader), 454 : loader_(loader),
450 client_(NULL), 455 client_(NULL),
451 resource_dispatcher_(resource_dispatcher), 456 resource_dispatcher_(resource_dispatcher),
452 task_runner_(base::ThreadTaskRunnerHandle::Get()), 457 task_runner_(base::ThreadTaskRunnerHandle::Get()),
453 defers_loading_(NOT_DEFERRING), 458 defers_loading_(NOT_DEFERRING),
454 request_id_(-1), 459 request_id_(-1),
455 url_loader_factory_(url_loader_factory) {} 460 url_loader_factory_(url_loader_factory),
461 associated_group_(associated_group) {}
456 462
457 void WebURLLoaderImpl::Context::Cancel() { 463 void WebURLLoaderImpl::Context::Cancel() {
458 TRACE_EVENT_WITH_FLOW0("loading", "WebURLLoaderImpl::Context::Cancel", this, 464 TRACE_EVENT_WITH_FLOW0("loading", "WebURLLoaderImpl::Context::Cancel", this,
459 TRACE_EVENT_FLAG_FLOW_IN); 465 TRACE_EVENT_FLAG_FLOW_IN);
460 if (resource_dispatcher_ && // NULL in unittest. 466 if (resource_dispatcher_ && // NULL in unittest.
461 request_id_ != -1) { 467 request_id_ != -1) {
462 resource_dispatcher_->Cancel(request_id_); 468 resource_dispatcher_->Cancel(request_id_);
463 request_id_ = -1; 469 request_id_ = -1;
464 } 470 }
465 471
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 request.getLoadingIPCType(), url_loader_factory_); 622 request.getLoadingIPCType(), url_loader_factory_);
617 return; 623 return;
618 } 624 }
619 625
620 TRACE_EVENT_WITH_FLOW0("loading", "WebURLLoaderImpl::Context::Start", this, 626 TRACE_EVENT_WITH_FLOW0("loading", "WebURLLoaderImpl::Context::Start", this,
621 TRACE_EVENT_FLAG_FLOW_OUT); 627 TRACE_EVENT_FLAG_FLOW_OUT);
622 request_id_ = resource_dispatcher_->StartAsync( 628 request_id_ = resource_dispatcher_->StartAsync(
623 std::move(resource_request), request.requestorID(), task_runner_, 629 std::move(resource_request), request.requestorID(), task_runner_,
624 extra_data->frame_origin(), 630 extra_data->frame_origin(),
625 base::MakeUnique<WebURLLoaderImpl::RequestPeerImpl>(this), 631 base::MakeUnique<WebURLLoaderImpl::RequestPeerImpl>(this),
626 request.getLoadingIPCType(), url_loader_factory_); 632 request.getLoadingIPCType(), url_loader_factory_, associated_group_);
627 633
628 if (defers_loading_ != NOT_DEFERRING) 634 if (defers_loading_ != NOT_DEFERRING)
629 resource_dispatcher_->SetDefersLoading(request_id_, true); 635 resource_dispatcher_->SetDefersLoading(request_id_, true);
630 } 636 }
631 637
632 void WebURLLoaderImpl::Context::SetTaskRunner( 638 void WebURLLoaderImpl::Context::SetTaskRunner(
633 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) { 639 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) {
634 task_runner_ = task_runner; 640 task_runner_ = task_runner;
635 } 641 }
636 642
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 const base::TimeTicks& completion_time, 1007 const base::TimeTicks& completion_time,
1002 int64_t total_transfer_size) { 1008 int64_t total_transfer_size) {
1003 context_->OnCompletedRequest(error_code, was_ignored_by_handler, 1009 context_->OnCompletedRequest(error_code, was_ignored_by_handler,
1004 stale_copy_in_cache, completion_time, 1010 stale_copy_in_cache, completion_time,
1005 total_transfer_size); 1011 total_transfer_size);
1006 } 1012 }
1007 1013
1008 // WebURLLoaderImpl ----------------------------------------------------------- 1014 // WebURLLoaderImpl -----------------------------------------------------------
1009 1015
1010 WebURLLoaderImpl::WebURLLoaderImpl(ResourceDispatcher* resource_dispatcher, 1016 WebURLLoaderImpl::WebURLLoaderImpl(ResourceDispatcher* resource_dispatcher,
1011 mojom::URLLoaderFactory* url_loader_factory) 1017 mojom::URLLoaderFactory* url_loader_factory,
1012 : context_(new Context(this, resource_dispatcher, url_loader_factory)) {} 1018 mojo::AssociatedGroup* associated_group)
1019 : context_(new Context(this,
1020 resource_dispatcher,
1021 url_loader_factory,
1022 associated_group)) {}
1013 1023
1014 WebURLLoaderImpl::~WebURLLoaderImpl() { 1024 WebURLLoaderImpl::~WebURLLoaderImpl() {
1015 cancel(); 1025 cancel();
1016 } 1026 }
1017 1027
1018 void WebURLLoaderImpl::PopulateURLResponse(const GURL& url, 1028 void WebURLLoaderImpl::PopulateURLResponse(const GURL& url,
1019 const ResourceResponseInfo& info, 1029 const ResourceResponseInfo& info,
1020 WebURLResponse* response, 1030 WebURLResponse* response,
1021 bool report_security_info) { 1031 bool report_security_info) {
1022 response->setURL(url); 1032 response->setURL(url);
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
1240 int intra_priority_value) { 1250 int intra_priority_value) {
1241 context_->DidChangePriority(new_priority, intra_priority_value); 1251 context_->DidChangePriority(new_priority, intra_priority_value);
1242 } 1252 }
1243 1253
1244 void WebURLLoaderImpl::setLoadingTaskRunner( 1254 void WebURLLoaderImpl::setLoadingTaskRunner(
1245 blink::WebTaskRunner* loading_task_runner) { 1255 blink::WebTaskRunner* loading_task_runner) {
1246 context_->SetTaskRunner(loading_task_runner->toSingleThreadTaskRunner()); 1256 context_->SetTaskRunner(loading_task_runner->toSingleThreadTaskRunner());
1247 } 1257 }
1248 1258
1249 } // namespace content 1259 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698