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_SYNC_GLUE_SYNCED_WINDOW_DELEGATE_H_
6#define CHROME_BROWSER_SYNC_GLUE_SYNCED_WINDOW_DELEGATE_H_
7
8#include <set>
9
10#include "components/sessions/session_id.h"
11
12namespace browser_sync {
13
14class SyncedTabDelegate;
15
16// A SyncedWindowDelegate is used to insulate the sync code from depending
17// directly on Browser and BrowserList.
18class SyncedWindowDelegate {
19 public:
20  // Methods originating from WindowList
21
22  // This method is to be used instead of using the BrowserList iterator.
23  static const std::set<SyncedWindowDelegate*> GetSyncedWindowDelegates();
24
25  // This method is to be used instead of using BrowserList::FindBrowserWithId()
26  static const SyncedWindowDelegate* FindSyncedWindowDelegateWithId(
27      SessionID::id_type id);
28
29  // Methods originating from Browser.
30
31  // Returns true iff this browser has a visible window representation
32  // associated with it. Sometimes, if a window is being created/removed the
33  // model object may exist without its UI counterpart.
34  virtual bool HasWindow() const = 0;
35
36  // see Browser::session_id
37  virtual SessionID::id_type GetSessionId() const = 0;
38
39  // see Browser::tab_count
40  virtual int GetTabCount() const = 0;
41
42  // see Browser::active_index
43  virtual int GetActiveIndex() const = 0;
44
45  // see Browser::is_app
46  virtual bool IsApp() const = 0;
47
48  // see Browser::is_type_tabbed
49  virtual bool IsTypeTabbed() const = 0;
50
51  // see Browser::is_type_popup
52  virtual bool IsTypePopup() const = 0;
53
54  // Methods derivated from Browser
55
56  // Returns true iff the provided tab is currently "pinned" in the tab strip.
57  virtual bool IsTabPinned(const SyncedTabDelegate* tab) const = 0;
58
59  // see TabStripModel::GetWebContentsAt
60  virtual SyncedTabDelegate* GetTabAt(int index) const = 0;
61
62  // Return the tab id for the tab at |index|.
63  virtual SessionID::id_type GetTabIdAt(int index) const = 0;
64
65  // Return true if we are currently restoring sessions asynchronously.
66  virtual bool IsSessionRestoreInProgress() const = 0;
67
68 protected:
69  virtual ~SyncedWindowDelegate() {}
70};
71
72}  // namespace browser_sync
73
74#endif  // CHROME_BROWSER_SYNC_GLUE_SYNCED_WINDOW_DELEGATE_H_
75