1 // Copyright (c) 2012 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 "base/message_loop/message_loop.h" 9 #include "chrome/browser/sessions/session_backend.h" 10 #include "chrome/browser/sessions/session_service.h" 11 #include "chrome/browser/sessions/session_types.h" 12 #include "components/sessions/serialized_navigation_entry_test_helper.h" 13 #include "components/sessions/session_id.h" 14 #include "content/public/browser/browser_thread.h" 15 #include "content/public/test/test_utils.h" 16 #include "testing/gtest/include/gtest/gtest.h" 17 18 using base::Time; 19 20 SessionServiceTestHelper::SessionServiceTestHelper() {} 21 22 SessionServiceTestHelper::SessionServiceTestHelper(SessionService* service) 23 : service_(service) {} 24 25 SessionServiceTestHelper::~SessionServiceTestHelper() {} 26 27 void SessionServiceTestHelper::PrepareTabInWindow(const SessionID& window_id, 28 const SessionID& tab_id, 29 int visual_index, 30 bool select) { 31 service()->SetTabWindow(window_id, tab_id); 32 service()->SetTabIndexInWindow(window_id, tab_id, visual_index); 33 if (select) 34 service()->SetSelectedTabInWindow(window_id, visual_index); 35 } 36 37 void SessionServiceTestHelper::SetTabExtensionAppID( 38 const SessionID& window_id, 39 const SessionID& tab_id, 40 const std::string& extension_app_id) { 41 service()->SetTabExtensionAppID(window_id, tab_id, extension_app_id); 42 } 43 44 void SessionServiceTestHelper::SetTabUserAgentOverride( 45 const SessionID& window_id, 46 const SessionID& tab_id, 47 const std::string& user_agent_override) { 48 service()->SetTabUserAgentOverride(window_id, tab_id, user_agent_override); 49 } 50 51 void SessionServiceTestHelper::SetForceBrowserNotAliveWithNoWindows( 52 bool force_browser_not_alive_with_no_windows) { 53 service()->force_browser_not_alive_with_no_windows_ = 54 force_browser_not_alive_with_no_windows; 55 } 56 57 // Be sure and null out service to force closing the file. 58 void SessionServiceTestHelper::ReadWindows( 59 std::vector<SessionWindow*>* windows, 60 SessionID::id_type* active_window_id) { 61 Time last_time; 62 ScopedVector<SessionCommand> read_commands; 63 backend()->ReadLastSessionCommandsImpl(&(read_commands.get())); 64 service()->RestoreSessionFromCommands( 65 read_commands.get(), windows, active_window_id); 66 } 67 68 void SessionServiceTestHelper::AssertTabEquals(const SessionID& window_id, 69 const SessionID& tab_id, 70 int visual_index, 71 int nav_index, 72 size_t nav_count, 73 const SessionTab& session_tab) { 74 EXPECT_EQ(window_id.id(), session_tab.window_id.id()); 75 EXPECT_EQ(tab_id.id(), session_tab.tab_id.id()); 76 AssertTabEquals(visual_index, nav_index, nav_count, session_tab); 77 } 78 79 void SessionServiceTestHelper::AssertTabEquals( 80 int visual_index, 81 int nav_index, 82 size_t nav_count, 83 const SessionTab& session_tab) { 84 EXPECT_EQ(visual_index, session_tab.tab_visual_index); 85 EXPECT_EQ(nav_index, session_tab.current_navigation_index); 86 ASSERT_EQ(nav_count, session_tab.navigations.size()); 87 } 88 89 // TODO(sky): nuke this and change to call directly into 90 // SerializedNavigationEntryTestHelper. 91 void SessionServiceTestHelper::AssertNavigationEquals( 92 const sessions::SerializedNavigationEntry& expected, 93 const sessions::SerializedNavigationEntry& actual) { 94 sessions::SerializedNavigationEntryTestHelper::ExpectNavigationEquals( 95 expected, actual); 96 } 97 98 void SessionServiceTestHelper::AssertSingleWindowWithSingleTab( 99 const std::vector<SessionWindow*>& windows, 100 size_t nav_count) { 101 ASSERT_EQ(1U, windows.size()); 102 EXPECT_EQ(1U, windows[0]->tabs.size()); 103 EXPECT_EQ(nav_count, windows[0]->tabs[0]->navigations.size()); 104 } 105 106 SessionBackend* SessionServiceTestHelper::backend() { 107 return service_->backend(); 108 } 109 110 void SessionServiceTestHelper::SetService(SessionService* service) { 111 service_.reset(service); 112 // Execute IO tasks posted by the SessionService. 113 content::RunAllBlockingPoolTasksUntilIdle(); 114 } 115 116 void SessionServiceTestHelper::RunTaskOnBackendThread( 117 const tracked_objects::Location& from_here, 118 const base::Closure& task) { 119 service_->RunTaskOnBackendThread(from_here, task); 120 } 121