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

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

Issue 2866253002: Refactor NetworkChangeNotifierAndroid (Closed)
Patch Set: Add test to make sure NCN doesn't call native functions during startup Created 3 years, 7 months 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
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/android/jni_array.h" 7 #include "base/android/jni_array.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "jni/NetworkChangeNotifier_jni.h" 9 #include "jni/NetworkChangeNotifier_jni.h"
10 #include "net/android/network_change_notifier_android.h" 10 #include "net/android/network_change_notifier_android.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 std::vector<int64_t> int64_list; 56 std::vector<int64_t> int64_list;
57 base::android::JavaLongArrayToInt64Vector(env, long_array, &int64_list); 57 base::android::JavaLongArrayToInt64Vector(env, long_array, &int64_list);
58 network_map->clear(); 58 network_map->clear();
59 for (auto i = int64_list.begin(); i != int64_list.end(); ++i) { 59 for (auto i = int64_list.begin(); i != int64_list.end(); ++i) {
60 NetworkChangeNotifier::NetworkHandle network_handle = *i; 60 NetworkChangeNotifier::NetworkHandle network_handle = *i;
61 CHECK(++i != int64_list.end()); 61 CHECK(++i != int64_list.end());
62 (*network_map)[network_handle] = static_cast<ConnectionType>(*i); 62 (*network_map)[network_handle] = static_cast<ConnectionType>(*i);
63 } 63 }
64 } 64 }
65 65
66 jdouble GetMaxBandwidthForConnectionSubtype(JNIEnv* env,
67 const JavaParamRef<jclass>& caller,
68 jint subtype) {
69 return NetworkChangeNotifierAndroid::GetMaxBandwidthForConnectionSubtype(
70 ConvertConnectionSubtype(subtype));
71 }
72
73 NetworkChangeNotifierDelegateAndroid::NetworkChangeNotifierDelegateAndroid() 66 NetworkChangeNotifierDelegateAndroid::NetworkChangeNotifierDelegateAndroid()
74 : observers_(new base::ObserverListThreadSafe<Observer>()) { 67 : observers_(new base::ObserverListThreadSafe<Observer>()) {
75 JNIEnv* env = base::android::AttachCurrentThread(); 68 JNIEnv* env = base::android::AttachCurrentThread();
76 java_network_change_notifier_.Reset(Java_NetworkChangeNotifier_init(env)); 69 java_network_change_notifier_.Reset(Java_NetworkChangeNotifier_init(env));
77 Java_NetworkChangeNotifier_addNativeObserver( 70 Java_NetworkChangeNotifier_addNativeObserver(
78 env, java_network_change_notifier_, reinterpret_cast<intptr_t>(this)); 71 env, java_network_change_notifier_, reinterpret_cast<intptr_t>(this));
79 SetCurrentConnectionType( 72 SetCurrentConnectionType(
80 ConvertConnectionType(Java_NetworkChangeNotifier_getCurrentConnectionType( 73 ConvertConnectionType(Java_NetworkChangeNotifier_getCurrentConnectionType(
81 env, java_network_change_notifier_))); 74 env, java_network_change_notifier_)));
82 SetCurrentMaxBandwidth( 75 SetCurrentMaxBandwidth(
83 Java_NetworkChangeNotifier_getCurrentMaxBandwidthInMbps( 76 NetworkChangeNotifierAndroid::GetMaxBandwidthForConnectionSubtype(
84 env, java_network_change_notifier_)); 77 GetCurrentConnectionSubtype()));
85 SetCurrentDefaultNetwork(Java_NetworkChangeNotifier_getCurrentDefaultNetId( 78 SetCurrentDefaultNetwork(Java_NetworkChangeNotifier_getCurrentDefaultNetId(
86 env, java_network_change_notifier_)); 79 env, java_network_change_notifier_));
87 NetworkMap network_map; 80 NetworkMap network_map;
88 ScopedJavaLocalRef<jlongArray> networks_and_types = 81 ScopedJavaLocalRef<jlongArray> networks_and_types =
89 Java_NetworkChangeNotifier_getCurrentNetworksAndTypes( 82 Java_NetworkChangeNotifier_getCurrentNetworksAndTypes(
90 env, java_network_change_notifier_); 83 env, java_network_change_notifier_);
91 JavaLongArrayToNetworkMap(env, networks_and_types.obj(), &network_map); 84 JavaLongArrayToNetworkMap(env, networks_and_types.obj(), &network_map);
92 SetCurrentNetworksAndTypes(network_map); 85 SetCurrentNetworksAndTypes(network_map);
93 } 86 }
94 87
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 175
183 jint NetworkChangeNotifierDelegateAndroid::GetConnectionType(JNIEnv*, 176 jint NetworkChangeNotifierDelegateAndroid::GetConnectionType(JNIEnv*,
184 jobject) const { 177 jobject) const {
185 DCHECK(thread_checker_.CalledOnValidThread()); 178 DCHECK(thread_checker_.CalledOnValidThread());
186 return GetCurrentConnectionType(); 179 return GetCurrentConnectionType();
187 } 180 }
188 181
189 void NetworkChangeNotifierDelegateAndroid::NotifyMaxBandwidthChanged( 182 void NetworkChangeNotifierDelegateAndroid::NotifyMaxBandwidthChanged(
190 JNIEnv* env, 183 JNIEnv* env,
191 const JavaParamRef<jobject>& obj, 184 const JavaParamRef<jobject>& obj,
192 jdouble new_max_bandwidth) { 185 jint subtype) {
193 DCHECK(thread_checker_.CalledOnValidThread()); 186 DCHECK(thread_checker_.CalledOnValidThread());
194 187 double new_max_bandwidth =
188 NetworkChangeNotifierAndroid::GetMaxBandwidthForConnectionSubtype(
189 ConvertConnectionSubtype(subtype));
195 SetCurrentMaxBandwidth(new_max_bandwidth); 190 SetCurrentMaxBandwidth(new_max_bandwidth);
196 observers_->Notify(FROM_HERE, &Observer::OnMaxBandwidthChanged, 191 observers_->Notify(FROM_HERE, &Observer::OnMaxBandwidthChanged,
197 new_max_bandwidth, GetCurrentConnectionType()); 192 new_max_bandwidth, GetCurrentConnectionType());
198 } 193 }
199 194
200 void NetworkChangeNotifierDelegateAndroid::NotifyOfNetworkConnect( 195 void NetworkChangeNotifierDelegateAndroid::NotifyOfNetworkConnect(
201 JNIEnv* env, 196 JNIEnv* env,
202 const JavaParamRef<jobject>& obj, 197 const JavaParamRef<jobject>& obj,
203 jlong net_id, 198 jlong net_id,
204 jint connection_type) { 199 jint connection_type) {
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 env, base::android::ToJavaLongArray(env, networks)); 349 env, base::android::ToJavaLongArray(env, networks));
355 } 350 }
356 351
357 void NetworkChangeNotifierDelegateAndroid::FakeDefaultNetwork( 352 void NetworkChangeNotifierDelegateAndroid::FakeDefaultNetwork(
358 NetworkChangeNotifier::NetworkHandle network, 353 NetworkChangeNotifier::NetworkHandle network,
359 ConnectionType type) { 354 ConnectionType type) {
360 JNIEnv* env = base::android::AttachCurrentThread(); 355 JNIEnv* env = base::android::AttachCurrentThread();
361 Java_NetworkChangeNotifier_fakeDefaultNetwork(env, network, type); 356 Java_NetworkChangeNotifier_fakeDefaultNetwork(env, network, type);
362 } 357 }
363 358
364 void NetworkChangeNotifierDelegateAndroid::FakeMaxBandwidthChanged( 359 void NetworkChangeNotifierDelegateAndroid::FakeConnectionSubtypeChanged(
365 double max_bandwidth_mbps) { 360 ConnectionSubtype subtype) {
366 JNIEnv* env = base::android::AttachCurrentThread(); 361 JNIEnv* env = base::android::AttachCurrentThread();
367 Java_NetworkChangeNotifier_fakeMaxBandwidthChanged(env, max_bandwidth_mbps); 362 Java_NetworkChangeNotifier_fakeConnectionSubtypeChanged(env, subtype);
368 } 363 }
369 364
370 } // namespace net 365 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698