summaryrefslogtreecommitdiffstats
path: root/chrome/browser/tabs
diff options
context:
space:
mode:
authorpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-20 19:00:36 +0000
committerpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-20 19:00:36 +0000
commitae62cfa9a110544f435f6c542ebbdddd780ca686 (patch)
treefe1c3b46bfd53b682c478ef43a1719d4d0044f86 /chrome/browser/tabs
parentf37c44ad8b465a2c70e39caebe43ef805bb301d6 (diff)
downloadchromium_src-ae62cfa9a110544f435f6c542ebbdddd780ca686.zip
chromium_src-ae62cfa9a110544f435f6c542ebbdddd780ca686.tar.gz
chromium_src-ae62cfa9a110544f435f6c542ebbdddd780ca686.tar.bz2
Revert 53062 - Makes the toolbar visible for apps again. Here's the set of patches I
reverted: 49016, 47119, 47177, 46930, 46775, and the UI changes for 45566. If you see anything missing, please let me know. Also, there are some grd strings no longer necessary. I'll nuke those separately. BUG=49013 TEST=none Review URL: http://codereview.chromium.org/2888020 TBR=sky@chromium.org git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53073 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/tabs')
-rw-r--r--chrome/browser/tabs/tab_strip_model.cc52
-rw-r--r--chrome/browser/tabs/tab_strip_model.h7
-rw-r--r--chrome/browser/tabs/tab_strip_model_unittest.cc1
3 files changed, 60 insertions, 0 deletions
diff --git a/chrome/browser/tabs/tab_strip_model.cc b/chrome/browser/tabs/tab_strip_model.cc
index 22cea3b..9fe21e6 100644
--- a/chrome/browser/tabs/tab_strip_model.cc
+++ b/chrome/browser/tabs/tab_strip_model.cc
@@ -121,6 +121,9 @@ TabStripModel::TabStripModel(TabStripModelDelegate* delegate, Profile* profile)
registrar_.Add(this,
NotificationType::EXTENSION_UNLOADED,
Source<Profile>(profile_));
+ registrar_.Add(this,
+ NotificationType::EXTENSION_APP_TOOLBAR_VISIBILITY_CHANGED,
+ NotificationService::AllSources());
order_controller_ = new TabStripModelOrderController(this);
}
@@ -525,6 +528,16 @@ bool TabStripModel::IsAppTab(int index) const {
return contents && contents->is_app();
}
+bool TabStripModel::IsToolbarVisible(int index) const {
+ Extension* extension_app = GetTabContentsAt(index)->extension_app();
+ if (!extension_app)
+ return true;
+
+ ExtensionsService* service = profile()->GetExtensionsService();
+ ExtensionPrefs* prefs = service->extension_prefs();
+ return prefs->AreAppTabToolbarsVisible(extension_app->id());
+}
+
bool TabStripModel::IsPhantomTab(int index) const {
return IsTabPinned(index) &&
GetTabContentsAt(index)->controller().needs_reload();
@@ -695,6 +708,8 @@ bool TabStripModel::IsContextMenuCommandEnabled(
return delegate_->CanRestoreTab();
case CommandTogglePinned:
return true;
+ case CommandToggleToolbar:
+ return true;
case CommandBookmarkAllTabs:
return delegate_->CanBookmarkAllTabs();
case CommandUseVerticalTabs:
@@ -780,6 +795,32 @@ void TabStripModel::ExecuteContextMenuCommand(
}
break;
}
+ case CommandToggleToolbar: {
+ UserMetrics::RecordAction(
+ UserMetricsAction("TabContextMenu_ToggleToolbar"),
+ profile_);
+
+ SelectTabContentsAt(context_index, true);
+
+ Extension* extension_app =
+ GetTabContentsAt(context_index)->extension_app();
+ if (!extension_app)
+ break;
+
+ ExtensionsService* service = profile()->GetExtensionsService();
+ ExtensionPrefs* prefs = service->extension_prefs();
+ bool new_val = !prefs->AreAppTabToolbarsVisible(extension_app->id());
+ prefs->SetAppTabToolbarVisibility(extension_app->id(), new_val);
+
+ // There might be multiple browsers displaying this app, so we send a
+ // notification to update them all.
+ NotificationService::current()->Notify(
+ NotificationType::EXTENSION_APP_TOOLBAR_VISIBILITY_CHANGED,
+ Source<Extension>(extension_app),
+ Details<bool>(&new_val));
+
+ break;
+ }
case CommandBookmarkAllTabs: {
UserMetrics::RecordAction(
@@ -866,6 +907,17 @@ void TabStripModel::Observe(NotificationType type,
break;
}
+ case NotificationType::EXTENSION_APP_TOOLBAR_VISIBILITY_CHANGED: {
+ Extension* extension = Source<Extension>(source).ptr();
+ bool* value = Details<bool>(details).ptr();
+ TabContents* selected = GetSelectedTabContents();
+
+ if (selected && selected->extension_app() == extension)
+ delegate_->SetToolbarVisibility(*value);
+
+ break;
+ }
+
default:
NOTREACHED();
}
diff --git a/chrome/browser/tabs/tab_strip_model.h b/chrome/browser/tabs/tab_strip_model.h
index 5e43d85..c00dbff 100644
--- a/chrome/browser/tabs/tab_strip_model.h
+++ b/chrome/browser/tabs/tab_strip_model.h
@@ -236,6 +236,9 @@ class TabStripModelDelegate {
// Toggles the use of the vertical tabstrip.
virtual void ToggleUseVerticalTabs() = 0;
+
+ // Set the visiblity of the toolbar.
+ virtual void SetToolbarVisibility(bool value) = 0;
};
////////////////////////////////////////////////////////////////////////////////
@@ -548,6 +551,9 @@ class TabStripModel : public NotificationObserver {
// See description above class for details on app tabs.
bool IsAppTab(int index) const;
+ // Returns true if the toolbar is visible for the tab at |index|.
+ bool IsToolbarVisible(int index) const;
+
// Returns true if the tab is a phantom tab. A phantom tab is one where the
// renderer has not been loaded.
// See description above class for details on phantom tabs.
@@ -620,6 +626,7 @@ class TabStripModel : public NotificationObserver {
CommandCloseTabsToRight,
CommandRestoreTab,
CommandTogglePinned,
+ CommandToggleToolbar,
CommandBookmarkAllTabs,
CommandUseVerticalTabs,
CommandLast
diff --git a/chrome/browser/tabs/tab_strip_model_unittest.cc b/chrome/browser/tabs/tab_strip_model_unittest.cc
index 90f3012..422a173 100644
--- a/chrome/browser/tabs/tab_strip_model_unittest.cc
+++ b/chrome/browser/tabs/tab_strip_model_unittest.cc
@@ -80,6 +80,7 @@ class TabStripDummyDelegate : public TabStripModelDelegate {
virtual void BookmarkAllTabs() {}
virtual bool UseVerticalTabs() const { return false; }
virtual void ToggleUseVerticalTabs() {}
+ virtual void SetToolbarVisibility(bool val) {}
private:
// A dummy TabContents we give to callers that expect us to actually build a