diff options
Diffstat (limited to 'src/core/net')
-rw-r--r-- | src/core/net/cookie_monster_delegate_qt.cpp | 15 | ||||
-rw-r--r-- | src/core/net/cookie_monster_delegate_qt.h | 2 | ||||
-rw-r--r-- | src/core/net/custom_url_loader_factory.cpp | 12 | ||||
-rw-r--r-- | src/core/net/proxy_config_monitor.cpp | 39 | ||||
-rw-r--r-- | src/core/net/proxy_config_monitor.h | 9 | ||||
-rw-r--r-- | src/core/net/proxying_restricted_cookie_manager_qt.cpp | 4 | ||||
-rw-r--r-- | src/core/net/proxying_url_loader_factory_qt.cpp | 44 | ||||
-rw-r--r-- | src/core/net/proxying_url_loader_factory_qt.h | 16 | ||||
-rw-r--r-- | src/core/net/system_network_context_manager.cpp | 9 | ||||
-rw-r--r-- | src/core/net/webui_controller_factory_qt.cpp | 2 |
10 files changed, 81 insertions, 71 deletions
diff --git a/src/core/net/cookie_monster_delegate_qt.cpp b/src/core/net/cookie_monster_delegate_qt.cpp index 3e8cced67..cf114406b 100644 --- a/src/core/net/cookie_monster_delegate_qt.cpp +++ b/src/core/net/cookie_monster_delegate_qt.cpp @@ -61,10 +61,9 @@ public: ~CookieChangeListener() override = default; // network::mojom::CookieChangeListener: - void OnCookieChange(const net::CanonicalCookie &canonical_cookie, - network::mojom::CookieChangeCause cause) override + void OnCookieChange(const net::CookieChangeInfo &change) override { - m_delegate->OnCookieChanged(canonical_cookie, net::CookieChangeCause(cause)); + m_delegate->OnCookieChanged(change); } private: @@ -93,9 +92,9 @@ CookieMonsterDelegateQt::~CookieMonsterDelegateQt() void CookieMonsterDelegateQt::AddStore(net::CookieStore *store) { std::unique_ptr<net::CookieChangeSubscription> sub = store->GetChangeDispatcher().AddCallbackForAllChanges( - base::Bind(&CookieMonsterDelegateQt::OnCookieChanged, - // this object's destruction will deregister the subscription. - base::Unretained(this))); + base::BindRepeating(&CookieMonsterDelegateQt::OnCookieChanged, + // this object's destruction will deregister the subscription. + base::Unretained(this))); m_subscriptions.push_back(std::move(sub)); } @@ -217,11 +216,11 @@ bool CookieMonsterDelegateQt::canGetCookies(const QUrl &firstPartyUrl, const QUr return m_client->d_func()->canAccessCookies(firstPartyUrl, url); } -void CookieMonsterDelegateQt::OnCookieChanged(const net::CanonicalCookie &cookie, net::CookieChangeCause cause) +void CookieMonsterDelegateQt::OnCookieChanged(const net::CookieChangeInfo &change) { if (!m_client) return; - m_client->d_func()->onCookieChanged(toQt(cookie), cause != net::CookieChangeCause::INSERTED); + m_client->d_func()->onCookieChanged(toQt(change.cookie), change.cause != net::CookieChangeCause::INSERTED); } void CookieMonsterDelegateQt::GetAllCookiesCallbackOnUIThread(qint64 callbackId, const std::vector<net::CanonicalCookie> &cookies) diff --git a/src/core/net/cookie_monster_delegate_qt.h b/src/core/net/cookie_monster_delegate_qt.h index 8b04fe26f..6caaeea94 100644 --- a/src/core/net/cookie_monster_delegate_qt.h +++ b/src/core/net/cookie_monster_delegate_qt.h @@ -112,7 +112,7 @@ public: bool canGetCookies(const QUrl &firstPartyUrl, const QUrl &url) const; void AddStore(net::CookieStore *store); - void OnCookieChanged(const net::CanonicalCookie &cookie, net::CookieChangeCause cause); + void OnCookieChanged(const net::CookieChangeInfo &change); private: void GetAllCookiesCallbackOnUIThread(qint64 callbackId, const std::vector<net::CanonicalCookie> &cookies); diff --git a/src/core/net/custom_url_loader_factory.cpp b/src/core/net/custom_url_loader_factory.cpp index 261630cc4..e0ae22bb1 100644 --- a/src/core/net/custom_url_loader_factory.cpp +++ b/src/core/net/custom_url_loader_factory.cpp @@ -43,7 +43,9 @@ #include "base/task/post_task.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" -#include "mojo/public/cpp/bindings/binding_set.h" +#include "mojo/public/cpp/bindings/binding.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/receiver_set.h" #include "mojo/public/cpp/system/data_pipe.h" #include "mojo/public/cpp/system/simple_watcher.h" #include "net/base/net_errors.h" @@ -255,7 +257,7 @@ private: : net::URLRequest::NEVER_CHANGE_FIRST_PARTY_URL; net::RedirectInfo redirectInfo = net::RedirectInfo::ComputeRedirectInfo( m_request.method, m_request.url, - m_request.site_for_cookies, m_request.top_frame_origin, + m_request.site_for_cookies, first_party_url_policy, m_request.referrer_policy, m_request.referrer.spec(), net::HTTP_SEE_OTHER, m_redirect, base::nullopt, false /*insecure_scheme_was_upgraded*/); @@ -425,13 +427,13 @@ public: } - void Clone(network::mojom::URLLoaderFactoryRequest request) override + void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver) override { - m_bindings.AddBinding(this, std::move(request)); + m_receivers.Add(this, std::move(receiver)); } const scoped_refptr<base::SequencedTaskRunner> m_taskRunner; - mojo::BindingSet<network::mojom::URLLoaderFactory> m_bindings; + mojo::ReceiverSet<network::mojom::URLLoaderFactory> m_receivers; QPointer<ProfileAdapter> m_profileAdapter; DISALLOW_COPY_AND_ASSIGN(CustomURLLoaderFactory); }; diff --git a/src/core/net/proxy_config_monitor.cpp b/src/core/net/proxy_config_monitor.cpp index ed1802645..a0aaf0c05 100644 --- a/src/core/net/proxy_config_monitor.cpp +++ b/src/core/net/proxy_config_monitor.cpp @@ -82,12 +82,13 @@ ProxyConfigMonitor::~ProxyConfigMonitor() void ProxyConfigMonitor::AddToNetworkContextParams( network::mojom::NetworkContextParams *network_context_params) { - network::mojom::ProxyConfigClientPtr proxy_config_client; - network_context_params->proxy_config_client_request = mojo::MakeRequest(&proxy_config_client); - proxy_config_client_set_.AddPtr(std::move(proxy_config_client)); + mojo::PendingRemote<network::mojom::ProxyConfigClient> proxy_config_client; + network_context_params->proxy_config_client_receiver = + proxy_config_client.InitWithNewPipeAndPassReceiver(); + proxy_config_client_set_.Add(std::move(proxy_config_client)); - poller_binding_set_.AddBinding( - this, mojo::MakeRequest(&network_context_params->proxy_config_poller_client)); + poller_receiver_set_.Add(this, + network_context_params->proxy_config_poller_client.InitWithNewPipeAndPassReceiver()); net::ProxyConfigWithAnnotation proxy_config; net::ProxyConfigService::ConfigAvailability availability = @@ -102,21 +103,19 @@ void ProxyConfigMonitor::OnProxyConfigChanged( { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || !BrowserThread::IsThreadInitialized(BrowserThread::UI)); - proxy_config_client_set_.ForAllPtrs( - [config, availability](network::mojom::ProxyConfigClient *proxy_config_client) { - switch (availability) { - case net::ProxyConfigService::CONFIG_VALID: - proxy_config_client->OnProxyConfigUpdated(config); - break; - case net::ProxyConfigService::CONFIG_UNSET: - proxy_config_client->OnProxyConfigUpdated( - net::ProxyConfigWithAnnotation::CreateDirect()); - break; - case net::ProxyConfigService::CONFIG_PENDING: - NOTREACHED(); - break; - } - }); + for (const auto &proxy_config_client : proxy_config_client_set_) { + switch (availability) { + case net::ProxyConfigService::CONFIG_VALID: + proxy_config_client->OnProxyConfigUpdated(config); + break; + case net::ProxyConfigService::CONFIG_UNSET: + proxy_config_client->OnProxyConfigUpdated(net::ProxyConfigWithAnnotation::CreateDirect()); + break; + case net::ProxyConfigService::CONFIG_PENDING: + NOTREACHED(); + break; + } + } } void ProxyConfigMonitor::OnLazyProxyConfigPoll() diff --git a/src/core/net/proxy_config_monitor.h b/src/core/net/proxy_config_monitor.h index 23f073a84..fda6a6fb9 100644 --- a/src/core/net/proxy_config_monitor.h +++ b/src/core/net/proxy_config_monitor.h @@ -51,8 +51,8 @@ #include "base/macros.h" #include "build/buildflag.h" #include "extensions/buildflags/buildflags.h" -#include "mojo/public/cpp/bindings/binding_set.h" -#include "mojo/public/cpp/bindings/interface_ptr_set.h" +#include "mojo/public/cpp/bindings/receiver_set.h" +#include "mojo/public/cpp/bindings/remote_set.h" #include "net/proxy_resolution/proxy_config_service.h" #include "services/network/public/mojom/network_context.mojom-forward.h" #include "services/network/public/mojom/network_service.mojom-forward.h" @@ -94,9 +94,8 @@ private: std::unique_ptr<ProxyConfigServiceQt> proxy_config_service_; - mojo::BindingSet<network::mojom::ProxyConfigPollerClient> poller_binding_set_; - - mojo::InterfacePtrSet<network::mojom::ProxyConfigClient> proxy_config_client_set_; + mojo::ReceiverSet<network::mojom::ProxyConfigPollerClient> poller_receiver_set_; + mojo::RemoteSet<network::mojom::ProxyConfigClient> proxy_config_client_set_; DISALLOW_COPY_AND_ASSIGN(ProxyConfigMonitor); }; diff --git a/src/core/net/proxying_restricted_cookie_manager_qt.cpp b/src/core/net/proxying_restricted_cookie_manager_qt.cpp index e14ea2375..7ee6c2a15 100644 --- a/src/core/net/proxying_restricted_cookie_manager_qt.cpp +++ b/src/core/net/proxying_restricted_cookie_manager_qt.cpp @@ -72,10 +72,10 @@ public: , client_listener_(std::move(client_listener)) {} - void OnCookieChange(const net::CanonicalCookie &cookie, network::mojom::CookieChangeCause cause) override + void OnCookieChange(const net::CookieChangeInfo &change) override { if (restricted_cookie_manager_ && restricted_cookie_manager_->allowCookies(url_, site_for_cookies_)) - client_listener_->OnCookieChange(cookie, cause); + client_listener_->OnCookieChange(change); } private: diff --git a/src/core/net/proxying_url_loader_factory_qt.cpp b/src/core/net/proxying_url_loader_factory_qt.cpp index 429c158a5..29ca02513 100644 --- a/src/core/net/proxying_url_loader_factory_qt.cpp +++ b/src/core/net/proxying_url_loader_factory_qt.cpp @@ -63,6 +63,7 @@ #include "type_conversion.h" #include "web_contents_adapter_client.h" #include "web_contents_view_qt.h" + #include <QVariant> // originally based on aw_proxying_url_loader_factory.cc: @@ -93,7 +94,7 @@ class InterceptedRequest : public network::mojom::URLLoader { public: InterceptedRequest(int process_id, uint64_t request_id, int32_t routing_id, uint32_t options, - const network::ResourceRequest &request, + const network::ResourceRequest &request, const GURL &top_document_url, const net::MutableNetworkTrafficAnnotationTag &traffic_annotation, ProfileIODataQt *profileData, network::mojom::URLLoaderRequest loader_request, network::mojom::URLLoaderClientPtr client, @@ -146,7 +147,7 @@ private: // That way the destructor can send it to OnReceivedError if safe browsing // error didn't occur. int error_status_ = net::OK; - GURL m_originalUrl; + GURL m_topDocumentUrl; network::ResourceRequest request_; network::ResourceResponseHead current_response_; @@ -167,7 +168,7 @@ private: }; InterceptedRequest::InterceptedRequest(int process_id, uint64_t request_id, int32_t routing_id, uint32_t options, - const network::ResourceRequest &request, + const network::ResourceRequest &request, const GURL &top_document_url, const net::MutableNetworkTrafficAnnotationTag &traffic_annotation, ProfileIODataQt *profileData, network::mojom::URLLoaderRequest loader_request, @@ -177,6 +178,7 @@ InterceptedRequest::InterceptedRequest(int process_id, uint64_t request_id, int3 , request_id_(request_id) , routing_id_(routing_id) , options_(options) + , m_topDocumentUrl(top_document_url) , request_(request) , traffic_annotation_(traffic_annotation) , m_profileData(profileData) @@ -217,16 +219,15 @@ void InterceptedRequest::InterceptOnUIThread() WebContentsAdapterClient::NavigationType navigationType = pageTransitionToNavigationType(ui::PageTransition(request_.transition_type)); - m_originalUrl = request_.url; const QUrl qUrl = toQt(request_.url); const QUrl initiator = request_.request_initiator.has_value() ? toQt(request_.request_initiator->GetURL()) : QUrl(); QUrl firstPartyUrl; - if (resourceType == content::ResourceType::kSubFrame) - firstPartyUrl = toQt(request_.first_party_url); + if (!m_topDocumentUrl.is_empty()) + firstPartyUrl = toQt(m_topDocumentUrl); else - firstPartyUrl = toQt(request_.site_for_cookies); + firstPartyUrl = toQt(request_.site_for_cookies); // m_topDocumentUrl can be empty for the main-frame. QWebEngineUrlRequestInfoPrivate *infoPrivate = new QWebEngineUrlRequestInfoPrivate(toQt(resourceType), toQt(navigationType), @@ -275,7 +276,7 @@ void InterceptedRequest::InterceptOnUIThread() request_.update_first_party_url_on_redirect ? net::URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT : net::URLRequest::NEVER_CHANGE_FIRST_PARTY_URL; net::RedirectInfo redirectInfo = net::RedirectInfo::ComputeRedirectInfo(request_.method, request_.url, - request_.site_for_cookies, request_.top_frame_origin, + request_.site_for_cookies, first_party_url_policy, request_.referrer_policy, request_.referrer.spec(), net::HTTP_TEMPORARY_REDIRECT, toGurl(requestInfo.requestUrl()), base::nullopt, @@ -469,9 +470,10 @@ void InterceptedRequest::SendErrorAndCompleteImmediately(int error_code) ProxyingURLLoaderFactoryQt::ProxyingURLLoaderFactoryQt(int process_id, content::ResourceContext *resourceContext, - network::mojom::URLLoaderFactoryRequest loader_request, + content::RenderFrameHostImpl *host, + mojo::PendingReceiver<network::mojom::URLLoaderFactory> loader_receiver, network::mojom::URLLoaderFactoryPtrInfo target_factory_info) - : m_processId(process_id), m_resourceContext(resourceContext), m_weakFactory(this) + : m_processId(process_id), m_resourceContext(resourceContext), m_renderFrameHost(host), m_weakFactory(this) { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); if (target_factory_info) { @@ -479,8 +481,8 @@ ProxyingURLLoaderFactoryQt::ProxyingURLLoaderFactoryQt(int process_id, m_targetFactory.set_connection_error_handler( base::BindOnce(&ProxyingURLLoaderFactoryQt::OnTargetFactoryError, m_weakFactory.GetWeakPtr())); } - m_proxyBindings.AddBinding(this, std::move(loader_request)); - m_proxyBindings.set_connection_error_handler( + m_proxyReceivers.Add(this, std::move(loader_receiver)); + m_proxyReceivers.set_disconnect_handler( base::BindRepeating(&ProxyingURLLoaderFactoryQt::OnProxyBindingError, m_weakFactory.GetWeakPtr())); } @@ -492,13 +494,14 @@ ProxyingURLLoaderFactoryQt::~ProxyingURLLoaderFactoryQt() // static void ProxyingURLLoaderFactoryQt::CreateProxy(int process_id, content::ResourceContext *resourceContext, - network::mojom::URLLoaderFactoryRequest loader_request, + content::RenderFrameHostImpl *host, + mojo::PendingReceiver<network::mojom::URLLoaderFactory> loader_receiver, network::mojom::URLLoaderFactoryPtrInfo target_factory_info) { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); // Will manage its own lifetime - new ProxyingURLLoaderFactoryQt(process_id, resourceContext, std::move(loader_request), std::move(target_factory_info)); + new ProxyingURLLoaderFactoryQt(process_id, resourceContext, host, std::move(loader_receiver), std::move(target_factory_info)); } void ProxyingURLLoaderFactoryQt::CreateLoaderAndStart(network::mojom::URLLoaderRequest loader, int32_t routing_id, @@ -523,9 +526,16 @@ void ProxyingURLLoaderFactoryQt::CreateLoaderAndStart(network::mojom::URLLoaderR if (m_targetFactory) m_targetFactory->Clone(mojo::MakeRequest(&target_factory_clone)); + // Follows a similar path to the root as RenderFrameHostImpl::CalculateSiteForCookies() + GURL top_document_url; + if (m_renderFrameHost) + top_document_url = m_renderFrameHost->frame_tree_node()->frame_tree()->root()->current_frame_host()->GetLastCommittedURL(); + else + LOG(INFO) << "ProxyingURLLoaderFactoryQt::CreateLoaderAndStart() - null m_renderFrameHost, shouldn't happen"; // Will manage its own lifetime InterceptedRequest *req = new InterceptedRequest(m_processId, request_id, routing_id, options, request, + top_document_url, traffic_annotation, profileIOData, std::move(loader), std::move(client), std::move(target_factory_clone)); @@ -539,14 +549,14 @@ void ProxyingURLLoaderFactoryQt::OnTargetFactoryError() void ProxyingURLLoaderFactoryQt::OnProxyBindingError() { - if (m_proxyBindings.empty()) + if (m_proxyReceivers.empty()) delete this; } -void ProxyingURLLoaderFactoryQt::Clone(network::mojom::URLLoaderFactoryRequest loader_request) +void ProxyingURLLoaderFactoryQt::Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver) { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); - m_proxyBindings.AddBinding(this, std::move(loader_request)); + m_proxyReceivers.Add(this, std::move(receiver)); } } // namespace QtWebEngineCore diff --git a/src/core/net/proxying_url_loader_factory_qt.h b/src/core/net/proxying_url_loader_factory_qt.h index a2f175885..4d913f545 100644 --- a/src/core/net/proxying_url_loader_factory_qt.h +++ b/src/core/net/proxying_url_loader_factory_qt.h @@ -46,8 +46,7 @@ #include "base/memory/ref_counted_delete_on_sequence.h" #include "base/memory/weak_ptr.h" #include "base/optional.h" -#include "mojo/public/cpp/bindings/binding.h" -#include "mojo/public/cpp/bindings/binding_set.h" +#include "mojo/public/cpp/bindings/receiver_set.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "services/network/public/cpp/resource_request.h" #include "services/network/public/cpp/resource_response.h" @@ -61,6 +60,7 @@ // found in the LICENSE file. namespace content { +class RenderFrameHostImpl; class ResourceContext; } @@ -70,14 +70,15 @@ class ProxyingURLLoaderFactoryQt : public network::mojom::URLLoaderFactory { public: ProxyingURLLoaderFactoryQt(int process_id, content::ResourceContext *resourceContext, - network::mojom::URLLoaderFactoryRequest loader_request, + content::RenderFrameHostImpl *host, + mojo::PendingReceiver<network::mojom::URLLoaderFactory> loader_receiver, network::mojom::URLLoaderFactoryPtrInfo target_factory_info); ~ProxyingURLLoaderFactoryQt() override; - // static static void CreateProxy(int process_id, content::ResourceContext *resourceContext, - network::mojom::URLLoaderFactoryRequest loader, + content::RenderFrameHostImpl *host, + mojo::PendingReceiver<network::mojom::URLLoaderFactory> loader_receiver, network::mojom::URLLoaderFactoryPtrInfo target_factory_info); void CreateLoaderAndStart(network::mojom::URLLoaderRequest loader, int32_t routing_id, int32_t request_id, @@ -85,17 +86,18 @@ public: network::mojom::URLLoaderClientPtr client, const net::MutableNetworkTrafficAnnotationTag &traffic_annotation) override; - void Clone(network::mojom::URLLoaderFactoryRequest loader_request) override; + void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver) override; private: void OnTargetFactoryError(); void OnProxyBindingError(); const int m_processId; - mojo::BindingSet<network::mojom::URLLoaderFactory> m_proxyBindings; + mojo::ReceiverSet<network::mojom::URLLoaderFactory> m_proxyReceivers; network::mojom::URLLoaderFactoryPtr m_targetFactory; content::ResourceContext *m_resourceContext; + content::RenderFrameHostImpl *m_renderFrameHost; base::WeakPtrFactory<ProxyingURLLoaderFactoryQt> m_weakFactory; diff --git a/src/core/net/system_network_context_manager.cpp b/src/core/net/system_network_context_manager.cpp index 29343df4e..2c5f49615 100644 --- a/src/core/net/system_network_context_manager.cpp +++ b/src/core/net/system_network_context_manager.cpp @@ -78,6 +78,7 @@ #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/shared_url_loader_factory.h" #include "services/network/public/mojom/host_resolver.mojom.h" +#include "services/network/public/mojom/url_loader_factory.mojom.h" #include "services/proxy_resolver/public/mojom/proxy_resolver.mojom.h" #include "url/gurl.h" @@ -133,11 +134,11 @@ public: url_request, std::move(client), traffic_annotation); } - void Clone(network::mojom::URLLoaderFactoryRequest request) override + void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver) { if (!manager_) return; - manager_->GetURLLoaderFactory()->Clone(std::move(request)); + manager_->GetURLLoaderFactory()->Clone(std::move(receiver)); } // SharedURLLoaderFactory implementation: @@ -322,8 +323,6 @@ network::mojom::NetworkContextParamsPtr SystemNetworkContextManager::CreateDefau network_context_params->ct_logs.push_back(std::move(log_info)); } - network_context_params->http_09_on_non_default_ports_enabled = false; - return network_context_params; } @@ -343,7 +342,7 @@ network::mojom::NetworkContextParamsPtr SystemNetworkContextManager::CreateNetwo network_context_params->enable_ftp_url_support = true; #endif - network_context_params->primary_network_context = true; + network_context_params->primary_network_context = false; proxy_config_monitor_.AddToNetworkContextParams(network_context_params.get()); diff --git a/src/core/net/webui_controller_factory_qt.cpp b/src/core/net/webui_controller_factory_qt.cpp index 8c045bb7b..27e58d75f 100644 --- a/src/core/net/webui_controller_factory_qt.cpp +++ b/src/core/net/webui_controller_factory_qt.cpp @@ -65,7 +65,7 @@ #include "url/gurl.h" #if defined(OS_LINUX) || defined(OS_ANDROID) -#include "chrome/browser/ui/webui/sandbox_internals_ui.h" +#include "chrome/browser/ui/webui/sandbox/sandbox_internals_ui.h" #endif // The Following WebUIs are disabled because they currently doesn't build |