Index: components/sync_sessions/task_tracker_unittest.cc |
diff --git a/components/sync_sessions/task_tracker_unittest.cc b/components/sync_sessions/task_tracker_unittest.cc |
index 40fd0424d4d118b7904378366e637d8b8811ff64..5dc0c361b65a9ef50ee42ed335b2d09de3bec43b 100644 |
--- a/components/sync_sessions/task_tracker_unittest.cc |
+++ b/components/sync_sessions/task_tracker_unittest.cc |
@@ -10,6 +10,7 @@ |
#include "testing/gtest/include/gtest/gtest.h" |
using testing::ElementsAre; |
+using testing::ElementsAreArray; |
using testing::SizeIs; |
namespace sync_sessions { |
@@ -195,4 +196,73 @@ TEST(TaskTrackerTest, CreateSubTaskFromExcludedAncestorTask) { |
ElementsAre((kMaxNumTasksPerTab + 2) * 100)); |
} |
+TEST(TaskTrackerTest, CreateTabTasksFromSourceTab) { |
+ TaskTracker task_tracker; |
+ TabTasks* source_tab_tasks = task_tracker.GetTabTasks(kTab1); |
+ source_tab_tasks->UpdateWithNavigation(1, ui::PAGE_TRANSITION_LINK, 100); |
+ source_tab_tasks->UpdateWithNavigation(2, ui::PAGE_TRANSITION_LINK, 200); |
+ source_tab_tasks->UpdateWithNavigation(3, ui::PAGE_TRANSITION_TYPED, 300); |
+ source_tab_tasks->UpdateWithNavigation(4, ui::PAGE_TRANSITION_LINK, 400); |
+ source_tab_tasks->UpdateWithNavigation(5, ui::PAGE_TRANSITION_LINK, 500); |
+ |
+ TabTasks* target_tab_tasks = task_tracker.GetTabTasks(kTab2, kTab1); |
+ target_tab_tasks->UpdateWithNavigation(1, ui::PAGE_TRANSITION_LINK, 600); |
+ target_tab_tasks->UpdateWithNavigation(2, ui::PAGE_TRANSITION_LINK, 700); |
+ target_tab_tasks->UpdateWithNavigation(3, ui::PAGE_TRANSITION_TYPED, 800); |
+ |
+ EXPECT_THAT(target_tab_tasks->GetTaskIdsForNavigation(1), |
+ ElementsAre(300, 400, 500, 600)); |
+ EXPECT_THAT(target_tab_tasks->GetTaskIdsForNavigation(2), |
+ ElementsAre(300, 400, 500, 600, 700)); |
+ EXPECT_THAT(target_tab_tasks->GetTaskIdsForNavigation(3), ElementsAre(800)); |
+} |
+ |
+TEST(TaskTrackerTest, CreateTabTasksFromSourceTabAfterGoingBack) { |
+ TaskTracker task_tracker; |
+ TabTasks* source_tab_tasks = task_tracker.GetTabTasks(kTab1); |
+ source_tab_tasks->UpdateWithNavigation(1, ui::PAGE_TRANSITION_LINK, 100); |
+ source_tab_tasks->UpdateWithNavigation(2, ui::PAGE_TRANSITION_LINK, 200); |
+ source_tab_tasks->UpdateWithNavigation(3, ui::PAGE_TRANSITION_TYPED, 300); |
+ source_tab_tasks->UpdateWithNavigation(4, ui::PAGE_TRANSITION_LINK, 400); |
+ source_tab_tasks->UpdateWithNavigation(5, ui::PAGE_TRANSITION_LINK, 500); |
+ source_tab_tasks->UpdateWithNavigation( |
+ 2, |
+ ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | |
+ ui::PAGE_TRANSITION_FORWARD_BACK), |
+ 600); |
+ ASSERT_THAT(source_tab_tasks->GetTaskIdsForNavigation(2), |
+ ElementsAre(100, 200)); |
+ |
+ TabTasks* target_tab_tasks = task_tracker.GetTabTasks(kTab2, kTab1); |
+ target_tab_tasks->UpdateWithNavigation(1, ui::PAGE_TRANSITION_LINK, 700); |
+ |
+ EXPECT_THAT(target_tab_tasks->GetTaskIdsForNavigation(1), |
+ ElementsAre(100, 200, 700)); |
+} |
+ |
+TEST(TaskTrackerTest, CreateTabTasksFromSourceTabWithLimitedTaskNum) { |
+ const int kMaxNumTasksPerTab = 100; |
+ TaskTracker task_tracker; |
+ |
+ TabTasks* source_tab_tasks = task_tracker.GetTabTasks(kTab1); |
+ // Adding max number of tasks to tab1. |
+ for (int i = 0; i < kMaxNumTasksPerTab; i++) { |
+ source_tab_tasks->UpdateWithNavigation(i, ui::PAGE_TRANSITION_LINK, |
+ i * 100); |
+ } |
+ |
+ TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab2, kTab1); |
+ tab_tasks->UpdateWithNavigation(0, ui::PAGE_TRANSITION_LINK, |
+ kMaxNumTasksPerTab * 100); |
+ |
+ std::vector<int64_t> task_ids = tab_tasks->GetTaskIdsForNavigation(0); |
+ // The first task from source tab is excluded because of max task number |
+ // limit. |
+ int expected_task_ids[kMaxNumTasksPerTab]; |
+ for (int i = 0; i < kMaxNumTasksPerTab; i++) |
+ expected_task_ids[i] = (i + 1) * 100; |
+ EXPECT_THAT(task_ids, |
+ ElementsAreArray(expected_task_ids, kMaxNumTasksPerTab)); |
+} |
+ |
} // namespace sync_sessions |