| Index: content/child/throttling_url_loader_unittest.cc
|
| diff --git a/content/child/throttling_url_loader_unittest.cc b/content/child/throttling_url_loader_unittest.cc
|
| deleted file mode 100644
|
| index 96b8b9194369ff02ebbc6fcddaa7bbd4eefd7416..0000000000000000000000000000000000000000
|
| --- a/content/child/throttling_url_loader_unittest.cc
|
| +++ /dev/null
|
| @@ -1,560 +0,0 @@
|
| -// Copyright 2017 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "content/child/throttling_url_loader.h"
|
| -#include "base/logging.h"
|
| -#include "base/macros.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/run_loop.h"
|
| -#include "content/common/url_loader.mojom.h"
|
| -#include "content/common/url_loader_factory.mojom.h"
|
| -#include "content/public/child/url_loader_throttle.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace content {
|
| -namespace {
|
| -
|
| -class TestURLLoaderFactory : public mojom::URLLoaderFactory {
|
| - public:
|
| - TestURLLoaderFactory() : binding_(this) {
|
| - binding_.Bind(mojo::MakeRequest(&factory_ptr_));
|
| - }
|
| -
|
| - mojom::URLLoaderFactoryPtr& factory_ptr() { return factory_ptr_; }
|
| - mojom::URLLoaderClientPtr& client_ptr() { return client_ptr_; }
|
| -
|
| - size_t create_loader_and_start_called() const {
|
| - return create_loader_and_start_called_;
|
| - }
|
| -
|
| - void NotifyClientOnReceiveResponse() {
|
| - client_ptr_->OnReceiveResponse(ResourceResponseHead(), base::nullopt,
|
| - nullptr);
|
| - }
|
| -
|
| - void NotifyClientOnReceiveRedirect() {
|
| - client_ptr_->OnReceiveRedirect(net::RedirectInfo(), ResourceResponseHead());
|
| - }
|
| -
|
| - void NotifyClientOnComplete(int error_code) {
|
| - ResourceRequestCompletionStatus data;
|
| - data.error_code = error_code;
|
| - client_ptr_->OnComplete(data);
|
| - }
|
| -
|
| - private:
|
| - // mojom::URLLoaderFactory implementation.
|
| - void CreateLoaderAndStart(mojom::URLLoaderAssociatedRequest request,
|
| - int32_t routing_id,
|
| - int32_t request_id,
|
| - uint32_t options,
|
| - const ResourceRequest& url_request,
|
| - mojom::URLLoaderClientPtr client) override {
|
| - create_loader_and_start_called_++;
|
| -
|
| - client_ptr_ = std::move(client);
|
| - }
|
| -
|
| - void SyncLoad(int32_t routing_id,
|
| - int32_t request_id,
|
| - const ResourceRequest& request,
|
| - SyncLoadCallback callback) override {
|
| - NOTREACHED();
|
| - }
|
| -
|
| - size_t create_loader_and_start_called_ = 0;
|
| -
|
| - mojo::Binding<mojom::URLLoaderFactory> binding_;
|
| - mojom::URLLoaderFactoryPtr factory_ptr_;
|
| - mojom::URLLoaderClientPtr client_ptr_;
|
| - DISALLOW_COPY_AND_ASSIGN(TestURLLoaderFactory);
|
| -};
|
| -
|
| -class TestURLLoaderClient : public mojom::URLLoaderClient {
|
| - public:
|
| - TestURLLoaderClient() {}
|
| -
|
| - size_t on_received_response_called() const {
|
| - return on_received_response_called_;
|
| - }
|
| -
|
| - size_t on_received_redirect_called() const {
|
| - return on_received_redirect_called_;
|
| - }
|
| -
|
| - size_t on_complete_called() const { return on_complete_called_; }
|
| -
|
| - using OnCompleteCallback = base::Callback<void(int error_code)>;
|
| - void set_on_complete_callback(const OnCompleteCallback& callback) {
|
| - on_complete_callback_ = callback;
|
| - }
|
| -
|
| - private:
|
| - // mojom::URLLoaderClient implementation:
|
| - void OnReceiveResponse(
|
| - const ResourceResponseHead& response_head,
|
| - const base::Optional<net::SSLInfo>& ssl_info,
|
| - mojom::DownloadedTempFilePtr downloaded_file) override {
|
| - on_received_response_called_++;
|
| - }
|
| - void OnReceiveRedirect(const net::RedirectInfo& redirect_info,
|
| - const ResourceResponseHead& response_head) override {
|
| - on_received_redirect_called_++;
|
| - }
|
| - void OnDataDownloaded(int64_t data_len, int64_t encoded_data_len) override {}
|
| - void OnUploadProgress(int64_t current_position,
|
| - int64_t total_size,
|
| - OnUploadProgressCallback ack_callback) override {}
|
| - void OnReceiveCachedMetadata(const std::vector<uint8_t>& data) override {}
|
| - void OnTransferSizeUpdated(int32_t transfer_size_diff) override {}
|
| - void OnStartLoadingResponseBody(
|
| - mojo::ScopedDataPipeConsumerHandle body) override {}
|
| - void OnComplete(const ResourceRequestCompletionStatus& status) override {
|
| - on_complete_called_++;
|
| - if (on_complete_callback_)
|
| - on_complete_callback_.Run(status.error_code);
|
| - }
|
| -
|
| - size_t on_received_response_called_ = 0;
|
| - size_t on_received_redirect_called_ = 0;
|
| - size_t on_complete_called_ = 0;
|
| -
|
| - OnCompleteCallback on_complete_callback_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestURLLoaderClient);
|
| -};
|
| -
|
| -class TestURLLoaderThrottle : public URLLoaderThrottle {
|
| - public:
|
| - TestURLLoaderThrottle() {}
|
| -
|
| - using ThrottleCallback =
|
| - base::Callback<void(URLLoaderThrottle::Delegate* delegate, bool* defer)>;
|
| -
|
| - size_t will_start_request_called() const {
|
| - return will_start_request_called_;
|
| - }
|
| - size_t will_redirect_request_called() const {
|
| - return will_redirect_request_called_;
|
| - }
|
| - size_t will_process_response_called() const {
|
| - return will_process_response_called_;
|
| - }
|
| -
|
| - void set_will_start_request_callback(const ThrottleCallback& callback) {
|
| - will_start_request_callback_ = callback;
|
| - }
|
| -
|
| - void set_will_redirect_request_callback(const ThrottleCallback& callback) {
|
| - will_redirect_request_callback_ = callback;
|
| - }
|
| -
|
| - void set_will_process_response_callback(const ThrottleCallback& callback) {
|
| - will_process_response_callback_ = callback;
|
| - }
|
| -
|
| - Delegate* delegate() const { return delegate_; }
|
| -
|
| - private:
|
| - // URLLoaderThrottle implementation.
|
| - void WillStartRequest(const GURL& url,
|
| - int load_flags,
|
| - ResourceType resource_type,
|
| - bool* defer) override {
|
| - will_start_request_called_++;
|
| - if (will_start_request_callback_)
|
| - will_start_request_callback_.Run(delegate_, defer);
|
| - }
|
| -
|
| - void WillRedirectRequest(const net::RedirectInfo& redirect_info,
|
| - bool* defer) override {
|
| - will_redirect_request_called_++;
|
| - if (will_redirect_request_callback_)
|
| - will_redirect_request_callback_.Run(delegate_, defer);
|
| - }
|
| -
|
| - void WillProcessResponse(bool* defer) override {
|
| - will_process_response_called_++;
|
| - if (will_process_response_callback_)
|
| - will_process_response_callback_.Run(delegate_, defer);
|
| - }
|
| -
|
| - size_t will_start_request_called_ = 0;
|
| - size_t will_redirect_request_called_ = 0;
|
| - size_t will_process_response_called_ = 0;
|
| -
|
| - ThrottleCallback will_start_request_callback_;
|
| - ThrottleCallback will_redirect_request_callback_;
|
| - ThrottleCallback will_process_response_callback_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestURLLoaderThrottle);
|
| -};
|
| -
|
| -class ThrottlingURLLoaderTest : public testing::Test {
|
| - public:
|
| - ThrottlingURLLoaderTest() {}
|
| -
|
| - protected:
|
| - // testing::Test implementation.
|
| - void SetUp() override {
|
| - auto throttle = base::MakeUnique<TestURLLoaderThrottle>();
|
| - throttle_ = throttle.get();
|
| -
|
| - throttles_.push_back(std::move(throttle));
|
| - }
|
| -
|
| - void CreateLoaderAndStart() {
|
| - auto request = base::MakeUnique<ResourceRequest>();
|
| - request->url = GURL("http://example.org");
|
| - loader_ = ThrottlingURLLoader::CreateLoaderAndStart(
|
| - factory_.factory_ptr().get(), std::move(throttles_), 0, 0, 0,
|
| - std::move(request), &client_);
|
| - factory_.factory_ptr().FlushForTesting();
|
| - }
|
| -
|
| - // Be the first member so it is destroyed last.
|
| - base::MessageLoop message_loop_;
|
| -
|
| - std::unique_ptr<ThrottlingURLLoader> loader_;
|
| - std::vector<std::unique_ptr<URLLoaderThrottle>> throttles_;
|
| -
|
| - TestURLLoaderFactory factory_;
|
| - TestURLLoaderClient client_;
|
| -
|
| - // Owned by |throttles_| or |loader_|.
|
| - TestURLLoaderThrottle* throttle_ = nullptr;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ThrottlingURLLoaderTest);
|
| -};
|
| -
|
| -TEST_F(ThrottlingURLLoaderTest, CancelBeforeStart) {
|
| - throttle_->set_will_start_request_callback(
|
| - base::Bind([](URLLoaderThrottle::Delegate* delegate, bool* defer) {
|
| - delegate->CancelWithError(net::ERR_ACCESS_DENIED);
|
| - }));
|
| -
|
| - base::RunLoop run_loop;
|
| - client_.set_on_complete_callback(base::Bind(
|
| - [](const base::Closure& quit_closure, int error) {
|
| - EXPECT_EQ(net::ERR_ACCESS_DENIED, error);
|
| - quit_closure.Run();
|
| - },
|
| - run_loop.QuitClosure()));
|
| -
|
| - CreateLoaderAndStart();
|
| - run_loop.Run();
|
| -
|
| - EXPECT_EQ(1u, throttle_->will_start_request_called());
|
| - EXPECT_EQ(0u, throttle_->will_redirect_request_called());
|
| - EXPECT_EQ(0u, throttle_->will_process_response_called());
|
| -
|
| - EXPECT_EQ(0u, factory_.create_loader_and_start_called());
|
| -
|
| - EXPECT_EQ(0u, client_.on_received_response_called());
|
| - EXPECT_EQ(0u, client_.on_received_redirect_called());
|
| - EXPECT_EQ(1u, client_.on_complete_called());
|
| -}
|
| -
|
| -TEST_F(ThrottlingURLLoaderTest, DeferBeforeStart) {
|
| - throttle_->set_will_start_request_callback(
|
| - base::Bind([](URLLoaderThrottle::Delegate* delegate, bool* defer) {
|
| - *defer = true;
|
| - }));
|
| -
|
| - base::RunLoop run_loop;
|
| - client_.set_on_complete_callback(base::Bind(
|
| - [](const base::Closure& quit_closure, int error) {
|
| - EXPECT_EQ(net::OK, error);
|
| - quit_closure.Run();
|
| - },
|
| - run_loop.QuitClosure()));
|
| -
|
| - CreateLoaderAndStart();
|
| -
|
| - EXPECT_EQ(1u, throttle_->will_start_request_called());
|
| - EXPECT_EQ(0u, throttle_->will_redirect_request_called());
|
| - EXPECT_EQ(0u, throttle_->will_process_response_called());
|
| -
|
| - EXPECT_EQ(0u, factory_.create_loader_and_start_called());
|
| -
|
| - EXPECT_EQ(0u, client_.on_received_response_called());
|
| - EXPECT_EQ(0u, client_.on_received_redirect_called());
|
| - EXPECT_EQ(0u, client_.on_complete_called());
|
| -
|
| - throttle_->delegate()->Resume();
|
| - factory_.factory_ptr().FlushForTesting();
|
| -
|
| - EXPECT_EQ(1u, factory_.create_loader_and_start_called());
|
| -
|
| - factory_.NotifyClientOnReceiveResponse();
|
| - factory_.NotifyClientOnComplete(net::OK);
|
| -
|
| - run_loop.Run();
|
| -
|
| - EXPECT_EQ(1u, throttle_->will_start_request_called());
|
| - EXPECT_EQ(0u, throttle_->will_redirect_request_called());
|
| - EXPECT_EQ(1u, throttle_->will_process_response_called());
|
| -
|
| - EXPECT_EQ(1u, client_.on_received_response_called());
|
| - EXPECT_EQ(0u, client_.on_received_redirect_called());
|
| - EXPECT_EQ(1u, client_.on_complete_called());
|
| -}
|
| -
|
| -TEST_F(ThrottlingURLLoaderTest, CancelBeforeRedirect) {
|
| - throttle_->set_will_redirect_request_callback(
|
| - base::Bind([](URLLoaderThrottle::Delegate* delegate, bool* defer) {
|
| - delegate->CancelWithError(net::ERR_ACCESS_DENIED);
|
| - }));
|
| -
|
| - base::RunLoop run_loop;
|
| - client_.set_on_complete_callback(base::Bind(
|
| - [](const base::Closure& quit_closure, int error) {
|
| - EXPECT_EQ(net::ERR_ACCESS_DENIED, error);
|
| - quit_closure.Run();
|
| - },
|
| - run_loop.QuitClosure()));
|
| -
|
| - CreateLoaderAndStart();
|
| -
|
| - factory_.NotifyClientOnReceiveRedirect();
|
| -
|
| - run_loop.Run();
|
| -
|
| - EXPECT_EQ(1u, throttle_->will_start_request_called());
|
| - EXPECT_EQ(1u, throttle_->will_redirect_request_called());
|
| - EXPECT_EQ(0u, throttle_->will_process_response_called());
|
| -
|
| - EXPECT_EQ(0u, client_.on_received_response_called());
|
| - EXPECT_EQ(0u, client_.on_received_redirect_called());
|
| - EXPECT_EQ(1u, client_.on_complete_called());
|
| -}
|
| -
|
| -TEST_F(ThrottlingURLLoaderTest, DeferBeforeRedirect) {
|
| - base::RunLoop run_loop1;
|
| - throttle_->set_will_redirect_request_callback(base::Bind(
|
| - [](const base::Closure& quit_closure,
|
| - URLLoaderThrottle::Delegate* delegate, bool* defer) {
|
| - *defer = true;
|
| - quit_closure.Run();
|
| - },
|
| - run_loop1.QuitClosure()));
|
| -
|
| - base::RunLoop run_loop2;
|
| - client_.set_on_complete_callback(base::Bind(
|
| - [](const base::Closure& quit_closure, int error) {
|
| - EXPECT_EQ(net::ERR_UNEXPECTED, error);
|
| - quit_closure.Run();
|
| - },
|
| - run_loop2.QuitClosure()));
|
| -
|
| - CreateLoaderAndStart();
|
| -
|
| - factory_.NotifyClientOnReceiveRedirect();
|
| -
|
| - run_loop1.Run();
|
| -
|
| - EXPECT_EQ(1u, throttle_->will_start_request_called());
|
| - EXPECT_EQ(1u, throttle_->will_redirect_request_called());
|
| - EXPECT_EQ(0u, throttle_->will_process_response_called());
|
| -
|
| - factory_.NotifyClientOnComplete(net::ERR_UNEXPECTED);
|
| -
|
| - base::RunLoop run_loop3;
|
| - run_loop3.RunUntilIdle();
|
| -
|
| - EXPECT_EQ(0u, client_.on_received_response_called());
|
| - EXPECT_EQ(0u, client_.on_received_redirect_called());
|
| - EXPECT_EQ(0u, client_.on_complete_called());
|
| -
|
| - throttle_->delegate()->Resume();
|
| - run_loop2.Run();
|
| -
|
| - EXPECT_EQ(1u, throttle_->will_start_request_called());
|
| - EXPECT_EQ(1u, throttle_->will_redirect_request_called());
|
| - EXPECT_EQ(0u, throttle_->will_process_response_called());
|
| -
|
| - EXPECT_EQ(0u, client_.on_received_response_called());
|
| - EXPECT_EQ(1u, client_.on_received_redirect_called());
|
| - EXPECT_EQ(1u, client_.on_complete_called());
|
| -}
|
| -
|
| -TEST_F(ThrottlingURLLoaderTest, CancelBeforeResponse) {
|
| - throttle_->set_will_process_response_callback(
|
| - base::Bind([](URLLoaderThrottle::Delegate* delegate, bool* defer) {
|
| - delegate->CancelWithError(net::ERR_ACCESS_DENIED);
|
| - }));
|
| -
|
| - base::RunLoop run_loop;
|
| - client_.set_on_complete_callback(base::Bind(
|
| - [](const base::Closure& quit_closure, int error) {
|
| - EXPECT_EQ(net::ERR_ACCESS_DENIED, error);
|
| - quit_closure.Run();
|
| - },
|
| - run_loop.QuitClosure()));
|
| -
|
| - CreateLoaderAndStart();
|
| -
|
| - factory_.NotifyClientOnReceiveResponse();
|
| -
|
| - run_loop.Run();
|
| -
|
| - EXPECT_EQ(1u, throttle_->will_start_request_called());
|
| - EXPECT_EQ(0u, throttle_->will_redirect_request_called());
|
| - EXPECT_EQ(1u, throttle_->will_process_response_called());
|
| -
|
| - EXPECT_EQ(0u, client_.on_received_response_called());
|
| - EXPECT_EQ(0u, client_.on_received_redirect_called());
|
| - EXPECT_EQ(1u, client_.on_complete_called());
|
| -}
|
| -
|
| -TEST_F(ThrottlingURLLoaderTest, DeferBeforeResponse) {
|
| - base::RunLoop run_loop1;
|
| - throttle_->set_will_process_response_callback(base::Bind(
|
| - [](const base::Closure& quit_closure,
|
| - URLLoaderThrottle::Delegate* delegate, bool* defer) {
|
| - *defer = true;
|
| - quit_closure.Run();
|
| - },
|
| - run_loop1.QuitClosure()));
|
| -
|
| - base::RunLoop run_loop2;
|
| - client_.set_on_complete_callback(base::Bind(
|
| - [](const base::Closure& quit_closure, int error) {
|
| - EXPECT_EQ(net::ERR_UNEXPECTED, error);
|
| - quit_closure.Run();
|
| - },
|
| - run_loop2.QuitClosure()));
|
| -
|
| - CreateLoaderAndStart();
|
| -
|
| - factory_.NotifyClientOnReceiveResponse();
|
| -
|
| - run_loop1.Run();
|
| -
|
| - EXPECT_EQ(1u, throttle_->will_start_request_called());
|
| - EXPECT_EQ(0u, throttle_->will_redirect_request_called());
|
| - EXPECT_EQ(1u, throttle_->will_process_response_called());
|
| -
|
| - factory_.NotifyClientOnComplete(net::ERR_UNEXPECTED);
|
| -
|
| - base::RunLoop run_loop3;
|
| - run_loop3.RunUntilIdle();
|
| -
|
| - EXPECT_EQ(0u, client_.on_received_response_called());
|
| - EXPECT_EQ(0u, client_.on_received_redirect_called());
|
| - EXPECT_EQ(0u, client_.on_complete_called());
|
| -
|
| - throttle_->delegate()->Resume();
|
| - run_loop2.Run();
|
| -
|
| - EXPECT_EQ(1u, throttle_->will_start_request_called());
|
| - EXPECT_EQ(0u, throttle_->will_redirect_request_called());
|
| - EXPECT_EQ(1u, throttle_->will_process_response_called());
|
| -
|
| - EXPECT_EQ(1u, client_.on_received_response_called());
|
| - EXPECT_EQ(0u, client_.on_received_redirect_called());
|
| - EXPECT_EQ(1u, client_.on_complete_called());
|
| -}
|
| -
|
| -TEST_F(ThrottlingURLLoaderTest, ResumeNoOpIfNotDeferred) {
|
| - auto resume_callback =
|
| - base::Bind([](URLLoaderThrottle::Delegate* delegate, bool* defer) {
|
| - delegate->Resume();
|
| - delegate->Resume();
|
| - });
|
| - throttle_->set_will_start_request_callback(resume_callback);
|
| - throttle_->set_will_redirect_request_callback(resume_callback);
|
| - throttle_->set_will_process_response_callback(resume_callback);
|
| -
|
| - base::RunLoop run_loop;
|
| - client_.set_on_complete_callback(base::Bind(
|
| - [](const base::Closure& quit_closure, int error) {
|
| - EXPECT_EQ(net::OK, error);
|
| - quit_closure.Run();
|
| - },
|
| - run_loop.QuitClosure()));
|
| -
|
| - CreateLoaderAndStart();
|
| - factory_.NotifyClientOnReceiveRedirect();
|
| - factory_.NotifyClientOnReceiveResponse();
|
| - factory_.NotifyClientOnComplete(net::OK);
|
| -
|
| - run_loop.Run();
|
| -
|
| - EXPECT_EQ(1u, throttle_->will_start_request_called());
|
| - EXPECT_EQ(1u, throttle_->will_redirect_request_called());
|
| - EXPECT_EQ(1u, throttle_->will_process_response_called());
|
| -
|
| - EXPECT_EQ(1u, client_.on_received_response_called());
|
| - EXPECT_EQ(1u, client_.on_received_redirect_called());
|
| - EXPECT_EQ(1u, client_.on_complete_called());
|
| -}
|
| -
|
| -TEST_F(ThrottlingURLLoaderTest, CancelNoOpIfAlreadyCanceled) {
|
| - throttle_->set_will_start_request_callback(
|
| - base::Bind([](URLLoaderThrottle::Delegate* delegate, bool* defer) {
|
| - delegate->CancelWithError(net::ERR_ACCESS_DENIED);
|
| - delegate->CancelWithError(net::ERR_UNEXPECTED);
|
| - }));
|
| -
|
| - base::RunLoop run_loop;
|
| - client_.set_on_complete_callback(base::Bind(
|
| - [](const base::Closure& quit_closure, int error) {
|
| - EXPECT_EQ(net::ERR_ACCESS_DENIED, error);
|
| - quit_closure.Run();
|
| - },
|
| - run_loop.QuitClosure()));
|
| -
|
| - CreateLoaderAndStart();
|
| - throttle_->delegate()->CancelWithError(net::ERR_INVALID_ARGUMENT);
|
| - run_loop.Run();
|
| -
|
| - EXPECT_EQ(1u, throttle_->will_start_request_called());
|
| - EXPECT_EQ(0u, throttle_->will_redirect_request_called());
|
| - EXPECT_EQ(0u, throttle_->will_process_response_called());
|
| -
|
| - EXPECT_EQ(0u, factory_.create_loader_and_start_called());
|
| -
|
| - EXPECT_EQ(0u, client_.on_received_response_called());
|
| - EXPECT_EQ(0u, client_.on_received_redirect_called());
|
| - EXPECT_EQ(1u, client_.on_complete_called());
|
| -}
|
| -
|
| -TEST_F(ThrottlingURLLoaderTest, ResumeNoOpIfAlreadyCanceled) {
|
| - throttle_->set_will_process_response_callback(
|
| - base::Bind([](URLLoaderThrottle::Delegate* delegate, bool* defer) {
|
| - delegate->CancelWithError(net::ERR_ACCESS_DENIED);
|
| - delegate->Resume();
|
| - }));
|
| -
|
| - base::RunLoop run_loop1;
|
| - client_.set_on_complete_callback(base::Bind(
|
| - [](const base::Closure& quit_closure, int error) {
|
| - EXPECT_EQ(net::ERR_ACCESS_DENIED, error);
|
| - quit_closure.Run();
|
| - },
|
| - run_loop1.QuitClosure()));
|
| -
|
| - CreateLoaderAndStart();
|
| -
|
| - factory_.NotifyClientOnReceiveResponse();
|
| -
|
| - run_loop1.Run();
|
| -
|
| - throttle_->delegate()->Resume();
|
| -
|
| - base::RunLoop run_loop2;
|
| - run_loop2.RunUntilIdle();
|
| -
|
| - EXPECT_EQ(1u, throttle_->will_start_request_called());
|
| - EXPECT_EQ(0u, throttle_->will_redirect_request_called());
|
| - EXPECT_EQ(1u, throttle_->will_process_response_called());
|
| -
|
| - EXPECT_EQ(0u, client_.on_received_response_called());
|
| - EXPECT_EQ(0u, client_.on_received_redirect_called());
|
| - EXPECT_EQ(1u, client_.on_complete_called());
|
| -}
|
| -
|
| -} // namespace
|
| -} // namespace content
|
|
|