| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..40a1e795adeb79f227e3ad8ee002a951dbfe6195
|
| --- /dev/null
|
| +++ b/components/sync_sessions/task_tracker_unittest.cc
|
| @@ -0,0 +1,129 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "components/sync_sessions/task_tracker.h"
|
| +
|
| +#include <utility>
|
| +
|
| +#include "testing/gmock/include/gmock/gmock.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +using testing::ElementsAre;
|
| +
|
| +namespace sync_sessions {
|
| +
|
| +namespace {
|
| +const int kTab1 = 15;
|
| +const int kTab2 = 25;
|
| +} // namespace
|
| +
|
| +TEST(TaskTrackerTest, GetTabTasks) {
|
| + TaskTracker task_tracker;
|
| + TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
|
| + ASSERT_NE(tab_tasks, nullptr);
|
| + EXPECT_EQ(task_tracker.GetTabTasks(kTab1), tab_tasks);
|
| + EXPECT_NE(task_tracker.GetTabTasks(kTab2), tab_tasks);
|
| +}
|
| +
|
| +TEST(TaskTrackerTest, CleanTabTasks) {
|
| + TaskTracker task_tracker;
|
| + TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
|
| + ASSERT_NE(tab_tasks, nullptr);
|
| + ASSERT_FALSE(task_tracker.local_tab_tasks_map_.empty());
|
| +
|
| + task_tracker.CleanTabTasks(kTab1);
|
| + EXPECT_TRUE(task_tracker.local_tab_tasks_map_.empty());
|
| +}
|
| +
|
| +TEST(TaskTrackerTest, UpdateTasksWithMultipleClicks) {
|
| + TaskTracker task_tracker;
|
| + TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
|
| +
|
| + tab_tasks->UpdateWithNavigation(1, ui::PageTransition::PAGE_TRANSITION_TYPED,
|
| + 100);
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre(100));
|
| +
|
| + tab_tasks->UpdateWithNavigation(2, ui::PageTransition::PAGE_TRANSITION_LINK,
|
| + 200);
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre(100));
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(2), ElementsAre(100, 200));
|
| +
|
| + tab_tasks->UpdateWithNavigation(3, ui::PageTransition::PAGE_TRANSITION_LINK,
|
| + 300);
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre(100));
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(2), ElementsAre(100, 200));
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(3),
|
| + ElementsAre(100, 200, 300));
|
| +}
|
| +
|
| +TEST(TaskTrackerTest, UpdateTasksWithMultipleClicksAndTypes) {
|
| + TaskTracker task_tracker;
|
| + TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
|
| +
|
| + tab_tasks->UpdateWithNavigation(1, ui::PAGE_TRANSITION_LINK, 100);
|
| + tab_tasks->UpdateWithNavigation(2, ui::PAGE_TRANSITION_LINK, 200);
|
| + tab_tasks->UpdateWithNavigation(3, ui::PAGE_TRANSITION_LINK, 300);
|
| + tab_tasks->UpdateWithNavigation(4, ui::PAGE_TRANSITION_TYPED, 400);
|
| + tab_tasks->UpdateWithNavigation(5, ui::PAGE_TRANSITION_LINK, 500);
|
| + tab_tasks->UpdateWithNavigation(6, ui::PAGE_TRANSITION_TYPED, 600);
|
| + tab_tasks->UpdateWithNavigation(7, ui::PAGE_TRANSITION_LINK, 700);
|
| +
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre(100));
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(2), ElementsAre(100, 200));
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(3),
|
| + ElementsAre(100, 200, 300));
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(4), ElementsAre(400));
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(5), ElementsAre(400, 500));
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(6), ElementsAre(600));
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(7), ElementsAre(600, 700));
|
| +}
|
| +
|
| +TEST(TaskTrackerTest, UpdateTasksWithBackforwards) {
|
| + TaskTracker task_tracker;
|
| + TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
|
| +
|
| + tab_tasks->UpdateWithNavigation(1, ui::PAGE_TRANSITION_TYPED, 100);
|
| + tab_tasks->UpdateWithNavigation(2, ui::PAGE_TRANSITION_LINK, 200);
|
| + tab_tasks->UpdateWithNavigation(3, ui::PAGE_TRANSITION_LINK, 300);
|
| +
|
| + tab_tasks->UpdateWithNavigation(
|
| + 1,
|
| + ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED |
|
| + ui::PAGE_TRANSITION_FORWARD_BACK),
|
| + 400);
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre(100));
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(2), ElementsAre(100, 200));
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(3),
|
| + ElementsAre(100, 200, 300));
|
| +
|
| + tab_tasks->UpdateWithNavigation(
|
| + 3,
|
| + ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK |
|
| + ui::PAGE_TRANSITION_FORWARD_BACK),
|
| + 500);
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre(100));
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(2), ElementsAre(100, 200));
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(3),
|
| + ElementsAre(100, 200, 300));
|
| +}
|
| +
|
| +TEST(TaskTrackerTest, UpdateWithNavigationsWithBackAndForkedNavigation) {
|
| + TaskTracker task_tracker;
|
| + TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
|
| + tab_tasks->UpdateWithNavigation(1, ui::PAGE_TRANSITION_LINK, 100);
|
| + tab_tasks->UpdateWithNavigation(2, ui::PAGE_TRANSITION_LINK, 200);
|
| + tab_tasks->UpdateWithNavigation(3, ui::PAGE_TRANSITION_LINK, 300);
|
| + tab_tasks->UpdateWithNavigation(
|
| + 1,
|
| + ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK |
|
| + ui::PAGE_TRANSITION_FORWARD_BACK),
|
| + 400);
|
| + tab_tasks->UpdateWithNavigation(2, ui::PAGE_TRANSITION_LINK, 500);
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(1), ElementsAre(100));
|
| + EXPECT_THAT(tab_tasks->GetTaskIdsForNavigation(2), ElementsAre(100, 500));
|
| + // We don't track navigation at index 3 any more, and it's out of scope now.
|
| + EXPECT_THAT(tab_tasks->GetNavigationsCount(), 3);
|
| +}
|
| +
|
| +} // namespace sync_sessions
|
|
|