Home | History | Annotate | Download | only in sessions
      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 
     14 using base::Time;
     15 
     16 SessionServiceTestHelper::SessionServiceTestHelper() {}
     17 
     18 SessionServiceTestHelper::SessionServiceTestHelper(SessionService* service)
     19     : service_(service) {}
     20 
     21 SessionServiceTestHelper::~SessionServiceTestHelper() {}
     22 
     23 void SessionServiceTestHelper::RestoreSessionFromCommands(
     24     const std::vector<SessionCommand*>& commands,
     25     std::vector<SessionWindow*>* valid_windows) {
     26   service()->RestoreSessionFromCommands(commands, valid_windows);
     27 }
     28 
     29 void 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 
     39 void 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.
     47 void 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 
     55 void 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 
     66 void 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 
     76 void 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 
     87 void 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 
     95 SessionBackend* SessionServiceTestHelper::backend() {
     96   return service_->backend();
     97 }
     98