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

Side by Side Diff: components/sync_sessions/task_tracker_unittest.cc

Issue 2776633003: Add taskid for navigation, created in session sync (Closed)
Patch Set: Add taskids for navigation, created in session sync. Created 3 years, 8 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 unified diff | Download patch
« no previous file with comments | « components/sync_sessions/task_tracker.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/sync_sessions/task_tracker.h"
6
7 #include <utility>
8
9 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 using testing::ElementsAre;
13 using testing::SizeIs;
14
15 namespace sync_sessions {
16
17 namespace {
18 const int kTab1 = 15;
19 const int kTab2 = 25;
20 } // namespace
21
22 TEST(TaskTrackerTest, GetTabTasks) {
23 TaskTracker task_tracker;
24 TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
25 ASSERT_NE(tab_tasks, nullptr);
26 EXPECT_EQ(task_tracker.GetTabTasks(kTab1), tab_tasks);
27 EXPECT_NE(task_tracker.GetTabTasks(kTab2), tab_tasks);
28 }
29
30 TEST(TaskTrackerTest, CleanTabTasks) {
31 TaskTracker task_tracker;
32 TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
33 ASSERT_NE(tab_tasks, nullptr);
34 ASSERT_FALSE(task_tracker.local_tab_tasks_map_.empty());
35
36 task_tracker.CleanTabTasks(kTab1);
37 EXPECT_TRUE(task_tracker.local_tab_tasks_map_.empty());
38 }
39
40 TEST(TaskTrackerTest, UpdateTasksWithMultipleClicks) {
41 TaskTracker task_tracker;
42 TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
43
44 tab_tasks->UpdateWithNavigation(1, ui::PageTransition::PAGE_TRANSITION_TYPED,
45 100);
46 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre(100));
47
48 tab_tasks->UpdateWithNavigation(2, ui::PageTransition::PAGE_TRANSITION_LINK,
49 200);
50 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre(100));
51 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(2), ElementsAre(100, 200));
52
53 tab_tasks->UpdateWithNavigation(3, ui::PageTransition::PAGE_TRANSITION_LINK,
54 300);
55 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre(100));
56 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(2), ElementsAre(100, 200));
57 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(3),
58 ElementsAre(100, 200, 300));
59 }
60
61 TEST(TaskTrackerTest, UpdateTasksWithMultipleClicksAndTypes) {
62 TaskTracker task_tracker;
63 TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
64
65 tab_tasks->UpdateWithNavigation(1, ui::PAGE_TRANSITION_LINK, 100);
66 tab_tasks->UpdateWithNavigation(2, ui::PAGE_TRANSITION_LINK, 200);
67 tab_tasks->UpdateWithNavigation(3, ui::PAGE_TRANSITION_LINK, 300);
68 tab_tasks->UpdateWithNavigation(4, ui::PAGE_TRANSITION_TYPED, 400);
69 tab_tasks->UpdateWithNavigation(5, ui::PAGE_TRANSITION_LINK, 500);
70 tab_tasks->UpdateWithNavigation(6, ui::PAGE_TRANSITION_TYPED, 600);
71 tab_tasks->UpdateWithNavigation(7, ui::PAGE_TRANSITION_LINK, 700);
72
73 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre(100));
74 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(2), ElementsAre(100, 200));
75 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(3),
76 ElementsAre(100, 200, 300));
77 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(4), ElementsAre(400));
78 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(5), ElementsAre(400, 500));
79 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(6), ElementsAre(600));
80 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(7), ElementsAre(600, 700));
81 }
82
83 TEST(TaskTrackerTest, UpdateTasksWithBackforwards) {
84 TaskTracker task_tracker;
85 TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
86
87 tab_tasks->UpdateWithNavigation(1, ui::PAGE_TRANSITION_TYPED, 100);
88 tab_tasks->UpdateWithNavigation(2, ui::PAGE_TRANSITION_LINK, 200);
89 tab_tasks->UpdateWithNavigation(3, ui::PAGE_TRANSITION_LINK, 300);
90
91 tab_tasks->UpdateWithNavigation(
92 1,
93 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED |
94 ui::PAGE_TRANSITION_FORWARD_BACK),
95 400);
96 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre(100));
97 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(2), ElementsAre(100, 200));
98 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(3),
99 ElementsAre(100, 200, 300));
100
101 tab_tasks->UpdateWithNavigation(
102 3,
103 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK |
104 ui::PAGE_TRANSITION_FORWARD_BACK),
105 500);
106 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre(100));
107 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(2), ElementsAre(100, 200));
108 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(3),
109 ElementsAre(100, 200, 300));
110 }
111
112 TEST(TaskTrackerTest, UpdateWithNavigationsWithBackAndForkedNavigation) {
113 TaskTracker task_tracker;
114 TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
115 tab_tasks->UpdateWithNavigation(1, ui::PAGE_TRANSITION_LINK, 100);
116 tab_tasks->UpdateWithNavigation(2, ui::PAGE_TRANSITION_LINK, 200);
117 tab_tasks->UpdateWithNavigation(3, ui::PAGE_TRANSITION_LINK, 300);
118 tab_tasks->UpdateWithNavigation(
119 1,
120 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK |
121 ui::PAGE_TRANSITION_FORWARD_BACK),
122 400);
123 tab_tasks->UpdateWithNavigation(2, ui::PAGE_TRANSITION_LINK, 500);
124 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre(100));
125 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(2), ElementsAre(100, 500));
126 // We don't track navigation at index 3 any more, and it's out of scope now.
127 EXPECT_THAT(tab_tasks->GetNavigationsCount(), 3);
128 }
129
130 TEST(TaskTrackerTest, LimitMaxNumberOfTasksPerTab) {
131 int kMaxNumTasksPerTab = 100;
132 TaskTracker task_tracker;
133 TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
134
135 // Reaching max number of tasks for a tab.
136 for (int i = 0; i < kMaxNumTasksPerTab; i++) {
137 tab_tasks->UpdateWithNavigation(i, ui::PAGE_TRANSITION_LINK, i * 100);
138 }
139
140 tab_tasks->UpdateWithNavigation(kMaxNumTasksPerTab, ui::PAGE_TRANSITION_LINK,
141 kMaxNumTasksPerTab * 100);
142
143 ASSERT_THAT(tab_tasks->task_ids_, SizeIs(kMaxNumTasksPerTab));
144 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(0), ElementsAre());
145 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre(100));
146 std::vector<int64_t> task_ids =
147 tab_tasks->GetTaskIdsForNavigation(kMaxNumTasksPerTab);
148 EXPECT_THAT(task_ids, SizeIs(kMaxNumTasksPerTab));
149 EXPECT_EQ(task_ids[0], 100);
150 EXPECT_EQ(task_ids[kMaxNumTasksPerTab - 1], kMaxNumTasksPerTab * 100);
151
152 tab_tasks->UpdateWithNavigation(kMaxNumTasksPerTab + 1,
153 ui::PAGE_TRANSITION_LINK,
154 (kMaxNumTasksPerTab + 1) * 100);
155
156 ASSERT_THAT(tab_tasks->task_ids_, SizeIs(kMaxNumTasksPerTab));
157 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(0), ElementsAre());
158 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre());
159 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(2), ElementsAre(200));
160 task_ids = tab_tasks->GetTaskIdsForNavigation(kMaxNumTasksPerTab + 1);
161 EXPECT_THAT(task_ids, SizeIs(kMaxNumTasksPerTab));
162 EXPECT_EQ(task_ids[0], 200);
163 EXPECT_EQ(task_ids[kMaxNumTasksPerTab - 1], (kMaxNumTasksPerTab + 1) * 100);
164 }
165
166 TEST(TaskTrackerTest, CreateSubTaskFromExcludedAncestorTask) {
167 int kMaxNumTasksPerTab = 100;
168 TaskTracker task_tracker;
169 TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
170
171 // Reaching max number of tasks for a tab.
172 for (int i = 0; i < kMaxNumTasksPerTab; i++) {
173 tab_tasks->UpdateWithNavigation(i, ui::PAGE_TRANSITION_LINK, i * 100);
174 }
175
176 tab_tasks->UpdateWithNavigation(kMaxNumTasksPerTab, ui::PAGE_TRANSITION_LINK,
177 kMaxNumTasksPerTab * 100);
178 ASSERT_EQ(tab_tasks->excluded_navigation_num_, 1);
179 ASSERT_EQ(tab_tasks->current_navigation_index_, kMaxNumTasksPerTab);
180
181 tab_tasks->UpdateWithNavigation(
182 0,
183 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK |
184 ui::PAGE_TRANSITION_FORWARD_BACK),
185 (kMaxNumTasksPerTab + 1) * 100);
186 ASSERT_EQ(tab_tasks->excluded_navigation_num_, 1);
187 ASSERT_EQ(tab_tasks->current_navigation_index_, 0);
188
189 tab_tasks->UpdateWithNavigation(1, ui::PAGE_TRANSITION_LINK,
190 (kMaxNumTasksPerTab + 2) * 100);
191 ASSERT_THAT(tab_tasks->task_ids_, SizeIs(1));
192 ASSERT_EQ(tab_tasks->GetNavigationsCount(), 2);
193 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(0), ElementsAre());
194 EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1),
195 ElementsAre((kMaxNumTasksPerTab + 2) * 100));
196 }
197
198 } // namespace sync_sessions
OLDNEW
« no previous file with comments | « components/sync_sessions/task_tracker.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698