| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "content/child/child_url_loader_factory_getter_impl.h" |
| |
| namespace content { |
| |
| ChildURLLoaderFactoryGetter::Info::Info( |
| mojom::URLLoaderFactoryPtrInfo network_loader_factory_info, |
| mojom::URLLoaderFactoryPtrInfo blob_loader_factory_info) |
| : network_loader_factory_info_(std::move(network_loader_factory_info)), |
| blob_loader_factory_info_(std::move(blob_loader_factory_info)) {} |
| |
| ChildURLLoaderFactoryGetter::Info::Info(Info&& other) |
| : network_loader_factory_info_( |
| std::move(other.network_loader_factory_info_)), |
| blob_loader_factory_info_(std::move(other.blob_loader_factory_info_)) {} |
| |
| ChildURLLoaderFactoryGetter::Info::~Info() = default; |
| |
| scoped_refptr<ChildURLLoaderFactoryGetter> |
| ChildURLLoaderFactoryGetter::Info::Bind() { |
| DCHECK(network_loader_factory_info_.is_valid()); |
| mojom::URLLoaderFactoryPtr network_loader_factory; |
| mojom::URLLoaderFactoryPtr blob_loader_factory; |
| network_loader_factory.Bind(std::move(network_loader_factory_info_)); |
| blob_loader_factory.Bind(std::move(blob_loader_factory_info_)); |
| return base::MakeRefCounted<ChildURLLoaderFactoryGetterImpl>( |
| std::move(network_loader_factory), std::move(blob_loader_factory)); |
| } |
| |
| ChildURLLoaderFactoryGetterImpl::ChildURLLoaderFactoryGetterImpl() = default; |
| |
| ChildURLLoaderFactoryGetterImpl::ChildURLLoaderFactoryGetterImpl( |
| PossiblyAssociatedURLLoaderFactory network_loader_factory, |
| URLLoaderFactoryGetterCallback blob_loader_factory_getter) |
| : network_loader_factory_(std::move(network_loader_factory)), |
| blob_loader_factory_getter_(std::move(blob_loader_factory_getter)) {} |
| |
| ChildURLLoaderFactoryGetterImpl::ChildURLLoaderFactoryGetterImpl( |
| PossiblyAssociatedURLLoaderFactory network_loader_factory, |
| PossiblyAssociatedURLLoaderFactory blob_loader_factory) |
| : network_loader_factory_(std::move(network_loader_factory)), |
| blob_loader_factory_(std::move(blob_loader_factory)) {} |
| |
| ChildURLLoaderFactoryGetterImpl::Info |
| ChildURLLoaderFactoryGetterImpl::GetClonedInfo() { |
| mojom::URLLoaderFactoryPtrInfo network_loader_factory_info; |
| GetNetworkLoaderFactory()->Clone( |
| mojo::MakeRequest(&network_loader_factory_info)); |
| |
| mojom::URLLoaderFactoryPtrInfo blob_loader_factory_info; |
| GetBlobLoaderFactory()->Clone(mojo::MakeRequest(&blob_loader_factory_info)); |
| |
| return Info(std::move(network_loader_factory_info), |
| std::move(blob_loader_factory_info)); |
| } |
| |
| mojom::URLLoaderFactory* |
| ChildURLLoaderFactoryGetterImpl::GetNetworkLoaderFactory() { |
| return network_loader_factory_.get(); |
| } |
| |
| mojom::URLLoaderFactory* |
| ChildURLLoaderFactoryGetterImpl::GetBlobLoaderFactory() { |
| if (!blob_loader_factory_) { |
| if (blob_loader_factory_getter_.is_null()) { |
| return GetNetworkLoaderFactory(); |
| } |
| blob_loader_factory_ = std::move(blob_loader_factory_getter_).Run(); |
| } |
| return blob_loader_factory_.get(); |
| } |
| |
| ChildURLLoaderFactoryGetterImpl::~ChildURLLoaderFactoryGetterImpl() = default; |
| |
| } // namespace content |