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