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/data_usage/external_data_use_observer_bridge.h" | 5 #include "chrome/browser/android/data_usage/external_data_use_observer_bridge.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/android/context_utils.h" | 10 #include "base/android/context_utils.h" |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 // Detach from IO thread since rest of ExternalDataUseObserverBridge lives on | 45 // Detach from IO thread since rest of ExternalDataUseObserverBridge lives on |
46 // the UI thread. | 46 // the UI thread. |
47 thread_checker_.DetachFromThread(); | 47 thread_checker_.DetachFromThread(); |
48 } | 48 } |
49 | 49 |
50 ExternalDataUseObserverBridge::~ExternalDataUseObserverBridge() { | 50 ExternalDataUseObserverBridge::~ExternalDataUseObserverBridge() { |
51 DCHECK(thread_checker_.CalledOnValidThread()); | 51 DCHECK(thread_checker_.CalledOnValidThread()); |
52 if (j_external_data_use_observer_.is_null()) | 52 if (j_external_data_use_observer_.is_null()) |
53 return; | 53 return; |
54 JNIEnv* env = base::android::AttachCurrentThread(); | 54 JNIEnv* env = base::android::AttachCurrentThread(); |
55 Java_ExternalDataUseObserver_onDestroy(env, | 55 Java_ExternalDataUseObserver_onDestroy(env, j_external_data_use_observer_); |
56 j_external_data_use_observer_.obj()); | |
57 } | 56 } |
58 | 57 |
59 void ExternalDataUseObserverBridge::Init( | 58 void ExternalDataUseObserverBridge::Init( |
60 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, | 59 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, |
61 base::WeakPtr<ExternalDataUseObserver> external_data_use_observer, | 60 base::WeakPtr<ExternalDataUseObserver> external_data_use_observer, |
62 DataUseTabModel* data_use_tab_model) { | 61 DataUseTabModel* data_use_tab_model) { |
63 DCHECK(thread_checker_.CalledOnValidThread()); | 62 DCHECK(thread_checker_.CalledOnValidThread()); |
64 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 63 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
65 DCHECK(io_task_runner); | 64 DCHECK(io_task_runner); |
66 DCHECK(j_external_data_use_observer_.is_null()); | 65 DCHECK(j_external_data_use_observer_.is_null()); |
67 // |data_use_tab_model| is guaranteed to be non-null because this method is | 66 // |data_use_tab_model| is guaranteed to be non-null because this method is |
68 // called in the constructor of ExternalDataUseObserver. | 67 // called in the constructor of ExternalDataUseObserver. |
69 DCHECK(data_use_tab_model); | 68 DCHECK(data_use_tab_model); |
70 | 69 |
71 external_data_use_observer_ = external_data_use_observer; | 70 external_data_use_observer_ = external_data_use_observer; |
72 data_use_tab_model_ = data_use_tab_model->GetWeakPtr(); | 71 data_use_tab_model_ = data_use_tab_model->GetWeakPtr(); |
73 io_task_runner_ = io_task_runner; | 72 io_task_runner_ = io_task_runner; |
74 | 73 |
75 JNIEnv* env = base::android::AttachCurrentThread(); | 74 JNIEnv* env = base::android::AttachCurrentThread(); |
76 j_external_data_use_observer_.Reset(Java_ExternalDataUseObserver_create( | 75 j_external_data_use_observer_.Reset(Java_ExternalDataUseObserver_create( |
77 env, base::android::GetApplicationContext(), | 76 env, base::android::GetApplicationContext(), |
78 reinterpret_cast<intptr_t>(this))); | 77 reinterpret_cast<intptr_t>(this))); |
79 DCHECK(!j_external_data_use_observer_.is_null()); | 78 DCHECK(!j_external_data_use_observer_.is_null()); |
80 | 79 |
81 Java_ExternalDataUseObserver_initControlAppManager( | 80 Java_ExternalDataUseObserver_initControlAppManager( |
82 env, j_external_data_use_observer_.obj(), | 81 env, j_external_data_use_observer_, |
83 ConvertUTF8ToJavaString(env, GetControlAppPackageName()).obj()); | 82 ConvertUTF8ToJavaString(env, GetControlAppPackageName())); |
84 } | 83 } |
85 | 84 |
86 void ExternalDataUseObserverBridge::FetchMatchingRules() const { | 85 void ExternalDataUseObserverBridge::FetchMatchingRules() const { |
87 DCHECK(thread_checker_.CalledOnValidThread()); | 86 DCHECK(thread_checker_.CalledOnValidThread()); |
88 | 87 |
89 JNIEnv* env = base::android::AttachCurrentThread(); | 88 JNIEnv* env = base::android::AttachCurrentThread(); |
90 Java_ExternalDataUseObserver_fetchMatchingRules( | 89 Java_ExternalDataUseObserver_fetchMatchingRules( |
91 env, j_external_data_use_observer_.obj()); | 90 env, j_external_data_use_observer_); |
92 } | 91 } |
93 | 92 |
94 void ExternalDataUseObserverBridge::FetchMatchingRulesDone( | 93 void ExternalDataUseObserverBridge::FetchMatchingRulesDone( |
95 JNIEnv* env, | 94 JNIEnv* env, |
96 const base::android::JavaParamRef<jobject>& obj, | 95 const base::android::JavaParamRef<jobject>& obj, |
97 const base::android::JavaParamRef<jobjectArray>& app_package_name, | 96 const base::android::JavaParamRef<jobjectArray>& app_package_name, |
98 const base::android::JavaParamRef<jobjectArray>& domain_path_regex, | 97 const base::android::JavaParamRef<jobjectArray>& domain_path_regex, |
99 const base::android::JavaParamRef<jobjectArray>& label) { | 98 const base::android::JavaParamRef<jobjectArray>& label) { |
100 DCHECK(thread_checker_.CalledOnValidThread()); | 99 DCHECK(thread_checker_.CalledOnValidThread()); |
101 DCHECK(!construct_time_.is_null()); | 100 DCHECK(!construct_time_.is_null()); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 JNIEnv* env = base::android::AttachCurrentThread(); | 143 JNIEnv* env = base::android::AttachCurrentThread(); |
145 DCHECK(!j_external_data_use_observer_.is_null()); | 144 DCHECK(!j_external_data_use_observer_.is_null()); |
146 | 145 |
147 // End time should be greater than start time. | 146 // End time should be greater than start time. |
148 int64_t start_time_milliseconds = start_time.ToJavaTime(); | 147 int64_t start_time_milliseconds = start_time.ToJavaTime(); |
149 int64_t end_time_milliseconds = end_time.ToJavaTime(); | 148 int64_t end_time_milliseconds = end_time.ToJavaTime(); |
150 if (start_time_milliseconds >= end_time_milliseconds) | 149 if (start_time_milliseconds >= end_time_milliseconds) |
151 start_time_milliseconds = end_time_milliseconds - 1; | 150 start_time_milliseconds = end_time_milliseconds - 1; |
152 | 151 |
153 Java_ExternalDataUseObserver_reportDataUse( | 152 Java_ExternalDataUseObserver_reportDataUse( |
154 env, j_external_data_use_observer_.obj(), | 153 env, j_external_data_use_observer_, ConvertUTF8ToJavaString(env, label), |
155 ConvertUTF8ToJavaString(env, label).obj(), | 154 ConvertUTF8ToJavaString(env, tag), connection_type, |
156 ConvertUTF8ToJavaString(env, tag).obj(), connection_type, | 155 ConvertUTF8ToJavaString(env, mcc_mnc), start_time_milliseconds, |
157 ConvertUTF8ToJavaString(env, mcc_mnc).obj(), start_time_milliseconds, | |
158 end_time_milliseconds, bytes_downloaded, bytes_uploaded); | 156 end_time_milliseconds, bytes_downloaded, bytes_uploaded); |
159 } | 157 } |
160 | 158 |
161 void ExternalDataUseObserverBridge::OnReportDataUseDone( | 159 void ExternalDataUseObserverBridge::OnReportDataUseDone( |
162 JNIEnv* env, | 160 JNIEnv* env, |
163 const base::android::JavaParamRef<jobject>& obj, | 161 const base::android::JavaParamRef<jobject>& obj, |
164 bool success) { | 162 bool success) { |
165 DCHECK(thread_checker_.CalledOnValidThread()); | 163 DCHECK(thread_checker_.CalledOnValidThread()); |
166 | 164 |
167 io_task_runner_->PostTask( | 165 io_task_runner_->PostTask( |
(...skipping 21 matching lines...) Expand all Loading... |
189 external_data_use_observer_, should_register)); | 187 external_data_use_observer_, should_register)); |
190 } | 188 } |
191 | 189 |
192 bool RegisterExternalDataUseObserver(JNIEnv* env) { | 190 bool RegisterExternalDataUseObserver(JNIEnv* env) { |
193 return RegisterNativesImpl(env); | 191 return RegisterNativesImpl(env); |
194 } | 192 } |
195 | 193 |
196 } // namespace android | 194 } // namespace android |
197 | 195 |
198 } // namespace chrome | 196 } // namespace chrome |
OLD | NEW |