| 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..36fa36978afcf48c9bee5155120ea61cc82da594
|
| --- /dev/null
|
| +++ b/components/sync_sessions/task_tracker_unittest.cc
|
| @@ -0,0 +1,161 @@
|
| +// 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 "base/test/simple_test_clock.h"
|
| +#include "base/time/time.h"
|
| +#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);
|
| + ASSERT_EQ(task_tracker.GetTabTasks(kTab1), tab_tasks);
|
| + ASSERT_NE(task_tracker.GetTabTasks(kTab2), tab_tasks);
|
| +}
|
| +
|
| +TEST(TaskTrackerTest, UpdateTasksWithMultipleClicks) {
|
| + std::unique_ptr<base::SimpleTestClock> clock =
|
| + base::MakeUnique<base::SimpleTestClock>();
|
| + base::SimpleTestClock* clock_ptr = clock.get();
|
| + TaskTracker task_tracker(std::move(clock));
|
| + TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
|
| +
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(100));
|
| + tab_tasks->UpdateWithNavigation(1, ui::PageTransition::PAGE_TRANSITION_TYPED);
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(1),
|
| + ElementsAre(100));
|
| +
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(200));
|
| + tab_tasks->UpdateWithNavigation(2, ui::PageTransition::PAGE_TRANSITION_LINK);
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(1),
|
| + ElementsAre(100));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(2),
|
| + ElementsAre(100, 200));
|
| +
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(300));
|
| + tab_tasks->UpdateWithNavigation(3, ui::PageTransition::PAGE_TRANSITION_LINK);
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(1),
|
| + ElementsAre(100));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(2),
|
| + ElementsAre(100, 200));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(3),
|
| + ElementsAre(100, 200, 300));
|
| +}
|
| +
|
| +TEST(TaskTrackerTest, UpdateTasksWithMultipleClicksAndTypes) {
|
| + std::unique_ptr<base::SimpleTestClock> clock =
|
| + base::MakeUnique<base::SimpleTestClock>();
|
| + base::SimpleTestClock* clock_ptr = clock.get();
|
| + TaskTracker task_tracker(std::move(clock));
|
| + TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
|
| +
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(100));
|
| + tab_tasks->UpdateWithNavigation(1, ui::PAGE_TRANSITION_LINK);
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(200));
|
| + tab_tasks->UpdateWithNavigation(2, ui::PAGE_TRANSITION_LINK);
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(300));
|
| + tab_tasks->UpdateWithNavigation(3, ui::PAGE_TRANSITION_LINK);
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(400));
|
| + tab_tasks->UpdateWithNavigation(4, ui::PAGE_TRANSITION_TYPED);
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(500));
|
| + tab_tasks->UpdateWithNavigation(5, ui::PAGE_TRANSITION_LINK);
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(600));
|
| + tab_tasks->UpdateWithNavigation(6, ui::PAGE_TRANSITION_TYPED);
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(700));
|
| + tab_tasks->UpdateWithNavigation(7, ui::PAGE_TRANSITION_LINK);
|
| +
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(1),
|
| + ElementsAre(100));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(2),
|
| + ElementsAre(100, 200));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(3),
|
| + ElementsAre(100, 200, 300));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(4),
|
| + ElementsAre(400));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(5),
|
| + ElementsAre(400, 500));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(6),
|
| + ElementsAre(600));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(7),
|
| + ElementsAre(600, 700));
|
| +}
|
| +
|
| +TEST(TaskTrackerTest, UpdateTasksWithBackforwards) {
|
| + std::unique_ptr<base::SimpleTestClock> clock =
|
| + base::MakeUnique<base::SimpleTestClock>();
|
| + base::SimpleTestClock* clock_ptr = clock.get();
|
| + TaskTracker task_tracker(std::move(clock));
|
| + TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
|
| +
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(100));
|
| + tab_tasks->UpdateWithNavigation(1, ui::PAGE_TRANSITION_TYPED);
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(200));
|
| + tab_tasks->UpdateWithNavigation(2, ui::PAGE_TRANSITION_LINK);
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(300));
|
| + tab_tasks->UpdateWithNavigation(3, ui::PAGE_TRANSITION_LINK);
|
| +
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(400));
|
| + tab_tasks->UpdateWithNavigation(
|
| + 1, ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED |
|
| + ui::PAGE_TRANSITION_FORWARD_BACK));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(1),
|
| + ElementsAre(100));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(2),
|
| + ElementsAre(100, 200));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(3),
|
| + ElementsAre(100, 200, 300));
|
| +
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(500));
|
| + tab_tasks->UpdateWithNavigation(
|
| + 3, ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK |
|
| + ui::PAGE_TRANSITION_FORWARD_BACK));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(1),
|
| + ElementsAre(100));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(2),
|
| + ElementsAre(100, 200));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(3),
|
| + ElementsAre(100, 200, 300));
|
| +}
|
| +
|
| +TEST(TaskTrackerTest, UpdateWithNavigationsWithBackAndForkedNavigation) {
|
| + std::unique_ptr<base::SimpleTestClock> clock =
|
| + base::MakeUnique<base::SimpleTestClock>();
|
| + base::SimpleTestClock* clock_ptr = clock.get();
|
| + TaskTracker task_tracker(std::move(clock));
|
| + TabTasks* tab_tasks = task_tracker.GetTabTasks(kTab1);
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(100));
|
| + tab_tasks->UpdateWithNavigation(1, ui::PAGE_TRANSITION_LINK);
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(200));
|
| + tab_tasks->UpdateWithNavigation(2, ui::PAGE_TRANSITION_LINK);
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(300));
|
| + tab_tasks->UpdateWithNavigation(3, ui::PAGE_TRANSITION_LINK);
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(400));
|
| + tab_tasks->UpdateWithNavigation(
|
| + 1, ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK |
|
| + ui::PAGE_TRANSITION_FORWARD_BACK));
|
| + clock_ptr->SetNow(base::Time::FromInternalValue(500));
|
| + tab_tasks->UpdateWithNavigation(2, ui::PAGE_TRANSITION_LINK);
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(1),
|
| + ElementsAre(100));
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(2),
|
| + ElementsAre(100, 500));
|
| + // We don't track navigation at index 3 any more, so it's unknown now.
|
| + ASSERT_THAT(tab_tasks->RootToSelfTaskIdsOfNavigationIndex(3), ElementsAre());
|
| +}
|
| +
|
| +} // namespace sync_sessions
|
|
|