OLD | NEW |
| (Empty) |
1 // Copyright 2013 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 CHROME_BROWSER_TRANSLATE_TRANSLATE_URL_FETCHER_H_ | |
6 #define CHROME_BROWSER_TRANSLATE_TRANSLATE_URL_FETCHER_H_ | |
7 | |
8 #include "base/callback.h" | |
9 #include "base/memory/scoped_ptr.h" | |
10 #include "net/url_request/url_fetcher_delegate.h" | |
11 #include "url/gurl.h" | |
12 | |
13 class TranslateURLFetcher : public net::URLFetcherDelegate { | |
14 public: | |
15 // Callback type for Request(). | |
16 typedef base::Callback<void(int, bool, const std::string&)> Callback; | |
17 | |
18 // Represents internal state if the fetch is completed successfully. | |
19 enum State { | |
20 IDLE, // No fetch request was issued. | |
21 REQUESTING, // A fetch request was issued, but not finished yet. | |
22 COMPLETED, // The last fetch request was finished successfully. | |
23 FAILED, // The last fetch request was finished with a failure. | |
24 }; | |
25 | |
26 explicit TranslateURLFetcher(int id); | |
27 virtual ~TranslateURLFetcher(); | |
28 | |
29 int max_retry_on_5xx() { | |
30 return max_retry_on_5xx_; | |
31 } | |
32 void set_max_retry_on_5xx(int count) { | |
33 max_retry_on_5xx_ = count; | |
34 } | |
35 | |
36 const std::string& extra_request_header() { | |
37 return extra_request_header_; | |
38 } | |
39 void set_extra_request_header(const std::string& header) { | |
40 extra_request_header_ = header; | |
41 } | |
42 | |
43 // Requests to |url|. |callback| will be invoked when the function returns | |
44 // true, and the request is finished asynchronously. | |
45 // Returns false if the previous request is not finished, or the request | |
46 // is omitted due to retry limitation. | |
47 bool Request(const GURL& url, const Callback& callback); | |
48 | |
49 // Gets internal state. | |
50 State state() { return state_; } | |
51 | |
52 // net::URLFetcherDelegate implementation: | |
53 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE; | |
54 | |
55 private: | |
56 // URL to send the request. | |
57 GURL url_; | |
58 | |
59 // ID which is assigned to the URLFetcher. | |
60 const int id_; | |
61 | |
62 // Internal state. | |
63 enum State state_; | |
64 | |
65 // URLFetcher instance. | |
66 scoped_ptr<net::URLFetcher> fetcher_; | |
67 | |
68 // Callback passed at Request(). It will be invoked when an asynchronous | |
69 // fetch operation is finished. | |
70 Callback callback_; | |
71 | |
72 // Counts how many times did it try to fetch the language list. | |
73 int retry_count_; | |
74 | |
75 // Max number how many times to retry on the server error | |
76 int max_retry_on_5xx_; | |
77 | |
78 // An extra HTTP request header | |
79 std::string extra_request_header_; | |
80 | |
81 DISALLOW_COPY_AND_ASSIGN(TranslateURLFetcher); | |
82 }; | |
83 | |
84 #endif // CHROME_BROWSER_TRANSLATE_TRANSLATE_URL_FETCHER_H_ | |
OLD | NEW |