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.
5 #ifndef CHROME_BROWSER_CAPTIVE_PORTAL_CAPTIVE_PORTAL_LOGIN_DETECTOR_H_
6 #define CHROME_BROWSER_CAPTIVE_PORTAL_CAPTIVE_PORTAL_LOGIN_DETECTOR_H_
8 #include "base/basictypes.h"
9 #include "chrome/browser/captive_portal/captive_portal_service.h"
13 namespace captive_portal
{
15 // Triggers a captive portal test on navigations that may indicate a captive
16 // portal has been logged into. Currently only tracks if a page was opened
17 // at a captive portal tab's login page, and triggers checks every navigation
18 // until there's no longer a captive portal, relying on the
19 // CaptivePortalService's throttling to prevent excessive server load.
21 // TODO(mmenke): If a page has been broken by a captive portal, and it's
22 // successfully reloaded, trigger a captive portal check.
23 class CaptivePortalLoginDetector
{
25 explicit CaptivePortalLoginDetector(Profile
* profile
);
27 ~CaptivePortalLoginDetector();
29 void OnStoppedLoading();
30 void OnCaptivePortalResults(Result previous_result
, Result result
);
32 bool is_login_tab() const { return is_login_tab_
; }
38 // True if this is a login tab. Set manually, automatically cleared once
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_
;
46 DISALLOW_COPY_AND_ASSIGN(CaptivePortalLoginDetector
);
49 } // namespace captive_portal
51 #endif // CHROME_BROWSER_CAPTIVE_PORTAL_CAPTIVE_PORTAL_LOGIN_DETECTOR_H_