OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/android/net/external_estimate_provider_android.h" | 5 #include "chrome/browser/android/net/external_estimate_provider_android.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "content/public/browser/browser_thread.h" | 10 #include "content/public/browser/browser_thread.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 DCHECK(!j_external_estimate_provider_.is_null()); | 26 DCHECK(!j_external_estimate_provider_.is_null()); |
27 no_value_ = Java_ExternalEstimateProviderAndroid_getNoValue(env); | 27 no_value_ = Java_ExternalEstimateProviderAndroid_getNoValue(env); |
28 net::NetworkChangeNotifier::AddConnectionTypeObserver(this); | 28 net::NetworkChangeNotifier::AddConnectionTypeObserver(this); |
29 } | 29 } |
30 | 30 |
31 ExternalEstimateProviderAndroid::~ExternalEstimateProviderAndroid() { | 31 ExternalEstimateProviderAndroid::~ExternalEstimateProviderAndroid() { |
32 DCHECK(thread_checker_.CalledOnValidThread()); | 32 DCHECK(thread_checker_.CalledOnValidThread()); |
33 net::NetworkChangeNotifier::RemoveConnectionTypeObserver(this); | 33 net::NetworkChangeNotifier::RemoveConnectionTypeObserver(this); |
34 } | 34 } |
35 | 35 |
| 36 void ExternalEstimateProviderAndroid::RequestUpdate() const { |
| 37 DCHECK(thread_checker_.CalledOnValidThread()); |
| 38 JNIEnv* env = base::android::AttachCurrentThread(); |
| 39 Java_ExternalEstimateProviderAndroid_requestUpdate( |
| 40 env, j_external_estimate_provider_.obj()); |
| 41 } |
| 42 |
36 bool ExternalEstimateProviderAndroid::GetRTT(base::TimeDelta* rtt) const { | 43 bool ExternalEstimateProviderAndroid::GetRTT(base::TimeDelta* rtt) const { |
37 DCHECK(thread_checker_.CalledOnValidThread()); | 44 DCHECK(thread_checker_.CalledOnValidThread()); |
38 JNIEnv* env = base::android::AttachCurrentThread(); | 45 JNIEnv* env = base::android::AttachCurrentThread(); |
39 int32_t milliseconds = | 46 int32_t milliseconds = |
40 Java_ExternalEstimateProviderAndroid_getRTTMilliseconds( | 47 Java_ExternalEstimateProviderAndroid_getRTTMilliseconds( |
41 env, j_external_estimate_provider_.obj()); | 48 env, j_external_estimate_provider_.obj()); |
42 DCHECK(milliseconds >= no_value_); | 49 DCHECK(milliseconds >= no_value_); |
43 if (milliseconds == no_value_) | 50 if (milliseconds == no_value_) |
44 return false; | 51 return false; |
45 *rtt = base::TimeDelta::FromMilliseconds(milliseconds); | 52 *rtt = base::TimeDelta::FromMilliseconds(milliseconds); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 env, j_external_estimate_provider_.obj()); | 89 env, j_external_estimate_provider_.obj()); |
83 DCHECK(seconds >= no_value_); | 90 DCHECK(seconds >= no_value_); |
84 if (seconds == no_value_) { | 91 if (seconds == no_value_) { |
85 *time_since_last_update = base::TimeDelta::Max(); | 92 *time_since_last_update = base::TimeDelta::Max(); |
86 return false; | 93 return false; |
87 } | 94 } |
88 *time_since_last_update = base::TimeDelta::FromMilliseconds(seconds); | 95 *time_since_last_update = base::TimeDelta::FromMilliseconds(seconds); |
89 return true; | 96 return true; |
90 } | 97 } |
91 | 98 |
92 void ExternalEstimateProviderAndroid::SetUpdatedEstimateDelegate( | |
93 net::ExternalEstimateProvider::UpdatedEstimateDelegate* delegate) { | |
94 delegate_ = delegate; | |
95 } | |
96 | |
97 void ExternalEstimateProviderAndroid::Update() const { | |
98 DCHECK(thread_checker_.CalledOnValidThread()); | |
99 JNIEnv* env = base::android::AttachCurrentThread(); | |
100 Java_ExternalEstimateProviderAndroid_requestUpdate( | |
101 env, j_external_estimate_provider_.obj()); | |
102 } | |
103 | |
104 void ExternalEstimateProviderAndroid::OnConnectionTypeChanged( | |
105 net::NetworkChangeNotifier::ConnectionType type) { | |
106 Update(); | |
107 } | |
108 | |
109 void ExternalEstimateProviderAndroid:: | 99 void ExternalEstimateProviderAndroid:: |
110 NotifyExternalEstimateProviderAndroidUpdate(JNIEnv* env, jobject obj) { | 100 NotifyExternalEstimateProviderAndroidUpdate(JNIEnv* env, jobject obj) { |
111 if (!task_runner_) | 101 if (!task_runner_) |
112 return; | 102 return; |
113 task_runner_->PostTask( | 103 task_runner_->PostTask( |
114 FROM_HERE, | 104 FROM_HERE, |
115 base::Bind( | 105 base::Bind( |
116 &ExternalEstimateProviderAndroid::NotifyUpdatedEstimateAvailable, | 106 &ExternalEstimateProviderAndroid::NotifyUpdatedEstimateAvailable, |
117 weak_factory_.GetWeakPtr())); | 107 weak_factory_.GetWeakPtr())); |
118 } | 108 } |
119 | 109 |
120 void ExternalEstimateProviderAndroid::NotifyUpdatedEstimateAvailable() const { | 110 void ExternalEstimateProviderAndroid::NotifyUpdatedEstimateAvailable() const { |
121 DCHECK(thread_checker_.CalledOnValidThread()); | 111 DCHECK(thread_checker_.CalledOnValidThread()); |
122 if (delegate_) | 112 if (delegate_) |
123 delegate_->OnUpdatedEstimateAvailable(); | 113 delegate_->OnUpdatedEstimateAvailable(); |
124 } | 114 } |
125 | 115 |
| 116 void ExternalEstimateProviderAndroid::OnConnectionTypeChanged( |
| 117 net::NetworkChangeNotifier::ConnectionType type) { |
| 118 RequestUpdate(); |
| 119 } |
| 120 |
126 bool RegisterExternalEstimateProviderAndroid(JNIEnv* env) { | 121 bool RegisterExternalEstimateProviderAndroid(JNIEnv* env) { |
127 return RegisterNativesImpl(env); | 122 return RegisterNativesImpl(env); |
128 } | 123 } |
129 | 124 |
| 125 void ExternalEstimateProviderAndroid::SetUpdatedEstimateDelegate( |
| 126 net::ExternalEstimateProvider::UpdatedEstimateDelegate* delegate) { |
| 127 delegate_ = delegate; |
| 128 } |
| 129 |
130 } // namespace android | 130 } // namespace android |
131 } // namespace chrome | 131 } // namespace chrome |
OLD | NEW |