Index: chrome/browser/android/data_usage/external_data_use_observer_bridge.cc |
diff --git a/chrome/browser/android/data_usage/external_data_use_observer_bridge.cc b/chrome/browser/android/data_usage/external_data_use_observer_bridge.cc |
index 71ad96c18be6d3cd2446dc2be470b42e046d6195..57cffd3853fca4ac87b6e6837e9184e2e2d02a91 100644 |
--- a/chrome/browser/android/data_usage/external_data_use_observer_bridge.cc |
+++ b/chrome/browser/android/data_usage/external_data_use_observer_bridge.cc |
@@ -10,6 +10,7 @@ |
#include "base/android/jni_string.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/metrics/field_trial.h" |
+#include "base/metrics/histogram_macros.h" |
#include "base/single_thread_task_runner.h" |
#include "base/time/time.h" |
#include "chrome/browser/android/data_usage/data_use_tab_model.h" |
@@ -36,7 +37,9 @@ namespace chrome { |
namespace android { |
-ExternalDataUseObserverBridge::ExternalDataUseObserverBridge() { |
+ExternalDataUseObserverBridge::ExternalDataUseObserverBridge() |
+ : construct_time_(base::TimeTicks::Now()), |
+ is_first_matching_rule_fetch_(true) { |
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
// Detach from IO thread since rest of ExternalDataUseObserverBridge lives on |
@@ -96,6 +99,7 @@ void ExternalDataUseObserverBridge::FetchMatchingRulesDone( |
const base::android::JavaParamRef<jobjectArray>& domain_path_regex, |
const base::android::JavaParamRef<jobjectArray>& label) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
+ DCHECK(!construct_time_.is_null()); |
// Convert to native objects. |
std::vector<std::string> app_package_name_native; |
@@ -117,6 +121,12 @@ void ExternalDataUseObserverBridge::FetchMatchingRulesDone( |
if (!data_use_tab_model_) |
return; |
+ if (is_first_matching_rule_fetch_) { |
+ is_first_matching_rule_fetch_ = false; |
+ UMA_HISTOGRAM_TIMES("DataUsage.Perf.MatchingRuleFirstFetchDuration", |
+ base::TimeTicks::Now() - construct_time_); |
+ } |
+ |
data_use_tab_model_->RegisterURLRegexes( |
app_package_name_native, domain_path_regex_native, label_native); |
} |