chore: bump chromium to f5b345dd470f14eef6e44732ccf23 (master) (#20649)
This commit is contained in:
parent
fb8b1fd1c9
commit
b6246dcf12
154 changed files with 1490 additions and 1197 deletions
|
@ -11,6 +11,7 @@
|
|||
#include "base/guid.h"
|
||||
#include "content/public/browser/browser_thread.h"
|
||||
#include "content/public/browser/storage_partition.h"
|
||||
#include "mojo/public/cpp/bindings/binding.h"
|
||||
#include "mojo/public/cpp/system/data_pipe_producer.h"
|
||||
#include "mojo/public/cpp/system/string_data_source.h"
|
||||
#include "net/base/filename_util.h"
|
||||
|
@ -183,8 +184,8 @@ void AtomURLLoaderFactory::CreateLoaderAndStart(
|
|||
}
|
||||
|
||||
void AtomURLLoaderFactory::Clone(
|
||||
network::mojom::URLLoaderFactoryRequest request) {
|
||||
bindings_.AddBinding(this, std::move(request));
|
||||
mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver) {
|
||||
receivers_.Add(this, std::move(receiver));
|
||||
}
|
||||
|
||||
// static
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
#include "mojo/public/cpp/bindings/binding_set.h"
|
||||
#include "mojo/public/cpp/bindings/pending_receiver.h"
|
||||
#include "mojo/public/cpp/bindings/receiver_set.h"
|
||||
#include "net/url_request/url_request_job_factory.h"
|
||||
#include "services/network/public/cpp/resource_response.h"
|
||||
#include "services/network/public/mojom/url_loader_factory.mojom.h"
|
||||
|
@ -50,7 +51,8 @@ class AtomURLLoaderFactory : public network::mojom::URLLoaderFactory {
|
|||
network::mojom::URLLoaderClientPtr client,
|
||||
const net::MutableNetworkTrafficAnnotationTag&
|
||||
traffic_annotation) override;
|
||||
void Clone(network::mojom::URLLoaderFactoryRequest request) override;
|
||||
void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver)
|
||||
override;
|
||||
|
||||
static void StartLoading(
|
||||
network::mojom::URLLoaderRequest loader,
|
||||
|
@ -99,7 +101,7 @@ class AtomURLLoaderFactory : public network::mojom::URLLoaderFactory {
|
|||
// TODO(zcbenz): This comes from extensions/browser/extension_protocols.cc
|
||||
// but I don't know what it actually does, find out the meanings of |Clone|
|
||||
// and |bindings_| and add comments for them.
|
||||
mojo::BindingSet<network::mojom::URLLoaderFactory> bindings_;
|
||||
mojo::ReceiverSet<network::mojom::URLLoaderFactory> receivers_;
|
||||
|
||||
ProtocolType type_;
|
||||
ProtocolHandler handler_;
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
// Copyright (c) 2017 GitHub, Inc.
|
||||
// Use of this source code is governed by the MIT license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef SHELL_BROWSER_NET_COOKIE_DETAILS_H_
|
||||
#define SHELL_BROWSER_NET_COOKIE_DETAILS_H_
|
||||
|
||||
#include "base/macros.h"
|
||||
#include "services/network/public/mojom/cookie_manager.mojom.h"
|
||||
|
||||
namespace net {
|
||||
class CanonicalCookie;
|
||||
}
|
||||
|
||||
namespace electron {
|
||||
|
||||
struct CookieDetails {
|
||||
public:
|
||||
CookieDetails(const net::CanonicalCookie* cookie_copy,
|
||||
bool is_removed,
|
||||
network::mojom::CookieChangeCause cause)
|
||||
: cookie(cookie_copy), removed(is_removed), cause(cause) {}
|
||||
|
||||
const net::CanonicalCookie* cookie;
|
||||
bool removed;
|
||||
network::mojom::CookieChangeCause cause;
|
||||
};
|
||||
|
||||
} // namespace electron
|
||||
|
||||
#endif // SHELL_BROWSER_NET_COOKIE_DETAILS_H_
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
#include <utility>
|
||||
|
||||
#include "content/public/browser/browser_context.h"
|
||||
#include "extensions/browser/extension_navigation_ui_data.h"
|
||||
#include "mojo/public/cpp/bindings/binding.h"
|
||||
#include "net/base/completion_repeating_callback.h"
|
||||
|
@ -46,6 +47,7 @@ ProxyingURLLoaderFactory::InProgressRequest::InProgressRequest(
|
|||
traffic_annotation_(traffic_annotation),
|
||||
proxied_loader_binding_(this, std::move(loader_request)),
|
||||
target_client_(std::move(client)),
|
||||
current_response_(network::mojom::URLResponseHead::New()),
|
||||
proxied_client_binding_(this),
|
||||
// TODO(zcbenz): We should always use "extraHeaders" mode to be compatible
|
||||
// with old APIs.
|
||||
|
@ -192,12 +194,12 @@ void ProxyingURLLoaderFactory::InProgressRequest::OnReceiveResponse(
|
|||
if (current_request_uses_header_client_) {
|
||||
// Use the headers we got from OnHeadersReceived as that'll contain
|
||||
// Set-Cookie if it existed.
|
||||
auto saved_headers = current_response_.headers;
|
||||
current_response_ = head;
|
||||
current_response_.headers = saved_headers;
|
||||
auto saved_headers = current_response_->headers;
|
||||
current_response_ = std::move(head);
|
||||
current_response_->headers = saved_headers;
|
||||
ContinueToResponseStarted(net::OK);
|
||||
} else {
|
||||
current_response_ = head;
|
||||
current_response_ = std::move(head);
|
||||
HandleResponseOrRedirectHeaders(
|
||||
base::BindOnce(&InProgressRequest::ContinueToResponseStarted,
|
||||
weak_factory_.GetWeakPtr()));
|
||||
|
@ -212,16 +214,16 @@ void ProxyingURLLoaderFactory::InProgressRequest::OnReceiveRedirect(
|
|||
if (current_request_uses_header_client_) {
|
||||
// Use the headers we got from OnHeadersReceived as that'll contain
|
||||
// Set-Cookie if it existed.
|
||||
auto saved_headers = current_response_.headers;
|
||||
current_response_ = head;
|
||||
auto saved_headers = current_response_->headers;
|
||||
current_response_ = std::move(head);
|
||||
// If this redirect is from an HSTS upgrade, OnHeadersReceived will not be
|
||||
// called before OnReceiveRedirect, so make sure the saved headers exist
|
||||
// before setting them.
|
||||
if (saved_headers)
|
||||
current_response_.headers = saved_headers;
|
||||
current_response_->headers = saved_headers;
|
||||
ContinueToBeforeRedirect(redirect_info, net::OK);
|
||||
} else {
|
||||
current_response_ = head;
|
||||
current_response_ = std::move(head);
|
||||
HandleResponseOrRedirectHeaders(
|
||||
base::BindOnce(&InProgressRequest::ContinueToBeforeRedirect,
|
||||
weak_factory_.GetWeakPtr(), redirect_info));
|
||||
|
@ -286,6 +288,7 @@ void ProxyingURLLoaderFactory::InProgressRequest::OnBeforeSendHeaders(
|
|||
|
||||
void ProxyingURLLoaderFactory::InProgressRequest::OnHeadersReceived(
|
||||
const std::string& headers,
|
||||
const net::IPEndPoint& endpoint,
|
||||
OnHeadersReceivedCallback callback) {
|
||||
if (!current_request_uses_header_client_) {
|
||||
std::move(callback).Run(net::OK, base::nullopt, GURL());
|
||||
|
@ -293,7 +296,8 @@ void ProxyingURLLoaderFactory::InProgressRequest::OnHeadersReceived(
|
|||
}
|
||||
|
||||
on_headers_received_callback_ = std::move(callback);
|
||||
current_response_.headers =
|
||||
current_response_ = network::mojom::URLResponseHead::New();
|
||||
current_response_->headers =
|
||||
base::MakeRefCounted<net::HttpResponseHeaders>(headers);
|
||||
HandleResponseOrRedirectHeaders(
|
||||
base::BindOnce(&InProgressRequest::ContinueToHandleOverrideHeaders,
|
||||
|
@ -447,7 +451,7 @@ void ProxyingURLLoaderFactory::InProgressRequest::
|
|||
// Make sure to update current_response_, since when OnReceiveResponse
|
||||
// is called we will not use its headers as it might be missing the
|
||||
// Set-Cookie line (as that gets stripped over IPC).
|
||||
current_response_.headers = override_headers_;
|
||||
current_response_->headers = override_headers_;
|
||||
}
|
||||
}
|
||||
std::move(on_headers_received_callback_).Run(net::OK, headers, redirect_url_);
|
||||
|
@ -466,7 +470,7 @@ void ProxyingURLLoaderFactory::InProgressRequest::ContinueToResponseStarted(
|
|||
|
||||
DCHECK(!current_request_uses_header_client_ || !override_headers_);
|
||||
if (override_headers_)
|
||||
current_response_.headers = override_headers_;
|
||||
current_response_->headers = override_headers_;
|
||||
|
||||
std::string redirect_location;
|
||||
if (override_headers_ && override_headers_->IsRedirect(&redirect_location)) {
|
||||
|
@ -496,12 +500,12 @@ void ProxyingURLLoaderFactory::InProgressRequest::ContinueToResponseStarted(
|
|||
return;
|
||||
}
|
||||
|
||||
info_->AddResponseInfoFromResourceResponse(current_response_);
|
||||
info_->AddResponseInfoFromResourceResponse(*current_response_);
|
||||
|
||||
proxied_client_binding_.ResumeIncomingMethodCallProcessing();
|
||||
|
||||
factory_->web_request_api()->OnResponseStarted(&info_.value(), request_);
|
||||
target_client_->OnReceiveResponse(current_response_);
|
||||
target_client_->OnReceiveResponse(std::move(current_response_));
|
||||
}
|
||||
|
||||
void ProxyingURLLoaderFactory::InProgressRequest::ContinueToBeforeRedirect(
|
||||
|
@ -512,14 +516,15 @@ void ProxyingURLLoaderFactory::InProgressRequest::ContinueToBeforeRedirect(
|
|||
return;
|
||||
}
|
||||
|
||||
info_->AddResponseInfoFromResourceResponse(current_response_);
|
||||
info_->AddResponseInfoFromResourceResponse(*current_response_);
|
||||
|
||||
if (proxied_client_binding_.is_bound())
|
||||
proxied_client_binding_.ResumeIncomingMethodCallProcessing();
|
||||
|
||||
factory_->web_request_api()->OnBeforeRedirect(&info_.value(), request_,
|
||||
redirect_info.new_url);
|
||||
target_client_->OnReceiveRedirect(redirect_info, current_response_);
|
||||
target_client_->OnReceiveRedirect(redirect_info,
|
||||
std::move(current_response_));
|
||||
request_.url = redirect_info.new_url;
|
||||
request_.method = redirect_info.new_method;
|
||||
request_.site_for_cookies = redirect_info.new_site_for_cookies;
|
||||
|
@ -557,14 +562,14 @@ void ProxyingURLLoaderFactory::InProgressRequest::
|
|||
redirect_info.new_url = redirect_url_;
|
||||
redirect_info.new_site_for_cookies = redirect_url_;
|
||||
|
||||
network::ResourceResponseHead head;
|
||||
auto head = network::mojom::URLResponseHead::New();
|
||||
std::string headers = base::StringPrintf(
|
||||
"HTTP/1.1 %i Internal Redirect\n"
|
||||
"Location: %s\n"
|
||||
"Non-Authoritative-Reason: WebRequest API\n\n",
|
||||
kInternalRedirectStatusCode, redirect_url_.spec().c_str());
|
||||
|
||||
if (network::features::ShouldEnableOutOfBlinkCors()) {
|
||||
if (factory_->browser_context_->ShouldEnableOutOfBlinkCors()) {
|
||||
// Cross-origin requests need to modify the Origin header to 'null'. Since
|
||||
// CorsURLLoader sets |request_initiator| to the Origin request header in
|
||||
// NetworkService, we need to modify |request_initiator| here to craft the
|
||||
|
@ -595,11 +600,11 @@ void ProxyingURLLoaderFactory::InProgressRequest::
|
|||
http_origin.c_str());
|
||||
}
|
||||
}
|
||||
head.headers = base::MakeRefCounted<net::HttpResponseHeaders>(
|
||||
head->headers = base::MakeRefCounted<net::HttpResponseHeaders>(
|
||||
net::HttpUtil::AssembleRawHeaders(headers));
|
||||
head.encoded_data_length = 0;
|
||||
head->encoded_data_length = 0;
|
||||
|
||||
current_response_ = head;
|
||||
current_response_ = std::move(head);
|
||||
ContinueToBeforeRedirect(redirect_info, net::OK);
|
||||
}
|
||||
|
||||
|
@ -608,14 +613,14 @@ void ProxyingURLLoaderFactory::InProgressRequest::
|
|||
override_headers_ = nullptr;
|
||||
redirect_url_ = GURL();
|
||||
|
||||
info_->AddResponseInfoFromResourceResponse(current_response_);
|
||||
info_->AddResponseInfoFromResourceResponse(*current_response_);
|
||||
|
||||
net::CompletionRepeatingCallback copyable_callback =
|
||||
base::AdaptCallbackForRepeating(std::move(continuation));
|
||||
DCHECK(info_.has_value());
|
||||
int result = factory_->web_request_api()->OnHeadersReceived(
|
||||
&info_.value(), request_, copyable_callback,
|
||||
current_response_.headers.get(), &override_headers_, &redirect_url_);
|
||||
current_response_->headers.get(), &override_headers_, &redirect_url_);
|
||||
if (result == net::ERR_BLOCKED_BY_CLIENT) {
|
||||
OnRequestError(network::URLLoaderCompletionStatus(result));
|
||||
return;
|
||||
|
@ -651,21 +656,23 @@ void ProxyingURLLoaderFactory::InProgressRequest::OnRequestError(
|
|||
ProxyingURLLoaderFactory::ProxyingURLLoaderFactory(
|
||||
WebRequestAPI* web_request_api,
|
||||
const HandlersMap& intercepted_handlers,
|
||||
content::BrowserContext* browser_context,
|
||||
int render_process_id,
|
||||
network::mojom::URLLoaderFactoryRequest loader_request,
|
||||
network::mojom::URLLoaderFactoryPtrInfo target_factory_info,
|
||||
mojo::PendingRemote<network::mojom::URLLoaderFactory> target_factory_remote,
|
||||
mojo::PendingReceiver<network::mojom::TrustedURLLoaderHeaderClient>
|
||||
header_client_receiver,
|
||||
content::ContentBrowserClient::URLLoaderFactoryType loader_factory_type)
|
||||
: web_request_api_(web_request_api),
|
||||
intercepted_handlers_(intercepted_handlers),
|
||||
browser_context_(browser_context),
|
||||
render_process_id_(render_process_id),
|
||||
loader_factory_type_(loader_factory_type) {
|
||||
target_factory_.Bind(std::move(target_factory_info));
|
||||
target_factory_.set_connection_error_handler(base::BindOnce(
|
||||
target_factory_.Bind(std::move(target_factory_remote));
|
||||
target_factory_.set_disconnect_handler(base::BindOnce(
|
||||
&ProxyingURLLoaderFactory::OnTargetFactoryError, base::Unretained(this)));
|
||||
proxy_bindings_.AddBinding(this, std::move(loader_request));
|
||||
proxy_bindings_.set_connection_error_handler(base::BindRepeating(
|
||||
proxy_receivers_.Add(this, std::move(loader_request));
|
||||
proxy_receivers_.set_disconnect_handler(base::BindRepeating(
|
||||
&ProxyingURLLoaderFactory::OnProxyBindingError, base::Unretained(this)));
|
||||
|
||||
if (header_client_receiver)
|
||||
|
@ -727,8 +734,8 @@ void ProxyingURLLoaderFactory::CreateLoaderAndStart(
|
|||
}
|
||||
|
||||
void ProxyingURLLoaderFactory::Clone(
|
||||
network::mojom::URLLoaderFactoryRequest loader_request) {
|
||||
proxy_bindings_.AddBinding(this, std::move(loader_request));
|
||||
mojo::PendingReceiver<network::mojom::URLLoaderFactory> loader_receiver) {
|
||||
proxy_receivers_.Add(this, std::move(loader_receiver));
|
||||
}
|
||||
|
||||
void ProxyingURLLoaderFactory::OnLoaderCreated(
|
||||
|
@ -750,13 +757,13 @@ bool ProxyingURLLoaderFactory::IsForServiceWorkerScript() const {
|
|||
|
||||
void ProxyingURLLoaderFactory::OnTargetFactoryError() {
|
||||
target_factory_.reset();
|
||||
proxy_bindings_.CloseAllBindings();
|
||||
proxy_receivers_.Clear();
|
||||
|
||||
MaybeDeleteThis();
|
||||
}
|
||||
|
||||
void ProxyingURLLoaderFactory::OnProxyBindingError() {
|
||||
if (proxy_bindings_.empty())
|
||||
if (proxy_receivers_.empty())
|
||||
target_factory_.reset();
|
||||
|
||||
MaybeDeleteThis();
|
||||
|
|
|
@ -14,11 +14,15 @@
|
|||
#include "base/optional.h"
|
||||
#include "content/public/browser/content_browser_client.h"
|
||||
#include "extensions/browser/api/web_request/web_request_info.h"
|
||||
#include "mojo/public/cpp/bindings/receiver.h"
|
||||
#include "mojo/public/cpp/bindings/binding.h"
|
||||
#include "mojo/public/cpp/bindings/pending_receiver.h"
|
||||
#include "mojo/public/cpp/bindings/pending_remote.h"
|
||||
#include "mojo/public/cpp/bindings/receiver_set.h"
|
||||
#include "mojo/public/cpp/bindings/remote.h"
|
||||
#include "services/network/public/cpp/resource_request.h"
|
||||
#include "services/network/public/cpp/resource_response.h"
|
||||
#include "services/network/public/mojom/network_context.mojom.h"
|
||||
#include "services/network/public/mojom/url_loader.mojom.h"
|
||||
#include "services/network/public/mojom/url_response_head.mojom.h"
|
||||
#include "shell/browser/net/atom_url_loader_factory.h"
|
||||
|
||||
namespace electron {
|
||||
|
@ -122,6 +126,7 @@ class ProxyingURLLoaderFactory
|
|||
void OnBeforeSendHeaders(const net::HttpRequestHeaders& headers,
|
||||
OnBeforeSendHeadersCallback callback) override;
|
||||
void OnHeadersReceived(const std::string& headers,
|
||||
const net::IPEndPoint& endpoint,
|
||||
OnHeadersReceivedCallback callback) override;
|
||||
|
||||
private:
|
||||
|
@ -156,7 +161,7 @@ class ProxyingURLLoaderFactory
|
|||
|
||||
base::Optional<extensions::WebRequestInfo> info_;
|
||||
|
||||
network::ResourceResponseHead current_response_;
|
||||
network::mojom::URLResponseHeadPtr current_response_;
|
||||
scoped_refptr<net::HttpResponseHeaders> override_headers_;
|
||||
GURL redirect_url_;
|
||||
|
||||
|
@ -201,9 +206,11 @@ class ProxyingURLLoaderFactory
|
|||
ProxyingURLLoaderFactory(
|
||||
WebRequestAPI* web_request_api,
|
||||
const HandlersMap& intercepted_handlers,
|
||||
content::BrowserContext* browser_context,
|
||||
int render_process_id,
|
||||
network::mojom::URLLoaderFactoryRequest loader_request,
|
||||
network::mojom::URLLoaderFactoryPtrInfo target_factory_info,
|
||||
mojo::PendingRemote<network::mojom::URLLoaderFactory>
|
||||
target_factory_remote,
|
||||
mojo::PendingReceiver<network::mojom::TrustedURLLoaderHeaderClient>
|
||||
header_client_receiver,
|
||||
content::ContentBrowserClient::URLLoaderFactoryType loader_factory_type);
|
||||
|
@ -218,13 +225,18 @@ class ProxyingURLLoaderFactory
|
|||
network::mojom::URLLoaderClientPtr client,
|
||||
const net::MutableNetworkTrafficAnnotationTag&
|
||||
traffic_annotation) override;
|
||||
void Clone(network::mojom::URLLoaderFactoryRequest request) override;
|
||||
void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory>
|
||||
loader_receiver) override;
|
||||
|
||||
// network::mojom::TrustedURLLoaderHeaderClient:
|
||||
void OnLoaderCreated(
|
||||
int32_t request_id,
|
||||
mojo::PendingReceiver<network::mojom::TrustedHeaderClient> receiver)
|
||||
override;
|
||||
void OnLoaderForCorsPreflightCreated(
|
||||
const network::ResourceRequest& request,
|
||||
mojo::PendingReceiver<network::mojom::TrustedHeaderClient> receiver)
|
||||
override {}
|
||||
|
||||
WebRequestAPI* web_request_api() { return web_request_api_; }
|
||||
|
||||
|
@ -248,9 +260,10 @@ class ProxyingURLLoaderFactory
|
|||
// In this way we can avoid using code from api namespace in this file.
|
||||
const HandlersMap& intercepted_handlers_;
|
||||
|
||||
content::BrowserContext* const browser_context_;
|
||||
const int render_process_id_;
|
||||
mojo::BindingSet<network::mojom::URLLoaderFactory> proxy_bindings_;
|
||||
network::mojom::URLLoaderFactoryPtr target_factory_;
|
||||
mojo::ReceiverSet<network::mojom::URLLoaderFactory> proxy_receivers_;
|
||||
mojo::Remote<network::mojom::URLLoaderFactory> target_factory_;
|
||||
mojo::Receiver<network::mojom::TrustedURLLoaderHeaderClient>
|
||||
url_loader_header_client_receiver_{this};
|
||||
const content::ContentBrowserClient::URLLoaderFactoryType
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#include "base/bind.h"
|
||||
#include "content/public/browser/browser_thread.h"
|
||||
#include "content/public/browser/storage_partition.h"
|
||||
#include "mojo/public/cpp/bindings/interface_request.h"
|
||||
#include "mojo/public/cpp/bindings/pending_remote.h"
|
||||
#include "net/proxy_resolution/proxy_info.h"
|
||||
#include "services/network/public/mojom/network_context.mojom.h"
|
||||
#include "shell/browser/atom_browser_context.h"
|
||||
|
@ -19,12 +19,12 @@ using content::BrowserThread;
|
|||
namespace electron {
|
||||
|
||||
ResolveProxyHelper::ResolveProxyHelper(AtomBrowserContext* browser_context)
|
||||
: binding_(this), browser_context_(browser_context) {}
|
||||
: browser_context_(browser_context) {}
|
||||
|
||||
ResolveProxyHelper::~ResolveProxyHelper() {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
DCHECK(!owned_self_);
|
||||
DCHECK(!binding_.is_bound());
|
||||
DCHECK(!receiver_.is_bound());
|
||||
// Clear all pending requests if the ProxyService is still alive.
|
||||
pending_requests_.clear();
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ void ResolveProxyHelper::ResolveProxy(const GURL& url,
|
|||
pending_requests_.emplace_back(url, std::move(callback));
|
||||
|
||||
// If nothing is in progress, start.
|
||||
if (!binding_.is_bound()) {
|
||||
if (!receiver_.is_bound()) {
|
||||
DCHECK_EQ(1u, pending_requests_.size());
|
||||
StartPendingRequest();
|
||||
}
|
||||
|
@ -44,13 +44,13 @@ void ResolveProxyHelper::ResolveProxy(const GURL& url,
|
|||
|
||||
void ResolveProxyHelper::StartPendingRequest() {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
DCHECK(!binding_.is_bound());
|
||||
DCHECK(!receiver_.is_bound());
|
||||
DCHECK(!pending_requests_.empty());
|
||||
|
||||
// Start the request.
|
||||
network::mojom::ProxyLookupClientPtr proxy_lookup_client;
|
||||
binding_.Bind(mojo::MakeRequest(&proxy_lookup_client));
|
||||
binding_.set_connection_error_handler(
|
||||
mojo::PendingRemote<network::mojom::ProxyLookupClient> proxy_lookup_client =
|
||||
receiver_.BindNewPipeAndPassRemote();
|
||||
receiver_.set_disconnect_handler(
|
||||
base::BindOnce(&ResolveProxyHelper::OnProxyLookupComplete,
|
||||
base::Unretained(this), net::ERR_ABORTED, base::nullopt));
|
||||
content::BrowserContext::GetDefaultStoragePartition(browser_context_)
|
||||
|
@ -65,7 +65,7 @@ void ResolveProxyHelper::OnProxyLookupComplete(
|
|||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
DCHECK(!pending_requests_.empty());
|
||||
|
||||
binding_.Close();
|
||||
receiver_.reset();
|
||||
|
||||
// Clear the current (completed) request.
|
||||
PendingRequest completed_request = std::move(pending_requests_.front());
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
#include "base/memory/ref_counted.h"
|
||||
#include "base/optional.h"
|
||||
#include "mojo/public/cpp/bindings/binding.h"
|
||||
#include "mojo/public/cpp/bindings/receiver.h"
|
||||
#include "services/network/public/mojom/proxy_lookup_client.mojom.h"
|
||||
#include "url/gurl.h"
|
||||
|
||||
|
@ -61,8 +61,8 @@ class ResolveProxyHelper
|
|||
scoped_refptr<ResolveProxyHelper> owned_self_;
|
||||
|
||||
std::deque<PendingRequest> pending_requests_;
|
||||
// Binding for the currently in-progress request, if any.
|
||||
mojo::Binding<network::mojom::ProxyLookupClient> binding_;
|
||||
// Receiver for the currently in-progress request, if any.
|
||||
mojo::Receiver<network::mojom::ProxyLookupClient> receiver_{this};
|
||||
|
||||
// Weak Ref
|
||||
AtomBrowserContext* browser_context_;
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include "content/public/common/content_features.h"
|
||||
#include "content/public/common/service_names.mojom.h"
|
||||
#include "mojo/public/cpp/bindings/associated_interface_ptr.h"
|
||||
#include "mojo/public/cpp/bindings/pending_receiver.h"
|
||||
#include "net/net_buildflags.h"
|
||||
#include "services/network/network_service.h"
|
||||
#include "services/network/public/cpp/cross_thread_shared_url_loader_factory_info.h"
|
||||
|
@ -84,10 +85,11 @@ class SystemNetworkContextManager::URLLoaderFactoryForSystem
|
|||
std::move(client), traffic_annotation);
|
||||
}
|
||||
|
||||
void Clone(network::mojom::URLLoaderFactoryRequest request) override {
|
||||
void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver)
|
||||
override {
|
||||
if (!manager_)
|
||||
return;
|
||||
manager_->GetURLLoaderFactory()->Clone(std::move(request));
|
||||
manager_->GetURLLoaderFactory()->Clone(std::move(receiver));
|
||||
}
|
||||
|
||||
// SharedURLLoaderFactory implementation:
|
||||
|
@ -127,7 +129,7 @@ network::mojom::NetworkContext* SystemNetworkContextManager::GetContext() {
|
|||
network::mojom::URLLoaderFactory*
|
||||
SystemNetworkContextManager::GetURLLoaderFactory() {
|
||||
// Create the URLLoaderFactory as needed.
|
||||
if (url_loader_factory_ && !url_loader_factory_.encountered_error()) {
|
||||
if (url_loader_factory_ && url_loader_factory_.is_connected()) {
|
||||
return url_loader_factory_.get();
|
||||
}
|
||||
|
||||
|
@ -135,8 +137,9 @@ SystemNetworkContextManager::GetURLLoaderFactory() {
|
|||
network::mojom::URLLoaderFactoryParams::New();
|
||||
params->process_id = network::mojom::kBrowserProcessId;
|
||||
params->is_corb_enabled = false;
|
||||
GetContext()->CreateURLLoaderFactory(mojo::MakeRequest(&url_loader_factory_),
|
||||
std::move(params));
|
||||
url_loader_factory_.reset();
|
||||
GetContext()->CreateURLLoaderFactory(
|
||||
url_loader_factory_.BindNewPipeAndPassReceiver(), std::move(params));
|
||||
return url_loader_factory_.get();
|
||||
}
|
||||
|
||||
|
|
|
@ -97,7 +97,7 @@ class SystemNetworkContextManager {
|
|||
// URLLoaderFactory backed by the NetworkContext returned by GetContext(), so
|
||||
// consumers don't all need to create their own factory.
|
||||
scoped_refptr<URLLoaderFactoryForSystem> shared_url_loader_factory_;
|
||||
network::mojom::URLLoaderFactoryPtr url_loader_factory_;
|
||||
mojo::Remote<network::mojom::URLLoaderFactory> url_loader_factory_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(SystemNetworkContextManager);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue