Home | History | Annotate | Download | only in sync
      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
     19 const 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
     28 const 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 
     38 BrowserSyncedWindowDelegate::BrowserSyncedWindowDelegate(Browser* browser)
     39     : browser_(browser) {}
     40 
     41 BrowserSyncedWindowDelegate::~BrowserSyncedWindowDelegate() {}
     42 
     43 bool 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 
     54 browser_sync::SyncedTabDelegate* BrowserSyncedWindowDelegate::GetTabAt(
     55     int index) const {
     56   return TabContentsSyncedTabDelegate::FromWebContents(
     57       browser_->tab_strip_model()->GetWebContentsAt(index));
     58 }
     59 
     60 SessionID::id_type BrowserSyncedWindowDelegate::GetTabIdAt(int index) const {
     61   return GetTabAt(index)->GetSessionId();
     62 }
     63 
     64 bool BrowserSyncedWindowDelegate::HasWindow() const {
     65   return browser_->window() != NULL;
     66 }
     67 
     68 SessionID::id_type BrowserSyncedWindowDelegate::GetSessionId() const {
     69   return browser_->session_id().id();
     70 }
     71 
     72 int BrowserSyncedWindowDelegate::GetTabCount() const {
     73   return browser_->tab_strip_model()->count();
     74 }
     75 
     76 int BrowserSyncedWindowDelegate::GetActiveIndex() const {
     77   return browser_->tab_strip_model()->active_index();
     78 }
     79 
     80 bool BrowserSyncedWindowDelegate::IsApp() const {
     81   return browser_->is_app();
     82 }
     83 
     84 bool BrowserSyncedWindowDelegate::IsTypeTabbed() const {
     85   return browser_->is_type_tabbed();
     86 }
     87 
     88 bool BrowserSyncedWindowDelegate::IsTypePopup() const {
     89   return browser_->is_type_popup();
     90 }
     91 
     92 bool BrowserSyncedWindowDelegate::IsSessionRestoreInProgress() const {
     93   return false;
     94 }
     95