| Index: content/browser/loader/url_loader_factory_impl.cc
|
| diff --git a/content/browser/loader/url_loader_factory_impl.cc b/content/browser/loader/url_loader_factory_impl.cc
|
| index 7b11666452e2683045457b408c5fb466e06c4243..75f308796010f677b82881070d1ecc4afcdd6948 100644
|
| --- a/content/browser/loader/url_loader_factory_impl.cc
|
| +++ b/content/browser/loader/url_loader_factory_impl.cc
|
| @@ -13,6 +13,26 @@
|
|
|
| namespace content {
|
|
|
| +namespace {
|
| +
|
| +void DispatchSyncLoadResult(
|
| + const URLLoaderFactoryImpl::SyncLoadCallback& callback,
|
| + const SyncLoadResult* result) {
|
| + // |result| can be null when a loading task is aborted unexpectedly. Reply
|
| + // with a failure result on that case.
|
| + // TODO(tzik): Test null-result case.
|
| + if (!result) {
|
| + SyncLoadResult failure;
|
| + failure.error_code = net::ERR_FAILED;
|
| + callback.Run(failure);
|
| + return;
|
| + }
|
| +
|
| + callback.Run(*result);
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| URLLoaderFactoryImpl::URLLoaderFactoryImpl(
|
| scoped_refptr<ResourceMessageFilter> resource_message_filter)
|
| : resource_message_filter_(std::move(resource_message_filter)) {
|
| @@ -38,6 +58,18 @@ void URLLoaderFactoryImpl::CreateLoaderAndStart(
|
| resource_message_filter_.get());
|
| }
|
|
|
| +void URLLoaderFactoryImpl::SyncLoad(int32_t routing_id,
|
| + int32_t request_id,
|
| + const ResourceRequest& url_request,
|
| + const SyncLoadCallback& callback) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| +
|
| + ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get();
|
| + rdh->OnSyncLoadWithMojo(routing_id, request_id, url_request,
|
| + resource_message_filter_.get(),
|
| + base::Bind(&DispatchSyncLoadResult, callback));
|
| +}
|
| +
|
| void URLLoaderFactoryImpl::Create(
|
| scoped_refptr<ResourceMessageFilter> filter,
|
| mojo::InterfaceRequest<mojom::URLLoaderFactory> request) {
|
|
|