Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / captive_portal / captive_portal_login_detector.h
1 // Copyright (c) 2012 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_CAPTIVE_PORTAL_CAPTIVE_PORTAL_LOGIN_DETECTOR_H_
6 #define CHROME_BROWSER_CAPTIVE_PORTAL_CAPTIVE_PORTAL_LOGIN_DETECTOR_H_
7
8 #include "base/basictypes.h"
9 #include "chrome/browser/captive_portal/captive_portal_service.h"
10
11 class Profile;
12
13 // Triggers a captive portal test on navigations that may indicate a captive
14 // portal has been logged into.  Currently only tracks if a page was opened
15 // at a captive portal tab's login page, and triggers checks every navigation
16 // until there's no longer a captive portal, relying on the
17 // CaptivePortalService's throttling to prevent excessive server load.
18 //
19 // TODO(mmenke):  If a page has been broken by a captive portal, and it's
20 // successfully reloaded, trigger a captive portal check.
21 class CaptivePortalLoginDetector {
22  public:
23   explicit CaptivePortalLoginDetector(Profile* profile);
24
25   ~CaptivePortalLoginDetector();
26
27   void OnStoppedLoading();
28   void OnCaptivePortalResults(
29       captive_portal::CaptivePortalResult previous_result,
30       captive_portal::CaptivePortalResult result);
31
32   bool is_login_tab() const { return is_login_tab_; }
33   void SetIsLoginTab();
34
35  private:
36   Profile* profile_;
37
38   // True if this is a login tab.  Set manually, automatically cleared once
39   // login is detected.
40   bool is_login_tab_;
41
42   // Page is on its first load since being tagged as a login tab.  Used to
43   // prevent a second captive portal check on the first load of the login page.
44   bool first_login_tab_load_;
45
46   DISALLOW_COPY_AND_ASSIGN(CaptivePortalLoginDetector);
47 };
48
49 #endif  // CHROME_BROWSER_CAPTIVE_PORTAL_CAPTIVE_PORTAL_LOGIN_DETECTOR_H_