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#ifndef CHROME_BROWSER_SESSIONS_SESSION_SERVICE_TEST_HELPER_H_ 6#define CHROME_BROWSER_SESSIONS_SESSION_SERVICE_TEST_HELPER_H_ 7 8#include <string> 9#include <vector> 10 11#include "base/basictypes.h" 12#include "base/memory/scoped_ptr.h" 13#include "chrome/browser/sessions/session_id.h" 14 15class SessionBackend; 16class SessionCommand; 17class SessionService; 18struct SessionTab; 19struct SessionWindow; 20 21namespace sessions { 22class SerializedNavigationEntry; 23} 24 25// A simple class that makes writing SessionService related tests easier. 26 27class SessionServiceTestHelper { 28 public: 29 explicit SessionServiceTestHelper(); 30 explicit SessionServiceTestHelper(SessionService* service); 31 ~SessionServiceTestHelper(); 32 33 void PrepareTabInWindow(const SessionID& window_id, 34 const SessionID& tab_id, 35 int visual_index, 36 bool select); 37 38 void SetTabExtensionAppID(const SessionID& window_id, 39 const SessionID& tab_id, 40 const std::string& extension_app_id); 41 42 void SetTabUserAgentOverride(const SessionID& window_id, 43 const SessionID& tab_id, 44 const std::string& user_agent_override); 45 46 void SetForceBrowserNotAliveWithNoWindows( 47 bool force_browser_not_alive_with_no_windows); 48 49 // Reads the contents of the last session. 50 void ReadWindows(std::vector<SessionWindow*>* windows, 51 SessionID::id_type* active_window_id); 52 53 void AssertTabEquals(SessionID& window_id, 54 SessionID& tab_id, 55 int visual_index, 56 int nav_index, 57 size_t nav_count, 58 const SessionTab& session_tab); 59 60 void AssertTabEquals(int visual_index, 61 int nav_index, 62 size_t nav_count, 63 const SessionTab& session_tab); 64 65 void AssertNavigationEquals( 66 const sessions::SerializedNavigationEntry& expected, 67 const sessions::SerializedNavigationEntry& actual); 68 69 void AssertSingleWindowWithSingleTab( 70 const std::vector<SessionWindow*>& windows, 71 size_t nav_count); 72 73 void SetService(SessionService* service); 74 SessionService* ReleaseService() { return service_.release(); } 75 SessionService* service() { return service_.get(); } 76 77 SessionBackend* backend(); 78 79 private: 80 scoped_ptr<SessionService> service_; 81 82 DISALLOW_COPY_AND_ASSIGN(SessionServiceTestHelper); 83}; 84 85#endif // CHROME_BROWSER_SESSIONS_SESSION_SERVICE_TEST_HELPER_H_ 86