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_UI_TOOLBAR_RECENT_TABS_BUILDER_TEST_HELPER_H_
6#define CHROME_BROWSER_UI_TOOLBAR_RECENT_TABS_BUILDER_TEST_HELPER_H_
7
8#include <vector>
9
10#include "base/strings/string16.h"
11#include "base/time/time.h"
12#include "chrome/browser/sessions/session_id.h"
13
14namespace browser_sync {
15class SessionModelAssociator;
16}
17namespace sync_pb {
18class SessionSpecifics;
19}
20
21// Utility class to help add recent tabs for testing.
22class RecentTabsBuilderTestHelper {
23 public:
24  RecentTabsBuilderTestHelper();
25  ~RecentTabsBuilderTestHelper();
26
27  void AddSession();
28  int GetSessionCount();
29  SessionID::id_type GetSessionID(int session_index);
30  base::Time GetSessionTimestamp(int session_index);
31
32  void AddWindow(int session_index);
33  int GetWindowCount(int session_index);
34  SessionID::id_type GetWindowID(int session_index, int window_index);
35
36  void AddTab(int session_index, int window_index);
37  void AddTabWithInfo(int session_index,
38                      int window_index,
39                      base::Time timestamp,
40                      const base::string16& title);
41  int GetTabCount(int session_index, int window_index);
42  SessionID::id_type GetTabID(int session_index,
43                              int window_index,
44                              int tab_index);
45  base::Time GetTabTimestamp(int session_index,
46                             int window_index,
47                             int tab_index);
48  base::string16 GetTabTitle(int session_index,
49                       int window_index,
50                       int tab_index);
51
52  void RegisterRecentTabs(browser_sync::SessionModelAssociator* associator);
53
54  std::vector<base::string16> GetTabTitlesSortedByRecency();
55
56 private:
57  void BuildSessionSpecifics(int session_index,
58                             sync_pb::SessionSpecifics* meta);
59  void BuildWindowSpecifics(int session_index,
60                            int window_index,
61                            sync_pb::SessionSpecifics* meta);
62  void BuildTabSpecifics(int session_index,
63                         int window_index,
64                         int tab_index,
65                         sync_pb::SessionSpecifics* tab_base);
66
67  struct TabInfo;
68  struct WindowInfo;
69  struct SessionInfo;
70
71  std::vector<SessionInfo> sessions_;
72  base::Time start_time_;
73
74  int max_tab_node_id_;
75
76  DISALLOW_COPY_AND_ASSIGN(RecentTabsBuilderTestHelper);
77};
78
79#endif  // CHROME_BROWSER_UI_TOOLBAR_RECENT_TABS_BUILDER_TEST_HELPER_H_
80