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 namespace captive_portal { 14 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. 20 // 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 { 24 public: 25 explicit CaptivePortalLoginDetector(Profile* profile); 26 27 ~CaptivePortalLoginDetector(); 28 29 void OnStoppedLoading(); 30 void OnCaptivePortalResults(Result previous_result, Result 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 } // namespace captive_portal 50 51 #endif // CHROME_BROWSER_CAPTIVE_PORTAL_CAPTIVE_PORTAL_LOGIN_DETECTOR_H_ 52