diff options
author | pinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-20 19:00:36 +0000 |
---|---|---|
committer | pinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-20 19:00:36 +0000 |
commit | ae62cfa9a110544f435f6c542ebbdddd780ca686 (patch) | |
tree | fe1c3b46bfd53b682c478ef43a1719d4d0044f86 /chrome/browser/tabs | |
parent | f37c44ad8b465a2c70e39caebe43ef805bb301d6 (diff) | |
download | chromium_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.cc | 52 | ||||
-rw-r--r-- | chrome/browser/tabs/tab_strip_model.h | 7 | ||||
-rw-r--r-- | chrome/browser/tabs/tab_strip_model_unittest.cc | 1 |
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 |