Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / supervised_user / experimental / supervised_user_blacklist_downloader.h
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 CHROME_BROWSER_SUPERVISED_USER_EXPERIMENTAL_SUPERVISED_USER_BLACKLIST_DOWNLOADER_H_
6 #define CHROME_BROWSER_SUPERVISED_USER_EXPERIMENTAL_SUPERVISED_USER_BLACKLIST_DOWNLOADER_H_
7
8 #include "base/callback.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "base/memory/weak_ptr.h"
11 #include "net/url_request/url_fetcher_delegate.h"
12
13 namespace base {
14 class FilePath;
15 }  // namespace base
16
17 namespace net {
18 class URLFetcher;
19 class URLRequestContextGetter;
20 }  // namespace net
21
22 class GURL;
23
24 // Helper class to download a blacklist file from a given URL and store it in a
25 // local file. If the local file already exists, reports success without
26 // downloading anything.
27 class SupervisedUserBlacklistDownloader : public net::URLFetcherDelegate {
28  public:
29   typedef base::Callback<void(bool /* success */)> DownloadFinishedCallback;
30
31   // Directly starts the download (if necessary) and runs |callback| when done.
32   // If the instance is destroyed before it is finished, |callback| is not run.
33   SupervisedUserBlacklistDownloader(
34       const GURL& url,
35       const base::FilePath& path,
36       net::URLRequestContextGetter* request_context,
37       const DownloadFinishedCallback& callback);
38   ~SupervisedUserBlacklistDownloader() override;
39
40  private:
41   // net::URLFetcherDelegate implementation.
42   void OnURLFetchComplete(const net::URLFetcher* source) override;
43
44   void OnFileExistsCheckDone(bool exists);
45
46   DownloadFinishedCallback callback_;
47
48   scoped_ptr<net::URLFetcher> fetcher_;
49
50   base::WeakPtrFactory<SupervisedUserBlacklistDownloader> weak_ptr_factory_;
51
52   DISALLOW_COPY_AND_ASSIGN(SupervisedUserBlacklistDownloader);
53 };
54
55 #endif  // CHROME_BROWSER_SUPERVISED_USER_EXPERIMENTAL_SUPERVISED_USER_BLACKLIST_DOWNLOADER_H_