15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef NET_PROXY_MOCK_PROXY_SCRIPT_FETCHER_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NET_PROXY_MOCK_PROXY_SCRIPT_FETCHER_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/proxy/proxy_script_fetcher.h"
107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class URLRequestContext;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A mock ProxyScriptFetcher. No result will be returned to the fetch client
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// until we call NotifyFetchCompletion() to set the results.
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockProxyScriptFetcher : public ProxyScriptFetcher {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MockProxyScriptFetcher();
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MockProxyScriptFetcher();
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ProxyScriptFetcher implementation.
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int Fetch(const GURL& url,
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    base::string16* text,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    const CompletionCallback& callback) OVERRIDE;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Cancel() OVERRIDE;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual URLRequestContext* GetRequestContext() const OVERRIDE;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void NotifyFetchCompletion(int result, const std::string& ascii_text);
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const GURL& pending_request_url() const;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool has_pending_request() const;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Spins the message loop until this->Fetch() is invoked.
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void WaitUntilFetch();
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL pending_request_url_;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CompletionCallback pending_request_callback_;
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::string16* pending_request_text_;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool waiting_for_fetch_;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace net
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // NET_PROXY_MOCK_PROXY_SCRIPT_FETCHER_H_
49