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/sync/glue/synced_window_delegate_android.h" 6 7#include "chrome/browser/android/tab_android.h" 8#include "chrome/browser/profiles/profile.h" 9#include "chrome/browser/sync/glue/synced_tab_delegate_android.h" 10#include "chrome/browser/ui/android/tab_model/tab_model.h" 11#include "chrome/browser/ui/android/tab_model/tab_model_list.h" 12#include "content/public/browser/web_contents.h" 13 14namespace browser_sync { 15 16// SyncedWindowDelegate implementations 17 18const std::set<SyncedWindowDelegate*> 19 SyncedWindowDelegate::GetSyncedWindowDelegates() { 20 std::set<SyncedWindowDelegate*> synced_window_delegates; 21 for (TabModelList::const_iterator i = TabModelList::begin(); 22 i != TabModelList::end(); ++i) { 23 synced_window_delegates.insert((*i)->GetSyncedWindowDelegate()); 24 } 25 return synced_window_delegates; 26} 27 28const SyncedWindowDelegate* 29 SyncedWindowDelegate::FindSyncedWindowDelegateWithId( 30 SessionID::id_type session_id) { 31 TabModel* tab_model = TabModelList::FindTabModelWithId( 32 session_id); 33 34 // In case we don't find the browser (e.g. for Developer Tools). 35 return tab_model ? tab_model->GetSyncedWindowDelegate() : NULL; 36} 37 38// SyncedWindowDelegateAndroid implementations 39 40SyncedWindowDelegateAndroid::SyncedWindowDelegateAndroid( 41 TabModel* tab_model) 42 : tab_model_(tab_model) {} 43 44SyncedWindowDelegateAndroid::~SyncedWindowDelegateAndroid() {} 45 46bool SyncedWindowDelegateAndroid::HasWindow() const { 47 return !tab_model_->IsOffTheRecord(); 48} 49 50SessionID::id_type SyncedWindowDelegateAndroid::GetSessionId() const { 51 return tab_model_->GetSessionId(); 52} 53 54int SyncedWindowDelegateAndroid::GetTabCount() const { 55 return tab_model_->GetTabCount(); 56} 57 58int SyncedWindowDelegateAndroid::GetActiveIndex() const { 59 return tab_model_->GetActiveIndex(); 60} 61 62bool SyncedWindowDelegateAndroid::IsApp() const { 63 return false; 64} 65 66bool SyncedWindowDelegateAndroid::IsTypeTabbed() const { 67 return true; 68} 69 70bool SyncedWindowDelegateAndroid::IsTypePopup() const { 71 return false; 72} 73 74bool SyncedWindowDelegateAndroid::IsTabPinned( 75 const SyncedTabDelegate* tab) const { 76 return false; 77} 78 79SyncedTabDelegate* SyncedWindowDelegateAndroid::GetTabAt(int index) const { 80 // After a restart, it is possible for the Tab to be null during startup. 81 TabAndroid* tab = tab_model_->GetTabAt(index); 82 return tab ? tab->GetSyncedTabDelegate() : NULL; 83} 84 85SessionID::id_type SyncedWindowDelegateAndroid::GetTabIdAt(int index) const { 86 SyncedTabDelegate* tab = GetTabAt(index); 87 return tab ? tab->GetSessionId() : -1; 88} 89 90bool SyncedWindowDelegateAndroid::IsSessionRestoreInProgress() const { 91 return tab_model_->IsSessionRestoreInProgress(); 92} 93 94} // namespace browser_sync 95