Commit 2f8f9565 authored by Antonio Gomes's avatar Antonio Gomes Committed by Commit Bot

Ensure SimpleURLLoader callbacks are set prior to request being started

CL makes sure that SetOnResponseStartedCallback and SetOnRedirectCallback
can only be set prior to the request gets started.

This is a follow up on a request made by mmenke@ in [1].

[1] https://crrev.com/c/1142350/14/services/network/public/cpp/simple_url_loader.cc#1226

TBR=pfeldman@chromium.org,peter@chromium.org

BUG=773295

Change-Id: If937313c21df5139f1c6e21f982b228513501962
Reviewed-on: https://chromium-review.googlesource.com/c/1317949
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Reviewed-by: default avatarMatt Menke <mmenke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#605417}
parent 3b05e2b1
......@@ -363,9 +363,9 @@ class DevToolsUIBindings::NetworkResourceLoader
bindings_(bindings),
loader_(std::move(loader)),
callback_(callback) {
loader_->DownloadAsStream(url_loader_factory, this);
loader_->SetOnResponseStartedCallback(base::BindOnce(
&NetworkResourceLoader::OnResponseStarted, base::Unretained(this)));
loader_->DownloadAsStream(url_loader_factory, this);
}
private:
......
......@@ -77,9 +77,9 @@ class ShellDevToolsBindings::NetworkResourceLoader
request_id_(request_id),
bindings_(bindings),
loader_(std::move(loader)) {
loader_->DownloadAsStream(url_loader_factory, this);
loader_->SetOnResponseStartedCallback(base::BindOnce(
&NetworkResourceLoader::OnResponseStarted, base::Unretained(this)));
loader_->DownloadAsStream(url_loader_factory, this);
}
private:
......
......@@ -1226,11 +1226,18 @@ void SimpleURLLoaderImpl::DownloadAsStream(
void SimpleURLLoaderImpl::SetOnRedirectCallback(
const OnRedirectCallback& on_redirect_callback) {
// Check if a request has not yet been started.
DCHECK(!body_handler_);
on_redirect_callback_.push_back(on_redirect_callback);
DCHECK(on_redirect_callback);
}
void SimpleURLLoaderImpl::SetOnResponseStartedCallback(
OnResponseStartedCallback on_response_started_callback) {
// Check if a request has not yet been started.
DCHECK(!body_handler_);
on_response_started_callback_ = std::move(on_response_started_callback);
DCHECK(on_response_started_callback_);
}
......
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