browser_synced_window_delegate.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
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#include "chrome/browser/ui/sync/browser_synced_window_delegate.h"
6
7#include <set>
8
9#include "chrome/browser/sessions/session_id.h"
10#include "chrome/browser/ui/browser.h"
11#include "chrome/browser/ui/browser_finder.h"
12#include "chrome/browser/ui/browser_list.h"
13#include "chrome/browser/ui/browser_tabstrip.h"
14#include "chrome/browser/ui/sync/tab_contents_synced_tab_delegate.h"
15#include "chrome/browser/ui/tab_contents/tab_contents.h"
16#include "chrome/browser/ui/tabs/tab_strip_model.h"
17
18// static SyncedWindowDelegate implementations
19
20// static
21const std::set<browser_sync::SyncedWindowDelegate*>
22    browser_sync::SyncedWindowDelegate::GetSyncedWindowDelegates() {
23  std::set<browser_sync::SyncedWindowDelegate*> synced_window_delegates;
24  for (BrowserList::const_iterator i = BrowserList::begin();
25       i != BrowserList::end(); ++i) {
26    synced_window_delegates.insert((*i)->synced_window_delegate());
27  }
28  return synced_window_delegates;
29}
30
31// static
32const browser_sync::SyncedWindowDelegate*
33    browser_sync::SyncedWindowDelegate::FindSyncedWindowDelegateWithId(
34        SessionID::id_type id) {
35  Browser* browser = browser::FindBrowserWithID(id);
36  // In case we don't find the browser (e.g. for Developer Tools).
37  return browser ? browser->synced_window_delegate() : NULL;
38}
39
40// BrowserSyncedWindowDelegate implementations
41
42BrowserSyncedWindowDelegate::BrowserSyncedWindowDelegate(Browser* browser)
43    : browser_(browser) {}
44
45BrowserSyncedWindowDelegate::~BrowserSyncedWindowDelegate() {}
46
47bool BrowserSyncedWindowDelegate::IsTabPinned(
48    const browser_sync::SyncedTabDelegate* tab) const {
49  for (int i = 0; i < browser_->tab_count(); i++) {
50    browser_sync::SyncedTabDelegate* current = GetTabAt(i);
51    if (tab == current)
52      return browser_->tab_strip_model()->IsTabPinned(i);
53  }
54  NOTREACHED();
55  return false;
56}
57
58browser_sync::SyncedTabDelegate* BrowserSyncedWindowDelegate::GetTabAt(
59    int index) const {
60  return TabContentsSyncedTabDelegate::FromWebContents(
61      chrome::GetWebContentsAt(browser_, index));
62}
63
64SessionID::id_type BrowserSyncedWindowDelegate::GetTabIdAt(int index) const {
65  return GetTabAt(index)->GetSessionId();
66}
67
68bool BrowserSyncedWindowDelegate::HasWindow() const {
69  return browser_->window() != NULL;
70}
71
72SessionID::id_type BrowserSyncedWindowDelegate::GetSessionId() const {
73  return browser_->session_id().id();
74}
75
76int BrowserSyncedWindowDelegate::GetTabCount() const {
77  return browser_->tab_count();
78}
79
80int BrowserSyncedWindowDelegate::GetActiveIndex() const {
81  return browser_->active_index();
82}
83
84bool BrowserSyncedWindowDelegate::IsApp() const {
85  return browser_->is_app();
86}
87
88bool BrowserSyncedWindowDelegate::IsTypeTabbed() const {
89  return browser_->is_type_tabbed();
90}
91
92bool BrowserSyncedWindowDelegate::IsTypePopup() const {
93  return browser_->is_type_popup();
94}
95
96bool BrowserSyncedWindowDelegate::IsSessionRestoreInProgress() const {
97  return false;
98}
99