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

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

Issue 1539763004: Miscellaneous fixes to DataUse UI (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased, addressed megjablon comments Created 5 years 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_ui_tab_model_unittest.cc
diff --git a/chrome/browser/android/data_usage/data_use_ui_tab_model_unittest.cc b/chrome/browser/android/data_usage/data_use_ui_tab_model_unittest.cc
index d1a73f44d700457dfd67aaea854cb13dcbde4f78..c492bf941ec9d96404062eafec3e2460ae2089d6 100644
--- a/chrome/browser/android/data_usage/data_use_ui_tab_model_unittest.cc
+++ b/chrome/browser/android/data_usage/data_use_ui_tab_model_unittest.cc
@@ -30,6 +30,9 @@ namespace android {
namespace {
+const char kFooLabel[] = "foo_label";
+const char kFooPackage[] = "com.foo";
+
class TestDataUseTabModel : public DataUseTabModel {
public:
TestDataUseTabModel() {}
@@ -96,9 +99,6 @@ class DataUseUITabModelTest : public testing::Test {
// Tests that DataUseTabModel is notified of tab closure and navigation events,
// and DataUseTabModel notifies DataUseUITabModel.
TEST_F(DataUseUITabModelTest, ReportTabEventsTest) {
- const char kFooLabel[] = "foo_label";
- const char kFooPackage[] = "com.foo";
-
std::vector<std::string> url_regexes;
url_regexes.push_back(
"http://www[.]foo[.]com/#q=.*|https://www[.]foo[.]com/#q=.*");
@@ -129,9 +129,6 @@ TEST_F(DataUseUITabModelTest, ReportTabEventsTest) {
data_use_ui_tab_model()->ReportBrowserNavigation(
GURL("https://www.foo.com/#q=abc"), tests[i].transition_type,
foo_tab_id);
- // Wait for DataUseUITabModel to notify DataUseTabModel, which should notify
- // DataUseUITabModel back.
- base::RunLoop().RunUntilIdle();
// |data_use_ui_tab_model| should receive callback about starting of
// tracking of data usage for |foo_tab_id|.
@@ -150,7 +147,6 @@ TEST_F(DataUseUITabModelTest, ReportTabEventsTest) {
// Report closure of tab.
data_use_ui_tab_model()->ReportTabClosure(foo_tab_id);
- base::RunLoop().RunUntilIdle();
// DataUse object should not be labeled.
EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id));
@@ -163,8 +159,7 @@ TEST_F(DataUseUITabModelTest, ReportTabEventsTest) {
const SessionID::id_type bar_tab_id = foo_tab_id + 1;
EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(bar_tab_id));
data_use_ui_tab_model()->ReportCustomTabInitialNavigation(
- bar_tab_id, std::string(), kFooPackage);
- base::RunLoop().RunUntilIdle();
+ bar_tab_id, kFooPackage, std::string());
// |data_use_ui_tab_model| should receive callback about starting of
// tracking of data usage for |bar_tab_id|.
@@ -173,7 +168,6 @@ TEST_F(DataUseUITabModelTest, ReportTabEventsTest) {
EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(bar_tab_id));
data_use_ui_tab_model()->ReportTabClosure(bar_tab_id);
- base::RunLoop().RunUntilIdle();
EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(bar_tab_id));
}
@@ -185,7 +179,6 @@ TEST_F(DataUseUITabModelTest, EntranceExitState) {
// HasDataUseTrackingStarted should return true only once.
data_use_tab_model()->NotifyObserversOfTrackingStarting(kFooTabId);
- base::RunLoop().RunUntilIdle();
EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingStarted(kFooTabId));
EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(kFooTabId));
EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(kFooTabId));
@@ -195,7 +188,6 @@ TEST_F(DataUseUITabModelTest, EntranceExitState) {
// HasDataUseTrackingEnded should return true only once.
data_use_tab_model()->NotifyObserversOfTrackingEnding(kFooTabId);
- base::RunLoop().RunUntilIdle();
EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(kFooTabId));
EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingEnded(kFooTabId));
EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(kFooTabId));
@@ -203,26 +195,21 @@ TEST_F(DataUseUITabModelTest, EntranceExitState) {
// The tab enters the tracking state again.
data_use_tab_model()->NotifyObserversOfTrackingStarting(kFooTabId);
- base::RunLoop().RunUntilIdle();
EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingStarted(kFooTabId));
EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(kFooTabId));
// The tab exits the tracking state.
data_use_tab_model()->NotifyObserversOfTrackingEnding(kFooTabId);
- base::RunLoop().RunUntilIdle();
EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(kFooTabId));
// The tab enters the tracking state again.
data_use_tab_model()->NotifyObserversOfTrackingStarting(kFooTabId);
- base::RunLoop().RunUntilIdle();
data_use_tab_model()->NotifyObserversOfTrackingStarting(kFooTabId);
- base::RunLoop().RunUntilIdle();
EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingStarted(kFooTabId));
EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(kFooTabId));
// ShowExit should return true only once.
data_use_tab_model()->NotifyObserversOfTrackingEnding(kBarTabId);
- base::RunLoop().RunUntilIdle();
EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(kBarTabId));
EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingEnded(kBarTabId));
EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(kBarTabId));
@@ -233,12 +220,106 @@ TEST_F(DataUseUITabModelTest, EntranceExitState) {
// HasDataUseTrackingStarted/Ended should return false for closed tabs.
data_use_tab_model()->NotifyObserversOfTrackingStarting(kBazTabId);
- base::RunLoop().RunUntilIdle();
data_use_ui_tab_model()->ReportTabClosure(kBazTabId);
EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(kBazTabId));
EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(kBazTabId));
}
+// Tests if the Entrance/Exit UI state is tracked correctly.
+TEST_F(DataUseUITabModelTest, EntranceExitStateWithDialogBox) {
megjablon 2015/12/29 00:38:24 Maybe name EntraceExitStateForDialog?
tbansal1 2015/12/29 01:18:41 Done.
+ const SessionID::id_type kFooTabId = 1;
+
+ std::vector<std::string> url_regexes;
+ url_regexes.push_back(
+ "http://www[.]foo[.]com/#q=.*|https://www[.]foo[.]com/#q=.*");
+ RegisterURLRegexes(std::vector<std::string>(url_regexes.size(), kFooPackage),
+ url_regexes,
+ std::vector<std::string>(url_regexes.size(), kFooLabel));
+
+ SessionID::id_type foo_tab_id = kFooTabId;
+
+ const struct {
+ // True if a dialog box was shown to the user. It may not be shown if the
+ // user has previously selected the option to opt out.
+ bool continue_dialog_box_shown;
+ bool user_proceeded_with_navigation;
+ } tests[] = {
+ {false, false}, {true, true}, {true, false},
+ };
+
+ for (size_t i = 0; i < arraysize(tests); ++i) {
+ // Start a new tab.
+ ++foo_tab_id;
+ data_use_ui_tab_model()->ReportBrowserNavigation(
+ GURL("https://www.foo.com/#q=abc"), ui::PAGE_TRANSITION_GENERATED,
+ foo_tab_id);
+
+ // |data_use_ui_tab_model| should receive callback about starting of
+ // tracking of data usage for |foo_tab_id|.
+ EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id))
+ << i;
+ EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id))
+ << i;
+ EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id))
+ << i;
+
+ std::string got_label;
+ data_use_tab_model()->GetLabelForTabAtTime(
+ foo_tab_id, base::TimeTicks::Now(), &got_label);
+ EXPECT_EQ(kFooLabel, got_label) << i;
+
+ // Tab enters non-tracking state.
+ data_use_ui_tab_model()->ReportBrowserNavigation(
+ GURL("https://www.bar.com/#q=abc"),
+ ui::PageTransition::PAGE_TRANSITION_TYPED, foo_tab_id);
+
+ EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id))
+ << i;
+ EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id))
+ << i;
+
+ // Tab enters tracking state.
+ data_use_ui_tab_model()->ReportBrowserNavigation(
+ GURL("https://www.foo.com/#q=abc"), ui::PAGE_TRANSITION_GENERATED,
+ foo_tab_id);
+
+ EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id))
+ << i;
+
+ // Tab may enter non-tracking state.
+ EXPECT_TRUE(data_use_ui_tab_model()->WouldDataUseTrackingEnd(
+ "https://www.bar.com/#q=abc", ui::PageTransition::PAGE_TRANSITION_TYPED,
+ foo_tab_id));
+ if (tests[i].continue_dialog_box_shown &&
+ tests[i].user_proceeded_with_navigation) {
+ data_use_ui_tab_model()->UserClickedContinueOnDialogBox(foo_tab_id);
+ }
+
+ if (tests[i].user_proceeded_with_navigation) {
+ data_use_ui_tab_model()->ReportBrowserNavigation(
+ GURL("https://www.bar.com/#q=abc"),
+ ui::PageTransition::PAGE_TRANSITION_TYPED, foo_tab_id);
+ }
+
+ const std::string expected_label =
+ tests[i].user_proceeded_with_navigation ? "" : kFooLabel;
+ data_use_tab_model()->GetLabelForTabAtTime(
+ foo_tab_id, base::TimeTicks::Now(), &got_label);
+ EXPECT_EQ(expected_label, got_label) << i;
+
+ if (tests[i].user_proceeded_with_navigation) {
+ // No UI element should be shown afterwards if the dialog box was shown
+ // before.
+ EXPECT_NE(tests[i].continue_dialog_box_shown,
+ data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id))
+ << i;
+ } else {
+ EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id))
+ << i;
+ }
+ }
+}
+
// Checks if page transition type is converted correctly.
TEST_F(DataUseUITabModelTest, ConvertTransitionType) {
DataUseTabModel::TransitionType transition_type;

Powered by Google App Engine
This is Rietveld 408576698