| 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 |