diff --git content/browser/storage_partition_impl.cc content/browser/storage_partition_impl.cc index c05ce85a2327..2a9124db10a4 100644 --- content/browser/storage_partition_impl.cc +++ content/browser/storage_partition_impl.cc @@ -581,10 +581,6 @@ class LoginHandlerDelegate { } WebContents* web_contents = web_contents_getter_.Run(); - if (!web_contents) { - OnAuthCredentials(base::nullopt); - return; - } // WeakPtr is not strictly necessary here due to OnRequestCancelled. creating_login_delegate_ = true; @@ -641,12 +637,6 @@ void OnAuthRequiredContinuation( web_contents_getter = base::BindRepeating(GetWebContents, process_id, routing_id); } - if (!web_contents_getter.Run()) { - mojo::Remote - auth_challenge_responder_remote(std::move(auth_challenge_responder)); - auth_challenge_responder_remote->OnAuthCredentials(base::nullopt); - return; - } new LoginHandlerDelegate(std::move(auth_challenge_responder), std::move(web_contents_getter), auth_info, is_request_for_main_frame, process_id, routing_id, @@ -2267,7 +2257,10 @@ void StoragePartitionImpl::GetQuotaSettings( void StoragePartitionImpl::InitNetworkContext() { network_context_ = GetContentClient()->browser()->CreateNetworkContext( browser_context_, is_in_memory_, relative_partition_path_); - DCHECK(network_context_); + if (!network_context_) { + // May happen during shutdown. + return; + } network_context_client_receiver_.reset(); network_context_->SetClient( diff --git services/network/public/cpp/simple_url_loader.cc services/network/public/cpp/simple_url_loader.cc index f73b5b6fdc3d..14403d2e468c 100644 --- services/network/public/cpp/simple_url_loader.cc +++ services/network/public/cpp/simple_url_loader.cc @@ -230,6 +230,7 @@ class SimpleURLLoaderImpl : public SimpleURLLoader, void SetRetryOptions(int max_retries, int retry_mode) override; void SetURLLoaderFactoryOptions(uint32_t options) override; void SetTimeoutDuration(base::TimeDelta timeout_duration) override; + void SetRequestId(int32_t request_id) override; int NetError() const override; const mojom::URLResponseHead* ResponseInfo() const override; @@ -348,6 +349,8 @@ class SimpleURLLoaderImpl : public SimpleURLLoader, // The next values contain all the information required to restart the // request. + int32_t request_id_ = 0; + // Populated in the constructor, and cleared once no longer needed, when no // more retries are possible. std::unique_ptr resource_request_; @@ -1371,6 +1374,12 @@ void SimpleURLLoaderImpl::SetTimeoutDuration(base::TimeDelta timeout_duration) { timeout_duration_ = timeout_duration; } +void SimpleURLLoaderImpl::SetRequestId(int32_t request_id) { + // Check if a request has not yet been started. + DCHECK(!body_handler_); + request_id_ = request_id; +} + int SimpleURLLoaderImpl::NetError() const { // Should only be called once the request is compelete. DCHECK(request_state_->finished); @@ -1516,7 +1525,7 @@ void SimpleURLLoaderImpl::StartRequest( } url_loader_factory->CreateLoaderAndStart( url_loader_.BindNewPipeAndPassReceiver(), 0 /* routing_id */, - 0 /* request_id */, url_loader_factory_options_, *resource_request_, + request_id_, url_loader_factory_options_, *resource_request_, client_receiver_.BindNewPipeAndPassRemote(), net::MutableNetworkTrafficAnnotationTag(annotation_tag_)); client_receiver_.set_disconnect_handler(base::BindOnce( diff --git services/network/public/cpp/simple_url_loader.h services/network/public/cpp/simple_url_loader.h index 5a0df57c4444..5ee2bef53374 100644 --- services/network/public/cpp/simple_url_loader.h +++ services/network/public/cpp/simple_url_loader.h @@ -332,6 +332,9 @@ class COMPONENT_EXPORT(NETWORK_CPP) SimpleURLLoader { // as much time as it wants. virtual void SetTimeoutDuration(base::TimeDelta timeout_duration) = 0; + // Set the ID that will be associated with the request. + virtual void SetRequestId(int32_t request_id) = 0; + // Returns the net::Error representing the final status of the request. May // only be called once the loader has informed the caller of completion. virtual int NetError() const = 0;