1 // Copyright (c) 2013 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 #include "chrome/browser/chromeos/net/network_portal_detector.h" 6 7 #include "base/command_line.h" 8 #include "base/logging.h" 9 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/chromeos/net/network_portal_detector_impl.h" 11 #include "chrome/browser/chromeos/net/network_portal_detector_stub.h" 12 #include "chrome/common/chrome_switches.h" 13 #include "chromeos/chromeos_switches.h" 14 15 namespace chromeos { 16 17 namespace { 18 19 NetworkPortalDetector* g_network_portal_detector = NULL; 20 21 bool IsTestMode() { 22 return CommandLine::ForCurrentProcess()->HasSwitch(::switches::kTestType); 23 } 24 25 } // namespace 26 27 NetworkPortalDetector::NetworkPortalDetector() { 28 } 29 30 NetworkPortalDetector::~NetworkPortalDetector() { 31 } 32 33 // static 34 NetworkPortalDetector* NetworkPortalDetector::CreateInstance() { 35 DCHECK(!g_network_portal_detector); 36 CHECK(NetworkPortalDetector::IsEnabledInCommandLine()); 37 if (IsTestMode()) { 38 g_network_portal_detector = new NetworkPortalDetectorStub(); 39 } else { 40 CHECK(g_browser_process); 41 CHECK(g_browser_process->system_request_context()); 42 g_network_portal_detector = new NetworkPortalDetectorImpl( 43 g_browser_process->system_request_context()); 44 } 45 return g_network_portal_detector; 46 } 47 48 // static 49 NetworkPortalDetector* NetworkPortalDetector::GetInstance() { 50 if (!NetworkPortalDetector::IsEnabledInCommandLine()) 51 return NULL; 52 if (!g_network_portal_detector) 53 return CreateInstance(); 54 return g_network_portal_detector; 55 } 56 57 // static 58 bool NetworkPortalDetector::IsEnabledInCommandLine() { 59 return !CommandLine::ForCurrentProcess()->HasSwitch( 60 switches::kDisableChromeCaptivePortalDetector); 61 } 62 63 } // namespace chromeos 64