| 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
|
|
|