diff options
author | yfriedman@chromium.org <yfriedman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-26 05:04:23 +0000 |
---|---|---|
committer | yfriedman@chromium.org <yfriedman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-26 05:04:23 +0000 |
commit | afefa74e620c058d74737a702b1408f18b299da4 (patch) | |
tree | b3e8df549761631887bcbd61cf6619adf09a243e /chrome/browser/ui | |
parent | 3e7a55761b611940e04a50f1a1b6c8b3233b2937 (diff) | |
download | chromium_src-afefa74e620c058d74737a702b1408f18b299da4.zip chromium_src-afefa74e620c058d74737a702b1408f18b299da4.tar.gz chromium_src-afefa74e620c058d74737a702b1408f18b299da4.tar.bz2 |
Remove direct dependency from SessionModelAssociator on Browser/BrowserList.
This is acheived by having Browser implement SyncedBrowserDelegate
BUG=
TEST=
Review URL: http://codereview.chromium.org/7399026
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@94038 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui')
-rw-r--r-- | chrome/browser/ui/browser.cc | 4 | ||||
-rw-r--r-- | chrome/browser/ui/browser.h | 8 | ||||
-rw-r--r-- | chrome/browser/ui/browser_synced_window_delegate.cc | 80 | ||||
-rw-r--r-- | chrome/browser/ui/browser_synced_window_delegate.h | 41 |
4 files changed, 133 insertions, 0 deletions
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index d92651e..dfb70e7 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc @@ -80,6 +80,7 @@ #include "chrome/browser/ui/browser_dialogs.h" #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/browser_navigator.h" +#include "chrome/browser/ui/browser_synced_window_delegate.h" #include "chrome/browser/ui/browser_tab_restore_service_delegate.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/find_bar/find_bar.h" @@ -251,6 +252,9 @@ Browser::Browser(Type type, Profile* profile) ALLOW_THIS_IN_INITIALIZER_LIST( tab_restore_service_delegate_( new BrowserTabRestoreServiceDelegate(this))), + ALLOW_THIS_IN_INITIALIZER_LIST( + synced_window_delegate_( + new BrowserSyncedWindowDelegate(this))), bookmark_bar_state_(BookmarkBar::HIDDEN) { registrar_.Add(this, content::NOTIFICATION_SSL_VISIBLE_STATE_CHANGED, NotificationService::AllSources()); diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h index 657f562..b30d8e4 100644 --- a/chrome/browser/ui/browser.h +++ b/chrome/browser/ui/browser.h @@ -45,6 +45,7 @@ #include "content/common/page_zoom.h" #include "ui/gfx/rect.h" +class BrowserSyncedWindowDelegate; class BrowserTabRestoreServiceDelegate; class BrowserWindow; class Extension; @@ -213,6 +214,9 @@ class Browser : public TabHandlerDelegate, BrowserTabRestoreServiceDelegate* tab_restore_service_delegate() { return tab_restore_service_delegate_.get(); } + BrowserSyncedWindowDelegate* synced_window_delegate() { + return synced_window_delegate_.get(); + } // Get the FindBarController for this browser, creating it if it does not // yet exist. @@ -362,6 +366,7 @@ class Browser : public TabHandlerDelegate, int tab_count() const; int active_index() const; int GetIndexOfController(const NavigationController* controller) const; + // TODO(dpapad): Rename to GetActiveTabContentsWrapper(). TabContentsWrapper* GetSelectedTabContentsWrapper() const; TabContentsWrapper* GetTabContentsWrapperAt(int index) const; @@ -1261,6 +1266,9 @@ class Browser : public TabHandlerDelegate, // Helper which implements the TabRestoreServiceDelegate interface. scoped_ptr<BrowserTabRestoreServiceDelegate> tab_restore_service_delegate_; + // Helper which implements the SyncedWindowDelegate interface. + scoped_ptr<BrowserSyncedWindowDelegate> synced_window_delegate_; + scoped_ptr<InstantController> instant_; scoped_ptr<InstantUnloadHandler> instant_unload_handler_; diff --git a/chrome/browser/ui/browser_synced_window_delegate.cc b/chrome/browser/ui/browser_synced_window_delegate.cc new file mode 100644 index 0000000..d9a0947 --- /dev/null +++ b/chrome/browser/ui/browser_synced_window_delegate.cc @@ -0,0 +1,80 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ui/browser_synced_window_delegate.h" + +#include <set> + +#include "chrome/browser/sessions/session_id.h" +#include "chrome/browser/tabs/tab_strip_model.h" +#include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/browser_list.h" +#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" + +// static SyncedWindowDelegate implementations + +// static +const std::set<browser_sync::SyncedWindowDelegate*> + browser_sync::SyncedWindowDelegate::GetSyncedWindowDelegates() { + std::set<browser_sync::SyncedWindowDelegate*> synced_window_delegates; + for (BrowserList::const_iterator i = BrowserList::begin(); + i != BrowserList::end(); ++i) { + synced_window_delegates.insert((*i)->synced_window_delegate()); + } + return synced_window_delegates; +} + +// static +const browser_sync::SyncedWindowDelegate* + browser_sync::SyncedWindowDelegate::FindSyncedWindowDelegateWithId( + SessionID::id_type id) { + return BrowserList::FindBrowserWithID(id)->synced_window_delegate(); +} + +// BrowserSyncedWindowDelegate implementations + +BrowserSyncedWindowDelegate::BrowserSyncedWindowDelegate(Browser* browser) + : browser_(browser) {} + +BrowserSyncedWindowDelegate::~BrowserSyncedWindowDelegate() {} + +bool BrowserSyncedWindowDelegate::IsTabContentsWrapperPinned( + const TabContentsWrapper* tab) const { + int index = browser_->GetIndexOfController(&tab->controller()); + DCHECK(index != TabStripModel::kNoTab); + return browser_->tabstrip_model()->IsTabPinned(index); +} + +TabContentsWrapper* BrowserSyncedWindowDelegate::GetTabContentsWrapperAt( + int index) const { + return browser_->GetTabContentsWrapperAt(index); +} + +bool BrowserSyncedWindowDelegate::HasWindow() const { + return browser_->window() != NULL; +} + +const SessionID& BrowserSyncedWindowDelegate::GetSessionId() const { + return browser_->session_id(); +} + +int BrowserSyncedWindowDelegate::GetTabCount() const { + return browser_->tab_count(); +} + +int BrowserSyncedWindowDelegate::GetActiveIndex() const { + return browser_->active_index(); +} + +bool BrowserSyncedWindowDelegate::IsApp() const { + return browser_->is_app(); +} + +bool BrowserSyncedWindowDelegate::IsTypeTabbed() const { + return browser_->is_type_tabbed(); +} + +bool BrowserSyncedWindowDelegate::IsTypePopup() const { + return browser_->is_type_popup(); +} diff --git a/chrome/browser/ui/browser_synced_window_delegate.h b/chrome/browser/ui/browser_synced_window_delegate.h new file mode 100644 index 0000000..b23e211 --- /dev/null +++ b/chrome/browser/ui/browser_synced_window_delegate.h @@ -0,0 +1,41 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_BROWSER_SYNCED_WINDOW_DELEGATE_H_ +#define CHROME_BROWSER_UI_BROWSER_SYNCED_WINDOW_DELEGATE_H_ +#pragma once + +#include "base/compiler_specific.h" +#include "chrome/browser/sessions/session_id.h" +#include "chrome/browser/sync/glue/synced_window_delegate.h" + +class Browser; +class TabContentsWrapper; + +// A BrowserSyncedWindowDelegate is the Browser-based implementation of +// SyncedWindowDelegate. +class BrowserSyncedWindowDelegate : public browser_sync::SyncedWindowDelegate { + public: + explicit BrowserSyncedWindowDelegate(Browser* browser); + virtual ~BrowserSyncedWindowDelegate(); + + // SyncedWindowDelegate: + virtual bool IsTabContentsWrapperPinned( + const TabContentsWrapper* tab) const OVERRIDE; + virtual TabContentsWrapper* GetTabContentsWrapperAt(int index) const OVERRIDE; + virtual bool HasWindow() const OVERRIDE; + virtual const SessionID& GetSessionId() const OVERRIDE; + virtual int GetTabCount() const OVERRIDE; + virtual int GetActiveIndex() const OVERRIDE; + virtual bool IsApp() const OVERRIDE; + virtual bool IsTypeTabbed() const OVERRIDE; + virtual bool IsTypePopup() const OVERRIDE; + + private: + Browser* browser_; + + DISALLOW_COPY_AND_ASSIGN(BrowserSyncedWindowDelegate); +}; + +#endif // CHROME_BROWSER_UI_BROWSER_SYNCED_WINDOW_DELEGATE_H_ |