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

Side by Side Diff: chrome/browser/android/net/network_quality_provider.cc

Issue 1235373006: Upstream changes for NetworkQualityProvider (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: One more minor fix Created 5 years, 4 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
« no previous file with comments | « chrome/browser/android/net/network_quality_provider.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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/NetworkQualityProvider_jni.h"
10 #include "net/base/network_quality.h"
11
12 NetworkQualityProvider::NetworkQualityProvider() {
13 JNIEnv* env = base::android::AttachCurrentThread();
14 DCHECK(j_network_quality_provider_.is_null());
15 j_network_quality_provider_.Reset(Java_NetworkQualityProvider_create(
16 env, base::android::GetApplicationContext()));
17 DCHECK(!j_network_quality_provider_.is_null());
18 no_value_ = Java_NetworkQualityProvider_getNoValue(env);
19 net::NetworkChangeNotifier::AddConnectionTypeObserver(this);
20 }
21
22 NetworkQualityProvider::~NetworkQualityProvider() {
23 DCHECK(thread_checker_.CalledOnValidThread());
24 net::NetworkChangeNotifier::RemoveConnectionTypeObserver(this);
25 }
26
27 bool NetworkQualityProvider::IsEstimateAvailable() {
28 DCHECK(thread_checker_.CalledOnValidThread());
29 JNIEnv* env = base::android::AttachCurrentThread();
30 return Java_NetworkQualityProvider_isEstimateAvailable(
31 env, j_network_quality_provider_.obj());
32 }
33
34 void NetworkQualityProvider::RequestUpdate() {
35 DCHECK(thread_checker_.CalledOnValidThread());
36 JNIEnv* env = base::android::AttachCurrentThread();
37 Java_NetworkQualityProvider_requestUpdate(env,
38 j_network_quality_provider_.obj());
39 }
40
41 bool NetworkQualityProvider::GetRTT(base::TimeDelta* rtt) {
42 DCHECK(thread_checker_.CalledOnValidThread());
43 JNIEnv* env = base::android::AttachCurrentThread();
44 int32_t milliseconds = Java_NetworkQualityProvider_getRTTMilliseconds(
45 env, j_network_quality_provider_.obj());
46 DCHECK(milliseconds >= no_value_);
47 if (milliseconds == no_value_) {
48 *rtt = net::NetworkQuality::InvalidRTT();
49 return false;
50 }
51 *rtt = base::TimeDelta::FromMilliseconds(milliseconds);
52 return true;
53 }
54
55 bool NetworkQualityProvider::GetDownstreamThroughputKbps(
56 int32_t* downstream_throughput_kbps) {
57 DCHECK(thread_checker_.CalledOnValidThread());
58 JNIEnv* env = base::android::AttachCurrentThread();
59 int32_t kbps = Java_NetworkQualityProvider_getDownstreamThroughputKbps(
60 env, j_network_quality_provider_.obj());
61 DCHECK(kbps >= no_value_);
62 if (kbps == no_value_) {
63 *downstream_throughput_kbps = net::NetworkQuality::kInvalidThroughput;
64 return false;
65 }
66 *downstream_throughput_kbps = kbps;
67 return true;
68 }
69
70 bool NetworkQualityProvider::GetUpstreamThroughputKbps(
71 int32_t* upstream_throughput_kbps) {
72 DCHECK(thread_checker_.CalledOnValidThread());
73 JNIEnv* env = base::android::AttachCurrentThread();
74 int32_t kbps = Java_NetworkQualityProvider_getUpstreamThroughputKbps(
75 env, j_network_quality_provider_.obj());
76 DCHECK(kbps >= no_value_);
77 if (kbps == no_value_) {
78 *upstream_throughput_kbps = net::NetworkQuality::kInvalidThroughput;
79 return false;
80 }
81 *upstream_throughput_kbps = kbps;
82 return true;
83 }
84
85 bool NetworkQualityProvider::GetTimeSinceLastUpdate(
86 base::TimeDelta* time_since_last_update) {
87 DCHECK(thread_checker_.CalledOnValidThread());
88 JNIEnv* env = base::android::AttachCurrentThread();
89 int32_t seconds = Java_NetworkQualityProvider_getTimeSinceLastUpdateSeconds(
90 env, j_network_quality_provider_.obj());
91 DCHECK(seconds >= no_value_);
92 if (seconds == no_value_) {
93 *time_since_last_update = base::TimeDelta::Max();
94 return false;
95 }
96 *time_since_last_update = base::TimeDelta::FromMilliseconds(seconds);
97 return true;
98 }
99
100 void NetworkQualityProvider::OnConnectionTypeChanged(
101 net::NetworkChangeNotifier::ConnectionType type) {
102 RequestUpdate();
103 }
104
105 bool RegisterNetworkQualityProvider(JNIEnv* env) {
106 return RegisterNativesImpl(env);
107 }
OLDNEW
« no previous file with comments | « chrome/browser/android/net/network_quality_provider.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698