OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/net/network_portal_detector.h" | 5 #include "chrome/browser/chromeos/net/network_portal_detector.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "chrome/browser/browser_process.h" | 9 #include "chrome/browser/browser_process.h" |
10 #include "chrome/browser/chromeos/net/network_portal_detector_impl.h" | 10 #include "chrome/browser/chromeos/net/network_portal_detector_impl.h" |
11 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" | 11 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" |
12 #include "chrome/common/chrome_switches.h" | 12 #include "chrome/common/chrome_switches.h" |
13 #include "chromeos/chromeos_switches.h" | 13 #include "chromeos/chromeos_switches.h" |
14 | 14 |
15 namespace chromeos { | 15 namespace chromeos { |
16 | 16 |
17 namespace { | 17 namespace { |
18 | 18 |
19 NetworkPortalDetector* g_network_portal_detector = NULL; | 19 NetworkPortalDetector* g_network_portal_detector = NULL; |
20 bool g_network_portal_detector_set_for_testing = false; | 20 bool g_network_portal_detector_set_for_testing = false; |
21 | 21 |
22 bool IsTestMode() { | 22 bool IsTestMode() { |
23 return CommandLine::ForCurrentProcess()->HasSwitch(::switches::kTestType); | 23 return CommandLine::ForCurrentProcess()->HasSwitch(::switches::kTestType); |
24 } | 24 } |
25 | 25 |
26 bool IsEnabledInCommandLine() { | |
27 return !CommandLine::ForCurrentProcess()->HasSwitch( | |
28 switches::kDisableChromeCaptivePortalDetector); | |
29 } | |
30 | |
31 // Stub implementation of NetworkPortalDetector. | 26 // Stub implementation of NetworkPortalDetector. |
32 class NetworkPortalDetectorStubImpl : public NetworkPortalDetector { | 27 class NetworkPortalDetectorStubImpl : public NetworkPortalDetector { |
33 protected: | 28 protected: |
34 // NetworkPortalDetector implementation: | 29 // NetworkPortalDetector implementation: |
35 virtual void AddObserver(Observer* /* observer */) OVERRIDE {} | 30 virtual void AddObserver(Observer* /* observer */) OVERRIDE {} |
36 virtual void AddAndFireObserver(Observer* observer) OVERRIDE { | 31 virtual void AddAndFireObserver(Observer* observer) OVERRIDE { |
37 if (observer) | 32 if (observer) |
38 observer->OnPortalDetectionCompleted(NULL, CaptivePortalState()); | 33 observer->OnPortalDetectionCompleted(NULL, CaptivePortalState()); |
39 } | 34 } |
40 virtual void RemoveObserver(Observer* /* observer */) OVERRIDE {} | 35 virtual void RemoveObserver(Observer* /* observer */) OVERRIDE {} |
(...skipping 19 matching lines...) Expand all Loading... |
60 g_network_portal_detector = network_portal_detector; | 55 g_network_portal_detector = network_portal_detector; |
61 g_network_portal_detector_set_for_testing = true; | 56 g_network_portal_detector_set_for_testing = true; |
62 } | 57 } |
63 | 58 |
64 // static | 59 // static |
65 void NetworkPortalDetector::Initialize() { | 60 void NetworkPortalDetector::Initialize() { |
66 if (g_network_portal_detector_set_for_testing) | 61 if (g_network_portal_detector_set_for_testing) |
67 return; | 62 return; |
68 CHECK(!g_network_portal_detector) | 63 CHECK(!g_network_portal_detector) |
69 << "NetworkPortalDetector::Initialize() is called twice"; | 64 << "NetworkPortalDetector::Initialize() is called twice"; |
70 if (!IsEnabledInCommandLine() || IsTestMode()) { | 65 if (IsTestMode()) { |
71 g_network_portal_detector = new NetworkPortalDetectorStubImpl(); | 66 g_network_portal_detector = new NetworkPortalDetectorStubImpl(); |
72 } else { | 67 } else { |
73 CHECK(g_browser_process); | 68 CHECK(g_browser_process); |
74 CHECK(g_browser_process->system_request_context()); | 69 CHECK(g_browser_process->system_request_context()); |
75 g_network_portal_detector = new NetworkPortalDetectorImpl( | 70 g_network_portal_detector = new NetworkPortalDetectorImpl( |
76 g_browser_process->system_request_context()); | 71 g_browser_process->system_request_context()); |
77 } | 72 } |
78 } | 73 } |
79 | 74 |
80 // static | 75 // static |
81 void NetworkPortalDetector::Shutdown() { | 76 void NetworkPortalDetector::Shutdown() { |
82 CHECK(g_network_portal_detector || g_network_portal_detector_set_for_testing) | 77 CHECK(g_network_portal_detector || g_network_portal_detector_set_for_testing) |
83 << "NetworkPortalDetectorImpl::Shutdown() is called " | 78 << "NetworkPortalDetectorImpl::Shutdown() is called " |
84 << "without previous call to Initialize()"; | 79 << "without previous call to Initialize()"; |
85 if (g_network_portal_detector) { | 80 if (g_network_portal_detector) { |
86 delete g_network_portal_detector; | 81 delete g_network_portal_detector; |
87 g_network_portal_detector = NULL; | 82 g_network_portal_detector = NULL; |
88 } | 83 } |
89 } | 84 } |
90 | 85 |
91 // static | 86 // static |
92 NetworkPortalDetector* NetworkPortalDetector::Get() { | 87 NetworkPortalDetector* NetworkPortalDetector::Get() { |
93 CHECK(g_network_portal_detector) | 88 CHECK(g_network_portal_detector) |
94 << "NetworkPortalDetector::Get() called before Initialize()"; | 89 << "NetworkPortalDetector::Get() called before Initialize()"; |
95 return g_network_portal_detector; | 90 return g_network_portal_detector; |
96 } | 91 } |
97 | 92 |
98 } // namespace chromeos | 93 } // namespace chromeos |
OLD | NEW |