mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
chore: cherry-pick d1eade9d39 from chromium (#30818)
This commit is contained in:
@@ -149,3 +149,4 @@ cherry-pick-e2123a8e0943.patch
|
||||
cherry-pick-1227933.patch
|
||||
cherry-pick-d727013bb543.patch
|
||||
cherry-pick-1231134.patch
|
||||
merge_m92_speculative_fix_for_crash_in.patch
|
||||
|
||||
527
patches/chromium/merge_m92_speculative_fix_for_crash_in.patch
Normal file
527
patches/chromium/merge_m92_speculative_fix_for_crash_in.patch
Normal file
@@ -0,0 +1,527 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Clark DuVall <cduvall@chromium.org>
|
||||
Date: Fri, 20 Aug 2021 00:52:03 +0000
|
||||
Subject: Speculative fix for crash in URLLoader::OnBeforeSendHeadersComplete
|
||||
|
||||
I wasn't able to reproduce the crash, but this should prevent crashing
|
||||
when accessing an invalid pointer for the HttpRequestHeaders. Instead of
|
||||
passing a raw pointer, OnBeforeStartTransaction will now take optional
|
||||
headers in the callback to modify the extra headers. If the job has been
|
||||
destroyed, the callback will not be run since it was bound with a
|
||||
WeakPtr to the job.
|
||||
|
||||
(cherry picked from commit c06b3928469bfd0e0a9fa6045b95a7be70ef393f)
|
||||
|
||||
Bug: 1221047
|
||||
Change-Id: I93d5838b778e7283f7043fd2c841844941f52a85
|
||||
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3042975
|
||||
Commit-Queue: Clark DuVall <cduvall@chromium.org>
|
||||
Reviewed-by: Matt Mueller <mattm@chromium.org>
|
||||
Cr-Original-Commit-Position: refs/heads/master@{#905539}
|
||||
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3108058
|
||||
Auto-Submit: Clark DuVall <cduvall@chromium.org>
|
||||
Cr-Commit-Position: refs/branch-heads/4515@{#2070}
|
||||
Cr-Branched-From: 488fc70865ddaa05324ac00a54a6eb783b4bc41c-refs/heads/master@{#885287}
|
||||
|
||||
diff --git a/net/base/network_delegate.cc b/net/base/network_delegate.cc
|
||||
index 02e2fba808247bbe6379c236fec158e7d50e4ed8..be05286516cef07fe39c453fa811ff15a23e0e40 100644
|
||||
--- a/net/base/network_delegate.cc
|
||||
+++ b/net/base/network_delegate.cc
|
||||
@@ -35,14 +35,13 @@ int NetworkDelegate::NotifyBeforeURLRequest(URLRequest* request,
|
||||
|
||||
int NetworkDelegate::NotifyBeforeStartTransaction(
|
||||
URLRequest* request,
|
||||
- CompletionOnceCallback callback,
|
||||
- HttpRequestHeaders* headers) {
|
||||
+ const HttpRequestHeaders& headers,
|
||||
+ OnBeforeStartTransactionCallback callback) {
|
||||
TRACE_EVENT0(NetTracingCategory(),
|
||||
"NetworkDelegate::NotifyBeforeStartTransation");
|
||||
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
|
||||
- DCHECK(headers);
|
||||
DCHECK(!callback.is_null());
|
||||
- return OnBeforeStartTransaction(request, std::move(callback), headers);
|
||||
+ return OnBeforeStartTransaction(request, headers, std::move(callback));
|
||||
}
|
||||
|
||||
int NetworkDelegate::NotifyHeadersReceived(
|
||||
diff --git a/net/base/network_delegate.h b/net/base/network_delegate.h
|
||||
index c00f0ccd3b5a8bf8973b359cfc7880355292be03..8992bb63a5cfd8d577b36a29ee35ba4c8e9867c1 100644
|
||||
--- a/net/base/network_delegate.h
|
||||
+++ b/net/base/network_delegate.h
|
||||
@@ -56,9 +56,11 @@ class NET_EXPORT NetworkDelegate {
|
||||
int NotifyBeforeURLRequest(URLRequest* request,
|
||||
CompletionOnceCallback callback,
|
||||
GURL* new_url);
|
||||
+ using OnBeforeStartTransactionCallback =
|
||||
+ base::OnceCallback<void(int, const base::Optional<HttpRequestHeaders>&)>;
|
||||
int NotifyBeforeStartTransaction(URLRequest* request,
|
||||
- CompletionOnceCallback callback,
|
||||
- HttpRequestHeaders* headers);
|
||||
+ const HttpRequestHeaders& headers,
|
||||
+ OnBeforeStartTransactionCallback callback);
|
||||
int NotifyHeadersReceived(
|
||||
URLRequest* request,
|
||||
CompletionOnceCallback callback,
|
||||
@@ -133,7 +135,8 @@ class NET_EXPORT NetworkDelegate {
|
||||
GURL* new_url) = 0;
|
||||
|
||||
// Called right before the network transaction starts. Allows the delegate to
|
||||
- // read/write |headers| before they get sent out.
|
||||
+ // read |headers| and modify them by passing a new copy to |callback| before
|
||||
+ // they get sent out.
|
||||
//
|
||||
// Returns OK to continue with the request, ERR_IO_PENDING if the result is
|
||||
// not ready yet, and any other status code to cancel the request. If
|
||||
@@ -142,11 +145,11 @@ class NET_EXPORT NetworkDelegate {
|
||||
// or OnCompleted. Once cancelled, |request| and |headers| become invalid and
|
||||
// |callback| may not be called.
|
||||
//
|
||||
- // The default implementation returns OK (continue with request) without
|
||||
- // modifying |headers|.
|
||||
- virtual int OnBeforeStartTransaction(URLRequest* request,
|
||||
- CompletionOnceCallback callback,
|
||||
- HttpRequestHeaders* headers) = 0;
|
||||
+ // The default implementation returns OK (continue with request).
|
||||
+ virtual int OnBeforeStartTransaction(
|
||||
+ URLRequest* request,
|
||||
+ const HttpRequestHeaders& headers,
|
||||
+ OnBeforeStartTransactionCallback callback) = 0;
|
||||
|
||||
// Called for HTTP requests when the headers have been received.
|
||||
// |original_response_headers| contains the headers as received over the
|
||||
diff --git a/net/base/network_delegate_impl.cc b/net/base/network_delegate_impl.cc
|
||||
index 822bedc22a827a6ae06e7212111bf075298e9e5c..67e43fa2f764506ba7dc6e114570da54045a91f6 100644
|
||||
--- a/net/base/network_delegate_impl.cc
|
||||
+++ b/net/base/network_delegate_impl.cc
|
||||
@@ -16,8 +16,8 @@ int NetworkDelegateImpl::OnBeforeURLRequest(URLRequest* request,
|
||||
|
||||
int NetworkDelegateImpl::OnBeforeStartTransaction(
|
||||
URLRequest* request,
|
||||
- CompletionOnceCallback callback,
|
||||
- HttpRequestHeaders* headers) {
|
||||
+ const HttpRequestHeaders& headers,
|
||||
+ OnBeforeStartTransactionCallback callback) {
|
||||
return OK;
|
||||
}
|
||||
|
||||
diff --git a/net/base/network_delegate_impl.h b/net/base/network_delegate_impl.h
|
||||
index 323dade2a5affcd9123de0ef7d4b04e32445a149..78f658ba84da26ab7a22ad23f8944f1157fe0450 100644
|
||||
--- a/net/base/network_delegate_impl.h
|
||||
+++ b/net/base/network_delegate_impl.h
|
||||
@@ -39,9 +39,10 @@ class NET_EXPORT NetworkDelegateImpl : public NetworkDelegate {
|
||||
CompletionOnceCallback callback,
|
||||
GURL* new_url) override;
|
||||
|
||||
- int OnBeforeStartTransaction(URLRequest* request,
|
||||
- CompletionOnceCallback callback,
|
||||
- HttpRequestHeaders* headers) override;
|
||||
+ int OnBeforeStartTransaction(
|
||||
+ URLRequest* request,
|
||||
+ const HttpRequestHeaders& headers,
|
||||
+ OnBeforeStartTransactionCallback callback) override;
|
||||
|
||||
int OnHeadersReceived(
|
||||
URLRequest* request,
|
||||
diff --git a/net/proxy_resolution/network_delegate_error_observer_unittest.cc b/net/proxy_resolution/network_delegate_error_observer_unittest.cc
|
||||
index c9448fd2a4c665bd91d2a6714a1def2404d4f446..665bb592b892457dc313c2f92148dfecc4930916 100644
|
||||
--- a/net/proxy_resolution/network_delegate_error_observer_unittest.cc
|
||||
+++ b/net/proxy_resolution/network_delegate_error_observer_unittest.cc
|
||||
@@ -35,9 +35,10 @@ class TestNetworkDelegate : public NetworkDelegateImpl {
|
||||
GURL* new_url) override {
|
||||
return OK;
|
||||
}
|
||||
- int OnBeforeStartTransaction(URLRequest* request,
|
||||
- CompletionOnceCallback callback,
|
||||
- HttpRequestHeaders* headers) override {
|
||||
+ int OnBeforeStartTransaction(
|
||||
+ URLRequest* request,
|
||||
+ const HttpRequestHeaders& headers,
|
||||
+ OnBeforeStartTransactionCallback callback) override {
|
||||
return OK;
|
||||
}
|
||||
int OnHeadersReceived(
|
||||
diff --git a/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc b/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc
|
||||
index 8d9fa8344f3febfcd9ba1e3933546d24cc1f1ae3..c10aee9e925c0eea44cc89a2dbfa5ee4c0495917 100644
|
||||
--- a/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc
|
||||
+++ b/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc
|
||||
@@ -146,9 +146,10 @@ class BasicNetworkDelegate : public NetworkDelegateImpl {
|
||||
return OK;
|
||||
}
|
||||
|
||||
- int OnBeforeStartTransaction(URLRequest* request,
|
||||
- CompletionOnceCallback callback,
|
||||
- HttpRequestHeaders* headers) override {
|
||||
+ int OnBeforeStartTransaction(
|
||||
+ URLRequest* request,
|
||||
+ const HttpRequestHeaders& headers,
|
||||
+ OnBeforeStartTransactionCallback callback) override {
|
||||
return OK;
|
||||
}
|
||||
|
||||
diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc
|
||||
index d6f1215fa15971199b9e7020b99c830120beab4b..1eec76ef7ebc44137a3f954a0a80d6f9dcfd676b 100644
|
||||
--- a/net/url_request/url_request_context_builder.cc
|
||||
+++ b/net/url_request/url_request_context_builder.cc
|
||||
@@ -79,9 +79,10 @@ class BasicNetworkDelegate : public NetworkDelegateImpl {
|
||||
return OK;
|
||||
}
|
||||
|
||||
- int OnBeforeStartTransaction(URLRequest* request,
|
||||
- CompletionOnceCallback callback,
|
||||
- HttpRequestHeaders* headers) override {
|
||||
+ int OnBeforeStartTransaction(
|
||||
+ URLRequest* request,
|
||||
+ const HttpRequestHeaders& headers,
|
||||
+ OnBeforeStartTransactionCallback callback) override {
|
||||
return OK;
|
||||
}
|
||||
|
||||
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
|
||||
index 9d993cce5e0e01936d1e4c9837f6bc129ca41e67..5a9873dc9b8b9e390c72d5d01eeb35136b3d0824 100644
|
||||
--- a/net/url_request/url_request_http_job.cc
|
||||
+++ b/net/url_request/url_request_http_job.cc
|
||||
@@ -379,15 +379,10 @@ void URLRequestHttpJob::StartTransaction() {
|
||||
if (network_delegate) {
|
||||
OnCallToDelegate(
|
||||
NetLogEventType::NETWORK_DELEGATE_BEFORE_START_TRANSACTION);
|
||||
- // The NetworkDelegate must watch for OnRequestDestroyed and not modify
|
||||
- // |extra_headers| after it's called.
|
||||
- // TODO(mattm): change the API to remove the out-params and take the
|
||||
- // results as params of the callback.
|
||||
int rv = network_delegate->NotifyBeforeStartTransaction(
|
||||
- request_,
|
||||
+ request_, request_info_.extra_headers,
|
||||
base::BindOnce(&URLRequestHttpJob::NotifyBeforeStartTransactionCallback,
|
||||
- weak_factory_.GetWeakPtr()),
|
||||
- &request_info_.extra_headers);
|
||||
+ weak_factory_.GetWeakPtr()));
|
||||
// If an extension blocks the request, we rely on the callback to
|
||||
// MaybeStartTransactionInternal().
|
||||
if (rv == ERR_IO_PENDING)
|
||||
@@ -398,10 +393,14 @@ void URLRequestHttpJob::StartTransaction() {
|
||||
StartTransactionInternal();
|
||||
}
|
||||
|
||||
-void URLRequestHttpJob::NotifyBeforeStartTransactionCallback(int result) {
|
||||
+void URLRequestHttpJob::NotifyBeforeStartTransactionCallback(
|
||||
+ int result,
|
||||
+ const base::Optional<HttpRequestHeaders>& headers) {
|
||||
// The request should not have been cancelled or have already completed.
|
||||
DCHECK(!is_done());
|
||||
|
||||
+ if (headers)
|
||||
+ request_info_.extra_headers = headers.value();
|
||||
MaybeStartTransactionInternal(result);
|
||||
}
|
||||
|
||||
diff --git a/net/url_request/url_request_http_job.h b/net/url_request/url_request_http_job.h
|
||||
index c026834af2c910315f4b37b578a59f8596b299f1..988db0d80576c542b92c460d4f00838fb06e8632 100644
|
||||
--- a/net/url_request/url_request_http_job.h
|
||||
+++ b/net/url_request/url_request_http_job.h
|
||||
@@ -121,7 +121,9 @@ class NET_EXPORT_PRIVATE URLRequestHttpJob : public URLRequestJob {
|
||||
void OnHeadersReceivedCallback(int result);
|
||||
void OnStartCompleted(int result);
|
||||
void OnReadCompleted(int result);
|
||||
- void NotifyBeforeStartTransactionCallback(int result);
|
||||
+ void NotifyBeforeStartTransactionCallback(
|
||||
+ int result,
|
||||
+ const base::Optional<HttpRequestHeaders>& headers);
|
||||
// This just forwards the call to URLRequestJob::NotifyConnected().
|
||||
// We need it because that method is protected and cannot be bound in a
|
||||
// callback in this class.
|
||||
diff --git a/net/url_request/url_request_test_util.cc b/net/url_request/url_request_test_util.cc
|
||||
index d0a70f24f44906e22c917ebae4e69ab10245540a..85941d92df12178ef5e71070e12f195b8bd04443 100644
|
||||
--- a/net/url_request/url_request_test_util.cc
|
||||
+++ b/net/url_request/url_request_test_util.cc
|
||||
@@ -440,8 +440,8 @@ int TestNetworkDelegate::OnBeforeURLRequest(URLRequest* request,
|
||||
|
||||
int TestNetworkDelegate::OnBeforeStartTransaction(
|
||||
URLRequest* request,
|
||||
- CompletionOnceCallback callback,
|
||||
- HttpRequestHeaders* headers) {
|
||||
+ const HttpRequestHeaders& headers,
|
||||
+ OnBeforeStartTransactionCallback callback) {
|
||||
if (before_start_transaction_fails_)
|
||||
return ERR_FAILED;
|
||||
|
||||
diff --git a/net/url_request/url_request_test_util.h b/net/url_request/url_request_test_util.h
|
||||
index 7cfed610a55fc4bf69e48875e06e41019281829b..98a218115359a38a10e6e2dd623e26195745de0e 100644
|
||||
--- a/net/url_request/url_request_test_util.h
|
||||
+++ b/net/url_request/url_request_test_util.h
|
||||
@@ -338,9 +338,10 @@ class TestNetworkDelegate : public NetworkDelegateImpl {
|
||||
int OnBeforeURLRequest(URLRequest* request,
|
||||
CompletionOnceCallback callback,
|
||||
GURL* new_url) override;
|
||||
- int OnBeforeStartTransaction(URLRequest* request,
|
||||
- CompletionOnceCallback callback,
|
||||
- HttpRequestHeaders* headers) override;
|
||||
+ int OnBeforeStartTransaction(
|
||||
+ URLRequest* request,
|
||||
+ const HttpRequestHeaders& headers,
|
||||
+ OnBeforeStartTransactionCallback callback) override;
|
||||
int OnHeadersReceived(
|
||||
URLRequest* request,
|
||||
CompletionOnceCallback callback,
|
||||
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
|
||||
index a45042e543c6d76425a09851943d5d2a8c27a504..f63730b854be33d8d03dd223209919fd2b637230 100644
|
||||
--- a/net/url_request/url_request_unittest.cc
|
||||
+++ b/net/url_request/url_request_unittest.cc
|
||||
@@ -443,9 +443,10 @@ class BlockingNetworkDelegate : public TestNetworkDelegate {
|
||||
CompletionOnceCallback callback,
|
||||
GURL* new_url) override;
|
||||
|
||||
- int OnBeforeStartTransaction(URLRequest* request,
|
||||
- CompletionOnceCallback callback,
|
||||
- HttpRequestHeaders* headers) override;
|
||||
+ int OnBeforeStartTransaction(
|
||||
+ URLRequest* request,
|
||||
+ const HttpRequestHeaders& headers,
|
||||
+ OnBeforeStartTransactionCallback callback) override;
|
||||
|
||||
int OnHeadersReceived(
|
||||
URLRequest* request,
|
||||
@@ -544,13 +545,19 @@ int BlockingNetworkDelegate::OnBeforeURLRequest(URLRequest* request,
|
||||
|
||||
int BlockingNetworkDelegate::OnBeforeStartTransaction(
|
||||
URLRequest* request,
|
||||
- CompletionOnceCallback callback,
|
||||
- HttpRequestHeaders* headers) {
|
||||
+ const HttpRequestHeaders& headers,
|
||||
+ OnBeforeStartTransactionCallback callback) {
|
||||
// TestNetworkDelegate always completes synchronously.
|
||||
CHECK_NE(ERR_IO_PENDING, TestNetworkDelegate::OnBeforeStartTransaction(
|
||||
- request, base::NullCallback(), headers));
|
||||
+ request, headers, base::NullCallback()));
|
||||
|
||||
- return MaybeBlockStage(ON_BEFORE_SEND_HEADERS, std::move(callback));
|
||||
+ return MaybeBlockStage(
|
||||
+ ON_BEFORE_SEND_HEADERS,
|
||||
+ base::BindOnce(
|
||||
+ [](OnBeforeStartTransactionCallback callback, int result) {
|
||||
+ std::move(callback).Run(result, absl::nullopt);
|
||||
+ },
|
||||
+ std::move(callback)));
|
||||
}
|
||||
|
||||
int BlockingNetworkDelegate::OnHeadersReceived(
|
||||
@@ -4175,13 +4182,19 @@ class AsyncLoggingNetworkDelegate : public TestNetworkDelegate {
|
||||
return RunCallbackAsynchronously(request, std::move(callback));
|
||||
}
|
||||
|
||||
- int OnBeforeStartTransaction(URLRequest* request,
|
||||
- CompletionOnceCallback callback,
|
||||
- HttpRequestHeaders* headers) override {
|
||||
+ int OnBeforeStartTransaction(
|
||||
+ URLRequest* request,
|
||||
+ const HttpRequestHeaders& headers,
|
||||
+ OnBeforeStartTransactionCallback callback) override {
|
||||
// TestNetworkDelegate always completes synchronously.
|
||||
CHECK_NE(ERR_IO_PENDING, TestNetworkDelegate::OnBeforeStartTransaction(
|
||||
- request, base::NullCallback(), headers));
|
||||
- return RunCallbackAsynchronously(request, std::move(callback));
|
||||
+ request, headers, base::NullCallback()));
|
||||
+ return RunCallbackAsynchronously(
|
||||
+ request, base::BindOnce(
|
||||
+ [](OnBeforeStartTransactionCallback callback, int result) {
|
||||
+ std::move(callback).Run(result, absl::nullopt);
|
||||
+ },
|
||||
+ std::move(callback)));
|
||||
}
|
||||
|
||||
int OnHeadersReceived(
|
||||
diff --git a/services/network/network_service_network_delegate.cc b/services/network/network_service_network_delegate.cc
|
||||
index 25e64eb7c66c3087ba187cc06685294f29c08ccd..85ce0aa207985f7aba758f149d9a330ee0b29d23 100644
|
||||
--- a/services/network/network_service_network_delegate.cc
|
||||
+++ b/services/network/network_service_network_delegate.cc
|
||||
@@ -104,16 +104,16 @@ int NetworkServiceNetworkDelegate::OnBeforeURLRequest(
|
||||
|
||||
int NetworkServiceNetworkDelegate::OnBeforeStartTransaction(
|
||||
net::URLRequest* request,
|
||||
- net::CompletionOnceCallback callback,
|
||||
- net::HttpRequestHeaders* headers) {
|
||||
+ const net::HttpRequestHeaders& headers,
|
||||
+ OnBeforeStartTransactionCallback callback) {
|
||||
URLLoader* url_loader = URLLoader::ForRequest(*request);
|
||||
if (url_loader)
|
||||
- return url_loader->OnBeforeStartTransaction(std::move(callback), headers);
|
||||
+ return url_loader->OnBeforeStartTransaction(headers, std::move(callback));
|
||||
|
||||
#if !defined(OS_IOS)
|
||||
WebSocket* web_socket = WebSocket::ForRequest(*request);
|
||||
if (web_socket)
|
||||
- return web_socket->OnBeforeStartTransaction(std::move(callback), headers);
|
||||
+ return web_socket->OnBeforeStartTransaction(headers, std::move(callback));
|
||||
#endif // !defined(OS_IOS)
|
||||
|
||||
return net::OK;
|
||||
diff --git a/services/network/network_service_network_delegate.h b/services/network/network_service_network_delegate.h
|
||||
index 0926327d2a009550d91824ef87f06aa7c4482c64..811589027df710e46314198c0aa60d188ad1128c 100644
|
||||
--- a/services/network/network_service_network_delegate.h
|
||||
+++ b/services/network/network_service_network_delegate.h
|
||||
@@ -38,9 +38,10 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkServiceNetworkDelegate
|
||||
int OnBeforeURLRequest(net::URLRequest* request,
|
||||
net::CompletionOnceCallback callback,
|
||||
GURL* new_url) override;
|
||||
- int OnBeforeStartTransaction(net::URLRequest* request,
|
||||
- net::CompletionOnceCallback callback,
|
||||
- net::HttpRequestHeaders* headers) override;
|
||||
+ int OnBeforeStartTransaction(
|
||||
+ net::URLRequest* request,
|
||||
+ const net::HttpRequestHeaders& headers,
|
||||
+ OnBeforeStartTransactionCallback callback) override;
|
||||
int OnHeadersReceived(
|
||||
net::URLRequest* request,
|
||||
net::CompletionOnceCallback callback,
|
||||
diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc
|
||||
index 4c87980dbad41372f3f23a9493877801ab4ed3d8..6a58f03258deab5ade6c2f1f8b837c6f2710145f 100644
|
||||
--- a/services/network/url_loader.cc
|
||||
+++ b/services/network/url_loader.cc
|
||||
@@ -1622,13 +1622,14 @@ void URLLoader::OnReadCompleted(net::URLRequest* url_request, int bytes_read) {
|
||||
// |this| may have been deleted.
|
||||
}
|
||||
|
||||
-int URLLoader::OnBeforeStartTransaction(net::CompletionOnceCallback callback,
|
||||
- net::HttpRequestHeaders* headers) {
|
||||
+int URLLoader::OnBeforeStartTransaction(
|
||||
+ const net::HttpRequestHeaders& headers,
|
||||
+ net::NetworkDelegate::OnBeforeStartTransactionCallback callback) {
|
||||
if (header_client_) {
|
||||
header_client_->OnBeforeSendHeaders(
|
||||
- *headers, base::BindOnce(&URLLoader::OnBeforeSendHeadersComplete,
|
||||
- weak_ptr_factory_.GetWeakPtr(),
|
||||
- std::move(callback), headers));
|
||||
+ headers,
|
||||
+ base::BindOnce(&URLLoader::OnBeforeSendHeadersComplete,
|
||||
+ weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
|
||||
return net::ERR_IO_PENDING;
|
||||
}
|
||||
return net::OK;
|
||||
@@ -2005,13 +2006,10 @@ void URLLoader::ResumeStart() {
|
||||
}
|
||||
|
||||
void URLLoader::OnBeforeSendHeadersComplete(
|
||||
- net::CompletionOnceCallback callback,
|
||||
- net::HttpRequestHeaders* out_headers,
|
||||
+ net::NetworkDelegate::OnBeforeStartTransactionCallback callback,
|
||||
int result,
|
||||
const base::Optional<net::HttpRequestHeaders>& headers) {
|
||||
- if (headers)
|
||||
- *out_headers = headers.value();
|
||||
- std::move(callback).Run(result);
|
||||
+ std::move(callback).Run(result, headers);
|
||||
}
|
||||
|
||||
void URLLoader::OnHeadersReceivedComplete(
|
||||
diff --git a/services/network/url_loader.h b/services/network/url_loader.h
|
||||
index e2fcaeea674b3012d428911637748bb819aaf3e8..2f3b1df33eee12b14a51883e33e596ef5bb2cd64 100644
|
||||
--- a/services/network/url_loader.h
|
||||
+++ b/services/network/url_loader.h
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "mojo/public/cpp/system/data_pipe.h"
|
||||
#include "mojo/public/cpp/system/simple_watcher.h"
|
||||
#include "net/base/load_states.h"
|
||||
+#include "net/base/network_delegate.h"
|
||||
#include "net/http/http_raw_request_headers.h"
|
||||
#include "net/traffic_annotation/network_traffic_annotation.h"
|
||||
#include "net/url_request/url_request.h"
|
||||
@@ -167,8 +168,9 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader
|
||||
|
||||
// These methods are called by the network delegate to forward these events to
|
||||
// the |header_client_|.
|
||||
- int OnBeforeStartTransaction(net::CompletionOnceCallback callback,
|
||||
- net::HttpRequestHeaders* headers);
|
||||
+ int OnBeforeStartTransaction(
|
||||
+ const net::HttpRequestHeaders& headers,
|
||||
+ net::NetworkDelegate::OnBeforeStartTransactionCallback callback);
|
||||
int OnHeadersReceived(
|
||||
net::CompletionOnceCallback callback,
|
||||
const net::HttpResponseHeaders* original_response_headers,
|
||||
@@ -327,8 +329,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader
|
||||
void RecordBodyReadFromNetBeforePausedIfNeeded();
|
||||
void ResumeStart();
|
||||
void OnBeforeSendHeadersComplete(
|
||||
- net::CompletionOnceCallback callback,
|
||||
- net::HttpRequestHeaders* out_headers,
|
||||
+ net::NetworkDelegate::OnBeforeStartTransactionCallback callback,
|
||||
int result,
|
||||
const base::Optional<net::HttpRequestHeaders>& headers);
|
||||
void OnHeadersReceivedComplete(
|
||||
diff --git a/services/network/websocket.cc b/services/network/websocket.cc
|
||||
index 66406b297bbb5371acbc7d19327be3331ce7acdd..8d2afaf498207ff5b5edb7b3f99e40df62e9b6e7 100644
|
||||
--- a/services/network/websocket.cc
|
||||
+++ b/services/network/websocket.cc
|
||||
@@ -535,13 +535,14 @@ bool WebSocket::AllowCookies(const GURL& url) const {
|
||||
url, site_for_cookies_) == net::OK;
|
||||
}
|
||||
|
||||
-int WebSocket::OnBeforeStartTransaction(net::CompletionOnceCallback callback,
|
||||
- net::HttpRequestHeaders* headers) {
|
||||
+int WebSocket::OnBeforeStartTransaction(
|
||||
+ const net::HttpRequestHeaders& headers,
|
||||
+ net::NetworkDelegate::OnBeforeStartTransactionCallback callback) {
|
||||
if (header_client_) {
|
||||
header_client_->OnBeforeSendHeaders(
|
||||
- *headers, base::BindOnce(&WebSocket::OnBeforeSendHeadersComplete,
|
||||
- weak_ptr_factory_.GetWeakPtr(),
|
||||
- std::move(callback), headers));
|
||||
+ headers,
|
||||
+ base::BindOnce(&WebSocket::OnBeforeSendHeadersComplete,
|
||||
+ weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
|
||||
return net::ERR_IO_PENDING;
|
||||
}
|
||||
return net::OK;
|
||||
@@ -838,17 +839,14 @@ void WebSocket::OnAuthRequiredComplete(
|
||||
}
|
||||
|
||||
void WebSocket::OnBeforeSendHeadersComplete(
|
||||
- net::CompletionOnceCallback callback,
|
||||
- net::HttpRequestHeaders* out_headers,
|
||||
+ net::NetworkDelegate::OnBeforeStartTransactionCallback callback,
|
||||
int result,
|
||||
const base::Optional<net::HttpRequestHeaders>& headers) {
|
||||
if (!channel_) {
|
||||
// Something happened before the OnBeforeSendHeaders response arrives.
|
||||
return;
|
||||
}
|
||||
- if (headers)
|
||||
- *out_headers = headers.value();
|
||||
- std::move(callback).Run(result);
|
||||
+ std::move(callback).Run(result, headers);
|
||||
}
|
||||
|
||||
void WebSocket::OnHeadersReceivedComplete(
|
||||
diff --git a/services/network/websocket.h b/services/network/websocket.h
|
||||
index e14c5616eb59f11c31a3f05984f038e6fc72c4b8..e4d8af33cdb8835316f5b0dc4d40000afe4b2e2e 100644
|
||||
--- a/services/network/websocket.h
|
||||
+++ b/services/network/websocket.h
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "base/types/strong_alias.h"
|
||||
#include "mojo/public/cpp/bindings/receiver.h"
|
||||
#include "mojo/public/cpp/bindings/remote.h"
|
||||
+#include "net/base/network_delegate.h"
|
||||
#include "net/traffic_annotation/network_traffic_annotation.h"
|
||||
#include "net/websockets/websocket_event_interface.h"
|
||||
#include "services/network/network_service.h"
|
||||
@@ -89,8 +90,9 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) WebSocket : public mojom::WebSocket {
|
||||
|
||||
// These methods are called by the network delegate to forward these events to
|
||||
// the |header_client_|.
|
||||
- int OnBeforeStartTransaction(net::CompletionOnceCallback callback,
|
||||
- net::HttpRequestHeaders* headers);
|
||||
+ int OnBeforeStartTransaction(
|
||||
+ const net::HttpRequestHeaders& headers,
|
||||
+ net::NetworkDelegate::OnBeforeStartTransactionCallback callback);
|
||||
int OnHeadersReceived(
|
||||
net::CompletionOnceCallback callback,
|
||||
const net::HttpResponseHeaders* original_response_headers,
|
||||
@@ -149,8 +151,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) WebSocket : public mojom::WebSocket {
|
||||
base::OnceCallback<void(const net::AuthCredentials*)> callback,
|
||||
const base::Optional<net::AuthCredentials>& credential);
|
||||
void OnBeforeSendHeadersComplete(
|
||||
- net::CompletionOnceCallback callback,
|
||||
- net::HttpRequestHeaders* out_headers,
|
||||
+ net::NetworkDelegate::OnBeforeStartTransactionCallback callback,
|
||||
int result,
|
||||
const base::Optional<net::HttpRequestHeaders>& headers);
|
||||
void OnHeadersReceivedComplete(
|
||||
Reference in New Issue
Block a user