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

Side by Side Diff: chrome/browser/android/data_usage/external_data_use_observer.cc

Issue 1422973004: Change the function name to match downstream (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: gyp mod Created 5 years, 1 month 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
OLDNEW
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.h" 5 #include "chrome/browser/android/data_usage/external_data_use_observer.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/android/jni_string.h" 9 #include "base/android/jni_string.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 } 132 }
133 133
134 void ExternalDataUseObserver::FetchMatchingRulesOnUIThread() const { 134 void ExternalDataUseObserver::FetchMatchingRulesOnUIThread() const {
135 DCHECK(ui_task_runner_->BelongsToCurrentThread()); 135 DCHECK(ui_task_runner_->BelongsToCurrentThread());
136 DCHECK(!j_external_data_use_observer_.is_null()); 136 DCHECK(!j_external_data_use_observer_.is_null());
137 JNIEnv* env = base::android::AttachCurrentThread(); 137 JNIEnv* env = base::android::AttachCurrentThread();
138 Java_ExternalDataUseObserver_fetchMatchingRules( 138 Java_ExternalDataUseObserver_fetchMatchingRules(
139 env, j_external_data_use_observer_.obj()); 139 env, j_external_data_use_observer_.obj());
140 } 140 }
141 141
142 void ExternalDataUseObserver::FetchMatchingRulesCallback( 142 void ExternalDataUseObserver::FetchMatchingRulesDone(
143 JNIEnv* env, 143 JNIEnv* env,
144 jobject obj, 144 jobject obj,
145 const base::android::JavaParamRef<jobjectArray>& app_package_name, 145 const base::android::JavaParamRef<jobjectArray>& app_package_name,
146 const base::android::JavaParamRef<jobjectArray>& domain_path_regex, 146 const base::android::JavaParamRef<jobjectArray>& domain_path_regex,
147 const base::android::JavaParamRef<jobjectArray>& label) { 147 const base::android::JavaParamRef<jobjectArray>& label) {
148 DCHECK(ui_task_runner_->BelongsToCurrentThread()); 148 DCHECK(ui_task_runner_->BelongsToCurrentThread());
149 // Convert to native objects. 149 // Convert to native objects.
150 std::vector<std::string> app_package_name_native; 150 std::vector<std::string> app_package_name_native;
151 std::vector<std::string> domain_path_regex_native; 151 std::vector<std::string> domain_path_regex_native;
152 std::vector<std::string> label_native; 152 std::vector<std::string> label_native;
153 153
154 if (app_package_name && domain_path_regex && label) { 154 if (app_package_name && domain_path_regex && label) {
155 base::android::AppendJavaStringArrayToStringVector( 155 base::android::AppendJavaStringArrayToStringVector(
156 env, app_package_name, &app_package_name_native); 156 env, app_package_name, &app_package_name_native);
157 base::android::AppendJavaStringArrayToStringVector( 157 base::android::AppendJavaStringArrayToStringVector(
158 env, domain_path_regex, &domain_path_regex_native); 158 env, domain_path_regex, &domain_path_regex_native);
159 base::android::AppendJavaStringArrayToStringVector(env, label, 159 base::android::AppendJavaStringArrayToStringVector(env, label,
160 &label_native); 160 &label_native);
161 } 161 }
162 162
163 io_task_runner_->PostTask( 163 io_task_runner_->PostTask(
164 FROM_HERE, 164 FROM_HERE,
165 base::Bind(&ExternalDataUseObserver::FetchMatchingRulesCallbackOnIOThread, 165 base::Bind(&ExternalDataUseObserver::FetchMatchingRulesDoneOnIOThread,
166 GetIOWeakPtr(), app_package_name_native, 166 GetIOWeakPtr(), app_package_name_native,
167 domain_path_regex_native, label_native)); 167 domain_path_regex_native, label_native));
168 } 168 }
169 169
170 void ExternalDataUseObserver::FetchMatchingRulesCallbackOnIOThread( 170 void ExternalDataUseObserver::FetchMatchingRulesDoneOnIOThread(
171 const std::vector<std::string>& app_package_name, 171 const std::vector<std::string>& app_package_name,
172 const std::vector<std::string>& domain_path_regex, 172 const std::vector<std::string>& domain_path_regex,
173 const std::vector<std::string>& label) { 173 const std::vector<std::string>& label) {
174 DCHECK(thread_checker_.CalledOnValidThread()); 174 DCHECK(thread_checker_.CalledOnValidThread());
175 175
176 RegisterURLRegexes(app_package_name, domain_path_regex, label); 176 RegisterURLRegexes(app_package_name, domain_path_regex, label);
177 matching_rules_fetch_pending_ = false; 177 matching_rules_fetch_pending_ = false;
178 // Process buffered reports. 178 // Process buffered reports.
179 } 179 }
180 180
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 const re2::RE2* pattern = matching_rules_[i]->pattern(); 379 const re2::RE2* pattern = matching_rules_[i]->pattern();
380 if (re2::RE2::FullMatch(gurl.spec(), *pattern)) { 380 if (re2::RE2::FullMatch(gurl.spec(), *pattern)) {
381 *label = matching_rules_[i]->label(); 381 *label = matching_rules_[i]->label();
382 return true; 382 return true;
383 } 383 }
384 } 384 }
385 385
386 return false; 386 return false;
387 } 387 }
388 388
389 ExternalDataUseObserver::DataUseReportKey::DataUseReportKey(
390 const std::string& label,
391 net::NetworkChangeNotifier::ConnectionType connection_type,
392 const std::string& mcc_mnc)
393 : label(label), connection_type(connection_type), mcc_mnc(mcc_mnc) {}
394
395 bool ExternalDataUseObserver::DataUseReportKey::operator==(
396 const DataUseReportKey& other) const {
397 return label == other.label && connection_type == other.connection_type &&
398 mcc_mnc == other.mcc_mnc;
399 }
400
401 ExternalDataUseObserver::DataUseReport::DataUseReport(
402 const base::Time& start_time,
403 const base::Time& end_time,
404 int64_t bytes_downloaded,
405 int64_t bytes_uploaded)
406 : start_time(start_time),
407 end_time(end_time),
408 bytes_downloaded(bytes_downloaded),
409 bytes_uploaded(bytes_uploaded) {}
410
411 size_t ExternalDataUseObserver::DataUseReportKeyHash::operator()(
412 const DataUseReportKey& k) const {
413 // The hash is computed by hashing individual variables and combining them
414 // using prime numbers. Prime numbers are used for multiplication because the
415 // number of buckets used by map is always an even number. Using a prime
416 // number ensures that for two different DataUseReportKey objects (say |j|
417 // and |k|), if the hash value of |k.label| is equal to hash value of
418 // |j.mcc_mnc|, then |j| and |k| map to different buckets. Large prime
419 // numbers are used so that hash value is spread over a larger range.
420 std::hash<std::string> hash_function;
421 size_t hash = 1;
422 hash = hash * 23 + hash_function(k.label);
423 hash = hash * 43 + k.connection_type;
424 hash = hash * 83 + hash_function(k.mcc_mnc);
425 return hash;
426 }
427
389 ExternalDataUseObserver::MatchingRule::MatchingRule( 428 ExternalDataUseObserver::MatchingRule::MatchingRule(
390 const std::string& app_package_name, 429 const std::string& app_package_name,
391 scoped_ptr<re2::RE2> pattern, 430 scoped_ptr<re2::RE2> pattern,
392 const std::string& label) 431 const std::string& label)
393 : app_package_name_(app_package_name), 432 : app_package_name_(app_package_name),
394 pattern_(pattern.Pass()), 433 pattern_(pattern.Pass()),
395 label_(label) {} 434 label_(label) {}
396 435
397 ExternalDataUseObserver::MatchingRule::~MatchingRule() {} 436 ExternalDataUseObserver::MatchingRule::~MatchingRule() {}
398 437
399 const re2::RE2* ExternalDataUseObserver::MatchingRule::pattern() const { 438 const re2::RE2* ExternalDataUseObserver::MatchingRule::pattern() const {
400 return pattern_.get(); 439 return pattern_.get();
401 } 440 }
402 441
403 const std::string& ExternalDataUseObserver::MatchingRule::label() const { 442 const std::string& ExternalDataUseObserver::MatchingRule::label() const {
404 return label_; 443 return label_;
405 } 444 }
406 445
407 bool RegisterExternalDataUseObserver(JNIEnv* env) { 446 bool RegisterExternalDataUseObserver(JNIEnv* env) {
408 return RegisterNativesImpl(env); 447 return RegisterNativesImpl(env);
409 } 448 }
410 449
411 } // namespace android 450 } // namespace android
412 451
413 } // namespace chrome 452 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698