Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1023)

Unified Diff: chrome/browser/android/data_usage/data_use_tab_model_unittest.cc

Issue 1837223002: Buffer UI navigation events in DataUseTabModel until rule fetch (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed tbansal comments Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/data_usage/data_use_tab_model_unittest.cc
diff --git a/chrome/browser/android/data_usage/data_use_tab_model_unittest.cc b/chrome/browser/android/data_usage/data_use_tab_model_unittest.cc
index 99af0ead925576f4eb745af618c2e6c79c900eec..0f3b6509857650281c4f69d53f368916a78d6804 100644
--- a/chrome/browser/android/data_usage/data_use_tab_model_unittest.cc
+++ b/chrome/browser/android/data_usage/data_use_tab_model_unittest.cc
@@ -920,6 +920,42 @@ TEST_F(DataUseTabModelTest, MatchingRuleClearedOnControlAppUninstall) {
EXPECT_FALSE(data_use_tab_model_->data_use_matcher_->HasValidRules());
}
+// Tests that UI navigation events are buffered until matching rules are fetched
+// and then processed to start data use tracking.
+TEST_F(DataUseTabModelTest, ProcessBufferedNavigationEventsAfterRuleFetch) {
+ MockTabDataUseObserver mock_observer;
+ std::vector<std::string> app_package_names, domain_regexes, labels;
+
+ app_package_names.push_back(kPackageFoo);
+ domain_regexes.push_back(kURLFoo);
+ labels.push_back(kTestLabel1);
+ data_use_tab_model_->AddObserver(&mock_observer);
+
+ // Navigation event should get buffered, and tracking should not start.
+ EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID1)).Times(0);
+ EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID1)).Times(0);
+ data_use_tab_model_->OnNavigationEvent(
+ kTabID1, DataUseTabModel::TRANSITION_OMNIBOX_SEARCH, GURL(kURLFoo),
+ std::string());
+ EXPECT_EQ(1, data_use_tab_model_->data_use_ui_navigations_->size());
+ testing::Mock::VerifyAndClearExpectations(&mock_observer);
+
+ // Once matching rules are fetched, data use tracking should start.
+ EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID1)).Times(1);
+ EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID1)).Times(0);
+ RegisterURLRegexes(app_package_names, domain_regexes, labels);
+ EXPECT_FALSE(data_use_tab_model_->data_use_ui_navigations_.get());
+ testing::Mock::VerifyAndClearExpectations(&mock_observer);
+
+ // Data use tracking should end.
+ EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID1)).Times(0);
+ EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID1)).Times(1);
+ data_use_tab_model_->OnNavigationEvent(kTabID1,
+ DataUseTabModel::TRANSITION_BOOKMARK,
+ GURL(std::string()), std::string());
+ EXPECT_FALSE(data_use_tab_model_->data_use_ui_navigations_.get());
+}
+
} // namespace android
} // namespace chrome

Powered by Google App Engine
This is Rietveld 408576698