| // Copyright (c) 2012 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. |
| |
| #ifndef NET_PROXY_MOCK_PAC_FILE_FETCHER_H_ |
| #define NET_PROXY_MOCK_PAC_FILE_FETCHER_H_ |
| |
| #include "base/compiler_specific.h" |
| #include "net/base/completion_once_callback.h" |
| #include "net/proxy_resolution/pac_file_fetcher.h" |
| #include "net/traffic_annotation/network_traffic_annotation.h" |
| #include "url/gurl.h" |
| |
| #include <string> |
| |
| namespace net { |
| |
| class URLRequestContext; |
| |
| // A mock PacFileFetcher. No result will be returned to the fetch client |
| // until we call NotifyFetchCompletion() to set the results. |
| class MockPacFileFetcher : public PacFileFetcher { |
| public: |
| MockPacFileFetcher(); |
| ~MockPacFileFetcher() override; |
| |
| // PacFileFetcher implementation. |
| int Fetch(const GURL& url, |
| base::string16* text, |
| CompletionOnceCallback callback, |
| const NetworkTrafficAnnotationTag traffic_annotation) override; |
| void Cancel() override; |
| void OnShutdown() override; |
| URLRequestContext* GetRequestContext() const override; |
| |
| void NotifyFetchCompletion(int result, const std::string& ascii_text); |
| const GURL& pending_request_url() const; |
| bool has_pending_request() const; |
| |
| // Spins the message loop until this->Fetch() is invoked. |
| void WaitUntilFetch(); |
| |
| private: |
| GURL pending_request_url_; |
| CompletionOnceCallback pending_request_callback_; |
| base::string16* pending_request_text_; |
| base::OnceClosure on_fetch_complete_; |
| bool is_shutdown_; |
| }; |
| |
| } // namespace net |
| |
| #endif // NET_PROXY_MOCK_PAC_FILE_FETCHER_H_ |