OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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/ui/webui/chromeos/login/network_state_informer.h" | 5 #include "chrome/browser/ui/webui/chromeos/login/network_state_informer.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "chrome/browser/chromeos/proxy_config_service_impl.h" | 10 #include "chrome/browser/chromeos/proxy_config_service_impl.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 } // namespace | 22 } // namespace |
23 | 23 |
24 namespace chromeos { | 24 namespace chromeos { |
25 | 25 |
26 NetworkStateInformer::NetworkStateInformer() | 26 NetworkStateInformer::NetworkStateInformer() |
27 : state_(OFFLINE), | 27 : state_(OFFLINE), |
28 delegate_(NULL) { | 28 delegate_(NULL) { |
29 } | 29 } |
30 | 30 |
31 NetworkStateInformer::~NetworkStateInformer() { | 31 NetworkStateInformer::~NetworkStateInformer() { |
32 NetworkStateHandler::Get()->RemoveObserver(this); | 32 if (NetworkHandler::IsInitialized()) |
| 33 NetworkHandler::Get()->network_state_handler()->RemoveObserver(this); |
33 if (NetworkPortalDetector::IsEnabledInCommandLine() && | 34 if (NetworkPortalDetector::IsEnabledInCommandLine() && |
34 NetworkPortalDetector::GetInstance()) { | 35 NetworkPortalDetector::GetInstance()) { |
35 NetworkPortalDetector::GetInstance()->RemoveObserver(this); | 36 NetworkPortalDetector::GetInstance()->RemoveObserver(this); |
36 } | 37 } |
37 } | 38 } |
38 | 39 |
39 void NetworkStateInformer::Init() { | 40 void NetworkStateInformer::Init() { |
40 UpdateState(); | 41 UpdateState(); |
41 NetworkStateHandler::Get()->AddObserver(this); | 42 NetworkHandler::Get()->network_state_handler()->AddObserver(this); |
42 | 43 |
43 if (NetworkPortalDetector::IsEnabledInCommandLine() && | 44 if (NetworkPortalDetector::IsEnabledInCommandLine() && |
44 NetworkPortalDetector::GetInstance()) { | 45 NetworkPortalDetector::GetInstance()) { |
45 NetworkPortalDetector::GetInstance()->AddAndFireObserver(this); | 46 NetworkPortalDetector::GetInstance()->AddAndFireObserver(this); |
46 } | 47 } |
47 | 48 |
48 registrar_.Add(this, | 49 registrar_.Add(this, |
49 chrome::NOTIFICATION_LOGIN_PROXY_CHANGED, | 50 chrome::NOTIFICATION_LOGIN_PROXY_CHANGED, |
50 content::NotificationService::AllSources()); | 51 content::NotificationService::AllSources()); |
51 registrar_.Add(this, | 52 registrar_.Add(this, |
(...skipping 10 matching lines...) Expand all Loading... |
62 observers_.AddObserver(observer); | 63 observers_.AddObserver(observer); |
63 } | 64 } |
64 | 65 |
65 void NetworkStateInformer::RemoveObserver( | 66 void NetworkStateInformer::RemoveObserver( |
66 NetworkStateInformerObserver* observer) { | 67 NetworkStateInformerObserver* observer) { |
67 observers_.RemoveObserver(observer); | 68 observers_.RemoveObserver(observer); |
68 } | 69 } |
69 | 70 |
70 void NetworkStateInformer::NetworkManagerChanged() { | 71 void NetworkStateInformer::NetworkManagerChanged() { |
71 const NetworkState* default_network = | 72 const NetworkState* default_network = |
72 NetworkStateHandler::Get()->DefaultNetwork(); | 73 NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); |
73 State new_state = OFFLINE; | 74 State new_state = OFFLINE; |
74 std::string new_network_service_path; | 75 std::string new_network_service_path; |
75 if (default_network) { | 76 if (default_network) { |
76 new_state = GetNetworkState(default_network); | 77 new_state = GetNetworkState(default_network); |
77 new_network_service_path = default_network->path(); | 78 new_network_service_path = default_network->path(); |
78 } | 79 } |
79 if ((state_ != ONLINE && (new_state == ONLINE || new_state == CONNECTING)) || | 80 if ((state_ != ONLINE && (new_state == ONLINE || new_state == CONNECTING)) || |
80 (state_ == ONLINE && (new_state == ONLINE || new_state == CONNECTING) && | 81 (state_ == ONLINE && (new_state == ONLINE || new_state == CONNECTING) && |
81 new_network_service_path != last_online_service_path_) || | 82 new_network_service_path != last_online_service_path_) || |
82 (new_state == CAPTIVE_PORTAL && | 83 (new_state == CAPTIVE_PORTAL && |
(...skipping 18 matching lines...) Expand all Loading... |
101 } | 102 } |
102 } | 103 } |
103 | 104 |
104 void NetworkStateInformer::DefaultNetworkChanged(const NetworkState* network) { | 105 void NetworkStateInformer::DefaultNetworkChanged(const NetworkState* network) { |
105 NetworkManagerChanged(); | 106 NetworkManagerChanged(); |
106 } | 107 } |
107 | 108 |
108 void NetworkStateInformer::OnPortalDetectionCompleted( | 109 void NetworkStateInformer::OnPortalDetectionCompleted( |
109 const NetworkState* network, | 110 const NetworkState* network, |
110 const NetworkPortalDetector::CaptivePortalState& state) { | 111 const NetworkPortalDetector::CaptivePortalState& state) { |
111 if (NetworkStateHandler::IsInitialized() && | 112 if (NetworkHandler::IsInitialized() && |
112 NetworkStateHandler::Get()->DefaultNetwork() == network) | 113 NetworkHandler::Get()->network_state_handler()->DefaultNetwork() == |
| 114 network) |
113 NetworkManagerChanged(); | 115 NetworkManagerChanged(); |
114 } | 116 } |
115 | 117 |
116 void NetworkStateInformer::Observe( | 118 void NetworkStateInformer::Observe( |
117 int type, | 119 int type, |
118 const content::NotificationSource& source, | 120 const content::NotificationSource& source, |
119 const content::NotificationDetails& details) { | 121 const content::NotificationDetails& details) { |
120 if (type == chrome::NOTIFICATION_SESSION_STARTED) | 122 if (type == chrome::NOTIFICATION_SESSION_STARTED) |
121 registrar_.RemoveAll(); | 123 registrar_.RemoveAll(); |
122 else if (type == chrome::NOTIFICATION_LOGIN_PROXY_CHANGED) | 124 else if (type == chrome::NOTIFICATION_LOGIN_PROXY_CHANGED) |
123 SendStateToObservers(ErrorScreenActor::ERROR_REASON_PROXY_CONFIG_CHANGED); | 125 SendStateToObservers(ErrorScreenActor::ERROR_REASON_PROXY_CONFIG_CHANGED); |
124 else | 126 else |
125 NOTREACHED() << "Unknown notification: " << type; | 127 NOTREACHED() << "Unknown notification: " << type; |
126 } | 128 } |
127 | 129 |
128 void NetworkStateInformer::OnPortalDetected() { | 130 void NetworkStateInformer::OnPortalDetected() { |
129 SendStateToObservers(ErrorScreenActor::ERROR_REASON_PORTAL_DETECTED); | 131 SendStateToObservers(ErrorScreenActor::ERROR_REASON_PORTAL_DETECTED); |
130 } | 132 } |
131 | 133 |
132 bool NetworkStateInformer::UpdateState() { | 134 bool NetworkStateInformer::UpdateState() { |
133 State new_state = OFFLINE; | 135 State new_state = OFFLINE; |
134 | 136 |
135 const NetworkState* default_network = | 137 const NetworkState* default_network = |
136 NetworkStateHandler::Get()->DefaultNetwork(); | 138 NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); |
137 if (default_network) { | 139 if (default_network) { |
138 new_state = GetNetworkState(default_network); | 140 new_state = GetNetworkState(default_network); |
139 last_network_service_path_ = default_network->path(); | 141 last_network_service_path_ = default_network->path(); |
140 last_network_type_ = default_network->type(); | 142 last_network_type_ = default_network->type(); |
141 } | 143 } |
142 | 144 |
143 bool updated = (new_state != state_) || | 145 bool updated = (new_state != state_) || |
144 (new_state != OFFLINE && | 146 (new_state != OFFLINE && |
145 last_network_service_path_ != last_connected_service_path_); | 147 last_network_service_path_ != last_connected_service_path_); |
146 state_ = new_state; | 148 state_ = new_state; |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 if (!ProxyConfigServiceImpl::ParseProxyConfig(network->proxy_config(), | 223 if (!ProxyConfigServiceImpl::ParseProxyConfig(network->proxy_config(), |
222 &proxy_config)) | 224 &proxy_config)) |
223 return false; | 225 return false; |
224 bool configured = !proxy_config.proxy_rules().empty(); | 226 bool configured = !proxy_config.proxy_rules().empty(); |
225 proxy_state_map_[network->guid()] = | 227 proxy_state_map_[network->guid()] = |
226 ProxyState(network->proxy_config(), configured); | 228 ProxyState(network->proxy_config(), configured); |
227 return configured; | 229 return configured; |
228 } | 230 } |
229 | 231 |
230 } // namespace chromeos | 232 } // namespace chromeos |
OLD | NEW |