1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// found in the LICENSE file. 47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_AUTH_PREWARMER_H_ 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_AUTH_PREWARMER_H_ 77d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/basictypes.h" 97d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/callback.h" 10ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "chromeos/network/network_state_handler_observer.h" 117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "content/public/browser/notification_observer.h" 127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "content/public/browser/notification_registrar.h" 137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)namespace net { 157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class URLRequestContextGetter; 167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} // namespace net 177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)namespace chromeos { 197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 20ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass NetworkState; 21ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Class for prewarming authentication network connection. 23ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass AuthPrewarmer : public NetworkStateHandlerObserver, 247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) public content::NotificationObserver { 257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) public: 267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) AuthPrewarmer(); 277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual ~AuthPrewarmer(); 287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void PrewarmAuthentication(const base::Closure& completion_callback); 307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) private: 32ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // chromeos::NetworkStateHandlerObserver overrides. 33ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual void DefaultNetworkChanged(const NetworkState* network) OVERRIDE; 347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // content::NotificationObserver overrides. 367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void Observe(int type, 377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const content::NotificationSource& source, 387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const content::NotificationDetails& details) OVERRIDE; 397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) bool IsNetworkConnected() const; 417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) net::URLRequestContextGetter* GetRequestContext() const; 427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void DoPrewarm(); 437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) content::NotificationRegistrar registrar_; 457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) base::Closure completion_callback_; 467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) bool doing_prewarm_; 477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AuthPrewarmer); 497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}; 507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} // namespace chromeos 527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_AUTH_PREWARMER_H_ 54