Chromium Code Reviews| Index: chrome/browser/ui/tabs/tab_utils.cc |
| diff --git a/chrome/browser/ui/tabs/tab_utils.cc b/chrome/browser/ui/tabs/tab_utils.cc |
| index 84956d19d9407363313a12bc4873cce71d3d2557..998bfa26984476291e6f64dfddd34f3c18140d8f 100644 |
| --- a/chrome/browser/ui/tabs/tab_utils.cc |
| +++ b/chrome/browser/ui/tabs/tab_utils.cc |
| @@ -4,9 +4,11 @@ |
| #include "chrome/browser/ui/tabs/tab_utils.h" |
| +#include "base/command_line.h" |
| #include "base/strings/string16.h" |
| #include "chrome/browser/media/media_capture_devices_dispatcher.h" |
| #include "chrome/browser/media/media_stream_capture_indicator.h" |
| +#include "chrome/common/chrome_switches.h" |
| #include "chrome/grit/generated_resources.h" |
| #include "content/public/browser/web_contents.h" |
| #include "grit/theme_resources.h" |
| @@ -134,6 +136,8 @@ TabMediaState GetTabMediaStateForContents(content::WebContents* contents) { |
| return TAB_MEDIA_STATE_RECORDING; |
| } |
| + if (IsTabAudioMutingFeatureEnabled() && contents->IsAudioMuted()) |
| + return TAB_MEDIA_STATE_AUDIO_MUTING; |
| if (IsPlayingAudio(contents)) |
| return TAB_MEDIA_STATE_AUDIO_PLAYING; |
| @@ -145,6 +149,8 @@ const gfx::Image& GetTabMediaIndicatorImage(TabMediaState media_state) { |
| switch (media_state) { |
| case TAB_MEDIA_STATE_AUDIO_PLAYING: |
| return rb.GetNativeImageNamed(IDR_TAB_AUDIO_INDICATOR); |
| + case TAB_MEDIA_STATE_AUDIO_MUTING: |
| + return rb.GetNativeImageNamed(IDR_TAB_AUDIO_MUTING_INDICATOR); |
| case TAB_MEDIA_STATE_RECORDING: |
| return rb.GetNativeImageNamed(IDR_TAB_RECORDING_INDICATOR); |
| case TAB_MEDIA_STATE_CAPTURING: |
| @@ -156,6 +162,18 @@ const gfx::Image& GetTabMediaIndicatorImage(TabMediaState media_state) { |
| return rb.GetNativeImageNamed(IDR_SAD_FAVICON); |
| } |
| +const gfx::Image& GetTabMediaIndicatorAffordanceImage( |
| + TabMediaState media_state) { |
| + ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
| + switch (media_state) { |
| + case TAB_MEDIA_STATE_AUDIO_PLAYING: |
| + case TAB_MEDIA_STATE_AUDIO_MUTING: |
| + return rb.GetNativeImageNamed(IDR_TAB_AUDIO_MUTING_AFFORDANCE); |
| + default: |
|
sky
2014/09/23 22:58:17
Can you explicitly list the states so that you get
miu
2014/09/24 22:34:15
Done.
|
| + return GetTabMediaIndicatorImage(media_state); |
| + } |
| +} |
| + |
| scoped_ptr<gfx::Animation> CreateTabMediaIndicatorFadeAnimation( |
| TabMediaState media_state) { |
| if (media_state == TAB_MEDIA_STATE_RECORDING || |
| @@ -191,6 +209,10 @@ base::string16 AssembleTabTooltipText(const base::string16& title, |
| result.append( |
| l10n_util::GetStringUTF16(IDS_TOOLTIP_TAB_MEDIA_STATE_AUDIO_PLAYING)); |
| break; |
| + case TAB_MEDIA_STATE_AUDIO_MUTING: |
| + result.append( |
| + l10n_util::GetStringUTF16(IDS_TOOLTIP_TAB_MEDIA_STATE_AUDIO_MUTING)); |
| + break; |
| case TAB_MEDIA_STATE_RECORDING: |
| result.append( |
| l10n_util::GetStringUTF16(IDS_TOOLTIP_TAB_MEDIA_STATE_RECORDING)); |
| @@ -206,4 +228,27 @@ base::string16 AssembleTabTooltipText(const base::string16& title, |
| return result; |
| } |
| +bool IsTabAudioMutingFeatureEnabled() { |
| +#if defined(USE_AURA) |
| + return base::CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kEnableTabAudioMuting); |
| +#else |
| + return false; |
| +#endif |
| +} |
| + |
| +bool CanToggleAudioMute(content::WebContents* contents) { |
| + switch (GetTabMediaStateForContents(contents)) { |
| + case TAB_MEDIA_STATE_NONE: |
| + case TAB_MEDIA_STATE_AUDIO_PLAYING: |
| + case TAB_MEDIA_STATE_AUDIO_MUTING: |
| + return IsTabAudioMutingFeatureEnabled(); |
| + case TAB_MEDIA_STATE_RECORDING: |
| + case TAB_MEDIA_STATE_CAPTURING: |
| + return false; |
| + } |
| + NOTREACHED(); |
| + return false; |
| +} |
| + |
| } // namespace chrome |