| Index: content/browser/loader/resource_loader_unittest.cc
|
| diff --git a/content/browser/loader/resource_loader_unittest.cc b/content/browser/loader/resource_loader_unittest.cc
|
| index 7a65e17369c3a6dbf3e5b801f9c8c0e179be421e..6ca2ac10da28978c4b8678b8264b62465151aa4a 100644
|
| --- a/content/browser/loader/resource_loader_unittest.cc
|
| +++ b/content/browser/loader/resource_loader_unittest.cc
|
| @@ -22,7 +22,6 @@
|
| #include "content/browser/browser_thread_impl.h"
|
| #include "content/browser/loader/redirect_to_file_resource_handler.h"
|
| #include "content/browser/loader/resource_loader_delegate.h"
|
| -#include "content/browser/loader/test_resource_handler.h"
|
| #include "content/public/browser/client_certificate_delegate.h"
|
| #include "content/public/browser/resource_request_info.h"
|
| #include "content/public/common/content_paths.h"
|
| @@ -50,7 +49,6 @@
|
| #include "net/test/cert_test_util.h"
|
| #include "net/test/embedded_test_server/embedded_test_server.h"
|
| #include "net/test/test_data_directory.h"
|
| -#include "net/test/url_request/url_request_failed_job.h"
|
| #include "net/url_request/url_request.h"
|
| #include "net/url_request/url_request_filter.h"
|
| #include "net/url_request/url_request_interceptor.h"
|
| @@ -267,6 +265,177 @@
|
| };
|
|
|
| // Arbitrary read buffer size.
|
| +const int kReadBufSize = 1024;
|
| +
|
| +// Dummy implementation of ResourceHandler, instance of which is needed to
|
| +// initialize ResourceLoader.
|
| +class ResourceHandlerStub : public ResourceHandler {
|
| + public:
|
| + explicit ResourceHandlerStub(net::URLRequest* request)
|
| + : ResourceHandler(request),
|
| + read_buffer_(new net::IOBuffer(kReadBufSize)),
|
| + defer_request_on_will_start_(false),
|
| + expect_reads_(true),
|
| + cancel_on_read_completed_(false),
|
| + defer_eof_(false),
|
| + received_on_will_read_(false),
|
| + received_eof_(false),
|
| + received_response_completed_(false),
|
| + received_request_redirected_(false),
|
| + total_bytes_downloaded_(0),
|
| + observed_effective_connection_type_(
|
| + net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN) {}
|
| +
|
| + // If true, defers the resource load in OnWillStart.
|
| + void set_defer_request_on_will_start(bool defer_request_on_will_start) {
|
| + defer_request_on_will_start_ = defer_request_on_will_start;
|
| + }
|
| +
|
| + // If true, expect OnWillRead / OnReadCompleted pairs for handling
|
| + // data. Otherwise, expect OnDataDownloaded.
|
| + void set_expect_reads(bool expect_reads) { expect_reads_ = expect_reads; }
|
| +
|
| + // If true, cancel the request in OnReadCompleted by returning false.
|
| + void set_cancel_on_read_completed(bool cancel_on_read_completed) {
|
| + cancel_on_read_completed_ = cancel_on_read_completed;
|
| + }
|
| +
|
| + // If true, cancel the request in OnReadCompleted by returning false.
|
| + void set_defer_eof(bool defer_eof) { defer_eof_ = defer_eof; }
|
| +
|
| + const GURL& start_url() const { return start_url_; }
|
| + ResourceResponse* response() const { return response_.get(); }
|
| + ResourceResponse* redirect_response() const {
|
| + return redirect_response_.get();
|
| + }
|
| + bool received_response_completed() const {
|
| + return received_response_completed_;
|
| + }
|
| + bool received_request_redirected() const {
|
| + return received_request_redirected_;
|
| + }
|
| + const net::URLRequestStatus& status() const { return status_; }
|
| + int total_bytes_downloaded() const { return total_bytes_downloaded_; }
|
| +
|
| + net::EffectiveConnectionType observed_effective_connection_type() const {
|
| + return observed_effective_connection_type_;
|
| + }
|
| +
|
| + void Resume() {
|
| + controller()->Resume();
|
| + }
|
| +
|
| + bool OnRequestRedirected(const net::RedirectInfo& redirect_info,
|
| + ResourceResponse* response,
|
| + bool* defer) override {
|
| + redirect_response_ = response;
|
| + received_request_redirected_ = true;
|
| + return true;
|
| + }
|
| +
|
| + bool OnResponseStarted(ResourceResponse* response, bool* defer) override {
|
| + EXPECT_FALSE(response_.get());
|
| + response_ = response;
|
| + observed_effective_connection_type_ =
|
| + response->head.effective_connection_type;
|
| + return true;
|
| + }
|
| +
|
| + bool OnWillStart(const GURL& url, bool* defer) override {
|
| + EXPECT_TRUE(start_url_.is_empty());
|
| + start_url_ = url;
|
| + if (defer_request_on_will_start_) {
|
| + *defer = true;
|
| + deferred_run_loop_.Quit();
|
| + }
|
| + return true;
|
| + }
|
| +
|
| + bool OnWillRead(scoped_refptr<net::IOBuffer>* buf,
|
| + int* buf_size,
|
| + int min_size) override {
|
| + EXPECT_TRUE(expect_reads_);
|
| + EXPECT_FALSE(received_on_will_read_);
|
| + EXPECT_FALSE(received_eof_);
|
| + EXPECT_FALSE(received_response_completed_);
|
| +
|
| + *buf = read_buffer_;
|
| + *buf_size = kReadBufSize;
|
| + received_on_will_read_ = true;
|
| + return true;
|
| + }
|
| +
|
| + bool OnReadCompleted(int bytes_read, bool* defer) override {
|
| + EXPECT_TRUE(received_on_will_read_);
|
| + EXPECT_TRUE(expect_reads_);
|
| + EXPECT_FALSE(received_response_completed_);
|
| +
|
| + if (bytes_read == 0) {
|
| + received_eof_ = true;
|
| + if (defer_eof_) {
|
| + defer_eof_ = false;
|
| + *defer = true;
|
| + deferred_run_loop_.Quit();
|
| + }
|
| + }
|
| +
|
| + // Need another OnWillRead() call before seeing an OnReadCompleted().
|
| + received_on_will_read_ = false;
|
| +
|
| + return !cancel_on_read_completed_;
|
| + }
|
| +
|
| + void OnResponseCompleted(const net::URLRequestStatus& status,
|
| + bool* defer) override {
|
| + EXPECT_FALSE(received_response_completed_);
|
| + if (status.is_success() && expect_reads_)
|
| + EXPECT_TRUE(received_eof_);
|
| +
|
| + received_response_completed_ = true;
|
| + status_ = status;
|
| + response_completed_run_loop_.Quit();
|
| + }
|
| +
|
| + void OnDataDownloaded(int bytes_downloaded) override {
|
| + EXPECT_FALSE(expect_reads_);
|
| + total_bytes_downloaded_ += bytes_downloaded;
|
| + }
|
| +
|
| + // Waits for the the first deferred step to run, if there is one.
|
| + void WaitForDeferredStep() {
|
| + DCHECK(defer_request_on_will_start_ || defer_eof_);
|
| + deferred_run_loop_.Run();
|
| + }
|
| +
|
| + // Waits until the response has completed.
|
| + void WaitForResponseComplete() {
|
| + response_completed_run_loop_.Run();
|
| + EXPECT_TRUE(received_response_completed_);
|
| + }
|
| +
|
| + private:
|
| + scoped_refptr<net::IOBuffer> read_buffer_;
|
| +
|
| + bool defer_request_on_will_start_;
|
| + bool expect_reads_;
|
| + bool cancel_on_read_completed_;
|
| + bool defer_eof_;
|
| +
|
| + GURL start_url_;
|
| + scoped_refptr<ResourceResponse> response_;
|
| + scoped_refptr<ResourceResponse> redirect_response_;
|
| + bool received_on_will_read_;
|
| + bool received_eof_;
|
| + bool received_response_completed_;
|
| + bool received_request_redirected_;
|
| + net::URLRequestStatus status_;
|
| + int total_bytes_downloaded_;
|
| + base::RunLoop deferred_run_loop_;
|
| + base::RunLoop response_completed_run_loop_;
|
| + std::unique_ptr<base::RunLoop> wait_for_progress_run_loop_;
|
| + net::EffectiveConnectionType observed_effective_connection_type_;
|
| +};
|
| +
|
| // Test browser client that captures calls to SelectClientCertificates and
|
| // records the arguments of the most recent call for later inspection.
|
| class SelectCertificateBrowserClient : public TestContentBrowserClient {
|
| @@ -396,21 +565,14 @@
|
| test_url_request_context_.Init();
|
| }
|
|
|
| - // URL with a response body of test_data().
|
| - GURL test_direct_url() const { return net::URLRequestTestJob::test_url_1(); }
|
| -
|
| - // URL that redirects to test_direct_url(). The ResourceLoader is set up to
|
| - // use this URL by default.
|
| - GURL test_redirect_url() const {
|
| - return net::URLRequestTestJob::test_url_redirect_to_url_1();
|
| + GURL test_url() const { return net::URLRequestTestJob::test_url_1(); }
|
| +
|
| + TestNetworkQualityEstimator* network_quality_estimator() {
|
| + return &network_quality_estimator_;
|
| }
|
|
|
| std::string test_data() const {
|
| return net::URLRequestTestJob::test_data_1();
|
| - }
|
| -
|
| - TestNetworkQualityEstimator* network_quality_estimator() {
|
| - return &network_quality_estimator_;
|
| }
|
|
|
| virtual std::unique_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| @@ -419,7 +581,7 @@
|
| }
|
|
|
| virtual std::unique_ptr<ResourceHandler> WrapResourceHandler(
|
| - std::unique_ptr<TestResourceHandler> leaf_handler,
|
| + std::unique_ptr<ResourceHandlerStub> leaf_handler,
|
| net::URLRequest* request) {
|
| return std::move(leaf_handler);
|
| }
|
| @@ -442,8 +604,8 @@
|
| rfh->GetRoutingID(), belongs_to_main_frame,
|
| false /* parent_is_main_frame */, true /* allow_download */,
|
| false /* is_async */, false /* is_using_lofi_ */);
|
| - std::unique_ptr<TestResourceHandler> resource_handler(
|
| - new TestResourceHandler(nullptr, nullptr));
|
| + std::unique_ptr<ResourceHandlerStub> resource_handler(
|
| + new ResourceHandlerStub(request.get()));
|
| raw_ptr_resource_handler_ = resource_handler.get();
|
| loader_.reset(new ResourceLoader(
|
| std::move(request),
|
| @@ -451,23 +613,19 @@
|
| this));
|
| }
|
|
|
| - void SetUpResourceLoaderForUrl(const GURL& test_url) {
|
| - std::unique_ptr<net::URLRequest> request(
|
| - resource_context_.GetRequestContext()->CreateRequest(
|
| - test_url, net::DEFAULT_PRIORITY, nullptr /* delegate */));
|
| - SetUpResourceLoader(std::move(request), RESOURCE_TYPE_MAIN_FRAME, true);
|
| - }
|
| -
|
| void SetUp() override {
|
| job_factory_.SetProtocolHandler("test", CreateProtocolHandler());
|
| - net::URLRequestFailedJob::AddUrlHandler();
|
|
|
| browser_context_.reset(new TestBrowserContext());
|
| scoped_refptr<SiteInstance> site_instance =
|
| SiteInstance::Create(browser_context_.get());
|
| web_contents_.reset(
|
| TestWebContents::Create(browser_context_.get(), site_instance.get()));
|
| - SetUpResourceLoaderForUrl(test_redirect_url());
|
| +
|
| + std::unique_ptr<net::URLRequest> request(
|
| + resource_context_.GetRequestContext()->CreateRequest(
|
| + test_url(), net::DEFAULT_PRIORITY, nullptr /* delegate */));
|
| + SetUpResourceLoader(std::move(request), RESOURCE_TYPE_MAIN_FRAME, true);
|
| }
|
|
|
| void TearDown() override {
|
| @@ -475,10 +633,6 @@
|
| // |rvh_test_enabler_| and |thread_bundle_|. This lets asynchronous cleanup
|
| // tasks complete.
|
| web_contents_.reset();
|
| -
|
| - // Clean up handlers.
|
| - net::URLRequestFilter::GetInstance()->ClearHandlers();
|
| -
|
| base::RunLoop().RunUntilIdle();
|
| }
|
|
|
| @@ -494,36 +648,14 @@
|
| }
|
| bool HandleExternalProtocol(ResourceLoader* loader,
|
| const GURL& url) override {
|
| - EXPECT_EQ(loader, loader_.get());
|
| return false;
|
| }
|
| - void DidStartRequest(ResourceLoader* loader) override {
|
| - EXPECT_EQ(loader, loader_.get());
|
| - EXPECT_EQ(0, did_finish_loading_);
|
| - EXPECT_EQ(0, did_start_request_);
|
| - ++did_start_request_;
|
| - }
|
| + void DidStartRequest(ResourceLoader* loader) override {}
|
| void DidReceiveRedirect(ResourceLoader* loader,
|
| const GURL& new_url,
|
| - ResourceResponse* response) override {
|
| - EXPECT_EQ(loader, loader_.get());
|
| - EXPECT_EQ(0, did_finish_loading_);
|
| - EXPECT_EQ(0, did_receive_response_);
|
| - EXPECT_EQ(1, did_start_request_);
|
| - ++did_received_redirect_;
|
| - }
|
| - void DidReceiveResponse(ResourceLoader* loader) override {
|
| - EXPECT_EQ(loader, loader_.get());
|
| - EXPECT_EQ(0, did_finish_loading_);
|
| - EXPECT_EQ(0, did_receive_response_);
|
| - EXPECT_EQ(1, did_start_request_);
|
| - ++did_receive_response_;
|
| - }
|
| - void DidFinishLoading(ResourceLoader* loader) override {
|
| - EXPECT_EQ(loader, loader_.get());
|
| - EXPECT_EQ(0, did_finish_loading_);
|
| - ++did_finish_loading_;
|
| - }
|
| + ResourceResponse* response) override {}
|
| + void DidReceiveResponse(ResourceLoader* loader) override {}
|
| + void DidFinishLoading(ResourceLoader* loader) override {}
|
| std::unique_ptr<net::ClientCertStore> CreateClientCertStore(
|
| ResourceLoader* loader) override {
|
| return std::move(dummy_cert_store_);
|
| @@ -531,12 +663,6 @@
|
|
|
| TestBrowserThreadBundle thread_bundle_;
|
| RenderViewHostTestEnabler rvh_test_enabler_;
|
| -
|
| - // Record which ResourceDispatcherHostDelegate methods have been invoked.
|
| - int did_start_request_ = 0;
|
| - int did_received_redirect_ = 0;
|
| - int did_receive_response_ = 0;
|
| - int did_finish_loading_ = 0;
|
|
|
| net::URLRequestJobFactoryImpl job_factory_;
|
| TestNetworkQualityEstimator network_quality_estimator_;
|
| @@ -547,7 +673,7 @@
|
| std::unique_ptr<net::ClientCertStore> dummy_cert_store_;
|
|
|
| // The ResourceLoader owns the URLRequest and the ResourceHandler.
|
| - TestResourceHandler* raw_ptr_resource_handler_;
|
| + ResourceHandlerStub* raw_ptr_resource_handler_;
|
| net::URLRequest* raw_ptr_to_request_;
|
| std::unique_ptr<ResourceLoader> loader_;
|
| };
|
| @@ -557,12 +683,6 @@
|
| std::unique_ptr<net::URLRequestJobFactory::ProtocolHandler>
|
| CreateProtocolHandler() override {
|
| return base::WrapUnique(new MockClientCertJobProtocolHandler);
|
| - }
|
| -
|
| - void SetUp() override {
|
| - ResourceLoaderTest::SetUp();
|
| - // These tests don't expect any redirects.
|
| - SetUpResourceLoaderForUrl(test_direct_url());
|
| }
|
| };
|
|
|
| @@ -620,7 +740,7 @@
|
| loader_->StartRequest();
|
| test_client.WaitForSelectCertificate();
|
|
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
|
| + EXPECT_FALSE(raw_ptr_resource_handler_->received_response_completed());
|
|
|
| // Check if the test store was queried against correct |cert_authorities|.
|
| EXPECT_EQ(1, store_request_count);
|
| @@ -634,8 +754,8 @@
|
|
|
| // Continue the request.
|
| test_client.ContinueWithCertificate(nullptr);
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| - EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error());
|
| + raw_ptr_resource_handler_->WaitForResponseComplete();
|
| + EXPECT_EQ(net::OK, raw_ptr_resource_handler_->status().error());
|
|
|
| // Restore the original content browser client.
|
| SetBrowserClientForTesting(old_client);
|
| @@ -659,8 +779,8 @@
|
|
|
| // Continue the request.
|
| test_client.ContinueWithCertificate(nullptr);
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| - EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error());
|
| + raw_ptr_resource_handler_->WaitForResponseComplete();
|
| + EXPECT_EQ(net::OK, raw_ptr_resource_handler_->status().error());
|
|
|
| // Restore the original content browser client.
|
| SetBrowserClientForTesting(old_client);
|
| @@ -683,9 +803,9 @@
|
|
|
| // Cancel the request.
|
| test_client.CancelCertificateSelection();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| + raw_ptr_resource_handler_->WaitForResponseComplete();
|
| EXPECT_EQ(net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED,
|
| - raw_ptr_resource_handler_->final_status().error());
|
| + raw_ptr_resource_handler_->status().error());
|
|
|
| // Restore the original content browser client.
|
| SetBrowserClientForTesting(old_client);
|
| @@ -702,12 +822,12 @@
|
|
|
| // Start the request and wait for it to complete.
|
| loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| + raw_ptr_resource_handler_->WaitForResponseComplete();
|
|
|
| // Check that SelectClientCertificate wasn't called and the request aborted.
|
| EXPECT_EQ(0, test_client.call_count());
|
| EXPECT_EQ(net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED,
|
| - raw_ptr_resource_handler_->final_status().error());
|
| + raw_ptr_resource_handler_->status().error());
|
|
|
| // Restore the original content browser client.
|
| SetBrowserClientForTesting(old_client);
|
| @@ -730,433 +850,41 @@
|
| base::RunLoop().RunUntilIdle();
|
| }
|
|
|
| -// Test the case the ResourceHandler defers nothing.
|
| -TEST_F(ResourceLoaderTest, SyncResourceHandler) {
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| - EXPECT_EQ(1, did_start_request_);
|
| - EXPECT_EQ(1, did_received_redirect_);
|
| - EXPECT_EQ(1, did_receive_response_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| - EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -// Test the case the ResourceHandler defers everything.
|
| -TEST_F(ResourceLoaderTest, AsyncResourceHandler) {
|
| - raw_ptr_resource_handler_->set_defer_on_will_start(true);
|
| - raw_ptr_resource_handler_->set_defer_on_request_redirected(true);
|
| - raw_ptr_resource_handler_->set_defer_on_response_started(true);
|
| - raw_ptr_resource_handler_->set_defer_on_read_completed(true);
|
| - raw_ptr_resource_handler_->set_defer_on_read_eof(true);
|
| - raw_ptr_resource_handler_->set_defer_on_response_completed(true);
|
| -
|
| - // Start and run until OnWillStart.
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilDeferred();
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
|
| -
|
| - // Spinning the message loop should not advance the state further.
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(0, did_start_request_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - // Resume and run until OnRequestRedirected.
|
| - raw_ptr_resource_handler_->Resume();
|
| - raw_ptr_resource_handler_->WaitUntilDeferred();
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
|
| -
|
| - // Spinning the message loop should not advance the state further.
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, did_received_redirect_);
|
| - EXPECT_EQ(0, did_receive_response_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - // Resume and run until OnResponseStarted.
|
| - raw_ptr_resource_handler_->Resume();
|
| - raw_ptr_resource_handler_->WaitUntilDeferred();
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
|
| -
|
| - // Spinning the message loop should not advance the state further.
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, did_receive_response_);
|
| - EXPECT_EQ(0, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - // Resume and run until OnReadCompleted.
|
| - raw_ptr_resource_handler_->Resume();
|
| - raw_ptr_resource_handler_->WaitUntilDeferred();
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called());
|
| -
|
| - // Spinning the message loop should not advance the state further.
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_read_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - // Resume and run until the final 0-byte read, signalling EOF.
|
| - raw_ptr_resource_handler_->Resume();
|
| - raw_ptr_resource_handler_->WaitUntilDeferred();
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof());
|
| -
|
| - // Spinning the message loop should not advance the state further.
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
|
| - EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
|
| -
|
| - // Resume and run until OnResponseCompleted is called, which again defers the
|
| - // request.
|
| - raw_ptr_resource_handler_->Resume();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| - EXPECT_EQ(0, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| - EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
|
| -
|
| - // Resume and run until all pending tasks. Note that OnResponseCompleted was
|
| - // invoked in the previous section, so can't use RunUntilCompleted().
|
| - raw_ptr_resource_handler_->Resume();
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| - EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, SyncCancelOnWillStart) {
|
| - raw_ptr_resource_handler_->set_on_will_start_result(false);
|
| -
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(0, did_start_request_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - EXPECT_EQ(net::ERR_ABORTED,
|
| - raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ("", raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, SyncCancelOnRequestRedirected) {
|
| - raw_ptr_resource_handler_->set_on_request_redirected_result(false);
|
| -
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, did_received_redirect_);
|
| - EXPECT_EQ(0, did_receive_response_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - EXPECT_EQ(net::ERR_ABORTED,
|
| - raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ("", raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, SyncCancelOnResponseStarted) {
|
| - raw_ptr_resource_handler_->set_on_response_started_result(false);
|
| -
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, did_receive_response_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - EXPECT_EQ(net::ERR_ABORTED,
|
| - raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ("", raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, SyncCancelOnWillRead) {
|
| - raw_ptr_resource_handler_->set_on_will_read_result(false);
|
| -
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, did_receive_response_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_read_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - EXPECT_EQ(net::ERR_ABORTED,
|
| - raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ("", raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, SyncCancelOnReadCompleted) {
|
| - raw_ptr_resource_handler_->set_on_read_completed_result(false);
|
| -
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, did_receive_response_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - EXPECT_EQ(net::ERR_ABORTED,
|
| - raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_LT(0u, raw_ptr_resource_handler_->body().size());
|
| -}
|
| -
|
| -// This test is broken because ResourceLoader assumes when
|
| -// URLRequest::was_pending() is false, canceling the request will not result in
|
| -// a completion notification. This isn't the case - whether or not there's a
|
| -// notification depends on whether URLRequestJob::NotifyDone() has been invoked
|
| -// yet - something the URLRequest doesn't even know about, itself. As a result,
|
| -// the ResourceLoader is notified of cancellation twice.
|
| -// TODO(mmenke): Fix this.
|
| -TEST_F(ResourceLoaderTest, DISABLED_SyncCancelOnReceivedEof) {
|
| - raw_ptr_resource_handler_->set_on_on_read_eof_result(false);
|
| -
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, did_receive_response_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - EXPECT_EQ(net::ERR_ABORTED,
|
| - raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, AsyncCancelOnWillStart) {
|
| - raw_ptr_resource_handler_->set_defer_on_will_start(true);
|
| -
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilDeferred();
|
| - raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(0, did_start_request_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ("", raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, AsyncCancelOnRequestRedirected) {
|
| - raw_ptr_resource_handler_->set_defer_on_request_redirected(true);
|
| -
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilDeferred();
|
| - raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, did_received_redirect_);
|
| - EXPECT_EQ(0, did_receive_response_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ("", raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, AsyncCancelOnResponseStarted) {
|
| - raw_ptr_resource_handler_->set_defer_on_response_started(true);
|
| -
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilDeferred();
|
| - raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, did_receive_response_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ("", raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, AsyncCancelOnReadCompleted) {
|
| - raw_ptr_resource_handler_->set_defer_on_read_completed(true);
|
| -
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilDeferred();
|
| - raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, did_receive_response_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_LT(0u, raw_ptr_resource_handler_->body().size());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, AsyncCancelOnReceivedEof) {
|
| - raw_ptr_resource_handler_->set_defer_on_read_eof(true);
|
| -
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilDeferred();
|
| - // Have to spin the message loop for the test to pass - see comment on sync
|
| - // version of this test for explanation.
|
| - // TODO(mmenke): Remove this line once that's fixed.
|
| - base::RunLoop().RunUntilIdle();
|
| - raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, did_receive_response_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, RequestFailsOnStart) {
|
| - SetUpResourceLoaderForUrl(
|
| - net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
|
| - net::URLRequestFailedJob::START, net::ERR_FAILED));
|
| -
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(0, did_received_redirect_);
|
| - EXPECT_EQ(0, did_receive_response_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| - EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ("", raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, RequestFailsOnReadSync) {
|
| - SetUpResourceLoaderForUrl(
|
| - net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
|
| - net::URLRequestFailedJob::READ_SYNC, net::ERR_FAILED));
|
| -
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(0, did_received_redirect_);
|
| - EXPECT_EQ(1, did_receive_response_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| - EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ("", raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, RequestFailsOnReadAsync) {
|
| - SetUpResourceLoaderForUrl(
|
| - net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
|
| - net::URLRequestFailedJob::READ_ASYNC, net::ERR_FAILED));
|
| -
|
| - loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(0, did_received_redirect_);
|
| - EXPECT_EQ(1, did_receive_response_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| - EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ("", raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, OutOfBandCancelDuringStart) {
|
| - SetUpResourceLoaderForUrl(
|
| - net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
|
| - net::URLRequestFailedJob::START, net::ERR_IO_PENDING));
|
| -
|
| - loader_->StartRequest();
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED);
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| -
|
| - EXPECT_EQ(0, did_received_redirect_);
|
| - EXPECT_EQ(0, did_receive_response_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| - EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ("", raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, OutOfBandCancelDuringRead) {
|
| - SetUpResourceLoaderForUrl(
|
| - net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
|
| - net::URLRequestFailedJob::READ_SYNC, net::ERR_IO_PENDING));
|
| -
|
| - loader_->StartRequest();
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
|
| -
|
| - raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED);
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| - EXPECT_EQ(0, did_received_redirect_);
|
| - EXPECT_EQ(1, did_receive_response_);
|
| - EXPECT_EQ(1, did_finish_loading_);
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
|
| - EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
|
| - EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
|
| - EXPECT_EQ("", raw_ptr_resource_handler_->body());
|
| -}
|
| -
|
| -TEST_F(ResourceLoaderTest, ResumeCanceledRequest) {
|
| - raw_ptr_resource_handler_->set_defer_on_will_start(true);
|
| +TEST_F(ResourceLoaderTest, ResumeCancelledRequest) {
|
| + raw_ptr_resource_handler_->set_defer_request_on_will_start(true);
|
|
|
| loader_->StartRequest();
|
| loader_->CancelRequest(true);
|
| static_cast<ResourceController*>(loader_.get())->Resume();
|
| +}
|
| +
|
| +// Tests that no invariants are broken if a ResourceHandler cancels during
|
| +// OnReadCompleted.
|
| +TEST_F(ResourceLoaderTest, CancelOnReadCompleted) {
|
| + raw_ptr_resource_handler_->set_cancel_on_read_completed(true);
|
| +
|
| + loader_->StartRequest();
|
| + raw_ptr_resource_handler_->WaitForResponseComplete();
|
| +
|
| + EXPECT_EQ(test_url(), raw_ptr_resource_handler_->start_url());
|
| + EXPECT_EQ(net::URLRequestStatus::CANCELED,
|
| + raw_ptr_resource_handler_->status().status());
|
| +}
|
| +
|
| +// Tests that no invariants are broken if a ResourceHandler defers EOF.
|
| +TEST_F(ResourceLoaderTest, DeferEOF) {
|
| + raw_ptr_resource_handler_->set_defer_eof(true);
|
| +
|
| + loader_->StartRequest();
|
| + raw_ptr_resource_handler_->WaitForDeferredStep();
|
| +
|
| + EXPECT_EQ(test_url(), raw_ptr_resource_handler_->start_url());
|
| + EXPECT_FALSE(raw_ptr_resource_handler_->received_response_completed());
|
| +
|
| + raw_ptr_resource_handler_->Resume();
|
| + raw_ptr_resource_handler_->WaitForResponseComplete();
|
| + EXPECT_EQ(net::URLRequestStatus::SUCCESS,
|
| + raw_ptr_resource_handler_->status().status());
|
| }
|
|
|
| class ResourceLoaderRedirectToFileTest : public ResourceLoaderTest {
|
| @@ -1188,9 +916,9 @@
|
| }
|
|
|
| std::unique_ptr<ResourceHandler> WrapResourceHandler(
|
| - std::unique_ptr<TestResourceHandler> leaf_handler,
|
| + std::unique_ptr<ResourceHandlerStub> leaf_handler,
|
| net::URLRequest* request) override {
|
| - leaf_handler->set_expect_on_data_downloaded(true);
|
| + leaf_handler->set_expect_reads(false);
|
|
|
| // Make a temporary file.
|
| CHECK(base::CreateTemporaryFile(&temp_path_));
|
| @@ -1240,15 +968,14 @@
|
| TEST_F(ResourceLoaderRedirectToFileTest, Basic) {
|
| // Run it to completion.
|
| loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| + raw_ptr_resource_handler_->WaitForResponseComplete();
|
|
|
| // Check that the handler forwarded all information to the downstream handler.
|
| - EXPECT_EQ(
|
| - temp_path(),
|
| - raw_ptr_resource_handler_->resource_response()->head.download_file_path);
|
| - EXPECT_EQ(test_redirect_url(), raw_ptr_resource_handler_->start_url());
|
| + EXPECT_EQ(temp_path(),
|
| + raw_ptr_resource_handler_->response()->head.download_file_path);
|
| + EXPECT_EQ(test_url(), raw_ptr_resource_handler_->start_url());
|
| EXPECT_EQ(net::URLRequestStatus::SUCCESS,
|
| - raw_ptr_resource_handler_->final_status().status());
|
| + raw_ptr_resource_handler_->status().status());
|
| EXPECT_EQ(test_data().size(), static_cast<size_t>(
|
| raw_ptr_resource_handler_->total_bytes_downloaded()));
|
|
|
| @@ -1268,11 +995,11 @@
|
|
|
| // Run it to completion.
|
| loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| + raw_ptr_resource_handler_->WaitForResponseComplete();
|
|
|
| // To downstream, the request was canceled.
|
| EXPECT_EQ(net::URLRequestStatus::CANCELED,
|
| - raw_ptr_resource_handler_->final_status().status());
|
| + raw_ptr_resource_handler_->status().status());
|
| EXPECT_EQ(0, raw_ptr_resource_handler_->total_bytes_downloaded());
|
| }
|
|
|
| @@ -1282,16 +1009,15 @@
|
|
|
| // Run it to completion.
|
| loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| + raw_ptr_resource_handler_->WaitForResponseComplete();
|
|
|
| // To downstream, the request was canceled sometime after it started, but
|
| // before any data was written.
|
| - EXPECT_EQ(
|
| - temp_path(),
|
| - raw_ptr_resource_handler_->resource_response()->head.download_file_path);
|
| - EXPECT_EQ(test_redirect_url(), raw_ptr_resource_handler_->start_url());
|
| + EXPECT_EQ(temp_path(),
|
| + raw_ptr_resource_handler_->response()->head.download_file_path);
|
| + EXPECT_EQ(test_url(), raw_ptr_resource_handler_->start_url());
|
| EXPECT_EQ(net::URLRequestStatus::CANCELED,
|
| - raw_ptr_resource_handler_->final_status().status());
|
| + raw_ptr_resource_handler_->status().status());
|
| EXPECT_EQ(0, raw_ptr_resource_handler_->total_bytes_downloaded());
|
| }
|
|
|
| @@ -1301,16 +1027,15 @@
|
|
|
| // Run it to completion.
|
| loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| + raw_ptr_resource_handler_->WaitForResponseComplete();
|
|
|
| // To downstream, the request was canceled sometime after it started, but
|
| // before any data was written.
|
| - EXPECT_EQ(
|
| - temp_path(),
|
| - raw_ptr_resource_handler_->resource_response()->head.download_file_path);
|
| - EXPECT_EQ(test_redirect_url(), raw_ptr_resource_handler_->start_url());
|
| + EXPECT_EQ(temp_path(),
|
| + raw_ptr_resource_handler_->response()->head.download_file_path);
|
| + EXPECT_EQ(test_url(), raw_ptr_resource_handler_->start_url());
|
| EXPECT_EQ(net::URLRequestStatus::CANCELED,
|
| - raw_ptr_resource_handler_->final_status().status());
|
| + raw_ptr_resource_handler_->status().status());
|
| EXPECT_EQ(0, raw_ptr_resource_handler_->total_bytes_downloaded());
|
| }
|
|
|
| @@ -1332,50 +1057,48 @@
|
|
|
| // However, the resource loader stack is stuck somewhere after receiving the
|
| // response.
|
| - EXPECT_EQ(
|
| - temp_path(),
|
| - raw_ptr_resource_handler_->resource_response()->head.download_file_path);
|
| - EXPECT_EQ(test_redirect_url(), raw_ptr_resource_handler_->start_url());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
|
| + EXPECT_EQ(temp_path(),
|
| + raw_ptr_resource_handler_->response()->head.download_file_path);
|
| + EXPECT_EQ(test_url(), raw_ptr_resource_handler_->start_url());
|
| + EXPECT_FALSE(raw_ptr_resource_handler_->received_response_completed());
|
| EXPECT_EQ(0, raw_ptr_resource_handler_->total_bytes_downloaded());
|
|
|
| // Now, release the floodgates.
|
| file_stream()->ReleaseCallbacks();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| + raw_ptr_resource_handler_->WaitForResponseComplete();
|
|
|
| // Although the URLRequest was successful, the leaf handler sees a failure
|
| // because the write never completed.
|
| EXPECT_EQ(net::URLRequestStatus::CANCELED,
|
| - raw_ptr_resource_handler_->final_status().status());
|
| + raw_ptr_resource_handler_->status().status());
|
| }
|
|
|
| // Tests that a RedirectToFileResourceHandler behaves properly when the
|
| // downstream handler defers OnWillStart.
|
| TEST_F(ResourceLoaderRedirectToFileTest, DownstreamDeferStart) {
|
| // Defer OnWillStart.
|
| - raw_ptr_resource_handler_->set_defer_on_will_start(true);
|
| + raw_ptr_resource_handler_->set_defer_request_on_will_start(true);
|
|
|
| // Run as far as we'll go.
|
| loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilDeferred();
|
| + raw_ptr_resource_handler_->WaitForDeferredStep();
|
|
|
| // The request should have stopped at OnWillStart.
|
| - EXPECT_EQ(test_redirect_url(), raw_ptr_resource_handler_->start_url());
|
| - EXPECT_FALSE(raw_ptr_resource_handler_->resource_response());
|
| - EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
|
| + EXPECT_EQ(test_url(), raw_ptr_resource_handler_->start_url());
|
| + EXPECT_FALSE(raw_ptr_resource_handler_->response());
|
| + EXPECT_FALSE(raw_ptr_resource_handler_->received_response_completed());
|
| EXPECT_EQ(0, raw_ptr_resource_handler_->total_bytes_downloaded());
|
|
|
| // Now resume the request. Now we complete.
|
| raw_ptr_resource_handler_->Resume();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| + raw_ptr_resource_handler_->WaitForResponseComplete();
|
|
|
| // Check that the handler forwarded all information to the downstream handler.
|
| - EXPECT_EQ(
|
| - temp_path(),
|
| - raw_ptr_resource_handler_->resource_response()->head.download_file_path);
|
| - EXPECT_EQ(test_redirect_url(), raw_ptr_resource_handler_->start_url());
|
| + EXPECT_EQ(temp_path(),
|
| + raw_ptr_resource_handler_->response()->head.download_file_path);
|
| + EXPECT_EQ(test_url(), raw_ptr_resource_handler_->start_url());
|
| EXPECT_EQ(net::URLRequestStatus::SUCCESS,
|
| - raw_ptr_resource_handler_->final_status().status());
|
| + raw_ptr_resource_handler_->status().status());
|
| EXPECT_EQ(test_data().size(), static_cast<size_t>(
|
| raw_ptr_resource_handler_->total_bytes_downloaded()));
|
|
|
| @@ -1397,19 +1120,18 @@
|
| // Start the request and wait for it to finish.
|
| std::unique_ptr<net::URLRequest> request(
|
| resource_context_.GetRequestContext()->CreateRequest(
|
| - test_redirect_url(), net::DEFAULT_PRIORITY,
|
| - nullptr /* delegate */));
|
| + test_url(), net::DEFAULT_PRIORITY, nullptr /* delegate */));
|
| SetUpResourceLoader(std::move(request), resource_type,
|
| belongs_to_main_frame);
|
|
|
| // Send the request and wait until it completes.
|
| loader_->StartRequest();
|
| - raw_ptr_resource_handler_->WaitUntilResponseComplete();
|
| + raw_ptr_resource_handler_->WaitForResponseComplete();
|
| ASSERT_EQ(net::URLRequestStatus::SUCCESS,
|
| raw_ptr_to_request_->status().status());
|
|
|
| - EXPECT_EQ(expected_type, raw_ptr_resource_handler_->resource_response()
|
| - ->head.effective_connection_type);
|
| + EXPECT_EQ(expected_type,
|
| + raw_ptr_resource_handler_->observed_effective_connection_type());
|
| }
|
| };
|
|
|
|
|