Chromium Code Reviews| 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 65% |
| 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..4848d59b249d086f7b11b0e4d6515d8a86a6bfe7 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" |
|
tbansal1
2016/07/15 16:26:30
This include should not be necessary.
Raj
2016/07/15 18:54:41
I have removed most of the calls to EDUO. But EDUO
|
| #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( |
| @@ -136,14 +136,18 @@ class ExternalDataUseObserverTest : public testing::Test { |
| 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_->external_data_use_reporter_; |
| + } |
| + |
| + 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 +159,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 +190,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 +232,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 +248,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 +273,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=.*"); |
| @@ -313,8 +300,8 @@ TEST_F(ExternalDataUseObserverTest, MultipleMatchingRules) { |
| 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 +320,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 +329,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 +354,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 +376,51 @@ 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; |
| + base::RunLoop().RunUntilIdle(); |
|
tbansal1
2016/07/15 16:26:30
Why is RunLoop needed? IIUC, EDUR and all its depe
Raj
2016/07/15 18:54:41
Done.
|
| external_data_use_observer()->OnReportDataUseDone(true); |
|
tbansal1
2016/07/15 16:26:30
s//reporter->OnReportDataUseDone(...);/
Raj
2016/07/15 18:54:41
Done.
|
| + base::RunLoop().RunUntilIdle(); |
| // 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); |
| + base::RunLoop().RunUntilIdle(); |
| 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 +428,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 +439,57 @@ 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_); |
| + EXPECT_EQ(0, external_data_use_reporter()->total_bytes_buffered_); |
| + EXPECT_EQ(2, external_data_use_reporter()->pending_report_bytes_); |
| external_data_use_observer()->OnReportDataUseDone(true); |
| + base::RunLoop().RunUntilIdle(); |
| 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( |
| + base::RunLoop().RunUntilIdle(); |
| + 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_); |
| + base::RunLoop().RunUntilIdle(); |
| + 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"; |
| @@ -642,7 +524,7 @@ 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); |