Commit 70bea81d authored by Jeremy Apthorp's avatar Jeremy Apthorp Committed by Commit Bot

Make SimpleURLLoader only have one redirect callback

Nothing seems to depend on the possibility of having multiple callbacks.

Change-Id: I9935be6345d37fe9d445f741c803aab949aab125
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1930096
Auto-Submit: Jeremy Apthorp <jeremya@chromium.org>
Reviewed-by: default avatarJohn Abd-El-Malek <jam@chromium.org>
Commit-Queue: Jeremy Apthorp <jeremya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#718721}
parent 8083b4bf
...@@ -333,7 +333,7 @@ class SimpleURLLoaderImpl : public SimpleURLLoader, ...@@ -333,7 +333,7 @@ class SimpleURLLoaderImpl : public SimpleURLLoader,
// closed. // closed.
void MaybeComplete(); void MaybeComplete();
std::vector<OnRedirectCallback> on_redirect_callback_; OnRedirectCallback on_redirect_callback_;
OnResponseStartedCallback on_response_started_callback_; OnResponseStartedCallback on_response_started_callback_;
UploadProgressCallback on_upload_progress_callback_; UploadProgressCallback on_upload_progress_callback_;
DownloadProgressCallback on_download_progress_callback_; DownloadProgressCallback on_download_progress_callback_;
...@@ -1242,8 +1242,7 @@ void SimpleURLLoaderImpl::SetOnRedirectCallback( ...@@ -1242,8 +1242,7 @@ void SimpleURLLoaderImpl::SetOnRedirectCallback(
// Check if a request has not yet been started. // Check if a request has not yet been started.
DCHECK(!body_handler_); DCHECK(!body_handler_);
on_redirect_callback_.push_back(on_redirect_callback); on_redirect_callback_ = on_redirect_callback;
DCHECK(on_redirect_callback);
} }
void SimpleURLLoaderImpl::SetOnResponseStartedCallback( void SimpleURLLoaderImpl::SetOnResponseStartedCallback(
...@@ -1607,16 +1606,14 @@ void SimpleURLLoaderImpl::OnReceiveRedirect( ...@@ -1607,16 +1606,14 @@ void SimpleURLLoaderImpl::OnReceiveRedirect(
} }
std::vector<std::string> removed_headers; std::vector<std::string> removed_headers;
for (auto callback : on_redirect_callback_) { if (on_redirect_callback_) {
if (callback) {
base::WeakPtr<SimpleURLLoaderImpl> weak_this = base::WeakPtr<SimpleURLLoaderImpl> weak_this =
weak_ptr_factory_.GetWeakPtr(); weak_ptr_factory_.GetWeakPtr();
callback.Run(redirect_info, *response_head, &removed_headers); on_redirect_callback_.Run(redirect_info, *response_head, &removed_headers);
// If deleted by the callback, bail now. // If deleted by the callback, bail now.
if (!weak_this) if (!weak_this)
return; return;
} }
}
final_url_ = redirect_info.new_url; final_url_ = redirect_info.new_url;
url_loader_->FollowRedirect(removed_headers, {} /* modified_headers */, url_loader_->FollowRedirect(removed_headers, {} /* modified_headers */,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment