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#ifndef CHROME_BROWSER_SESSIONS_SESSION_SERVICE_TEST_HELPER_H_
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_SESSIONS_SESSION_SERVICE_TEST_HELPER_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string>
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <vector>
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/ref_counted.h"
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass SessionBackend;
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass SessionCommand;
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass SessionID;
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass SessionService;
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct SessionTab;
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct SessionWindow;
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass TabNavigation;
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A simple class that makes writing SessionService related tests easier.
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass SessionServiceTestHelper {
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
2672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  explicit SessionServiceTestHelper();
2772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  explicit SessionServiceTestHelper(SessionService* service);
2872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ~SessionServiceTestHelper();
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void RestoreSessionFromCommands(const std::vector<SessionCommand*>& commands,
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                  std::vector<SessionWindow*>* valid_windows);
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void PrepareTabInWindow(const SessionID& window_id,
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                          const SessionID& tab_id,
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                          int visual_index,
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                          bool select);
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void SetTabExtensionAppID(const SessionID& window_id,
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                            const SessionID& tab_id,
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                            const std::string& extension_app_id);
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Reads the contents of the last session.
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void ReadWindows(std::vector<SessionWindow*>* windows);
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void AssertTabEquals(SessionID& window_id,
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       SessionID& tab_id,
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       int visual_index,
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       int nav_index,
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       size_t nav_count,
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       const SessionTab& session_tab);
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void AssertTabEquals(int visual_index,
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       int nav_index,
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       size_t nav_count,
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       const SessionTab& session_tab);
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void AssertNavigationEquals(const TabNavigation& expected,
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                              const TabNavigation& actual);
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void AssertSingleWindowWithSingleTab(
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      const std::vector<SessionWindow*>& windows,
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      size_t nav_count);
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void set_service(SessionService* service) { service_ = service; }
65513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  SessionService* ReleaseService() { return service_.release(); }
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SessionService* service() { return service_.get(); }
67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SessionBackend* backend();
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_refptr<SessionService> service_;
72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(SessionServiceTestHelper);
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_SESSIONS_SESSION_SERVICE_TEST_HELPER_H_
77