Index: chrome/browser/android/data_usage/data_use_matcher.cc |
diff --git a/chrome/browser/android/data_usage/data_use_matcher.cc b/chrome/browser/android/data_usage/data_use_matcher.cc |
index be21c004ae8952ba04856282268896dbfb01b45e..b00c9e7ba55ef2b2a0ca2f4c9a3d8536be30aac3 100644 |
--- a/chrome/browser/android/data_usage/data_use_matcher.cc |
+++ b/chrome/browser/android/data_usage/data_use_matcher.cc |
@@ -16,7 +16,6 @@ |
#include "base/time/default_tick_clock.h" |
#include "base/time/tick_clock.h" |
#include "base/time/time.h" |
-#include "chrome/browser/android/data_usage/external_data_use_observer_bridge.h" |
#include "third_party/re2/src/re2/re2.h" |
#include "url/gurl.h" |
@@ -25,15 +24,20 @@ namespace chrome { |
namespace android { |
DataUseMatcher::DataUseMatcher( |
- const base::WeakPtr<DataUseTabModel>& data_use_tab_model, |
- const ExternalDataUseObserverBridge* external_data_use_observer_bridge, |
+ const base::Callback<void(const std::string&)>& |
+ on_tracking_label_removed_callback, |
+ const base::Callback<void(bool)>& on_matching_rules_fetched_callback, |
const base::TimeDelta& default_matching_rule_expiration_duration) |
- : data_use_tab_model_(data_use_tab_model), |
- default_matching_rule_expiration_duration_( |
+ : default_matching_rule_expiration_duration_( |
default_matching_rule_expiration_duration), |
tick_clock_(new base::DefaultTickClock()), |
- external_data_use_observer_bridge_(external_data_use_observer_bridge) { |
- DCHECK(external_data_use_observer_bridge_); |
+ on_tracking_label_removed_callback_(on_tracking_label_removed_callback), |
+ on_matching_rules_fetched_callback_(on_matching_rules_fetched_callback) { |
+ DCHECK(on_tracking_label_removed_callback_); |
+ DCHECK(on_matching_rules_fetched_callback_); |
+ // Detach from current thread since rest of DataUseMatcher lives on the UI |
+ // thread and the current thread may not be UI thread.. |
+ thread_checker_.DetachFromThread(); |
} |
DataUseMatcher::~DataUseMatcher() {} |
@@ -82,17 +86,15 @@ void DataUseMatcher::RegisterURLRegexes( |
removed_matching_rule_labels.erase(labels.at(i)); |
} |
- for (const std::string& label : removed_matching_rule_labels) { |
- if (data_use_tab_model_) |
- data_use_tab_model_->OnTrackingLabelRemoved(label); |
- } |
+ for (const std::string& label : removed_matching_rule_labels) |
+ on_tracking_label_removed_callback_.Run(label); |
+ |
UMA_HISTOGRAM_COUNTS_100("DataUsage.MatchingRulesCount.Valid", |
matching_rules_.size()); |
UMA_HISTOGRAM_COUNTS_100("DataUsage.MatchingRulesCount.Invalid", |
invalid_rules); |
- external_data_use_observer_bridge_->ShouldRegisterAsDataUseObserver( |
- !matching_rules_.empty()); |
+ on_matching_rules_fetched_callback_.Run(!matching_rules_.empty()); |
} |
bool DataUseMatcher::MatchesURL(const GURL& url, std::string* label) const { |
@@ -140,11 +142,6 @@ bool DataUseMatcher::MatchesAppPackageName(const std::string& app_package_name, |
return false; |
} |
-void DataUseMatcher::FetchMatchingRules() { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- external_data_use_observer_bridge_->FetchMatchingRules(); |
-} |
- |
bool DataUseMatcher::HasRules() const { |
return !matching_rules_.empty(); |
} |