15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/captive_portal/captive_portal_login_detector.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/captive_portal/captive_portal_service_factory.h" 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "components/captive_portal/captive_portal_types.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuusing captive_portal::CaptivePortalResult; 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CaptivePortalLoginDetector::CaptivePortalLoginDetector( 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : profile_(profile), 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) is_login_tab_(false), 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) first_login_tab_load_(false) { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CaptivePortalLoginDetector::~CaptivePortalLoginDetector() { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void CaptivePortalLoginDetector::OnStoppedLoading() { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Do nothing if this is not a login tab, or if this is a login tab's first 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // load. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!is_login_tab_ || first_login_tab_load_) { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) first_login_tab_load_ = false; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The service is guaranteed to exist if |is_login_tab_| is true, since it's 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // only set to true once a captive portal is detected. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CaptivePortalServiceFactory::GetForProfile(profile_)->DetectCaptivePortal(); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void CaptivePortalLoginDetector::OnCaptivePortalResults( 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu CaptivePortalResult previous_result, 375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu CaptivePortalResult result) { 385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu if (result != captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) is_login_tab_ = false; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void CaptivePortalLoginDetector::SetIsLoginTab() { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) is_login_tab_ = true; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) first_login_tab_load_ = true; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 46