17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file. 47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#ifndef CHROME_BROWSER_PROFILE_RESETTER_BRANDCODE_CONFIG_FETCHER_H_ 67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#define CHROME_BROWSER_PROFILE_RESETTER_BRANDCODE_CONFIG_FETCHER_H_ 77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/basictypes.h" 97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/callback.h" 107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/timer/timer.h" 117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "net/url_request/url_fetcher_delegate.h" 127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass BrandcodedDefaultSettings; 147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass GURL; 157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// BrandcodeConfigFetcher fetches and parses the xml containing the brandcoded 177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// default settings. Caller should provide a FetchCallback. 187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass BrandcodeConfigFetcher : public net::URLFetcherDelegate { 197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public: 207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch typedef base::Callback<void ()> FetchCallback; 217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch BrandcodeConfigFetcher(const FetchCallback& callback, 2358e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch const GURL& url, 2458e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch const std::string& brandcode); 257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual ~BrandcodeConfigFetcher(); 267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch bool IsActive() const { return config_fetcher_; } 287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch scoped_ptr<BrandcodedDefaultSettings> GetSettings() { 307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return default_settings_.Pass(); 317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Sets the new callback. The previous one won't be called. 347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void SetCallback(const FetchCallback& callback); 357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch private: 377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // net::URLFetcherDelegate: 387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE; 397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void OnDownloadTimeout(); 417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Timer that enforces a timeout on the attempt to download the 437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // config file. 447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::OneShotTimer<BrandcodeConfigFetcher> download_timer_; 457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // |fetch_callback_| called when fetching succeeded or failed. 477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch FetchCallback fetch_callback_; 487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Helper to fetch the online config file. 507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch scoped_ptr<net::URLFetcher> config_fetcher_; 517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Fetched settings. 537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch scoped_ptr<BrandcodedDefaultSettings> default_settings_; 547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DISALLOW_COPY_AND_ASSIGN(BrandcodeConfigFetcher); 567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}; 577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif // CHROME_BROWSER_PROFILE_RESETTER_BRANDCODE_CONFIG_FETCHER_H_ 59