11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef CHROME_BROWSER_SUPERVISED_USER_EXPERIMENTAL_SUPERVISED_USER_BLACKLIST_DOWNLOADER_H_ 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define CHROME_BROWSER_SUPERVISED_USER_EXPERIMENTAL_SUPERVISED_USER_BLACKLIST_DOWNLOADER_H_ 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/callback.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/memory/scoped_ptr.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/memory/weak_ptr.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "net/url_request/url_fetcher_delegate.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace base { 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass FilePath; 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace base 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace net { 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass URLFetcher; 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass URLRequestContextGetter; 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace net 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass GURL; 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Helper class to download a blacklist file from a given URL and store it in a 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// local file. If the local file already exists, reports success without 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// downloading anything. 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass SupervisedUserBlacklistDownloader : public net::URLFetcherDelegate { 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public: 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci typedef base::Callback<void(bool /* success */)> DownloadFinishedCallback; 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Directly starts the download (if necessary) and runs |callback| when done. 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // If the instance is destroyed before it is finished, |callback| is not run. 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SupervisedUserBlacklistDownloader( 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const GURL& url, 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::FilePath& path, 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci net::URLRequestContextGetter* request_context, 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const DownloadFinishedCallback& callback); 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~SupervisedUserBlacklistDownloader(); 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private: 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // net::URLFetcherDelegate implementation. 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE; 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void OnFileExistsCheckDone(bool exists); 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DownloadFinishedCallback callback_; 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<net::URLFetcher> fetcher_; 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::WeakPtrFactory<SupervisedUserBlacklistDownloader> weak_ptr_factory_; 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DISALLOW_COPY_AND_ASSIGN(SupervisedUserBlacklistDownloader); 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // CHROME_BROWSER_SUPERVISED_USER_EXPERIMENTAL_SUPERVISED_USER_BLACKLIST_DOWNLOADER_H_ 56