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