172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sessions/session_service_test_helper.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_vector.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sessions/session_backend.h" 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sessions/session_id.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sessions/session_service.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sessions/session_types.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing base::Time; 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenSessionServiceTestHelper::SessionServiceTestHelper() {} 1772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 1872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenSessionServiceTestHelper::SessionServiceTestHelper(SessionService* service) 1972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen : service_(service) {} 2072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 2172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenSessionServiceTestHelper::~SessionServiceTestHelper() {} 2272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SessionServiceTestHelper::RestoreSessionFromCommands( 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::vector<SessionCommand*>& commands, 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::vector<SessionWindow*>* valid_windows) { 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch service()->RestoreSessionFromCommands(commands, valid_windows); 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SessionServiceTestHelper::PrepareTabInWindow(const SessionID& window_id, 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const SessionID& tab_id, 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int visual_index, 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool select) { 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch service()->SetTabWindow(window_id, tab_id); 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch service()->SetTabIndexInWindow(window_id, tab_id, visual_index); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (select) 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch service()->SetSelectedTabInWindow(window_id, visual_index); 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SessionServiceTestHelper::SetTabExtensionAppID( 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const SessionID& window_id, 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const SessionID& tab_id, 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string& extension_app_id) { 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch service()->SetTabExtensionAppID(window_id, tab_id, extension_app_id); 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Be sure and null out service to force closing the file. 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SessionServiceTestHelper::ReadWindows( 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::vector<SessionWindow*>* windows) { 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Time last_time; 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScopedVector<SessionCommand> read_commands; 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch backend()->ReadLastSessionCommandsImpl(&(read_commands.get())); 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch RestoreSessionFromCommands(read_commands.get(), windows); 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SessionServiceTestHelper::AssertTabEquals(SessionID& window_id, 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SessionID& tab_id, 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int visual_index, 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int nav_index, 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch size_t nav_count, 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const SessionTab& session_tab) { 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(window_id.id(), session_tab.window_id.id()); 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(tab_id.id(), session_tab.tab_id.id()); 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch AssertTabEquals(visual_index, nav_index, nav_count, session_tab); 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SessionServiceTestHelper::AssertTabEquals( 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int visual_index, 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int nav_index, 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch size_t nav_count, 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const SessionTab& session_tab) { 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(visual_index, session_tab.tab_visual_index); 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(nav_index, session_tab.current_navigation_index); 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(nav_count, session_tab.navigations.size()); 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SessionServiceTestHelper::AssertNavigationEquals( 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const TabNavigation& expected, 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const TabNavigation& actual) { 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(expected.virtual_url() == actual.virtual_url()); 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(expected.referrer(), actual.referrer()); 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(expected.title(), actual.title()); 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(expected.state(), actual.state()); 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(expected.transition(), actual.transition()); 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(expected.type_mask(), actual.type_mask()); 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid SessionServiceTestHelper::AssertSingleWindowWithSingleTab( 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::vector<SessionWindow*>& windows, 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch size_t nav_count) { 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(1U, windows.size()); 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1U, windows[0]->tabs.size()); 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(nav_count, windows[0]->tabs[0]->navigations.size()); 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochSessionBackend* SessionServiceTestHelper::backend() { 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return service_->backend(); 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 98