| 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 |