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 #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 
     14 namespace browser_sync {
     15 
     16 // SyncedWindowDelegate implementations
     17 
     18 const 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 
     28 const 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 
     40 SyncedWindowDelegateAndroid::SyncedWindowDelegateAndroid(
     41     TabModel* tab_model)
     42     : tab_model_(tab_model) {}
     43 
     44 SyncedWindowDelegateAndroid::~SyncedWindowDelegateAndroid() {}
     45 
     46 bool SyncedWindowDelegateAndroid::HasWindow() const {
     47   return !tab_model_->IsOffTheRecord();
     48 }
     49 
     50 SessionID::id_type SyncedWindowDelegateAndroid::GetSessionId() const {
     51   return tab_model_->GetSessionId();
     52 }
     53 
     54 int SyncedWindowDelegateAndroid::GetTabCount() const {
     55   return tab_model_->GetTabCount();
     56 }
     57 
     58 int SyncedWindowDelegateAndroid::GetActiveIndex() const {
     59   return tab_model_->GetActiveIndex();
     60 }
     61 
     62 bool SyncedWindowDelegateAndroid::IsApp() const {
     63   return false;
     64 }
     65 
     66 bool SyncedWindowDelegateAndroid::IsTypeTabbed() const {
     67   return true;
     68 }
     69 
     70 bool SyncedWindowDelegateAndroid::IsTypePopup() const {
     71   return false;
     72 }
     73 
     74 bool SyncedWindowDelegateAndroid::IsTabPinned(
     75     const SyncedTabDelegate* tab) const {
     76   return false;
     77 }
     78 
     79 SyncedTabDelegate* 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 
     85 SessionID::id_type SyncedWindowDelegateAndroid::GetTabIdAt(int index) const {
     86   SyncedTabDelegate* tab = GetTabAt(index);
     87   return tab ? tab->GetSessionId() : -1;
     88 }
     89 
     90 bool SyncedWindowDelegateAndroid::IsSessionRestoreInProgress() const {
     91   return tab_model_->IsSessionRestoreInProgress();
     92 }
     93 
     94 }  // namespace browser_sync
     95