1// Copyright 2014 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 CHROMEOS_LOGIN_AUTH_MOCK_URL_FETCHERS_H_
6#define CHROMEOS_LOGIN_AUTH_MOCK_URL_FETCHERS_H_
7
8#include <string>
9
10#include "base/compiler_specific.h"
11#include "base/memory/weak_ptr.h"
12#include "base/message_loop/message_loop.h"
13#include "chromeos/chromeos_export.h"
14#include "net/url_request/test_url_fetcher_factory.h"
15#include "net/url_request/url_request_status.h"
16#include "url/gurl.h"
17
18namespace net {
19class URLFetcherDelegate;
20}
21
22namespace chromeos {
23
24// Simulates a URL fetch by posting a delayed task. This fetch expects to be
25// canceled, and fails the test if it is not
26class ExpectCanceledFetcher : public net::TestURLFetcher {
27 public:
28  ExpectCanceledFetcher(bool success,
29                        const GURL& url,
30                        const std::string& results,
31                        net::URLFetcher::RequestType request_type,
32                        net::URLFetcherDelegate* d);
33  virtual ~ExpectCanceledFetcher();
34
35  virtual void Start() OVERRIDE;
36
37  void CompleteFetch();
38
39 private:
40  base::WeakPtrFactory<ExpectCanceledFetcher> weak_factory_;
41  DISALLOW_COPY_AND_ASSIGN(ExpectCanceledFetcher);
42};
43
44class GotCanceledFetcher : public net::TestURLFetcher {
45 public:
46  GotCanceledFetcher(bool success,
47                     const GURL& url,
48                     const std::string& results,
49                     net::URLFetcher::RequestType request_type,
50                     net::URLFetcherDelegate* d);
51  virtual ~GotCanceledFetcher();
52
53  virtual void Start() OVERRIDE;
54
55 private:
56  DISALLOW_COPY_AND_ASSIGN(GotCanceledFetcher);
57};
58
59class SuccessFetcher : public net::TestURLFetcher {
60 public:
61  SuccessFetcher(bool success,
62                 const GURL& url,
63                 const std::string& results,
64                 net::URLFetcher::RequestType request_type,
65                 net::URLFetcherDelegate* d);
66  virtual ~SuccessFetcher();
67
68  virtual void Start() OVERRIDE;
69
70 private:
71  DISALLOW_COPY_AND_ASSIGN(SuccessFetcher);
72};
73
74class FailFetcher : public net::TestURLFetcher {
75 public:
76  FailFetcher(bool success,
77              const GURL& url,
78              const std::string& results,
79              net::URLFetcher::RequestType request_type,
80              net::URLFetcherDelegate* d);
81  virtual ~FailFetcher();
82
83  virtual void Start() OVERRIDE;
84
85 private:
86  DISALLOW_COPY_AND_ASSIGN(FailFetcher);
87};
88
89class CaptchaFetcher : public net::TestURLFetcher {
90 public:
91  CaptchaFetcher(bool success,
92                 const GURL& url,
93                 const std::string& results,
94                 net::URLFetcher::RequestType request_type,
95                 net::URLFetcherDelegate* d);
96  virtual ~CaptchaFetcher();
97
98  static std::string GetCaptchaToken();
99  static std::string GetCaptchaUrl();
100  static std::string GetUnlockUrl();
101
102  virtual void Start() OVERRIDE;
103
104 private:
105  static const char kCaptchaToken[];
106  static const char kCaptchaUrlBase[];
107  static const char kCaptchaUrlFragment[];
108  static const char kUnlockUrl[];
109  DISALLOW_COPY_AND_ASSIGN(CaptchaFetcher);
110};
111
112class HostedFetcher : public net::TestURLFetcher {
113 public:
114  HostedFetcher(bool success,
115                const GURL& url,
116                const std::string& results,
117                net::URLFetcher::RequestType request_type,
118                net::URLFetcherDelegate* d);
119  virtual ~HostedFetcher();
120
121  virtual void Start() OVERRIDE;
122
123 private:
124  DISALLOW_COPY_AND_ASSIGN(HostedFetcher);
125};
126
127}  // namespace chromeos
128
129#endif  // CHROMEOS_LOGIN_AUTH_MOCK_URL_FETCHERS_H_
130