Home | History | Annotate | Download | only in glue
      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 "chrome/browser/sessions/session_id.h"
     11 
     12 namespace browser_sync {
     13 
     14 class SyncedTabDelegate;
     15 
     16 // A SyncedWindowDelegate is used to insulate the sync code from depending
     17 // directly on Browser and BrowserList.
     18 class 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