Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(394)

Side by Side Diff: net/android/network_change_notifier_delegate_android.cc

Issue 761903003: Update from https://crrev.com/306655 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/android/network_change_notifier_delegate_android.h ('k') | net/base/dns_util.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "net/android/network_change_notifier_delegate_android.h" 5 #include "net/android/network_change_notifier_delegate_android.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "jni/NetworkChangeNotifier_jni.h" 8 #include "jni/NetworkChangeNotifier_jni.h"
9 #include "net/android/network_change_notifier_android.h"
9 10
10 namespace net { 11 namespace net {
11 12
12 namespace { 13 namespace {
13 14
14 // Converts a Java side connection type (integer) to 15 // Converts a Java side connection type (integer) to
15 // the native side NetworkChangeNotifier::ConnectionType. 16 // the native side NetworkChangeNotifier::ConnectionType.
16 NetworkChangeNotifier::ConnectionType ConvertConnectionType( 17 NetworkChangeNotifier::ConnectionType ConvertConnectionType(
17 jint connection_type) { 18 jint connection_type) {
18 switch (connection_type) { 19 switch (connection_type) {
19 case NetworkChangeNotifier::CONNECTION_UNKNOWN: 20 case NetworkChangeNotifier::CONNECTION_UNKNOWN:
20 case NetworkChangeNotifier::CONNECTION_ETHERNET: 21 case NetworkChangeNotifier::CONNECTION_ETHERNET:
21 case NetworkChangeNotifier::CONNECTION_WIFI: 22 case NetworkChangeNotifier::CONNECTION_WIFI:
22 case NetworkChangeNotifier::CONNECTION_2G: 23 case NetworkChangeNotifier::CONNECTION_2G:
23 case NetworkChangeNotifier::CONNECTION_3G: 24 case NetworkChangeNotifier::CONNECTION_3G:
24 case NetworkChangeNotifier::CONNECTION_4G: 25 case NetworkChangeNotifier::CONNECTION_4G:
25 case NetworkChangeNotifier::CONNECTION_NONE: 26 case NetworkChangeNotifier::CONNECTION_NONE:
26 case NetworkChangeNotifier::CONNECTION_BLUETOOTH: 27 case NetworkChangeNotifier::CONNECTION_BLUETOOTH:
27 break; 28 break;
28 default: 29 default:
29 NOTREACHED() << "Unknown connection type received: " << connection_type; 30 NOTREACHED() << "Unknown connection type received: " << connection_type;
30 return NetworkChangeNotifier::CONNECTION_UNKNOWN; 31 return NetworkChangeNotifier::CONNECTION_UNKNOWN;
31 } 32 }
32 return static_cast<NetworkChangeNotifier::ConnectionType>(connection_type); 33 return static_cast<NetworkChangeNotifier::ConnectionType>(connection_type);
33 } 34 }
34 35
36 // Converts a Java side connection type (integer) to
37 // the native side NetworkChangeNotifier::ConnectionType.
38 NetworkChangeNotifier::ConnectionSubtype ConvertConnectionSubtype(
39 jint subtype) {
40 DCHECK(subtype >= 0 && subtype <= NetworkChangeNotifier::SUBTYPE_LAST);
41
42 return static_cast<NetworkChangeNotifier::ConnectionSubtype>(subtype);
43 }
44
35 } // namespace 45 } // namespace
36 46
47 jdouble GetMaxBandwidthForConnectionSubtype(JNIEnv* env,
48 jclass caller,
49 jint subtype) {
50 return NetworkChangeNotifierAndroid::GetMaxBandwidthForConnectionSubtype(
51 ConvertConnectionSubtype(subtype));
52 }
53
37 NetworkChangeNotifierDelegateAndroid::NetworkChangeNotifierDelegateAndroid() 54 NetworkChangeNotifierDelegateAndroid::NetworkChangeNotifierDelegateAndroid()
38 : observers_(new ObserverListThreadSafe<Observer>()) { 55 : observers_(new ObserverListThreadSafe<Observer>()) {
39 JNIEnv* env = base::android::AttachCurrentThread(); 56 JNIEnv* env = base::android::AttachCurrentThread();
40 java_network_change_notifier_.Reset( 57 java_network_change_notifier_.Reset(
41 Java_NetworkChangeNotifier_init( 58 Java_NetworkChangeNotifier_init(
42 env, base::android::GetApplicationContext())); 59 env, base::android::GetApplicationContext()));
43 Java_NetworkChangeNotifier_addNativeObserver( 60 Java_NetworkChangeNotifier_addNativeObserver(
44 env, java_network_change_notifier_.obj(), 61 env, java_network_change_notifier_.obj(),
45 reinterpret_cast<intptr_t>(this)); 62 reinterpret_cast<intptr_t>(this));
46 SetCurrentConnectionType( 63 SetCurrentConnectionType(
47 ConvertConnectionType( 64 ConvertConnectionType(
48 Java_NetworkChangeNotifier_getCurrentConnectionType( 65 Java_NetworkChangeNotifier_getCurrentConnectionType(
49 env, java_network_change_notifier_.obj()))); 66 env, java_network_change_notifier_.obj())));
67 SetCurrentMaxBandwidth(Java_NetworkChangeNotifier_getCurrentMaxBandwidth(
68 env, java_network_change_notifier_.obj()));
50 } 69 }
51 70
52 NetworkChangeNotifierDelegateAndroid::~NetworkChangeNotifierDelegateAndroid() { 71 NetworkChangeNotifierDelegateAndroid::~NetworkChangeNotifierDelegateAndroid() {
53 DCHECK(thread_checker_.CalledOnValidThread()); 72 DCHECK(thread_checker_.CalledOnValidThread());
54 observers_->AssertEmpty(); 73 observers_->AssertEmpty();
55 JNIEnv* env = base::android::AttachCurrentThread(); 74 JNIEnv* env = base::android::AttachCurrentThread();
56 Java_NetworkChangeNotifier_removeNativeObserver( 75 Java_NetworkChangeNotifier_removeNativeObserver(
57 env, java_network_change_notifier_.obj(), 76 env, java_network_change_notifier_.obj(),
58 reinterpret_cast<intptr_t>(this)); 77 reinterpret_cast<intptr_t>(this));
59 } 78 }
60 79
61 NetworkChangeNotifier::ConnectionType 80 NetworkChangeNotifier::ConnectionType
62 NetworkChangeNotifierDelegateAndroid::GetCurrentConnectionType() const { 81 NetworkChangeNotifierDelegateAndroid::GetCurrentConnectionType() const {
63 base::AutoLock auto_lock(connection_type_lock_); 82 base::AutoLock auto_lock(connection_lock_);
64 return connection_type_; 83 return connection_type_;
65 } 84 }
66 85
86 double NetworkChangeNotifierDelegateAndroid::GetCurrentMaxBandwidth() const {
87 base::AutoLock auto_lock(connection_lock_);
88 return connection_max_bandwidth_;
89 }
90
67 void NetworkChangeNotifierDelegateAndroid::NotifyConnectionTypeChanged( 91 void NetworkChangeNotifierDelegateAndroid::NotifyConnectionTypeChanged(
68 JNIEnv* env, 92 JNIEnv* env,
69 jobject obj, 93 jobject obj,
70 jint new_connection_type) { 94 jint new_connection_type) {
71 DCHECK(thread_checker_.CalledOnValidThread()); 95 DCHECK(thread_checker_.CalledOnValidThread());
72 const ConnectionType actual_connection_type = ConvertConnectionType( 96 const ConnectionType actual_connection_type = ConvertConnectionType(
73 new_connection_type); 97 new_connection_type);
74 SetCurrentConnectionType(actual_connection_type); 98 SetCurrentConnectionType(actual_connection_type);
99 SetCurrentMaxBandwidth(Java_NetworkChangeNotifier_getCurrentMaxBandwidth(
100 env, java_network_change_notifier_.obj()));
75 observers_->Notify(&Observer::OnConnectionTypeChanged); 101 observers_->Notify(&Observer::OnConnectionTypeChanged);
76 } 102 }
77 103
78 jint NetworkChangeNotifierDelegateAndroid::GetConnectionType(JNIEnv*, 104 jint NetworkChangeNotifierDelegateAndroid::GetConnectionType(JNIEnv*,
79 jobject) const { 105 jobject) const {
80 DCHECK(thread_checker_.CalledOnValidThread()); 106 DCHECK(thread_checker_.CalledOnValidThread());
81 return GetCurrentConnectionType(); 107 return GetCurrentConnectionType();
82 } 108 }
83 109
84 void NetworkChangeNotifierDelegateAndroid::AddObserver( 110 void NetworkChangeNotifierDelegateAndroid::AddObserver(
85 Observer* observer) { 111 Observer* observer) {
86 observers_->AddObserver(observer); 112 observers_->AddObserver(observer);
87 } 113 }
88 114
89 void NetworkChangeNotifierDelegateAndroid::RemoveObserver( 115 void NetworkChangeNotifierDelegateAndroid::RemoveObserver(
90 Observer* observer) { 116 Observer* observer) {
91 observers_->RemoveObserver(observer); 117 observers_->RemoveObserver(observer);
92 } 118 }
93 119
94 // static 120 // static
95 bool NetworkChangeNotifierDelegateAndroid::Register(JNIEnv* env) { 121 bool NetworkChangeNotifierDelegateAndroid::Register(JNIEnv* env) {
96 return RegisterNativesImpl(env); 122 return RegisterNativesImpl(env);
97 } 123 }
98 124
99 void NetworkChangeNotifierDelegateAndroid::SetCurrentConnectionType( 125 void NetworkChangeNotifierDelegateAndroid::SetCurrentConnectionType(
100 ConnectionType new_connection_type) { 126 ConnectionType new_connection_type) {
101 base::AutoLock auto_lock(connection_type_lock_); 127 base::AutoLock auto_lock(connection_lock_);
102 connection_type_ = new_connection_type; 128 connection_type_ = new_connection_type;
103 } 129 }
104 130
131 void NetworkChangeNotifierDelegateAndroid::SetCurrentMaxBandwidth(
132 double max_bandwidth) {
133 base::AutoLock auto_lock(connection_lock_);
134 connection_max_bandwidth_ = max_bandwidth;
135 }
136
105 void NetworkChangeNotifierDelegateAndroid::SetOnline() { 137 void NetworkChangeNotifierDelegateAndroid::SetOnline() {
106 JNIEnv* env = base::android::AttachCurrentThread(); 138 JNIEnv* env = base::android::AttachCurrentThread();
107 Java_NetworkChangeNotifier_forceConnectivityState(env, true); 139 Java_NetworkChangeNotifier_forceConnectivityState(env, true);
108 } 140 }
109 141
110 void NetworkChangeNotifierDelegateAndroid::SetOffline() { 142 void NetworkChangeNotifierDelegateAndroid::SetOffline() {
111 JNIEnv* env = base::android::AttachCurrentThread(); 143 JNIEnv* env = base::android::AttachCurrentThread();
112 Java_NetworkChangeNotifier_forceConnectivityState(env, false); 144 Java_NetworkChangeNotifier_forceConnectivityState(env, false);
113 } 145 }
114 146
115 } // namespace net 147 } // namespace net
OLDNEW
« no previous file with comments | « net/android/network_change_notifier_delegate_android.h ('k') | net/base/dns_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698