- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / login / auth_prewarmer.h
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_CHROMEOS_LOGIN_AUTH_PREWARMER_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_PREWARMER_H_
7
8 #include "base/basictypes.h"
9 #include "base/callback.h"
10 #include "chromeos/network/network_state_handler_observer.h"
11 #include "content/public/browser/notification_observer.h"
12 #include "content/public/browser/notification_registrar.h"
13
14 namespace net {
15 class URLRequestContextGetter;
16 }  // namespace net
17
18 namespace chromeos {
19
20 class NetworkState;
21
22 // Class for prewarming authentication network connection.
23 class AuthPrewarmer : public NetworkStateHandlerObserver,
24                       public content::NotificationObserver {
25  public:
26   AuthPrewarmer();
27   virtual ~AuthPrewarmer();
28
29   void PrewarmAuthentication(const base::Closure& completion_callback);
30
31  private:
32   // chromeos::NetworkStateHandlerObserver overrides.
33   virtual void DefaultNetworkChanged(const NetworkState* network) OVERRIDE;
34
35   // content::NotificationObserver overrides.
36   virtual void Observe(int type,
37                        const content::NotificationSource& source,
38                        const content::NotificationDetails& details) OVERRIDE;
39
40   bool IsNetworkConnected() const;
41   net::URLRequestContextGetter* GetRequestContext() const;
42   void DoPrewarm();
43
44   content::NotificationRegistrar registrar_;
45   base::Closure completion_callback_;
46   bool doing_prewarm_;
47
48   DISALLOW_COPY_AND_ASSIGN(AuthPrewarmer);
49 };
50
51 }  // namespace chromeos
52
53 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_PREWARMER_H_