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.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/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 base::WeakPtr<ExternalDataUseObserver> ExternalDataUseObserver::GetIOWeakPtr() { | 192 base::WeakPtr<ExternalDataUseObserver> ExternalDataUseObserver::GetIOWeakPtr() { |
193 return io_weak_factory_.GetWeakPtr(); | 193 return io_weak_factory_.GetWeakPtr(); |
194 } | 194 } |
195 | 195 |
196 base::WeakPtr<ExternalDataUseObserver> ExternalDataUseObserver::GetUIWeakPtr() { | 196 base::WeakPtr<ExternalDataUseObserver> ExternalDataUseObserver::GetUIWeakPtr() { |
197 return ui_weak_factory_.GetWeakPtr(); | 197 return ui_weak_factory_.GetWeakPtr(); |
198 } | 198 } |
199 | 199 |
200 void ExternalDataUseObserver::OnReportDataUseDoneOnIOThread(bool success) { | 200 void ExternalDataUseObserver::OnReportDataUseDoneOnIOThread(bool success) { |
201 DCHECK(thread_checker_.CalledOnValidThread()); | 201 DCHECK(thread_checker_.CalledOnValidThread()); |
202 DCHECK(!buffered_data_reports_.empty()); | |
203 DCHECK(submit_data_report_pending_); | 202 DCHECK(submit_data_report_pending_); |
204 | 203 |
205 // TODO(tbansal): If not successful, record UMA. | 204 // TODO(tbansal): If not successful, record UMA. |
206 | 205 |
207 submit_data_report_pending_ = false; | 206 submit_data_report_pending_ = false; |
208 | 207 |
209 SubmitBufferedDataUseReport(); | 208 SubmitBufferedDataUseReport(); |
210 } | 209 } |
211 | 210 |
212 void ExternalDataUseObserver::OnDataUse( | 211 void ExternalDataUseObserver::OnDataUse( |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 } | 378 } |
380 | 379 |
381 bool ExternalDataUseObserver::Matches(const GURL& gurl, | 380 bool ExternalDataUseObserver::Matches(const GURL& gurl, |
382 std::string* label) const { | 381 std::string* label) const { |
383 DCHECK(thread_checker_.CalledOnValidThread()); | 382 DCHECK(thread_checker_.CalledOnValidThread()); |
384 *label = ""; | 383 *label = ""; |
385 | 384 |
386 if (!gurl.is_valid() || gurl.is_empty()) | 385 if (!gurl.is_valid() || gurl.is_empty()) |
387 return false; | 386 return false; |
388 | 387 |
389 for (size_t i = 0; i < matching_rules_.size(); ++i) { | 388 for (const auto* matching_rule : matching_rules_) { |
390 const re2::RE2* pattern = matching_rules_[i]->pattern(); | 389 const re2::RE2* pattern = matching_rule->pattern(); |
391 if (re2::RE2::FullMatch(gurl.spec(), *pattern)) { | 390 if (re2::RE2::FullMatch(gurl.spec(), *pattern)) { |
392 *label = matching_rules_[i]->label(); | 391 *label = matching_rule->label(); |
393 return true; | 392 return true; |
394 } | 393 } |
395 } | 394 } |
| 395 |
| 396 return false; |
| 397 } |
| 398 |
| 399 bool ExternalDataUseObserver::MatchesAppPackageName( |
| 400 const std::string& app_package_name, |
| 401 std::string* label) const { |
| 402 DCHECK(thread_checker_.CalledOnValidThread()); |
| 403 *label = ""; |
| 404 |
| 405 if (app_package_name.empty()) |
| 406 return false; |
| 407 |
| 408 for (const auto* matching_rule : matching_rules_) { |
| 409 if (app_package_name == matching_rule->app_package_name()) { |
| 410 *label = matching_rule->label(); |
| 411 return true; |
| 412 } |
| 413 } |
396 | 414 |
397 return false; | 415 return false; |
398 } | 416 } |
399 | 417 |
400 ExternalDataUseObserver::DataUseReportKey::DataUseReportKey( | 418 ExternalDataUseObserver::DataUseReportKey::DataUseReportKey( |
401 const std::string& label, | 419 const std::string& label, |
402 net::NetworkChangeNotifier::ConnectionType connection_type, | 420 net::NetworkChangeNotifier::ConnectionType connection_type, |
403 const std::string& mcc_mnc) | 421 const std::string& mcc_mnc) |
404 : label(label), connection_type(connection_type), mcc_mnc(mcc_mnc) {} | 422 : label(label), connection_type(connection_type), mcc_mnc(mcc_mnc) {} |
405 | 423 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 : app_package_name_(app_package_name), | 461 : app_package_name_(app_package_name), |
444 pattern_(pattern.Pass()), | 462 pattern_(pattern.Pass()), |
445 label_(label) {} | 463 label_(label) {} |
446 | 464 |
447 ExternalDataUseObserver::MatchingRule::~MatchingRule() {} | 465 ExternalDataUseObserver::MatchingRule::~MatchingRule() {} |
448 | 466 |
449 const re2::RE2* ExternalDataUseObserver::MatchingRule::pattern() const { | 467 const re2::RE2* ExternalDataUseObserver::MatchingRule::pattern() const { |
450 return pattern_.get(); | 468 return pattern_.get(); |
451 } | 469 } |
452 | 470 |
| 471 const std::string& ExternalDataUseObserver::MatchingRule::app_package_name() |
| 472 const { |
| 473 return app_package_name_; |
| 474 } |
| 475 |
453 const std::string& ExternalDataUseObserver::MatchingRule::label() const { | 476 const std::string& ExternalDataUseObserver::MatchingRule::label() const { |
454 return label_; | 477 return label_; |
455 } | 478 } |
456 | 479 |
457 bool RegisterExternalDataUseObserver(JNIEnv* env) { | 480 bool RegisterExternalDataUseObserver(JNIEnv* env) { |
458 return RegisterNativesImpl(env); | 481 return RegisterNativesImpl(env); |
459 } | 482 } |
460 | 483 |
461 } // namespace android | 484 } // namespace android |
462 | 485 |
463 } // namespace chrome | 486 } // namespace chrome |
OLD | NEW |