1// Copyright (c) 2011 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 "chrome/browser/sessions/session_service_test_helper.h"
6
7#include "base/memory/scoped_vector.h"
8#include "chrome/browser/sessions/session_backend.h"
9#include "chrome/browser/sessions/session_id.h"
10#include "chrome/browser/sessions/session_service.h"
11#include "chrome/browser/sessions/session_types.h"
12#include "testing/gtest/include/gtest/gtest.h"
13
14using base::Time;
15
16SessionServiceTestHelper::SessionServiceTestHelper() {}
17
18SessionServiceTestHelper::SessionServiceTestHelper(SessionService* service)
19    : service_(service) {}
20
21SessionServiceTestHelper::~SessionServiceTestHelper() {}
22
23void SessionServiceTestHelper::RestoreSessionFromCommands(
24    const std::vector<SessionCommand*>& commands,
25    std::vector<SessionWindow*>* valid_windows) {
26  service()->RestoreSessionFromCommands(commands, valid_windows);
27}
28
29void SessionServiceTestHelper::PrepareTabInWindow(const SessionID& window_id,
30                                                  const SessionID& tab_id,
31                                                  int visual_index,
32                                                  bool select) {
33  service()->SetTabWindow(window_id, tab_id);
34  service()->SetTabIndexInWindow(window_id, tab_id, visual_index);
35  if (select)
36    service()->SetSelectedTabInWindow(window_id, visual_index);
37}
38
39void SessionServiceTestHelper::SetTabExtensionAppID(
40    const SessionID& window_id,
41    const SessionID& tab_id,
42    const std::string& extension_app_id) {
43  service()->SetTabExtensionAppID(window_id, tab_id, extension_app_id);
44}
45
46// Be sure and null out service to force closing the file.
47void SessionServiceTestHelper::ReadWindows(
48    std::vector<SessionWindow*>* windows) {
49  Time last_time;
50  ScopedVector<SessionCommand> read_commands;
51  backend()->ReadLastSessionCommandsImpl(&(read_commands.get()));
52  RestoreSessionFromCommands(read_commands.get(), windows);
53}
54
55void SessionServiceTestHelper::AssertTabEquals(SessionID& window_id,
56                                               SessionID& tab_id,
57                                               int visual_index,
58                                               int nav_index,
59                                               size_t nav_count,
60                                               const SessionTab& session_tab) {
61  EXPECT_EQ(window_id.id(), session_tab.window_id.id());
62  EXPECT_EQ(tab_id.id(), session_tab.tab_id.id());
63  AssertTabEquals(visual_index, nav_index, nav_count, session_tab);
64}
65
66void SessionServiceTestHelper::AssertTabEquals(
67    int visual_index,
68    int nav_index,
69    size_t nav_count,
70    const SessionTab& session_tab) {
71  EXPECT_EQ(visual_index, session_tab.tab_visual_index);
72  EXPECT_EQ(nav_index, session_tab.current_navigation_index);
73  ASSERT_EQ(nav_count, session_tab.navigations.size());
74}
75
76void SessionServiceTestHelper::AssertNavigationEquals(
77    const TabNavigation& expected,
78    const TabNavigation& actual) {
79  EXPECT_TRUE(expected.virtual_url() == actual.virtual_url());
80  EXPECT_EQ(expected.referrer(), actual.referrer());
81  EXPECT_EQ(expected.title(), actual.title());
82  EXPECT_EQ(expected.state(), actual.state());
83  EXPECT_EQ(expected.transition(), actual.transition());
84  EXPECT_EQ(expected.type_mask(), actual.type_mask());
85}
86
87void SessionServiceTestHelper::AssertSingleWindowWithSingleTab(
88    const std::vector<SessionWindow*>& windows,
89    size_t nav_count) {
90  ASSERT_EQ(1U, windows.size());
91  EXPECT_EQ(1U, windows[0]->tabs.size());
92  EXPECT_EQ(nav_count, windows[0]->tabs[0]->navigations.size());
93}
94
95SessionBackend* SessionServiceTestHelper::backend() {
96  return service_->backend();
97}
98