OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2015 The WebRTC project authors. All Rights Reserved. | 2 * Copyright 2015 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 return rtc::NETWORK_BIND_SUCCESS; | 261 return rtc::NETWORK_BIND_SUCCESS; |
262 } | 262 } |
263 if (rv == ENONET) { | 263 if (rv == ENONET) { |
264 return rtc::NETWORK_BIND_NETWORK_CHANGED; | 264 return rtc::NETWORK_BIND_NETWORK_CHANGED; |
265 } | 265 } |
266 return rtc::NETWORK_BIND_FAILURE; | 266 return rtc::NETWORK_BIND_FAILURE; |
267 } | 267 } |
268 | 268 |
269 void AndroidNetworkMonitor::OnNetworkConnected( | 269 void AndroidNetworkMonitor::OnNetworkConnected( |
270 const NetworkInformation& network_info) { | 270 const NetworkInformation& network_info) { |
271 LOG(LS_INFO) << "Network connected: " << network_info.ToString(); | |
272 worker_thread()->Invoke<void>(rtc::Bind( | 271 worker_thread()->Invoke<void>(rtc::Bind( |
273 &AndroidNetworkMonitor::OnNetworkConnected_w, this, network_info)); | 272 &AndroidNetworkMonitor::OnNetworkConnected_w, this, network_info)); |
| 273 // Fire SignalNetworksChanged to update the list of networks. |
| 274 OnNetworksChanged(); |
274 } | 275 } |
275 | 276 |
276 void AndroidNetworkMonitor::OnNetworkConnected_w( | 277 void AndroidNetworkMonitor::OnNetworkConnected_w( |
277 const NetworkInformation& network_info) { | 278 const NetworkInformation& network_info) { |
| 279 LOG(LS_INFO) << "Network connected: " << network_info.ToString(); |
278 adapter_type_by_name_[network_info.interface_name] = | 280 adapter_type_by_name_[network_info.interface_name] = |
279 AdapterTypeFromNetworkType(network_info.type); | 281 AdapterTypeFromNetworkType(network_info.type); |
280 network_info_by_handle_[network_info.handle] = network_info; | 282 network_info_by_handle_[network_info.handle] = network_info; |
281 for (const rtc::IPAddress& address : network_info.ip_addresses) { | 283 for (const rtc::IPAddress& address : network_info.ip_addresses) { |
282 network_handle_by_address_[address] = network_info.handle; | 284 network_handle_by_address_[address] = network_info.handle; |
283 } | 285 } |
284 } | 286 } |
285 | 287 |
286 void AndroidNetworkMonitor::OnNetworkDisconnected(NetworkHandle handle) { | 288 void AndroidNetworkMonitor::OnNetworkDisconnected(NetworkHandle handle) { |
287 LOG(LS_INFO) << "Network disconnected for handle " << handle; | 289 LOG(LS_INFO) << "Network disconnected for handle " << handle; |
288 worker_thread()->Invoke<void>( | 290 worker_thread()->Invoke<void>( |
289 rtc::Bind(&AndroidNetworkMonitor::OnNetworkDisconnected_w, this, handle)); | 291 rtc::Bind(&AndroidNetworkMonitor::OnNetworkDisconnected_w, this, handle)); |
290 } | 292 } |
291 | 293 |
292 void AndroidNetworkMonitor::OnNetworkDisconnected_w(NetworkHandle handle) { | 294 void AndroidNetworkMonitor::OnNetworkDisconnected_w(NetworkHandle handle) { |
293 auto iter = network_info_by_handle_.find(handle); | 295 auto iter = network_info_by_handle_.find(handle); |
294 if (iter != network_info_by_handle_.end()) { | 296 if (iter != network_info_by_handle_.end()) { |
295 for (const rtc::IPAddress& address : iter->second.ip_addresses) { | 297 for (const rtc::IPAddress& address : iter->second.ip_addresses) { |
296 network_handle_by_address_.erase(address); | 298 network_handle_by_address_.erase(address); |
297 } | 299 } |
298 network_info_by_handle_.erase(iter); | 300 network_info_by_handle_.erase(iter); |
299 } | 301 } |
300 } | 302 } |
301 | 303 |
302 void AndroidNetworkMonitor::SetNetworkInfos( | 304 void AndroidNetworkMonitor::SetNetworkInfos( |
303 const std::vector<NetworkInformation>& network_infos) { | 305 const std::vector<NetworkInformation>& network_infos) { |
304 RTC_CHECK(thread_checker_.CalledOnValidThread()); | 306 RTC_CHECK(thread_checker_.CalledOnValidThread()); |
305 network_handle_by_address_.clear(); | 307 network_handle_by_address_.clear(); |
306 network_info_by_handle_.clear(); | 308 network_info_by_handle_.clear(); |
| 309 LOG(LS_INFO) << "Android network monitor found " << network_infos.size() |
| 310 << " networks"; |
307 for (NetworkInformation network : network_infos) { | 311 for (NetworkInformation network : network_infos) { |
308 OnNetworkConnected_w(network); | 312 OnNetworkConnected_w(network); |
309 } | 313 } |
310 } | 314 } |
311 | 315 |
312 rtc::AdapterType AndroidNetworkMonitor::GetAdapterType( | 316 rtc::AdapterType AndroidNetworkMonitor::GetAdapterType( |
313 const std::string& if_name) { | 317 const std::string& if_name) { |
314 auto iter = adapter_type_by_name_.find(if_name); | 318 auto iter = adapter_type_by_name_.find(if_name); |
315 if (iter == adapter_type_by_name_.end()) { | 319 rtc::AdapterType type = (iter == adapter_type_by_name_.end()) |
316 LOG(LS_WARNING) << "Get adapter type for an unknown interface: " << if_name; | 320 ? rtc::ADAPTER_TYPE_UNKNOWN |
317 return rtc::ADAPTER_TYPE_UNKNOWN; | 321 : iter->second; |
| 322 if (type == rtc::ADAPTER_TYPE_UNKNOWN) { |
| 323 LOG(LS_WARNING) << "Get an unknown type for the interface " << if_name; |
318 } | 324 } |
319 return iter->second; | 325 return type; |
320 } | 326 } |
321 | 327 |
322 rtc::NetworkMonitorInterface* | 328 rtc::NetworkMonitorInterface* |
323 AndroidNetworkMonitorFactory::CreateNetworkMonitor() { | 329 AndroidNetworkMonitorFactory::CreateNetworkMonitor() { |
324 return new AndroidNetworkMonitor(); | 330 return new AndroidNetworkMonitor(); |
325 } | 331 } |
326 | 332 |
327 JOW(void, NetworkMonitor_nativeNotifyConnectionTypeChanged)( | 333 JOW(void, NetworkMonitor_nativeNotifyConnectionTypeChanged)( |
328 JNIEnv* jni, jobject j_monitor, jlong j_native_monitor) { | 334 JNIEnv* jni, jobject j_monitor, jlong j_native_monitor) { |
329 rtc::NetworkMonitorInterface* network_monitor = | 335 rtc::NetworkMonitorInterface* network_monitor = |
(...skipping 29 matching lines...) Expand all Loading... |
359 JOW(void, NetworkMonitor_nativeNotifyOfNetworkDisconnect)( | 365 JOW(void, NetworkMonitor_nativeNotifyOfNetworkDisconnect)( |
360 JNIEnv* jni, jobject j_monitor, jlong j_native_monitor, | 366 JNIEnv* jni, jobject j_monitor, jlong j_native_monitor, |
361 jint network_handle) { | 367 jint network_handle) { |
362 AndroidNetworkMonitor* network_monitor = | 368 AndroidNetworkMonitor* network_monitor = |
363 reinterpret_cast<AndroidNetworkMonitor*>(j_native_monitor); | 369 reinterpret_cast<AndroidNetworkMonitor*>(j_native_monitor); |
364 network_monitor->OnNetworkDisconnected( | 370 network_monitor->OnNetworkDisconnected( |
365 static_cast<NetworkHandle>(network_handle)); | 371 static_cast<NetworkHandle>(network_handle)); |
366 } | 372 } |
367 | 373 |
368 } // namespace webrtc_jni | 374 } // namespace webrtc_jni |
OLD | NEW |