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_PROFILE_RESETTER_BRANDCODE_CONFIG_FETCHER_H_ 6#define CHROME_BROWSER_PROFILE_RESETTER_BRANDCODE_CONFIG_FETCHER_H_ 7 8#include "base/basictypes.h" 9#include "base/callback.h" 10#include "base/timer/timer.h" 11#include "net/url_request/url_fetcher_delegate.h" 12 13class BrandcodedDefaultSettings; 14class GURL; 15 16// BrandcodeConfigFetcher fetches and parses the xml containing the brandcoded 17// default settings. Caller should provide a FetchCallback. 18class BrandcodeConfigFetcher : public net::URLFetcherDelegate { 19 public: 20 typedef base::Callback<void ()> FetchCallback; 21 22 BrandcodeConfigFetcher(const FetchCallback& callback, 23 const GURL& url, 24 const std::string& brandcode); 25 virtual ~BrandcodeConfigFetcher(); 26 27 bool IsActive() const { return config_fetcher_; } 28 29 scoped_ptr<BrandcodedDefaultSettings> GetSettings() { 30 return default_settings_.Pass(); 31 } 32 33 // Sets the new callback. The previous one won't be called. 34 void SetCallback(const FetchCallback& callback); 35 36 private: 37 // net::URLFetcherDelegate: 38 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE; 39 40 void OnDownloadTimeout(); 41 42 // Timer that enforces a timeout on the attempt to download the 43 // config file. 44 base::OneShotTimer<BrandcodeConfigFetcher> download_timer_; 45 46 // |fetch_callback_| called when fetching succeeded or failed. 47 FetchCallback fetch_callback_; 48 49 // Helper to fetch the online config file. 50 scoped_ptr<net::URLFetcher> config_fetcher_; 51 52 // Fetched settings. 53 scoped_ptr<BrandcodedDefaultSettings> default_settings_; 54 55 DISALLOW_COPY_AND_ASSIGN(BrandcodeConfigFetcher); 56}; 57 58#endif // CHROME_BROWSER_PROFILE_RESETTER_BRANDCODE_CONFIG_FETCHER_H_ 59