Revert "Revert "Migrate gcm to network service's socket APIs""
This reverts commit 838e1b1949af36aec49042cd1df6d55396d0957b.
Reason for revert: Reland after fix
Mojo doesn't allow dropping response callbacks (see
https://groups.google.com/a/chromium.org/forum/#!topic/services-dev/zSNh16-tkaA
for discussion). The fix is to modify
ProxyResolvingSocketFactory::CreateProxyResolvingSocket to always invoke
the response callback even when the underlying socket is destroyed.
This CL also adds a regression test in proxy_resolving_socket_mojo_unittest.cc.
[email protected]
[email protected]
[email protected]
Cq-Include-Trybots: luci.chromium.try:ios-simulator-full-configs;luci.chromium.try:linux_mojo;master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: Ie9fdb93f965bbcf534253aaabe436c4de5f0666d
Bug: 862608, 868220
Cq-Include-Trybots: luci.chromium.try:ios-simulator-full-configs;luci.chromium.try:linux_mojo;master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: Ie9fdb93f965bbcf534253aaabe436c4de5f0666d
Reviewed-on: https://chromium-review.googlesource.com/1169345
Reviewed-by: Helen Li <[email protected]>
Reviewed-by: Maks Orlovich <[email protected]>
Reviewed-by: Daniel Cheng <[email protected]>
Reviewed-by: Peter Beverloo <[email protected]>
Commit-Queue: Helen Li <[email protected]>
Cr-Commit-Position: refs/heads/master@{#582318}
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
index cca59ea3d..8ca357fc 100644
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -522,6 +522,23 @@
waitable_event_.TimedWait(timeout);
}
+#if !defined(OS_ANDROID)
+void RequestProxyResolvingSocketFactoryOnUIThread(
+ network::mojom::ProxyResolvingSocketFactoryRequest request) {
+ network::mojom::NetworkContext* network_context =
+ g_browser_process->system_network_context_manager()->GetContext();
+ network_context->CreateProxyResolvingSocketFactory(std::move(request));
+}
+
+void RequestProxyResolvingSocketFactory(
+ network::mojom::ProxyResolvingSocketFactoryRequest request) {
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::BindOnce(&RequestProxyResolvingSocketFactoryOnUIThread,
+ std::move(request)));
+}
+#endif
+
} // namespace
void BrowserProcessImpl::FlushLocalStateAndReply(base::OnceClosure reply) {
@@ -1338,7 +1355,7 @@
gcm_driver_ = gcm::CreateGCMDriverDesktop(
base::WrapUnique(new gcm::GCMClientFactory), local_state(), store_path,
- system_request_context(),
+ base::BindRepeating(&RequestProxyResolvingSocketFactory),
system_network_context_manager()->GetSharedURLLoaderFactory(),
chrome::GetChannel(), gcm::GetProductCategoryForSubtypes(local_state()),
content::BrowserThread::GetTaskRunnerForThread(