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