blob: 52582d0caf3d51b3ddd446d268485df8756fa793 [file] [log] [blame]
// Copyright 2018 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/browser/download/file_download_url_loader_factory_getter.h"
#include "base/task/post_task.h"
#include "base/task/task_traits.h"
#include "components/download/public/common/download_task_runner.h"
#include "content/browser/file_url_loader_factory.h"
#include "content/browser/url_loader_factory_getter.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
#include "services/network/public/cpp/wrapper_shared_url_loader_factory.h"
#include "services/network/public/mojom/url_loader_factory.mojom.h"
namespace content {
FileDownloadURLLoaderFactoryGetter::FileDownloadURLLoaderFactoryGetter(
const GURL& url,
const base::FilePath& profile_path,
scoped_refptr<const SharedCorsOriginAccessList>
shared_cors_origin_access_list)
: url_(url),
profile_path_(profile_path),
shared_cors_origin_access_list_(
std::move(shared_cors_origin_access_list)) {
DCHECK(url.SchemeIs(url::kFileScheme));
}
FileDownloadURLLoaderFactoryGetter::~FileDownloadURLLoaderFactoryGetter() =
default;
scoped_refptr<network::SharedURLLoaderFactory>
FileDownloadURLLoaderFactoryGetter::GetURLLoaderFactory() {
DCHECK(download::GetIOTaskRunner()->BelongsToCurrentThread());
network::mojom::URLLoaderFactoryPtrInfo url_loader_factory_ptr_info;
mojo::MakeStrongBinding(
std::make_unique<FileURLLoaderFactory>(
profile_path_, shared_cors_origin_access_list_,
base::CreateSequencedTaskRunnerWithTraits(
{base::MayBlock(), base::TaskPriority::BEST_EFFORT,
base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})),
MakeRequest(&url_loader_factory_ptr_info));
return base::MakeRefCounted<network::WrapperSharedURLLoaderFactory>(
std::move(url_loader_factory_ptr_info));
}
} // namespace content