| Index: chrome/browser/android/data_usage/external_data_use_observer_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_observer_unittest.cc
|
| index ae69a61d597d961c89b3d0ad07a4edfa1725af1c..e280e7308520de7261376f097916401522a14b75 100644
|
| --- a/chrome/browser/android/data_usage/external_data_use_observer_unittest.cc
|
| +++ b/chrome/browser/android/data_usage/external_data_use_observer_unittest.cc
|
| @@ -390,7 +390,8 @@ TEST_F(ExternalDataUseObserverTest, PeriodicFetchMatchingRules) {
|
| // fetched.
|
| TEST_F(ExternalDataUseObserverTest, MatchingRuleFetchOnControlAppInstall) {
|
| {
|
| - // Matching rules not fetched on navigation if control app is not installed.
|
| + // 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()
|
| @@ -401,6 +402,10 @@ TEST_F(ExternalDataUseObserverTest, MatchingRuleFetchOnControlAppInstall) {
|
| std::string());
|
| base::RunLoop().RunUntilIdle();
|
| histogram_tester.ExpectTotalCount("DataUsage.MatchingRulesCount.Valid", 0);
|
| + EXPECT_EQ(1U, external_data_use_observer()
|
| + ->data_use_tab_model_->data_use_ui_navigations_->size());
|
| + external_data_use_observer()
|
| + ->data_use_tab_model_->data_use_ui_navigations_->clear();
|
| }
|
|
|
| {
|
| @@ -410,6 +415,8 @@ TEST_F(ExternalDataUseObserverTest, MatchingRuleFetchOnControlAppInstall) {
|
| ->data_use_tab_model_->OnControlAppInstallStateChange(true);
|
| base::RunLoop().RunUntilIdle();
|
| histogram_tester.ExpectTotalCount("DataUsage.MatchingRulesCount.Valid", 1);
|
| + EXPECT_FALSE(external_data_use_observer()
|
| + ->data_use_tab_model_->data_use_ui_navigations_.get());
|
| }
|
|
|
| {
|
| @@ -638,6 +645,72 @@ TEST_F(ExternalDataUseObserverTest, DataUseReportTimedOut) {
|
| histogram_tester.ExpectTotalCount(kUMAReportSubmissionDurationHistogram, 0);
|
| }
|
|
|
| +// Tests that UI navigation events are buffered until control app not installed
|
| +// callback is received.
|
| +TEST_F(ExternalDataUseObserverTest,
|
| + ProcessBufferedNavigationEventsAfterControlAppNotInstalled) {
|
| + external_data_use_observer()->data_use_tab_model_->OnNavigationEvent(
|
| + kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL),
|
| + std::string());
|
| + external_data_use_observer()->data_use_tab_model_->OnNavigationEvent(
|
| + kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL),
|
| + std::string());
|
| + EXPECT_EQ(2U, external_data_use_observer()
|
| + ->data_use_tab_model_->data_use_ui_navigations_->size());
|
| + external_data_use_observer()
|
| + ->data_use_tab_model_->OnControlAppInstallStateChange(false);
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_FALSE(external_data_use_observer()
|
| + ->data_use_tab_model_->data_use_ui_navigations_.get());
|
| +}
|
| +
|
| +// Tests that UI navigation events are buffered until control app is installed
|
| +// and matching rules are fetched.
|
| +TEST_F(ExternalDataUseObserverTest,
|
| + ProcessBufferedNavigationEventsAfterRuleFetch) {
|
| + 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());
|
| + external_data_use_observer()->data_use_tab_model_->OnNavigationEvent(
|
| + kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL),
|
| + std::string());
|
| + EXPECT_EQ(2U, external_data_use_observer()
|
| + ->data_use_tab_model_->data_use_ui_navigations_->size());
|
| + external_data_use_observer()
|
| + ->data_use_tab_model_->OnControlAppInstallStateChange(true);
|
| + base::RunLoop().RunUntilIdle();
|
| + histogram_tester.ExpectTotalCount("DataUsage.MatchingRulesCount.Valid", 3);
|
| + EXPECT_FALSE(external_data_use_observer()
|
| + ->data_use_tab_model_->data_use_ui_navigations_.get());
|
| +}
|
| +
|
| +// Tests that UI navigation events are buffered until the buffer reaches a
|
| +// maximum imposed limit.
|
| +TEST_F(ExternalDataUseObserverTest,
|
| + ProcessBufferedNavigationEventsAfterMaxLimit) {
|
| + const uint32_t kDefaultMaxNavigationEventsBuffered = 1000;
|
| + // Expect that the max imposed limit will be reached, and the buffer will be
|
| + // cleared.
|
| + for (size_t count = 0; count < kDefaultMaxNavigationEventsBuffered; ++count) {
|
| + external_data_use_observer()->data_use_tab_model_->OnNavigationEvent(
|
| + kDefaultTabId, DataUseTabModel::TRANSITION_LINK, GURL(kDefaultURL),
|
| + std::string());
|
| + if (!external_data_use_observer()
|
| + ->data_use_tab_model_->data_use_ui_navigations_) {
|
| + // The max limit is reached.
|
| + break;
|
| + }
|
| + EXPECT_EQ(count+1,
|
| + external_data_use_observer()
|
| + ->data_use_tab_model_->data_use_ui_navigations_->size());
|
| + }
|
| + EXPECT_FALSE(external_data_use_observer()
|
| + ->data_use_tab_model_->data_use_ui_navigations_.get());
|
| +}
|
| +
|
| } // namespace android
|
|
|
| } // namespace chrome
|
|
|