summaryrefslogtreecommitdiffstats
path: root/chrome/browser/tabs
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/tabs')
-rw-r--r--chrome/browser/tabs/default_tab_handler.cc8
-rw-r--r--chrome/browser/tabs/default_tab_handler.h2
-rw-r--r--chrome/browser/tabs/tab_strip_model.cc18
-rw-r--r--chrome/browser/tabs/tab_strip_model.h5
-rw-r--r--chrome/browser/tabs/tab_strip_model_delegate.h6
-rw-r--r--chrome/browser/tabs/tab_strip_model_observer.cc4
-rw-r--r--chrome/browser/tabs/tab_strip_model_observer.h4
-rw-r--r--chrome/browser/tabs/tab_strip_model_unittest.cc2
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: