diff options
Diffstat (limited to 'chrome/browser/tabs')
-rw-r--r-- | chrome/browser/tabs/default_tab_handler.cc | 8 | ||||
-rw-r--r-- | chrome/browser/tabs/default_tab_handler.h | 2 | ||||
-rw-r--r-- | chrome/browser/tabs/tab_strip_model.cc | 18 | ||||
-rw-r--r-- | chrome/browser/tabs/tab_strip_model.h | 5 | ||||
-rw-r--r-- | chrome/browser/tabs/tab_strip_model_delegate.h | 6 | ||||
-rw-r--r-- | chrome/browser/tabs/tab_strip_model_observer.cc | 4 | ||||
-rw-r--r-- | chrome/browser/tabs/tab_strip_model_observer.h | 4 | ||||
-rw-r--r-- | chrome/browser/tabs/tab_strip_model_unittest.cc | 2 |
8 files changed, 48 insertions, 1 deletions
diff --git a/chrome/browser/tabs/default_tab_handler.cc b/chrome/browser/tabs/default_tab_handler.cc index b81f0a2..1524852 100644 --- a/chrome/browser/tabs/default_tab_handler.cc +++ b/chrome/browser/tabs/default_tab_handler.cc @@ -115,6 +115,10 @@ void DefaultTabHandler::ToggleUseVerticalTabs() { delegate_->AsBrowser()->ToggleUseVerticalTabs(); } +void DefaultTabHandler::ToggleUseCompactNavigationBar() { + delegate_->AsBrowser()->ToggleUseCompactNavigationBar(); +} + bool DefaultTabHandler::CanRestoreTab() { return delegate_->AsBrowser()->CanRestoreTab(); } @@ -131,6 +135,10 @@ bool DefaultTabHandler::UseVerticalTabs() const { return delegate_->AsBrowser()->UseVerticalTabs(); } +bool DefaultTabHandler::UseCompactNavigationBar() const { + return delegate_->AsBrowser()->UseCompactNavigationBar(); +} + //////////////////////////////////////////////////////////////////////////////// // DefaultTabHandler, TabStripModelObserver implementation: diff --git a/chrome/browser/tabs/default_tab_handler.h b/chrome/browser/tabs/default_tab_handler.h index 09f779a..f59dd25 100644 --- a/chrome/browser/tabs/default_tab_handler.h +++ b/chrome/browser/tabs/default_tab_handler.h @@ -52,10 +52,12 @@ class DefaultTabHandler : public TabHandler, virtual void BookmarkAllTabs(); virtual bool CanCloseTab() const; virtual void ToggleUseVerticalTabs(); + virtual void ToggleUseCompactNavigationBar(); virtual bool CanRestoreTab(); virtual void RestoreTab(); virtual bool LargeIconsPermitted() const; virtual bool UseVerticalTabs() const; + virtual bool UseCompactNavigationBar() const; // Overridden from TabStripModelObserver: virtual void TabInsertedAt(TabContentsWrapper* contents, diff --git a/chrome/browser/tabs/tab_strip_model.cc b/chrome/browser/tabs/tab_strip_model.cc index fa632af..d1ded2f 100644 --- a/chrome/browser/tabs/tab_strip_model.cc +++ b/chrome/browser/tabs/tab_strip_model.cc @@ -711,6 +711,10 @@ void TabStripModel::MoveTabPrevious() { MoveTabContentsAt(active_index(), new_index, true); } +void TabStripModel::ActiveTabClicked(int index) { + FOR_EACH_OBSERVER(TabStripModelObserver, observers_, ActiveTabClicked(index)); +} + // Context menu functions. bool TabStripModel::IsContextMenuCommandEnabled( int context_index, ContextMenuCommand command_id) const { @@ -764,6 +768,7 @@ bool TabStripModel::IsContextMenuCommandEnabled( delegate_->CanBookmarkAllTabs(); case CommandUseVerticalTabs: + case CommandUseCompactNavigationBar: return true; case CommandSelectByDomain: @@ -782,6 +787,8 @@ bool TabStripModel::IsContextMenuCommandChecked( switch (command_id) { case CommandUseVerticalTabs: return delegate()->UseVerticalTabs(); + case CommandUseCompactNavigationBar: + return delegate()->UseCompactNavigationBar(); default: NOTREACHED(); break; @@ -904,6 +911,14 @@ void TabStripModel::ExecuteContextMenuCommand( break; } + case CommandUseCompactNavigationBar: { + UserMetrics::RecordAction( + UserMetricsAction("TabContextMenu_CompactNavigationBar")); + + delegate()->ToggleUseCompactNavigationBar(); + break; + } + case CommandSelectByDomain: case CommandSelectByOpener: { std::vector<int> indices; @@ -1029,6 +1044,9 @@ bool TabStripModel::ContextMenuCommandToBrowserCommand(int cmd_id, case CommandUseVerticalTabs: *browser_cmd = IDC_TOGGLE_VERTICAL_TABS; break; + case CommandUseCompactNavigationBar: + *browser_cmd = IDC_COMPACT_NAVBAR; + break; default: *browser_cmd = 0; return false; diff --git a/chrome/browser/tabs/tab_strip_model.h b/chrome/browser/tabs/tab_strip_model.h index f236e5f..c0d1e0b 100644 --- a/chrome/browser/tabs/tab_strip_model.h +++ b/chrome/browser/tabs/tab_strip_model.h @@ -411,6 +411,10 @@ class TabStripModel : public NotificationObserver { void MoveTabNext(); void MoveTabPrevious(); + // Notifies the observers that the active/foreground tab at |index| was + // reselected (ie - it was already active and was clicked again). + void ActiveTabClicked(int index); + // View API ////////////////////////////////////////////////////////////////// // Context menu functions. @@ -426,6 +430,7 @@ class TabStripModel : public NotificationObserver { CommandTogglePinned, CommandBookmarkAllTabs, CommandUseVerticalTabs, + CommandUseCompactNavigationBar, CommandSelectByDomain, CommandSelectByOpener, CommandLast diff --git a/chrome/browser/tabs/tab_strip_model_delegate.h b/chrome/browser/tabs/tab_strip_model_delegate.h index bae327e..0279e84 100644 --- a/chrome/browser/tabs/tab_strip_model_delegate.h +++ b/chrome/browser/tabs/tab_strip_model_delegate.h @@ -118,6 +118,12 @@ class TabStripModelDelegate { // Toggles the use of the vertical tabstrip. virtual void ToggleUseVerticalTabs() = 0; + // Returns true if the compact navigation bar should be used. + virtual bool UseCompactNavigationBar() const = 0; + + // Toggles the use of the compact navigation bar. + virtual void ToggleUseCompactNavigationBar() = 0; + // Returns true if the tab strip can use large icons. virtual bool LargeIconsPermitted() const = 0; diff --git a/chrome/browser/tabs/tab_strip_model_observer.cc b/chrome/browser/tabs/tab_strip_model_observer.cc index f20746a..0f5395b 100644 --- a/chrome/browser/tabs/tab_strip_model_observer.cc +++ b/chrome/browser/tabs/tab_strip_model_observer.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// 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. @@ -58,3 +58,5 @@ void TabStripModelObserver::TabBlockedStateChanged(TabContentsWrapper* contents, void TabStripModelObserver::TabStripEmpty() {} void TabStripModelObserver::TabStripModelDeleted() {} + +void TabStripModelObserver::ActiveTabClicked(int index) {} diff --git a/chrome/browser/tabs/tab_strip_model_observer.h b/chrome/browser/tabs/tab_strip_model_observer.h index af169ea..ba9df25 100644 --- a/chrome/browser/tabs/tab_strip_model_observer.h +++ b/chrome/browser/tabs/tab_strip_model_observer.h @@ -127,6 +127,10 @@ class TabStripModelObserver { // must be dropped. virtual void TabStripModelDeleted(); + // Invoked when an active/selected tab at |index| is selected again (ie - the + // active/foreground tab is clicked). + virtual void ActiveTabClicked(int index); + protected: virtual ~TabStripModelObserver() {} }; diff --git a/chrome/browser/tabs/tab_strip_model_unittest.cc b/chrome/browser/tabs/tab_strip_model_unittest.cc index 4876c81..fc1c941 100644 --- a/chrome/browser/tabs/tab_strip_model_unittest.cc +++ b/chrome/browser/tabs/tab_strip_model_unittest.cc @@ -130,6 +130,8 @@ class TabStripDummyDelegate : public TabStripModelDelegate { virtual bool CanCloseTab() const { return true; } virtual bool UseVerticalTabs() const { return false; } virtual void ToggleUseVerticalTabs() {} + virtual bool UseCompactNavigationBar() const { return false; } + virtual void ToggleUseCompactNavigationBar() {} virtual bool LargeIconsPermitted() const { return true; } private: |