Index: chrome/browser/android/data_usage/external_data_use_reporter_unittest.cc |
diff --git a/chrome/browser/android/data_usage/external_data_use_observer_unittest.cc b/chrome/browser/android/data_usage/external_data_use_reporter_unittest.cc |
similarity index 64% |
copy from chrome/browser/android/data_usage/external_data_use_observer_unittest.cc |
copy to chrome/browser/android/data_usage/external_data_use_reporter_unittest.cc |
index 6d72efe5ba7f0f70accb04b4c52b7ac475afb266..cd3e4c4756d35465079d181690343976d2a87a7b 100644 |
--- a/chrome/browser/android/data_usage/external_data_use_observer_unittest.cc |
+++ b/chrome/browser/android/data_usage/external_data_use_reporter_unittest.cc |
@@ -1,8 +1,8 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "chrome/browser/android/data_usage/external_data_use_observer.h" |
+#include "chrome/browser/android/data_usage/external_data_use_reporter.h" |
#include <stddef.h> |
#include <stdint.h> |
@@ -19,10 +19,9 @@ |
#include "base/test/histogram_tester.h" |
#include "base/threading/thread_task_runner_handle.h" |
#include "chrome/browser/android/data_usage/data_use_tab_model.h" |
+#include "chrome/browser/android/data_usage/external_data_use_observer.h" |
#include "components/data_usage/core/data_use.h" |
#include "components/data_usage/core/data_use_aggregator.h" |
-#include "components/data_usage/core/data_use_amortizer.h" |
-#include "components/data_usage/core/data_use_annotator.h" |
#include "components/sessions/core/session_id.h" |
#include "components/variations/variations_associated_data.h" |
#include "content/public/browser/browser_thread.h" |
@@ -41,6 +40,7 @@ const char kUMAReportSubmissionDurationHistogram[] = |
const char kDefaultLabel[] = "label"; |
const SessionID::id_type kDefaultTabId = 0; |
const char kDefaultURL[] = "http://www.google.com/#q=abc"; |
+ |
const char kFooMccMnc[] = "foo_mccmnc"; |
const char kBarMccMnc[] = "bar_mccmnc"; |
const char kBazMccMnc[] = "baz_mccmnc"; |
@@ -53,7 +53,7 @@ namespace chrome { |
namespace android { |
-class ExternalDataUseObserverTest : public testing::Test { |
+class ExternalDataUseReporterTest : public testing::Test { |
public: |
void SetUp() override { |
thread_bundle_.reset(new content::TestBrowserThreadBundle( |
@@ -69,8 +69,7 @@ class ExternalDataUseObserverTest : public testing::Test { |
ui_task_runner_.get())); |
// Wait for |external_data_use_observer_| to create the Java object. |
base::RunLoop().RunUntilIdle(); |
- external_data_use_observer() |
- ->data_use_tab_model_->is_control_app_installed_ = true; |
+ data_use_tab_model()->is_control_app_installed_ = true; |
} |
// Replaces |external_data_use_observer_| with a new ExternalDataUseObserver. |
@@ -96,8 +95,8 @@ class ExternalDataUseObserverTest : public testing::Test { |
void FetchMatchingRulesDone(const std::vector<std::string>& app_package_name, |
const std::vector<std::string>& domain_path_regex, |
const std::vector<std::string>& label) { |
- external_data_use_observer_->GetDataUseTabModel()->RegisterURLRegexes( |
- app_package_name, domain_path_regex, label); |
+ data_use_tab_model()->RegisterURLRegexes(app_package_name, |
+ domain_path_regex, label); |
base::RunLoop().RunUntilIdle(); |
} |
@@ -114,7 +113,7 @@ class ExternalDataUseObserverTest : public testing::Test { |
// Notifies DataUseTabModel that tab tracking has started on kDefaultTabId. |
void TriggerTabTrackingOnDefaultTab() { |
- external_data_use_observer_->GetDataUseTabModel()->OnNavigationEvent( |
+ data_use_tab_model()->OnNavigationEvent( |
kDefaultTabId, DataUseTabModel::TRANSITION_OMNIBOX_SEARCH, |
GURL(kDefaultURL), std::string(), nullptr); |
} |
@@ -128,22 +127,29 @@ class ExternalDataUseObserverTest : public testing::Test { |
} |
void OnDataUse(const data_usage::DataUse& data_use) { |
- external_data_use_observer_->OnDataUse(data_use); |
- base::RunLoop().RunUntilIdle(); |
+ external_data_use_reporter()->OnDataUse(data_use); |
} |
ExternalDataUseObserver* external_data_use_observer() const { |
return external_data_use_observer_.get(); |
} |
- const ExternalDataUseObserver::DataUseReports& buffered_data_reports() const { |
- return external_data_use_observer_->buffered_data_reports_; |
+ ExternalDataUseReporter* external_data_use_reporter() const { |
+ return external_data_use_observer_->GetExternalDataUseReporterForTests(); |
+ } |
+ |
+ DataUseTabModel* data_use_tab_model() const { |
+ return external_data_use_reporter()->data_use_tab_model_; |
+ } |
+ |
+ const ExternalDataUseReporter::DataUseReports& buffered_data_reports() const { |
+ return external_data_use_reporter()->buffered_data_reports_; |
} |
int64_t default_upload_bytes() const { return 1; } |
int64_t default_download_bytes() const { |
- return external_data_use_observer_->data_use_report_min_bytes_; |
+ return external_data_use_reporter()->data_use_report_min_bytes_; |
} |
private: |
@@ -155,45 +161,28 @@ class ExternalDataUseObserverTest : public testing::Test { |
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_; |
}; |
-// Verifies that the external data use observer is registered as an observer |
-// only when at least one matching rule is present. |
-TEST_F(ExternalDataUseObserverTest, RegisteredAsDataUseObserver) { |
- EXPECT_FALSE(external_data_use_observer()->registered_as_data_use_observer_); |
- |
- AddDefaultMatchingRule(); |
- EXPECT_TRUE(external_data_use_observer()->registered_as_data_use_observer_); |
- |
- // Push an empty vector. Since no matching rules are present, |
- // |external_data_use_observer| should no longer be registered as a data use |
- // observer. |
- FetchMatchingRulesDone(std::vector<std::string>(), std::vector<std::string>(), |
- std::vector<std::string>()); |
- base::RunLoop().RunUntilIdle(); |
- EXPECT_FALSE(external_data_use_observer()->registered_as_data_use_observer_); |
-} |
- |
// Verifies that buffer size does not exceed the specified limit. |
-TEST_F(ExternalDataUseObserverTest, BufferSize) { |
+TEST_F(ExternalDataUseReporterTest, BufferSize) { |
base::HistogramTester histogram_tester; |
AddDefaultMatchingRule(); |
TriggerTabTrackingOnDefaultTab(); |
// Push more entries than the buffer size. Buffer size should not be exceeded. |
- for (size_t i = 0; i < ExternalDataUseObserver::kMaxBufferSize * 2; ++i) { |
+ for (size_t i = 0; i < ExternalDataUseReporter::kMaxBufferSize * 2; ++i) { |
data_usage::DataUse data_use = default_data_use(); |
data_use.mcc_mnc = "mccmnc" + base::Int64ToString(i); |
OnDataUse(data_use); |
} |
- EXPECT_LE(0, external_data_use_observer()->total_bytes_buffered_); |
+ EXPECT_LE(0, external_data_use_reporter()->total_bytes_buffered_); |
// Verify that total buffered bytes is computed correctly. |
EXPECT_EQ( |
- static_cast<int64_t>(ExternalDataUseObserver::kMaxBufferSize * |
+ static_cast<int64_t>(ExternalDataUseReporter::kMaxBufferSize * |
(default_upload_bytes() + default_download_bytes())), |
- external_data_use_observer()->total_bytes_buffered_); |
- EXPECT_EQ(ExternalDataUseObserver::kMaxBufferSize, |
+ external_data_use_reporter()->total_bytes_buffered_); |
+ EXPECT_EQ(ExternalDataUseReporter::kMaxBufferSize, |
buffered_data_reports().size()); |
// Verify the label of the data use report. |
@@ -203,20 +192,20 @@ TEST_F(ExternalDataUseObserverTest, BufferSize) { |
// Verify that metrics were updated correctly for the lost reports. |
histogram_tester.ExpectUniqueSample( |
"DataUsage.ReportSubmissionResult", |
- ExternalDataUseObserver::DATAUSAGE_REPORT_SUBMISSION_LOST, |
- ExternalDataUseObserver::kMaxBufferSize - 1); |
+ ExternalDataUseReporter::DATAUSAGE_REPORT_SUBMISSION_LOST, |
+ ExternalDataUseReporter::kMaxBufferSize - 1); |
histogram_tester.ExpectUniqueSample( |
"DataUsage.ReportSubmission.Bytes.Lost", |
default_upload_bytes() + default_download_bytes(), |
- ExternalDataUseObserver::kMaxBufferSize - 1); |
+ ExternalDataUseReporter::kMaxBufferSize - 1); |
} |
// Tests that buffered data use reports are merged correctly. |
-TEST_F(ExternalDataUseObserverTest, ReportsMergedCorrectly) { |
+TEST_F(ExternalDataUseReporterTest, ReportsMergedCorrectly) { |
AddDefaultMatchingRule(); |
TriggerTabTrackingOnDefaultTab(); |
- const size_t num_iterations = ExternalDataUseObserver::kMaxBufferSize * 2; |
+ const size_t num_iterations = ExternalDataUseReporter::kMaxBufferSize * 2; |
for (size_t i = 0; i < num_iterations; ++i) { |
data_usage::DataUse data_use_foo = default_data_use(); |
@@ -245,7 +234,7 @@ TEST_F(ExternalDataUseObserverTest, ReportsMergedCorrectly) { |
{kBazMccMnc, num_iterations}}; |
for (const auto& expected_report : expected_data_use_reports) { |
- const ExternalDataUseObserver::DataUseReportKey key( |
+ const ExternalDataUseReporter::DataUseReportKey key( |
kDefaultLabel, DataUseTabModel::kDefaultTag, |
net::NetworkChangeNotifier::CONNECTION_UNKNOWN, |
expected_report.mcc_mnc); |
@@ -261,15 +250,15 @@ TEST_F(ExternalDataUseObserverTest, ReportsMergedCorrectly) { |
} |
// Tests that timestamps of merged reports is correct. |
-TEST_F(ExternalDataUseObserverTest, TimestampsMergedCorrectly) { |
+TEST_F(ExternalDataUseReporterTest, TimestampsMergedCorrectly) { |
AddDefaultMatchingRule(); |
- const size_t num_iterations = ExternalDataUseObserver::kMaxBufferSize * 2; |
+ const size_t num_iterations = ExternalDataUseReporter::kMaxBufferSize * 2; |
base::Time start_timestamp = base::Time::UnixEpoch(); |
base::Time end_timestamp = start_timestamp + base::TimeDelta::FromSeconds(1); |
for (size_t i = 0; i < num_iterations; ++i) { |
- external_data_use_observer()->BufferDataUseReport( |
+ external_data_use_reporter()->BufferDataUseReport( |
default_data_use(), kDefaultLabel, DataUseTabModel::kDefaultTag, |
start_timestamp, end_timestamp); |
@@ -286,7 +275,7 @@ TEST_F(ExternalDataUseObserverTest, TimestampsMergedCorrectly) { |
// Tests the behavior when multiple matching rules are available for URL and |
// package name matching. |
-TEST_F(ExternalDataUseObserverTest, MultipleMatchingRules) { |
+TEST_F(ExternalDataUseReporterTest, MultipleMatchingRules) { |
std::vector<std::string> url_regexes; |
url_regexes.push_back( |
"http://www[.]foo[.]com/#q=.*|https://www[.]foo[.]com/#q=.*"); |
@@ -305,16 +294,16 @@ TEST_F(ExternalDataUseObserverTest, MultipleMatchingRules) { |
FetchMatchingRulesDone(app_package_names, url_regexes, labels); |
- external_data_use_observer()->GetDataUseTabModel()->OnNavigationEvent( |
+ data_use_tab_model()->OnNavigationEvent( |
kDefaultTabId, DataUseTabModel::TRANSITION_OMNIBOX_SEARCH, |
GURL("http://www.foo.com/#q=abc"), std::string(), nullptr); |
- external_data_use_observer()->GetDataUseTabModel()->OnNavigationEvent( |
+ data_use_tab_model()->OnNavigationEvent( |
kDefaultTabId + 1, DataUseTabModel::TRANSITION_OMNIBOX_SEARCH, |
GURL("http://www.bar.com/#q=abc"), std::string(), nullptr); |
- EXPECT_EQ(0U, external_data_use_observer()->buffered_data_reports_.size()); |
- EXPECT_TRUE(external_data_use_observer() |
+ EXPECT_EQ(0U, external_data_use_reporter()->buffered_data_reports_.size()); |
+ EXPECT_TRUE(external_data_use_reporter() |
->last_data_report_submitted_ticks_.is_null()); |
// Check |kLabelFoo| matching rule. |
@@ -333,7 +322,7 @@ TEST_F(ExternalDataUseObserverTest, MultipleMatchingRules) { |
// bar report should be present. |
EXPECT_EQ(1U, buffered_data_reports().size()); |
- const ExternalDataUseObserver::DataUseReportKey key_bar( |
+ const ExternalDataUseReporter::DataUseReportKey key_bar( |
kBarLabel, DataUseTabModel::kDefaultTag, |
net::NetworkChangeNotifier::CONNECTION_UNKNOWN, kBarMccMnc); |
EXPECT_NE(buffered_data_reports().end(), |
@@ -342,22 +331,22 @@ TEST_F(ExternalDataUseObserverTest, MultipleMatchingRules) { |
// Tests that hash function reports distinct values. This test may fail if there |
// is a hash collision, however the chances of that happening are very low. |
-TEST_F(ExternalDataUseObserverTest, HashFunction) { |
- ExternalDataUseObserver::DataUseReportKeyHash hash; |
+TEST_F(ExternalDataUseReporterTest, HashFunction) { |
+ ExternalDataUseReporter::DataUseReportKeyHash hash; |
- ExternalDataUseObserver::DataUseReportKey foo( |
+ ExternalDataUseReporter::DataUseReportKey foo( |
kFooLabel, DataUseTabModel::kDefaultTag, |
net::NetworkChangeNotifier::CONNECTION_UNKNOWN, kFooMccMnc); |
- ExternalDataUseObserver::DataUseReportKey bar_label( |
+ ExternalDataUseReporter::DataUseReportKey bar_label( |
kBarLabel, DataUseTabModel::kDefaultTag, |
net::NetworkChangeNotifier::CONNECTION_UNKNOWN, kFooMccMnc); |
- ExternalDataUseObserver::DataUseReportKey bar_custom_tab_tag( |
+ ExternalDataUseReporter::DataUseReportKey bar_custom_tab_tag( |
kBarLabel, DataUseTabModel::kCustomTabTag, |
net::NetworkChangeNotifier::CONNECTION_UNKNOWN, kFooMccMnc); |
- ExternalDataUseObserver::DataUseReportKey bar_network_type( |
+ ExternalDataUseReporter::DataUseReportKey bar_network_type( |
kFooLabel, DataUseTabModel::kDefaultTag, |
net::NetworkChangeNotifier::CONNECTION_WIFI, kFooMccMnc); |
- ExternalDataUseObserver::DataUseReportKey bar_mcc_mnc( |
+ ExternalDataUseReporter::DataUseReportKey bar_mcc_mnc( |
kFooLabel, DataUseTabModel::kDefaultTag, |
net::NetworkChangeNotifier::CONNECTION_UNKNOWN, kBarMccMnc); |
@@ -367,104 +356,18 @@ TEST_F(ExternalDataUseObserverTest, HashFunction) { |
EXPECT_NE(hash(foo), hash(bar_mcc_mnc)); |
} |
-// Tests if matching rules are fetched periodically. |
-TEST_F(ExternalDataUseObserverTest, PeriodicFetchMatchingRules) { |
- AddDefaultMatchingRule(); |
- |
- EXPECT_FALSE( |
- external_data_use_observer()->last_matching_rules_fetch_time_.is_null()); |
- |
- // Change the time when the fetching rules were fetched. |
- external_data_use_observer()->last_matching_rules_fetch_time_ = |
- base::TimeTicks::Now() - |
- external_data_use_observer()->fetch_matching_rules_duration_; |
- // Matching rules should be expired. |
- EXPECT_GE(base::TimeTicks::Now() - |
- external_data_use_observer()->last_matching_rules_fetch_time_, |
- external_data_use_observer()->fetch_matching_rules_duration_); |
- |
- // OnDataUse should trigger fetching of matching rules. |
- OnDataUse(default_data_use()); |
- |
- // Matching rules should not be expired. |
- EXPECT_LT(base::TimeTicks::Now() - |
- external_data_use_observer()->last_matching_rules_fetch_time_, |
- external_data_use_observer()->fetch_matching_rules_duration_); |
-} |
- |
-// Tests the matching rule fetch behavior when the external control app is |
-// installed and not installed. Matching rules should be fetched when control |
-// app gets installed. If control app is installed and no valid rules are found, |
-// matching rules are fetched on every navigation. Rules are not fetched if |
-// control app is not installed or if more than zero valid rules have been |
-// fetched. |
-TEST_F(ExternalDataUseObserverTest, MatchingRuleFetchOnControlAppInstall) { |
- { |
- // Matching rules not fetched on navigation if control app is not installed, |
- // and navigation events will be buffered. |
- external_data_use_observer()->last_matching_rules_fetch_time_ = |
- base::TimeTicks(); |
- external_data_use_observer() |
- ->data_use_tab_model_->is_control_app_installed_ = false; |
- base::HistogramTester histogram_tester; |
- external_data_use_observer()->data_use_tab_model_->OnNavigationEvent( |
- kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL), |
- std::string(), nullptr); |
- base::RunLoop().RunUntilIdle(); |
- histogram_tester.ExpectTotalCount("DataUsage.MatchingRulesCount.Valid", 0); |
- } |
- |
- { |
- // Matching rules are fetched when control app is installed. |
- base::HistogramTester histogram_tester; |
- external_data_use_observer() |
- ->data_use_tab_model_->OnControlAppInstallStateChange(true); |
- base::RunLoop().RunUntilIdle(); |
- histogram_tester.ExpectTotalCount("DataUsage.MatchingRulesCount.Valid", 1); |
- } |
- |
- { |
- // Matching rules fetched on every navigation if control app is installed |
- // and zero rules are available. |
- external_data_use_observer()->last_matching_rules_fetch_time_ = |
- base::TimeTicks(); |
- base::HistogramTester histogram_tester; |
- external_data_use_observer()->data_use_tab_model_->OnNavigationEvent( |
- kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL), |
- std::string(), nullptr); |
- base::RunLoop().RunUntilIdle(); |
- histogram_tester.ExpectTotalCount("DataUsage.MatchingRulesCount.Valid", 1); |
- } |
- |
- { |
- // Matching rules not fetched on navigation if control app is installed and |
- // more than zero rules are available. |
- AddDefaultMatchingRule(); |
- external_data_use_observer()->last_matching_rules_fetch_time_ = |
- base::TimeTicks(); |
- EXPECT_TRUE(external_data_use_observer() |
- ->last_matching_rules_fetch_time_.is_null()); |
- base::HistogramTester histogram_tester; |
- external_data_use_observer()->data_use_tab_model_->OnNavigationEvent( |
- kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL), |
- std::string(), nullptr); |
- base::RunLoop().RunUntilIdle(); |
- histogram_tester.ExpectTotalCount("DataUsage.MatchingRulesCount.Valid", 0); |
- } |
-} |
- |
// Tests if data use reports are sent only after the total bytes sent/received |
// across all buffered reports have reached the specified threshold. |
-TEST_F(ExternalDataUseObserverTest, BufferDataUseReports) { |
+TEST_F(ExternalDataUseReporterTest, BufferDataUseReports) { |
AddDefaultMatchingRule(); |
TriggerTabTrackingOnDefaultTab(); |
// This tests reports 1024 bytes in each loop iteration. For the test to work |
// properly, |data_use_report_min_bytes_| should be a multiple of 1024. |
- ASSERT_EQ(0, external_data_use_observer()->data_use_report_min_bytes_ % 1024); |
+ ASSERT_EQ(0, external_data_use_reporter()->data_use_report_min_bytes_ % 1024); |
const size_t num_iterations = |
- external_data_use_observer()->data_use_report_min_bytes_ / 1024; |
+ external_data_use_reporter()->data_use_report_min_bytes_ / 1024; |
for (size_t i = 0; i < num_iterations; ++i) { |
data_usage::DataUse data_use = default_data_use(); |
@@ -475,48 +378,48 @@ TEST_F(ExternalDataUseObserverTest, BufferDataUseReports) { |
if (i != num_iterations - 1) { |
// Total buffered bytes is less than the minimum threshold. Data use |
// report should not be sent. |
- EXPECT_TRUE(external_data_use_observer() |
+ EXPECT_TRUE(external_data_use_reporter() |
->last_data_report_submitted_ticks_.is_null()); |
EXPECT_EQ(static_cast<int64_t>(i + 1), |
- external_data_use_observer()->total_bytes_buffered_ / 1024); |
- EXPECT_EQ(0, external_data_use_observer()->pending_report_bytes_); |
+ external_data_use_reporter()->total_bytes_buffered_ / 1024); |
+ EXPECT_EQ(0, external_data_use_reporter()->pending_report_bytes_); |
} else { |
// Total bytes is at least the minimum threshold. This should trigger |
// submitting of the buffered data use report. |
- EXPECT_FALSE(external_data_use_observer() |
+ EXPECT_FALSE(external_data_use_reporter() |
->last_data_report_submitted_ticks_.is_null()); |
- EXPECT_EQ(0, external_data_use_observer()->total_bytes_buffered_); |
+ EXPECT_EQ(0, external_data_use_reporter()->total_bytes_buffered_); |
} |
} |
- EXPECT_EQ(0, external_data_use_observer()->total_bytes_buffered_); |
+ EXPECT_EQ(0, external_data_use_reporter()->total_bytes_buffered_); |
EXPECT_EQ(static_cast<int64_t>(num_iterations), |
- external_data_use_observer()->pending_report_bytes_ / 1024); |
+ external_data_use_reporter()->pending_report_bytes_ / 1024); |
base::HistogramTester histogram_tester; |
- external_data_use_observer()->OnReportDataUseDone(true); |
+ external_data_use_reporter()->OnReportDataUseDone(true); |
// Verify that metrics were updated correctly for the report that was |
// successfully submitted. |
histogram_tester.ExpectUniqueSample( |
"DataUsage.ReportSubmissionResult", |
- ExternalDataUseObserver::DATAUSAGE_REPORT_SUBMISSION_SUCCESSFUL, 1); |
+ ExternalDataUseReporter::DATAUSAGE_REPORT_SUBMISSION_SUCCESSFUL, 1); |
histogram_tester.ExpectUniqueSample( |
"DataUsage.ReportSubmission.Bytes.Successful", |
- external_data_use_observer()->data_use_report_min_bytes_, 1); |
+ external_data_use_reporter()->data_use_report_min_bytes_, 1); |
histogram_tester.ExpectTotalCount(kUMAReportSubmissionDurationHistogram, 1); |
// Verify that metrics were updated correctly for the report that was not |
// successfully submitted. |
OnDataUse(default_data_use()); |
- external_data_use_observer()->OnReportDataUseDone(false); |
+ external_data_use_reporter()->OnReportDataUseDone(false); |
histogram_tester.ExpectTotalCount("DataUsage.ReportSubmissionResult", 2); |
histogram_tester.ExpectBucketCount( |
"DataUsage.ReportSubmissionResult", |
- ExternalDataUseObserver::DATAUSAGE_REPORT_SUBMISSION_FAILED, 1); |
+ ExternalDataUseReporter::DATAUSAGE_REPORT_SUBMISSION_FAILED, 1); |
histogram_tester.ExpectUniqueSample( |
"DataUsage.ReportSubmission.Bytes.Failed", |
- external_data_use_observer()->data_use_report_min_bytes_, 1); |
+ external_data_use_reporter()->data_use_report_min_bytes_, 1); |
histogram_tester.ExpectTotalCount(kUMAReportSubmissionDurationHistogram, 2); |
} |
@@ -524,7 +427,7 @@ TEST_F(ExternalDataUseObserverTest, BufferDataUseReports) { |
// Tests data use report submission when application status callback is called. |
// Report should be submitted even if the number of bytes is less than the |
// threshold. Report should not be submitted if there is a pending report. |
-TEST_F(ExternalDataUseObserverTest, DataUseReportingOnApplicationStatusChange) { |
+TEST_F(ExternalDataUseReporterTest, DataUseReportingOnApplicationStatusChange) { |
base::HistogramTester histogram_tester; |
AddDefaultMatchingRule(); |
TriggerTabTrackingOnDefaultTab(); |
@@ -535,79 +438,54 @@ TEST_F(ExternalDataUseObserverTest, DataUseReportingOnApplicationStatusChange) { |
data_use.tx_bytes = 1; |
data_use.rx_bytes = 1; |
OnDataUse(data_use); |
- EXPECT_TRUE(external_data_use_observer() |
+ EXPECT_TRUE(external_data_use_reporter() |
->last_data_report_submitted_ticks_.is_null()); |
- EXPECT_EQ(2, external_data_use_observer()->total_bytes_buffered_); |
- EXPECT_EQ(0, external_data_use_observer()->pending_report_bytes_); |
+ EXPECT_EQ(2, external_data_use_reporter()->total_bytes_buffered_); |
+ EXPECT_EQ(0, external_data_use_reporter()->pending_report_bytes_); |
- external_data_use_observer()->OnApplicationStateChange( |
+ external_data_use_reporter()->OnApplicationStateChange( |
base::android::APPLICATION_STATE_HAS_PAUSED_ACTIVITIES); |
- EXPECT_FALSE(external_data_use_observer() |
+ EXPECT_FALSE(external_data_use_reporter() |
->last_data_report_submitted_ticks_.is_null()); |
- EXPECT_EQ(0, external_data_use_observer()->total_bytes_buffered_); |
- EXPECT_EQ(2, external_data_use_observer()->pending_report_bytes_); |
- external_data_use_observer()->OnReportDataUseDone(true); |
+ EXPECT_EQ(0, external_data_use_reporter()->total_bytes_buffered_); |
+ EXPECT_EQ(2, external_data_use_reporter()->pending_report_bytes_); |
+ external_data_use_reporter()->OnReportDataUseDone(true); |
histogram_tester.ExpectTotalCount(kUMAReportSubmissionDurationHistogram, 1); |
// Create pending report. |
OnDataUse(default_data_use()); |
- EXPECT_FALSE(external_data_use_observer() |
+ EXPECT_FALSE(external_data_use_reporter() |
->last_data_report_submitted_ticks_.is_null()); |
- EXPECT_EQ(0, external_data_use_observer()->total_bytes_buffered_); |
+ EXPECT_EQ(0, external_data_use_reporter()->total_bytes_buffered_); |
EXPECT_EQ(default_upload_bytes() + default_download_bytes(), |
- external_data_use_observer()->pending_report_bytes_); |
+ external_data_use_reporter()->pending_report_bytes_); |
// Application state change should not submit if there is a pending report. |
data_use.tx_bytes = 1; |
data_use.rx_bytes = 1; |
OnDataUse(data_use); |
- external_data_use_observer()->OnApplicationStateChange( |
+ external_data_use_reporter()->OnApplicationStateChange( |
base::android::APPLICATION_STATE_HAS_PAUSED_ACTIVITIES); |
- EXPECT_FALSE(external_data_use_observer() |
+ EXPECT_FALSE(external_data_use_reporter() |
->last_data_report_submitted_ticks_.is_null()); |
- EXPECT_EQ(2, external_data_use_observer()->total_bytes_buffered_); |
+ EXPECT_EQ(2, external_data_use_reporter()->total_bytes_buffered_); |
EXPECT_EQ(default_upload_bytes() + default_download_bytes(), |
- external_data_use_observer()->pending_report_bytes_); |
+ external_data_use_reporter()->pending_report_bytes_); |
histogram_tester.ExpectTotalCount(kUMAReportSubmissionDurationHistogram, 1); |
// Once pending report submission done callback was received, report should be |
// submitted on next application state change. |
- external_data_use_observer()->OnReportDataUseDone(true); |
- external_data_use_observer()->OnApplicationStateChange( |
+ external_data_use_reporter()->OnReportDataUseDone(true); |
+ external_data_use_reporter()->OnApplicationStateChange( |
base::android::APPLICATION_STATE_HAS_PAUSED_ACTIVITIES); |
- EXPECT_EQ(0, external_data_use_observer()->total_bytes_buffered_); |
- EXPECT_EQ(2, external_data_use_observer()->pending_report_bytes_); |
+ EXPECT_EQ(0, external_data_use_reporter()->total_bytes_buffered_); |
+ EXPECT_EQ(2, external_data_use_reporter()->pending_report_bytes_); |
histogram_tester.ExpectTotalCount(kUMAReportSubmissionDurationHistogram, 2); |
} |
-#endif // OS_ANDROID |
- |
-// Tests if the parameters from the field trial are populated correctly. |
-TEST_F(ExternalDataUseObserverTest, Variations) { |
- std::map<std::string, std::string> variation_params; |
- |
- const int kFetchMatchingRulesDurationSeconds = 10000; |
- const int kDefaultMaxDataReportSubmitWaitMsec = 20000; |
- const int64_t kDataUseReportMinBytes = 5000; |
- variation_params["fetch_matching_rules_duration_seconds"] = |
- base::Int64ToString(kFetchMatchingRulesDurationSeconds); |
- variation_params["data_report_submit_timeout_msec"] = |
- base::Int64ToString(kDefaultMaxDataReportSubmitWaitMsec); |
- variation_params["data_use_report_min_bytes"] = |
- base::Int64ToString(kDataUseReportMinBytes); |
- |
- // Create another ExternalDataUseObserver object. |
- ReplaceExternalDataUseObserver(variation_params); |
- EXPECT_EQ(base::TimeDelta::FromSeconds(kFetchMatchingRulesDurationSeconds), |
- external_data_use_observer()->fetch_matching_rules_duration_); |
- EXPECT_EQ( |
- base::TimeDelta::FromMilliseconds(kDefaultMaxDataReportSubmitWaitMsec), |
- external_data_use_observer()->data_report_submit_timeout_); |
- EXPECT_EQ(kDataUseReportMinBytes, |
- external_data_use_observer()->data_use_report_min_bytes_); |
-} |
+#endif // OS_ANDROID |
// Tests if the metrics are recorded correctly. |
-TEST_F(ExternalDataUseObserverTest, DataUseReportTimedOut) { |
+TEST_F(ExternalDataUseReporterTest, DataUseReportTimedOut) { |
base::HistogramTester histogram_tester; |
std::map<std::string, std::string> variation_params; |
variation_params["data_report_submit_timeout_msec"] = "0"; |
@@ -619,16 +497,14 @@ TEST_F(ExternalDataUseObserverTest, DataUseReportTimedOut) { |
0); |
// Trigger the control app install, and matching rules will be fetched. |
- external_data_use_observer() |
- ->GetDataUseTabModel() |
- ->OnControlAppInstallStateChange(true); |
+ data_use_tab_model()->OnControlAppInstallStateChange(true); |
base::RunLoop().RunUntilIdle(); |
histogram_tester.ExpectTotalCount(kUMAMatchingRuleFirstFetchDurationHistogram, |
1); |
// Verify that matching rules are fetched on every navigation after the |
// control app is installed, since there are no valid rules yet. |
- external_data_use_observer()->GetDataUseTabModel()->OnNavigationEvent( |
+ data_use_tab_model()->OnNavigationEvent( |
kDefaultTabId, DataUseTabModel::TRANSITION_OMNIBOX_SEARCH, |
GURL(kDefaultURL), std::string(), nullptr); |
base::RunLoop().RunUntilIdle(); |
@@ -642,13 +518,36 @@ TEST_F(ExternalDataUseObserverTest, DataUseReportTimedOut) { |
// First data use report should be marked as timed out. |
histogram_tester.ExpectUniqueSample( |
"DataUsage.ReportSubmissionResult", |
- ExternalDataUseObserver::DATAUSAGE_REPORT_SUBMISSION_TIMED_OUT, 1); |
+ ExternalDataUseReporter::DATAUSAGE_REPORT_SUBMISSION_TIMED_OUT, 1); |
histogram_tester.ExpectUniqueSample( |
"DataUsage.ReportSubmission.Bytes.TimedOut", |
default_upload_bytes() + default_download_bytes(), 1); |
histogram_tester.ExpectTotalCount(kUMAReportSubmissionDurationHistogram, 0); |
} |
+// Tests if the parameters from the field trial are populated correctly. |
+TEST_F(ExternalDataUseReporterTest, Variations) { |
+ std::map<std::string, std::string> variation_params; |
+ |
+ const int kFetchMatchingRulesDurationSeconds = 10000; |
+ const int kDefaultMaxDataReportSubmitWaitMsec = 20000; |
+ const int64_t kDataUseReportMinBytes = 5000; |
+ variation_params["fetch_matching_rules_duration_seconds"] = |
+ base::Int64ToString(kFetchMatchingRulesDurationSeconds); |
+ variation_params["data_report_submit_timeout_msec"] = |
+ base::Int64ToString(kDefaultMaxDataReportSubmitWaitMsec); |
+ variation_params["data_use_report_min_bytes"] = |
+ base::Int64ToString(kDataUseReportMinBytes); |
+ |
+ // Create another ExternalDataUseObserver object. |
+ ReplaceExternalDataUseObserver(variation_params); |
+ EXPECT_EQ( |
+ base::TimeDelta::FromMilliseconds(kDefaultMaxDataReportSubmitWaitMsec), |
+ external_data_use_reporter()->data_report_submit_timeout_); |
+ EXPECT_EQ(kDataUseReportMinBytes, |
+ external_data_use_reporter()->data_use_report_min_bytes_); |
+} |
+ |
} // namespace android |
} // namespace chrome |