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

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

Issue 11628008: Provide NetworkChangeNotifierAndroid with the actual initial connection type. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Make NCNA fetch the connection type through NCNDA Created 8 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 | Annotate | Revision Log
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 9
10 namespace net { 10 namespace net {
(...skipping 14 matching lines...) Expand all
25 default: 25 default:
26 NOTREACHED() << "Unknown connection type received: " << connection_type; 26 NOTREACHED() << "Unknown connection type received: " << connection_type;
27 return false; 27 return false;
28 } 28 }
29 } 29 }
30 30
31 } // namespace 31 } // namespace
32 32
33 NetworkChangeNotifierDelegateAndroid::NetworkChangeNotifierDelegateAndroid() 33 NetworkChangeNotifierDelegateAndroid::NetworkChangeNotifierDelegateAndroid()
34 : observers_(new ObserverListThreadSafe<Observer>()) { 34 : observers_(new ObserverListThreadSafe<Observer>()) {
35 SetConnectionType(NetworkChangeNotifier::CONNECTION_UNKNOWN);
35 java_network_change_notifier_.Reset( 36 java_network_change_notifier_.Reset(
36 Java_NetworkChangeNotifier_createInstance( 37 Java_NetworkChangeNotifier_createInstance(
37 base::android::AttachCurrentThread(), 38 base::android::AttachCurrentThread(),
38 base::android::GetApplicationContext(), 39 base::android::GetApplicationContext(),
39 reinterpret_cast<jint>(this))); 40 reinterpret_cast<jint>(this)));
40 } 41 }
41 42
42 NetworkChangeNotifierDelegateAndroid::~NetworkChangeNotifierDelegateAndroid() { 43 NetworkChangeNotifierDelegateAndroid::~NetworkChangeNotifierDelegateAndroid() {
43 DCHECK(thread_checker_.CalledOnValidThread()); 44 DCHECK(thread_checker_.CalledOnValidThread());
44 observers_->AssertEmpty(); 45 observers_->AssertEmpty();
45 JNIEnv* env = base::android::AttachCurrentThread(); 46 JNIEnv* env = base::android::AttachCurrentThread();
46 Java_NetworkChangeNotifier_destroyInstance(env); 47 Java_NetworkChangeNotifier_destroyInstance(env);
47 } 48 }
48 49
49 void NetworkChangeNotifierDelegateAndroid::NotifyConnectionTypeChanged( 50 void NetworkChangeNotifierDelegateAndroid::NotifyConnectionTypeChanged(
50 JNIEnv* env, 51 JNIEnv* env,
51 jobject obj, 52 jobject obj,
52 jint new_connection_type) { 53 jint new_connection_type) {
53 DCHECK(thread_checker_.CalledOnValidThread()); 54 DCHECK(thread_checker_.CalledOnValidThread());
54 connection_type_ = CheckConnectionType(new_connection_type) ? 55 SetConnectionType(
55 static_cast<ConnectionType>(new_connection_type) : 56 CheckConnectionType(new_connection_type) ?
56 NetworkChangeNotifier::CONNECTION_UNKNOWN; 57 static_cast<ConnectionType>(new_connection_type) :
58 NetworkChangeNotifier::CONNECTION_UNKNOWN);
57 observers_->Notify(&Observer::OnConnectionTypeChanged, connection_type_); 59 observers_->Notify(&Observer::OnConnectionTypeChanged, connection_type_);
58 } 60 }
59 61
60 jint NetworkChangeNotifierDelegateAndroid::GetConnectionType(JNIEnv*, 62 jint NetworkChangeNotifierDelegateAndroid::GetConnectionType(JNIEnv*,
61 jobject) const { 63 jobject) const {
62 DCHECK(thread_checker_.CalledOnValidThread()); 64 DCHECK(thread_checker_.CalledOnValidThread());
65 return GetCurrentConnectionType();
66 }
67
68 NetworkChangeNotifierDelegateAndroid::ConnectionType
69 NetworkChangeNotifierDelegateAndroid::GetCurrentConnectionType() const {
70 base::AutoLock auto_lock(connection_type_lock_);
63 return connection_type_; 71 return connection_type_;
64 } 72 }
65 73
66 void NetworkChangeNotifierDelegateAndroid::AddObserver( 74 void NetworkChangeNotifierDelegateAndroid::AddObserver(
67 Observer* observer) { 75 Observer* observer) {
68 observers_->AddObserver(observer); 76 observers_->AddObserver(observer);
69 } 77 }
70 78
71 void NetworkChangeNotifierDelegateAndroid::RemoveObserver( 79 void NetworkChangeNotifierDelegateAndroid::RemoveObserver(
72 Observer* observer) { 80 Observer* observer) {
73 observers_->RemoveObserver(observer); 81 observers_->RemoveObserver(observer);
74 } 82 }
75 83
76 void NetworkChangeNotifierDelegateAndroid::ForceConnectivityState( 84 void NetworkChangeNotifierDelegateAndroid::ForceConnectivityState(
77 ConnectivityState state) { 85 ConnectivityState state) {
78 DCHECK(thread_checker_.CalledOnValidThread()); 86 DCHECK(thread_checker_.CalledOnValidThread());
79 JNIEnv* env = base::android::AttachCurrentThread(); 87 JNIEnv* env = base::android::AttachCurrentThread();
80 Java_NetworkChangeNotifier_forceConnectivityState(env, state == ONLINE); 88 Java_NetworkChangeNotifier_forceConnectivityState(env, state == ONLINE);
81 } 89 }
82 90
83 // static 91 // static
84 bool NetworkChangeNotifierDelegateAndroid::Register(JNIEnv* env) { 92 bool NetworkChangeNotifierDelegateAndroid::Register(JNIEnv* env) {
85 return RegisterNativesImpl(env); 93 return RegisterNativesImpl(env);
86 } 94 }
87 95
96 void NetworkChangeNotifierDelegateAndroid::SetConnectionType(
97 ConnectionType new_connection_type) {
98 base::AutoLock auto_lock(connection_type_lock_);
99 connection_type_ = new_connection_type;
100 }
101
88 } // namespace net 102 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698