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

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 Created 4 years, 12 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
« no previous file with comments | « chrome/browser/android/data_usage/data_use_ui_tab_model.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..63987a738e2df495153bc9bd14e6c12e396a9609 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,18 +129,18 @@ 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|.
EXPECT_EQ(!tests[i].expected_label.empty(),
- data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id))
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(
+ foo_tab_id))
<< i;
- EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id))
+ EXPECT_FALSE(data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(
+ foo_tab_id))
<< i;
- EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id))
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingEnded(foo_tab_id))
<< i;
std::string got_label;
@@ -150,10 +150,10 @@ 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));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingEnded(foo_tab_id));
data_use_tab_model()->GetLabelForTabAtTime(
foo_tab_id, base::TimeTicks::Now() + base::TimeDelta::FromMinutes(10),
&got_label);
@@ -161,20 +161,23 @@ 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));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(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|.
- EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingStarted(bar_tab_id));
- EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(bar_tab_id));
- EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(bar_tab_id));
+ EXPECT_TRUE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(bar_tab_id));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(bar_tab_id));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingEnded(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));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingEnded(bar_tab_id));
}
// Tests if the Entrance/Exit UI state is tracked correctly.
@@ -183,60 +186,176 @@ TEST_F(DataUseUITabModelTest, EntranceExitState) {
const SessionID::id_type kBarTabId = 2;
const SessionID::id_type kBazTabId = 3;
- // HasDataUseTrackingStarted should return true only once.
+ // CheckAndResetDataUseTrackingStarted 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));
-
- EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(kBarTabId));
- EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(kBarTabId));
-
- // HasDataUseTrackingEnded should return true only once.
+ EXPECT_TRUE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(kFooTabId));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(kFooTabId));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingEnded(kFooTabId));
+
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(kBarTabId));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingEnded(kBarTabId));
+
+ // CheckAndResetDataUseTrackingEnded 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));
- EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(kFooTabId));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(kFooTabId));
+ EXPECT_TRUE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingEnded(kFooTabId));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingEnded(kFooTabId));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(kFooTabId));
// 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));
+ EXPECT_TRUE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(kFooTabId));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(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));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(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));
+ EXPECT_TRUE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(kFooTabId));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(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));
- EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(kBarTabId));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(kBarTabId));
+ EXPECT_TRUE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingEnded(kBarTabId));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingEnded(kBarTabId));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(kBarTabId));
data_use_ui_tab_model()->ReportTabClosure(kFooTabId);
data_use_ui_tab_model()->ReportTabClosure(kBarTabId);
- // HasDataUseTrackingStarted/Ended should return false for closed tabs.
+ // CheckAndResetDataUseTrackingStarted/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));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(kBazTabId));
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingEnded(kBazTabId));
+}
+
+// Tests if the Entrance/Exit UI state is tracked correctly.
+TEST_F(DataUseUITabModelTest, EntraceExitStateForDialog) {
+ 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()->CheckAndResetDataUseTrackingStarted(
+ foo_tab_id))
+ << i;
+ EXPECT_FALSE(data_use_ui_tab_model()->CheckAndResetDataUseTrackingStarted(
+ foo_tab_id))
+ << i;
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingEnded(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()->CheckAndResetDataUseTrackingEnded(foo_tab_id))
+ << i;
+ EXPECT_FALSE(
+ data_use_ui_tab_model()->CheckAndResetDataUseTrackingEnded(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()->CheckAndResetDataUseTrackingStarted(
+ 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()->CheckAndResetDataUseTrackingEnded(
+ foo_tab_id))
+ << i;
+ } else {
+ EXPECT_FALSE(data_use_ui_tab_model()->CheckAndResetDataUseTrackingEnded(
+ foo_tab_id))
+ << i;
+ }
+ }
}
// Checks if page transition type is converted correctly.
« no previous file with comments | « chrome/browser/android/data_usage/data_use_ui_tab_model.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698