OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "chrome/browser/android/net/network_quality_provider.h" |
| 6 |
| 7 #include <stdint.h> |
| 8 |
| 9 #include "jni/NetworkQualityProviderHelper_jni.h" |
| 10 #include "net/base/network_quality.h" |
| 11 |
| 12 NetworkQualityProvider::NetworkQualityProvider() { |
| 13 JNIEnv* env = base::android::AttachCurrentThread(); |
| 14 j_network_quality_provider_.Reset(Java_NetworkQualityProviderHelper_create( |
| 15 env, base::android::GetApplicationContext())); |
| 16 no_value_ = Java_NetworkQualityProviderHelper_getNoValue(env); |
| 17 } |
| 18 |
| 19 NetworkQualityProvider::~NetworkQualityProvider() { |
| 20 DCHECK(thread_checker_.CalledOnValidThread()); |
| 21 } |
| 22 |
| 23 bool NetworkQualityProvider::IsEstimateAvailable() { |
| 24 DCHECK(thread_checker_.CalledOnValidThread()); |
| 25 JNIEnv* env = base::android::AttachCurrentThread(); |
| 26 return Java_NetworkQualityProviderHelper_isEstimateAvailable(env); |
| 27 } |
| 28 |
| 29 bool NetworkQualityProvider::GetRTT(base::TimeDelta* rtt) { |
| 30 DCHECK(thread_checker_.CalledOnValidThread()); |
| 31 JNIEnv* env = base::android::AttachCurrentThread(); |
| 32 int32_t milliseconds = |
| 33 Java_NetworkQualityProviderHelper_getRTTMilliseconds(env); |
| 34 DCHECK(milliseconds >= no_value_); |
| 35 if (milliseconds == no_value_) { |
| 36 *rtt = net::NetworkQuality::InvalidRTT(); |
| 37 return false; |
| 38 } |
| 39 *rtt = base::TimeDelta::FromMilliseconds(milliseconds); |
| 40 return true; |
| 41 } |
| 42 |
| 43 bool NetworkQualityProvider::GetDownstreamThroughputKbps( |
| 44 int32_t* downstream_throughput_kbps) { |
| 45 DCHECK(thread_checker_.CalledOnValidThread()); |
| 46 JNIEnv* env = base::android::AttachCurrentThread(); |
| 47 int32_t kbps = |
| 48 Java_NetworkQualityProviderHelper_getDownstreamThroughputKbps(env); |
| 49 DCHECK(kbps >= no_value_); |
| 50 if (kbps == no_value_) { |
| 51 *downstream_throughput_kbps = net::NetworkQuality::kInvalidThroughput; |
| 52 return false; |
| 53 } |
| 54 *downstream_throughput_kbps = kbps; |
| 55 return true; |
| 56 } |
| 57 |
| 58 bool NetworkQualityProvider::GetUpstreamThroughputKbps( |
| 59 int32_t* upstream_throughput_kbps) { |
| 60 DCHECK(thread_checker_.CalledOnValidThread()); |
| 61 JNIEnv* env = base::android::AttachCurrentThread(); |
| 62 int32_t kbps = |
| 63 Java_NetworkQualityProviderHelper_getUpstreamThroughputKbps(env); |
| 64 DCHECK(kbps >= no_value_); |
| 65 if (kbps == no_value_) { |
| 66 *upstream_throughput_kbps = net::NetworkQuality::kInvalidThroughput; |
| 67 return false; |
| 68 } |
| 69 *upstream_throughput_kbps = kbps; |
| 70 return true; |
| 71 } |
| 72 |
| 73 bool NetworkQualityProvider::GetTimeSinceLastUpdate( |
| 74 base::TimeDelta* time_since_last_update) { |
| 75 DCHECK(thread_checker_.CalledOnValidThread()); |
| 76 JNIEnv* env = base::android::AttachCurrentThread(); |
| 77 int32_t seconds = |
| 78 Java_NetworkQualityProviderHelper_getTimeSinceLastUpdateSeconds(env); |
| 79 DCHECK(seconds >= no_value_); |
| 80 if (seconds == no_value_) { |
| 81 *time_since_last_update = base::TimeDelta::Max(); |
| 82 return false; |
| 83 } |
| 84 *time_since_last_update = base::TimeDelta::FromMilliseconds(seconds); |
| 85 return true; |
| 86 } |
| 87 |
| 88 bool RegisterNetworkQualityProvider(JNIEnv* env) { |
| 89 return RegisterNativesImpl(env); |
| 90 } |
OLD | NEW |