Index: chrome/browser/sync/glue/synced_window_delegate_android.cc |
diff --git a/chrome/browser/sync/glue/synced_window_delegate_android.cc b/chrome/browser/sync/glue/synced_window_delegate_android.cc |
index 20feece6f9e94d201f7b18214d2d060f9e27dc8b..3773b4bac5153cb8d78f63606ec334889428757a 100644 |
--- a/chrome/browser/sync/glue/synced_window_delegate_android.cc |
+++ b/chrome/browser/sync/glue/synced_window_delegate_android.cc |
@@ -3,28 +3,90 @@ |
// found in the LICENSE file. |
#include "chrome/browser/sync/glue/synced_window_delegate.h" |
+#include "chrome/browser/sync/glue/synced_window_delegate_android.h" |
+#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/ui/android/tab_model/tab_model.h" |
+#include "chrome/browser/ui/android/tab_model/tab_model_list.h" |
+#include "chrome/browser/ui/tab_contents/tab_contents.h" |
#include "chrome/browser/sessions/session_id.h" |
-#include "chrome/browser/sync/glue/synced_window_delegate_registry.h" |
namespace browser_sync { |
+// SyncedWindowDelegate implementations |
+ |
const std::set<SyncedWindowDelegate*> |
SyncedWindowDelegate::GetSyncedWindowDelegates() { |
- return SyncedWindowDelegateRegistry::GetSyncedWindowDelegates(); |
+ std::set<SyncedWindowDelegate*> synced_window_delegates; |
+ for (TabModelList::const_iterator i = TabModelList::begin(); |
+ i != TabModelList::end(); ++i) { |
+ synced_window_delegates.insert((*i)->GetSyncedWindowDelegate()); |
+ } |
+ return synced_window_delegates; |
} |
const SyncedWindowDelegate* |
SyncedWindowDelegate::FindSyncedWindowDelegateWithId( |
SessionID::id_type session_id) { |
- std::set<SyncedWindowDelegate*> window = |
- SyncedWindowDelegateRegistry::GetSyncedWindowDelegates(); |
- for (std::set<SyncedWindowDelegate*>::const_iterator i = |
- window.begin(); i != window.end(); ++i) { |
- if ((*i)->GetSessionId() == session_id) |
- return *i; |
- } |
- return NULL; |
+ TabModel* tab_model = TabModelList::FindTabModelWithId( |
+ session_id); |
+ |
+ // In case we don't find the browser (e.g. for Developer Tools). |
+ return tab_model ? tab_model->GetSyncedWindowDelegate() : NULL; |
+} |
+ |
+// SyncedWindowDelegateAndroid implementations |
+ |
+SyncedWindowDelegateAndroid::SyncedWindowDelegateAndroid( |
+ TabModel* tab_model) |
+ : tab_model_(tab_model) {} |
+ |
+SyncedWindowDelegateAndroid::~SyncedWindowDelegateAndroid() {} |
+ |
+bool SyncedWindowDelegateAndroid::HasWindow() const { |
+ return !tab_model_->GetProfile()->IsOffTheRecord(); |
+} |
+ |
+SessionID::id_type SyncedWindowDelegateAndroid::GetSessionId() const { |
+ return tab_model_->GetSessionId(); |
+} |
+ |
+int SyncedWindowDelegateAndroid::GetTabCount() const { |
+ return tab_model_->GetTabCount(); |
+} |
+ |
+int SyncedWindowDelegateAndroid::GetActiveIndex() const { |
+ return tab_model_->GetActiveIndex(); |
+} |
+ |
+bool SyncedWindowDelegateAndroid::IsApp() const { |
+ return false; |
+} |
+ |
+bool SyncedWindowDelegateAndroid::IsTypeTabbed() const { |
+ return true; |
+} |
+ |
+bool SyncedWindowDelegateAndroid::IsTypePopup() const { |
+ return false; |
+} |
+ |
+bool SyncedWindowDelegateAndroid::IsTabPinned( |
+ const SyncedTabDelegate* tab) const { |
+ return false; |
+} |
+ |
+SyncedTabDelegate* SyncedWindowDelegateAndroid::GetTabAt(int index) const { |
+ TabContents* tab_contents = tab_model_->GetTabContentsAt(index); |
+ return tab_contents ? tab_contents->synced_tab_delegate() : NULL; |
+} |
+ |
+SessionID::id_type SyncedWindowDelegateAndroid::GetTabIdAt(int index) const { |
+ return tab_model_->GetTabIdAt(index); |
+} |
+ |
+bool SyncedWindowDelegateAndroid::IsSessionRestoreInProgress() const { |
+ return tab_model_->IsSessionRestoreInProgress(); |
} |
} // namespace browser_sync |