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