Home | History | Annotate | Download | only in captive_portal
      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