1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef NET_PROXY_MOCK_PROXY_SCRIPT_FETCHER_H_
6#define NET_PROXY_MOCK_PROXY_SCRIPT_FETCHER_H_
7
8#include "base/compiler_specific.h"
9#include "net/proxy/proxy_script_fetcher.h"
10#include "url/gurl.h"
11
12#include <string>
13
14namespace net {
15
16class URLRequestContext;
17
18// A mock ProxyScriptFetcher. No result will be returned to the fetch client
19// until we call NotifyFetchCompletion() to set the results.
20class MockProxyScriptFetcher : public ProxyScriptFetcher {
21 public:
22  MockProxyScriptFetcher();
23  virtual ~MockProxyScriptFetcher();
24
25  // ProxyScriptFetcher implementation.
26  virtual int Fetch(const GURL& url,
27                    base::string16* text,
28                    const CompletionCallback& callback) OVERRIDE;
29  virtual void Cancel() OVERRIDE;
30  virtual URLRequestContext* GetRequestContext() const OVERRIDE;
31
32  void NotifyFetchCompletion(int result, const std::string& ascii_text);
33  const GURL& pending_request_url() const;
34  bool has_pending_request() const;
35
36  // Spins the message loop until this->Fetch() is invoked.
37  void WaitUntilFetch();
38
39 private:
40  GURL pending_request_url_;
41  CompletionCallback pending_request_callback_;
42  base::string16* pending_request_text_;
43  bool waiting_for_fetch_;
44};
45
46}  // namespace net
47
48#endif  // NET_PROXY_MOCK_PROXY_SCRIPT_FETCHER_H_
49