Index: chrome/browser/ui/tabs/tab_strip_model.cc |
diff --git a/chrome/browser/ui/tabs/tab_strip_model.cc b/chrome/browser/ui/tabs/tab_strip_model.cc |
index b7c60fbf90b974ee96176bae87dab73caad7e934..8a574edbb4f858ba4c5056f2dbdf307f2629e1fa 100644 |
--- a/chrome/browser/ui/tabs/tab_strip_model.cc |
+++ b/chrome/browser/ui/tabs/tab_strip_model.cc |
@@ -19,6 +19,7 @@ |
#include "chrome/browser/ui/tab_contents/core_tab_helper_delegate.h" |
#include "chrome/browser/ui/tabs/tab_strip_model_delegate.h" |
#include "chrome/browser/ui/tabs/tab_strip_model_order_controller.h" |
+#include "chrome/browser/ui/tabs/tab_utils.h" |
#include "chrome/browser/ui/web_contents_sizer.h" |
#include "chrome/common/url_constants.h" |
#include "components/web_modal/popup_manager.h" |
@@ -701,6 +702,16 @@ bool TabStripModel::IsTabPinned(int index) const { |
return contents_data_[index]->pinned(); |
} |
+void TabStripModel::SetTabAudioMuted(int index, bool mute) { |
+ DCHECK(ContainsIndex(index)); |
+ chrome::SetTabAudioMuted(GetWebContentsAt(index), mute); |
+} |
+ |
+bool TabStripModel::IsTabAudioMuted(int index) const { |
+ DCHECK(ContainsIndex(index)); |
+ return chrome::IsTabAudioMuted(GetWebContentsAt(index)); |
+} |
+ |
bool TabStripModel::IsMiniTab(int index) const { |
return IsTabPinned(index) || IsAppTab(index); |
} |
@@ -919,6 +930,15 @@ bool TabStripModel::IsContextMenuCommandEnabled( |
return false; |
} |
+ case CommandToggleTabAudioMuted: { |
+ std::vector<int> indices = GetIndicesForCommand(context_index); |
+ for (size_t i = 0; i < indices.size(); ++i) { |
+ if (!chrome::CanToggleAudioMute(GetWebContentsAt(indices[i]))) |
+ return false; |
+ } |
+ return true; |
+ } |
+ |
case CommandBookmarkAllTabs: |
return browser_defaults::bookmarks_enabled && |
delegate_->CanBookmarkAllTabs(); |
@@ -1026,6 +1046,20 @@ void TabStripModel::ExecuteContextMenuCommand( |
break; |
} |
+ case CommandToggleTabAudioMuted: { |
+ const std::vector<int>& indices = GetIndicesForCommand(context_index); |
+ const bool mute = !chrome::AreAllTabsMuted(*this, indices); |
+ if (mute) |
+ content::RecordAction(UserMetricsAction("TabContextMenu_MuteTabs")); |
+ else |
+ content::RecordAction(UserMetricsAction("TabContextMenu_UnmuteTabs")); |
+ for (std::vector<int>::const_iterator i = indices.begin(); |
+ i != indices.end(); ++i) { |
+ SetTabAudioMuted(*i, mute); |
+ } |
+ break; |
+ } |
+ |
case CommandBookmarkAllTabs: { |
content::RecordAction( |
UserMetricsAction("TabContextMenu_BookmarkAllTabs")); |