My favorites | Sign in
Project Home Downloads Wiki Issues Code Search
New issue   Search
for
  Advanced search   Search tips   Subscriptions
Issue 3541: Per tabs control over sounds in web pages
215 people starred this issue.
Comments by non-members will not trigger notification emails to users who starred this issue.
Back to list
 
Reported by skylined@chromium.org, Oct 17, 2008
We should add a "speaker" icon to every tab that allows you to en/disable 
sound for each individual tab. It should have three options: enabled, 
disable and auto. By default, each tab is set to "auto". A user can click 
the icon to change it.

enable = play sounds even if the tab is not the current tab.
disable = no sounds even if the tab is the current tab.
auto = play sounds only when the tab is the current tab. 


Oct 22, 2008
#1 j...@chromium.org
(No comment was entered for this change.)
Status: Available
Labels: -Area-Misc Area-BrowserUI Mstone-X
Nov 10, 2008
#2 pkasting@chromium.org
Not technically feasible on Windows XP and below. On Vista, would require a major 
rework of our plugin process model (one plugin process per tab), and I'm still not 
sure we could handle cases like Java that just go spawn their own processes anyway.

The UI for this is tricky too; this is a rarely-used (though useful in certain 
scenarios) feature and per-tab indicator/control surface area is at a premium.

I suggest punting this not because it's a bad idea but because the technical and UI 
issues probably make this impossible to do well.
Labels: -Pri-2 Pri-3
Dec 18, 2009
#3 or...@chromium.org
Area-UI-Features label replaces Area-BrowserUI label

Labels: -Area-BrowserUI Area-UI-Features
Feb 17, 2010
#4 lafo...@chromium.org
(No comment was entered for this change.)
Labels: -Area-UI-Features Area-UI
Sep 26, 2010
#5 mats.ahl...@gmail.com
I suggest against punting this, because it is an issue that most users probably care deeply about -- audio advertisements are extremely annoying, and are probably one of the leading causes of flash/java/etc. blockers.

The situation will become even more precarious in HTML 5 with the <audio> and <video> tags. There has to be a way to put the user in control of audio.

Things which should be blockable:
- flash plugins
- java plugins
- html5

Furthermore the user should almost certainly be able to set the default state of audio to "Off". When a page or plugin attempts to begin-playback of media, a dropdown alert appears saying "This page has requested permission to play audio. [Allow Once][Always Allow][X]".

I understand the technical situation is very precarious. And most likely, other browsers will not implement any sort of audio-layer block. This will inevitably result in most Internet Explorer and Firefox users blocking extremely useful technologies like HTML5 media (if possible; if impossible it may become a DOM-manipulation arms race between advertisers and popup blockers), flash (already blocked for this reason), and java (less commonly blocked for this reason). 

Alternatively, users will become disenchanted and turn down their volume when browsing the web -- but it would be ridiculous to say something like:

Use case: "Bob wants to browse the internet while listening to his music."
Reply: "Sorry, you need to be bombarded with audio ads if you want to listen to music while browsing the web. Or you need to block all the cool web technologies."

If Chrome really wants to promote new web technologies, it sure ensure that users do not hate those technologies. Audio ads will make users hate the technology with a passion, and I greatly fear this will happen to HTML5 and other new technologies.
Oct 6, 2010
#6 stuartmorgan@chromium.org
 Issue 28640  has been merged into this issue.
Oct 6, 2010
#7 stuartmorgan@chromium.org
 Issue 47682  has been merged into this issue.
Jan 9, 2011
#8 Catalin....@gmail.com
Believe it or not, sound advertising has become quite common, and such ads can be extremely annoying, especially when you have 100 tabs open and you don't really know which tab is producing the sound. Even worse, if more than one page is producing sound then the result is a complete mess. As explained by mats in Comment #5, I find myself completely turning off sound more and more often. This doesn't solve the problem, since the first time I actually need sound on my machine I'll still have to find the stupid sound tabs and kill them. This is extremely annoying!

There seem to be more users annoyed by this, see for instance the "Add option to disable sound from a window or tab" thread on Chrome support:
http://www.google.com/support/forum/p/Chrome/thread?tid=24e60d8b9f7a64b1&hl=en

Jan 9, 2011
#9 Catalin....@gmail.com
Here is one more related discussion thread entitled "Page Mute Button":
http://www.chromeboard.com/showthread.php?t=5353

From this thread I found out that the Chrome Toolbox (by Google)
https://chrome.google.com/extensions/detail/fjccknnhdnkbanjilpjddjhmkghmachn
has an advertised feature for muting all tabs. I don't think this works on Linux though (at least I didn't manage to find such a feature on Linux), still if this would work it would at least let me use Skype, or watch a movie, while having crazy sound tabs in my browser.
Jan 13, 2011
#10 zhamdi.into
I'm surprised with the answer because shutting down the browser process will stop the music, so it's definitely done in a thread group controlled by the browser. No??? The thing is to know if a process is using a sound resource, there can be a security add on in the browser that could allow or forbid any access to the lower sound apis no? since the browser is the "system" of a web page...
Jan 19, 2011
#11 oliverc...@gmail.com
Let's see if there might be another way of coming at this which is more likely to yield a reasonable solution.

The problem is background web pages which generate unrequested audio. This is distressing on two levels: firstly because you didn't want the audio in the first place, and secondly because you can't easily identify which is the offending tab. Identifying the tab would allow you to quickly close it, or locate the button to silence the plugin. The more tabs you have open, the harder it is to figure out which are generating sound. 

It is hard to have the browser process mediate all sound generated by plugins, as those plugins generally use the O/S sound APIs directly. The browser could however provide an API for the plugins to register that they are generating audio. Then the browser could identify visually which tabs are generating audio. The affected tab could change color, have a different border, or display an audio icon, perhaps even in place of the page icon. 

Not all plugins would use the API, but once the feature is in place in the browser, authors of well-behaved plugins would be expected to use the API to notify the browser that they are generating audio.
Jan 20, 2011
#12 zhamdi.into
I think the same strategy as we have in apps on Android, facebook etc... that says "this page is trying to use your sound card - Allow / Forbid" has to be adapted for web browsing in the inverse sequence (that means the browser allows the page to open but has the knowledge of which security writes the page took). After all, a web page is today an application in the majority of cases, it has to be checked for its rights...

That way we could have a general menu that will forbid the feature access per authorisation domain.

So from what I understood : Java and flash are responsible for their own sercurity handling without any authority from the browser. Chrome already integrated PDF and flash directly into its components (to avoid having a plugin crash without knowing about it). Maybe the solution would be to continue in that direction with Java. 

From the announcement of Chrome OS, I see the browser as an operating system for web pages. It is a pitty to delegate system features in a non central way: rely on Java's applet signature mechanism to allow a page to access your hard disk, have no control over your sound card actors, etc... I think all this should be centralized in the browser settings (and under the hood use a JMX service or equivalent to handle java, and other apis for the other plugins)
Jan 20, 2011
#13 evan@chromium.org
Lots of confusion on this bug and elsewhere.  Here's a brief summary of where we currently stand from a technical level:

1) Most sound that is produced by the browser is done by Flash.  The browser has no insight into whether Flash is making sound or not: Flash talks directly to the OS, without asking the browser.

2) There is one instance of Flash for all pages running.  This is also due to to technical limitations in the way Flash is implemented (Flash was created before there were browsers that could make use of multiple instances of Flash).

Putting those together, even if we could figure out whether Flash was making sound or not, we'd only be able to mute it on a global level.  (HTML5 audio is a different story: we do control that.  But almost no pages use HTML5 audio yet.)


I agree that it would be nice to be able to control sound on a per-tab level.  I appreciate that the UI could be tricky.  There's little point in discussing the UI or how nice this would be until the technical problems can be solved.  I suggest bringing this issue up on the Adobe bug tracker, not ours.
Jan 20, 2011
#14 sysco...@gmail.com
I thought that Chrome was now running Flash in sandboxed processes?
Does the sandbox not provide something like SysTrace auditing of open() calls?

If not, could the BSD systrace code be used for those platforms where it's available?  The author is a Google employee, so perhaps could help with porting to Windows, the only platform which Chrome supports that systrace doesn't.

http://www.citi.umich.edu/u/provos/systrace/

[but I thought the point of sandboxing was to provide just this sort of enforcement, except that the desire here is not necessarily to block, merely to alert (normally)]

If the sandbox can alert on, or selectively block, open() calls to the system's sound devices or daemon sockets, then you have a mechanism which works for *all* plugins, not just Adobe's, so this does seem like a Chromium issue.
Jan 20, 2011
#15 toejam...@gmail.com
Flash definitely isn't sandboxed - far too often I have Flash hang and take out all Flash based apps across my tabs, and it's very damn annoying.
Sandboxed Flash would definitely be nice, and would make this feasible, but I don't think we're going to be able to do much more then winge at Adobe to implement that - until then (it probably won't happen until widespread adoption of things like the <audio> and <video> tags), we're SoL.
Jan 20, 2011
#16 Catalin....@gmail.com
Here are some sound-control-related requests from the Adobe Flash issue tracker:
* User is unable to mute sound unless that feature is specifically created by the developer.
https://bugs.adobe.com/jira/browse/FP-1691
*  Better sound-control of Flash-Contents
https://bugs.adobe.com/jira/browse/FP-2172
* Add a context menu item to mute the sound for a specific SWF.
https://bugs.adobe.com/jira/browse/FP-5966
None of these issues seems to have gotten the attention of the Flash developers though.
Jan 20, 2011
#17 Catalin....@gmail.com
About a sanboxed Flash plugin, it was just a promise Google made a while ago: "With Adobe's help, we plan to further protect users by extending Chrome's “sandbox” to web pages with Flash content."
http://blog.chromium.org/2010/03/bringing-improved-support-for-adobe.html
Was there any progress on that? Is there at least a ticket one can star to be updated about progress in that? (I wasn't able to find one here)
Mar 8, 2011
#19 pastym...@gmail.com
Evan, since Flash is now sandboxed (https://code.google.com/p/chromium/issues/detail?id=50796), is this request any more feasible?
Jun 1, 2011
#20 g.h...@hook.net.nz
I would like to provide another possible option as an intrim to rewriting the plugin model as suggested.

The ability to disable/pause all the plugins on the page. This wont help if the page is all flash based but it should allow for disabling the annoying flash or audio file from continuing. If it was paused then it could be re-enabled from the point, but even just the removal would be enough to stop it.
Jun 2, 2011
#21 zhamdi.into
Yes there's already a plugin that does that blocks all flash content (you activate them one by one clicking on them). I use FlashBlock for that
Jun 6, 2011
#22 skylined@chromium.org
Not sure why I am the owner of this - it shouldn't be.
Owner: ---
Sep 4, 2011
#23 Catalin....@gmail.com
http://www.mutetab.com/ - Browser-wide Sound Management For Google Chrome

"MuteTab is a Chrome extension that helps you manage the sound coming from tabs in Google Chrome. It helps you to find which tab(s) are making sounds and provides browser-wide management of tab muting (calling JavaScript functions where available, otherwise hiding it from the page), including automatically muting all background tabs.

It does not, however, universally allow muting a video or game so that it can be played silently while listening to background sounds coming from another tab. (This is not possible in Chrome without either plug-ins such as Flash being updated or Chrome's plug-in architecture undergoing an unlikely major redesign.)"
Dec 6, 2011
#24 ldobb...@chromium.org
(No comment was entered for this change.)
Labels: Feature-Flash
Mar 24, 2012
#25 janne.en...@lietu.net
If you think it's too much of an issue for the UI, just make an extension API for controlling sound volume per tab, and we can make our extensions for doing this.

It is way too big of a pain when you open 50 tabs and suddenly one starts playing some audio that you didn't ask for, etc. and at the moment the only two options are to use the OS mixer to mute Chrome completely, or to close tabs one by one until the sound goes away ..

What I would want is at least the ability to create an extension that can do the following:

- Show an icon to control per-tab volume & mute state that would affect all the content of that tab, however having the ability to control HTML5 and Flash is much more important than anything else, so if that's all we can get, we'll take it.

- Set the default mute status to on, so the tabs won't randomly start playing stuff in the background when I don't want to.

- Open a browser-wide mixer where I see all the tabs, what's playing (output volume level would be nice), and ability to mute/unmute them from there

... no dialogs for allowing audio playback is necessary, if there's a visible indication of sound playing, the user can just choose to unmute if they want to ...
Mar 24, 2012
#26 janne.en...@lietu.net
Oh, the MuteTab extension did nothing for me.
Apr 6, 2012
#27 erik...@chromium.org
 Issue 122406  has been merged into this issue.
Cc: hareesh@google.com erik...@chromium.org
Jul 31, 2012
#28 viettrun...@chromium.org
This is a secret assignment, despite it appearing on a public bug tracker.
Status: Assigned
Owner: sail@chromium.org
Jul 31, 2012
#29 sail@chromium.org
 Issue 64215  has been merged into this issue.
Cc: viettrun...@chromium.org
Jul 31, 2012
#31 bugdro...@chromium.org
https://bugs.webkit.org/show_bug.cgi?id=92718
Labels: -WebKit-ID-92718 WebKit-ID-92718-NEW
Aug 1, 2012
#32 viettrun...@chromium.org
 Issue 69924  has been merged into this issue.
Aug 2, 2012
#33 henrika@chromium.org
(No comment was entered for this change.)
Cc: henrika@chromium.org
Oct 2, 2012
#34 sail@chromium.org
Just an update, I've been side tracked by some M23 / M24 work. If anyone has the spare time to land this in the mean time, that would be really appreciated.
Status: Available
Oct 12, 2012
#35 miu@chromium.org
 Issue 64215  has been merged into this issue.
Cc: miu@chromium.org
Oct 12, 2012
#36 miu@chromium.org
I'm going to take over landing *part* of this work.  What my project needs is just the code related to tagging each audio stream with its source (render view id).  It's not clear whether the WebKit changes will be required for that.

See  issue 153392  for more details on what exactly my project is.

I'll take over as owner for now, and re-assign back to sail@ once my work is completed.
Status: Assigned
Owner: miu@chromium.org
Cc: sail@chromium.org
Oct 12, 2012
#37 elaine.a...@gmail.com
Does anyone know how to remove me from this code group?  I am not a
programmer and I don't have any expertise (or interest, for that matter).  
Oct 12, 2012
#38 megazzt
Click on the star next to the issue title to unsubscribe from it.
Oct 12, 2012
#39 elaine.a...@gmail.com
Thanks very much!
Oct 17, 2012
#40 miu@chromium.org
(No comment was entered for this change.)
Labels: Feature-TabCapture
Blockedon: chromium:156535
Dec 3, 2012
#41 jamescook@chromium.org
Plumbing for this could be useful to make the Chrome OS tab discard avoid discarding background tabs playing audio.

Cc: jamescook@chromium.org
Dec 3, 2012
#42 jamescook@chromium.org
(No comment was entered for this change.)
Blocking: chromium:164081
Dec 4, 2012
#43 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=170919

------------------------------------------------------------------------
r170919 | miu@chromium.org | 2012-12-04T09:53:29.800971Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/media/audio/audio_output_device.h?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/audio_renderer_mixer_manager_unittest.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/webrtc_audio_device_unittest.cc?r1=170919&r2=170918&pathrev=170919
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/renderer_audio_output_device.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/renderer_webaudiodevice_impl.h?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/audio_input_message_filter.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/audio_input_message_filter.h?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/pepper/pepper_platform_audio_input_impl.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/render_audiosourceprovider.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/audio_renderer_host.h?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/audio_device_factory.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/audio_device_factory.h?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/render_view_impl.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/common/media/audio_messages.h?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/audio_message_filter.h?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/webrtc_audio_capturer.h?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/media/audio/audio_output_device_unittest.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/audio_input_renderer_host.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/audio_renderer_mixer_manager.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/audio_input_renderer_host.h?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/renderer_webaudiodevice_impl.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/audio_renderer_mixer_manager.h?r1=170919&r2=170918&pathrev=170919
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/renderer_audio_output_device.h?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/webrtc_audio_renderer.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/pepper/pepper_platform_audio_output_impl.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/content_renderer.gypi?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/render_audiosourceprovider.h?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/pepper/pepper_platform_audio_input_impl.h?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/webrtc_audio_renderer.h?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/pepper/pepper_platform_audio_output_impl.h?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/pepper/pepper_plugin_delegate_impl.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/audio_renderer_host.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/webrtc_audio_device_impl.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/audio_message_filter.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/media_stream_impl.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/webrtc_audio_capturer.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/test/webrtc_audio_device_test.cc?r1=170919&r2=170918&pathrev=170919
   M http://src.chromium.org/viewvc/chrome/trunk/src/media/audio/audio_output_device.cc?r1=170919&r2=170918&pathrev=170919

Associate audio streams with their source/destination RenderView.

This is a first step towards implementing three major Chromium features, all of which need to associate audio outputs with their source tabs.  See BUGs referenced by this change for more details.

Previous attempt/approach: https://codereview.chromium.org/11166002/

Specifics:

1. Added two new IPC messages: AudioHostMsg_AssociateStreamWithProducer and AudioInputHostMsg_AssociateStreamWithConsumer.
2. Added "associate to render_view_id" IPC calls: PepperPlatformAudioInputImpl, PepperPlatformAudioOutputImpl, RenderAudioSourceProvider, RendererWebAudioDeviceImpl, WebRtcAudioRenderer.
3. AudioOutputDevice instances re-use the same stream IDs.
4. Removed AudioDeviceFactory and replaced test-injection scheme in AudioRendererMixerManager.

Not in scope:

1. Associating RenderViews with audio input to WebRTC.
2. Associating RenderViews with streams produced by the AudioRendererMixer.
3. Speech Input (implementation is in the browser process, not the render process).

Testing method: Confirm correct render_view_id shows up in debug logging when engaging the various audio code paths.  Some of the many test sites used:

1. PPAPI (in and out): http://www.midomi.com/index.php?action=main.mic_check
2. WebMediaPlayer (e.g., <audio> and <video>): http://html5video.org/
3. WebAudio API: http://chromium.googlecode.com/svn/trunk/samples/audio/convolution-effects.html
4. WebRTC (output only): http://apprtc.appspot.com/

BUG=3541,64215,153392
TEST=Enabled debug logging via --vmodule=audio_renderer_host=1,audio_input_renderer_host=1 and then engaged the various Chrome audio code paths to confirm correct render_view_id shows up in browser process.


Review URL: https://chromiumcodereview.appspot.com/11359196
------------------------------------------------------------------------
Dec 7, 2012
#44 kjellander@chromium.org
(No comment was entered for this change.)
Labels: not-webrtc
Dec 10, 2012
#45 jeffr...@google.com
Hi, thanks for working on this much-requested feature. Can someone summarize what the next steps are? What plumbing work remains, and when should we hand it over to someone for the UI work? (Sailesh, are you still up for owning that, or do we need to find someone else? (Does that someone else need to be on the Pepper Flash team?))
Cc: jeffr...@chromium.org brettw@chromium.org cpu@chromium.org shess@chromium.org
Dec 10, 2012
#46 jeffr...@google.com
+glen and +jennschen to keep them looped in on the UI
Cc: glen@chromium.org jennsc...@google.com
Dec 10, 2012
#47 miu@chromium.org
Where we are (architecturally): The render process has been changed to send render_view_id via IPCs to AudioRendererHost in the browser process.  As you can see from the CL, that is as far as the communication goes (i.e., nothing in the browser process consumes this new data yet).

What we need: Sailesh was originally going to plumb this further into MediaInternals (https://chromiumcodereview.appspot.com/10823097/).  Assuming that approach is still valid, we'd then need something observing MediaInternals events and toggling UI indicators.  I've asked Sailesh to help me find an owner for this (or it might end up being me).

I think it makes sense to officially kick-off the UI design/development work.  This effort should involve jennschen@, as she's also working on the new tab mirroring UI.  Once a UI design has been determined, I imagine the coding should be straightforward.

Dec 11, 2012
#48 jeffr...@google.com
Cool, I met with Jenn today and we came to agreement on the UI. I'll follow up over email and she should be able to make/finalize the assets sometime soon.

As for eng ownership, it sounds like it's going to have to be you, miu@. (Thanks.)
Dec 11, 2012
#49 jeffr...@google.com
cpu@ said he can work on the UI pieces. miu@, I'll let you guys coordinate.

How about let's shoot for M26 for this (branching in mid-February, so we would want to get it enabled-by-default on trunk before January 25 at the latest).
Labels: -Pri-3 Pri-2 Mstone-26
Dec 11, 2012
#50 miu@chromium.org
Happy to own this.  :)

M26 sounds doable.  Disclaimer: I have to prioritize this alongside my other meaty Chrome projects (to implement tab-level audio mirroring), which are also targeting M26.
Dec 14, 2012
#51 bauerb@chromium.org
(No comment was entered for this change.)
Cc: bauerb@chromium.org
Dec 18, 2012
#52 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=173721

------------------------------------------------------------------------
r173721 | miu@chromium.org | 2012-12-18T12:19:00.831471Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/audio_renderer_mixer_manager_unittest.cc?r1=173721&r2=173720&pathrev=173721
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/audio_renderer_mixer_manager.cc?r1=173721&r2=173720&pathrev=173721
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/audio_renderer_mixer_manager.h?r1=173721&r2=173720&pathrev=173721
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/render_audiosourceprovider.cc?r1=173721&r2=173720&pathrev=173721

Have AudioRendererMixerManager use separate mixers for separate render views.  This is a follow-up on SVN r170919; and adds support for associating RenderViews with audio streams mixed together in the render process.

BUG=3541
TEST=AudioRendererMixerManagerTest.* in content_unittests.  Also, ran a local Chrome build with --vmodule=audio_renderer_host=1,render_audiosourceprovider=1 and used window.open() to create multiple RenderViews in one render process, and confirmed desired behaviors.


Review URL: https://chromiumcodereview.appspot.com/11598002
------------------------------------------------------------------------
Dec 19, 2012
#53 cpu@chromium.org
Playing audio signal in canary windows seems unreliable for gmail. See  bug 166933 .
Blockedon: chromium:166933
Jan 8, 2013
#54 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=175638

------------------------------------------------------------------------
r175638 | cpu@chromium.org | 2013-01-09T00:38:32.816929Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab.cc?r1=175638&r2=175637&pathrev=175638
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab.h?r1=175638&r2=175637&pathrev=175638

Clean up the tab animation code

Keep only one tab and only one icon animation object. So when
we add more cases we don't expand the class state.

BUG=3541
TEST=none
Review URL: https://codereview.chromium.org/11753021
------------------------------------------------------------------------
Jan 16, 2013
#55 kjellander@chromium.org
(No comment was entered for this change.)
Labels: not-speechapi
Jan 23, 2013
#56 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=178460

------------------------------------------------------------------------
r178460 | cpu@chromium.org | 2013-01-24T01:27:05.911647Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab.cc?r1=178460&r2=178459&pathrev=178460
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab.h?r1=178460&r2=178459&pathrev=178460

Clean up the tab animations (part 2)

Here we reach the end goal of only having
one animation object for the tab and one
animation object for the icon

Also removed dead flag kAppsNoThrob.

BUG=3541
TEST=none
Review URL: https://codereview.chromium.org/12033027
------------------------------------------------------------------------
Feb 4, 2013
#57 jeffr...@google.com
We should re-target this to M27 since M26 is branching in less than a week. Thanks again for working on this.
Labels: -Mstone-26 Mstone-27
Feb 6, 2013
#58 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=181088

------------------------------------------------------------------------
r181088 | cpu@chromium.org | 2013-02-06T23:17:40.236249Z

Changed paths:
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/theme/default_100_percent/common/audio_animation.png?r1=181088&r2=181087&pathrev=181088
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/theme/default_200_percent/common/audio_animation.png?r1=181088&r2=181087&pathrev=181088
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/theme/theme_resources.grd?r1=181088&r2=181087&pathrev=181088

Audio animation frames

Two tell you which tab is making noise, or pleasant music depending who you ask.

two pngs of six frames:
180x30 (30x30 frame)
90x15 (15x15 frame)

BUG=3541
TEST=none
Review URL: https://codereview.chromium.org/12213047
------------------------------------------------------------------------
Feb 6, 2013
#59 techtonik@gmail.com
If there are too many tabs, will the tabs that emit sound be visible anyway like the pinned ones?
Feb 11, 2013
#60 sail@chromium.org
 Issue 175391  has been merged into this issue.
Feb 11, 2013
#61 miu@chromium.org
 Issue 175391  has been merged into this issue.
Feb 12, 2013
#62 jamescook@chromium.org
(No comment was entered for this change.)
Blocking: chromium:164587
Feb 13, 2013
#63 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=182364

------------------------------------------------------------------------
r182364 | bauerb@chromium.org | 2013-02-14T01:11:25.685025Z

Changed paths:
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/media/audio_stream_indicator.cc?r1=182364&r2=182363&pathrev=182364
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/media/audio_stream_indicator.h?r1=182364&r2=182363&pathrev=182364
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/media/media_capture_devices_dispatcher.cc?r1=182364&r2=182363&pathrev=182364
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/media/media_capture_devices_dispatcher.h?r1=182364&r2=182363&pathrev=182364
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/tabs/tab_utils.cc?r1=182364&r2=182363&pathrev=182364
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/tabs/tab_utils.h?r1=182364&r2=182363&pathrev=182364
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser.gypi?r1=182364&r2=182363&pathrev=182364
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/mock_media_observer.h?r1=182364&r2=182363&pathrev=182364
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/audio_renderer_host.cc?r1=182364&r2=182363&pathrev=182364
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/browser/media_observer.h?r1=182364&r2=182363&pathrev=182364

Add a method to tab_utils.h to find out whether a tab is playing audio.


BUG=3541


Review URL: https://chromiumcodereview.appspot.com/11573066
------------------------------------------------------------------------
Feb 20, 2013
#64 cpu@chromium.org
Currently looking like this (see attached).

It needs more animation frames, right now looks a bit janky. But for the purposes of canary it suffices.

audio_tabs.png
511 KB   View   Download
Feb 20, 2013
#65 miu@chromium.org
(No comment was entered for this change.)
Blocking: -chromium:164587
Feb 21, 2013
#66 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=183977

------------------------------------------------------------------------
r183977 | cpu@chromium.org | 2013-02-22T02:04:24.877486Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab_renderer_data.cc?r1=183977&r2=183976&pathrev=183977
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab.cc?r1=183977&r2=183976&pathrev=183977
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab_renderer_data.h?r1=183977&r2=183976&pathrev=183977
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab.h?r1=183977&r2=183976&pathrev=183977
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc?r1=183977&r2=183976&pathrev=183977

Audio indicator in each tab

Basically a throbber animation that cycles over a number of
frames on a bitmap. Currently only 6 frames, which is too little
but good enough for testing.

Note that the tab.cc logic should make it so that the audio indicator
is low on the priority. That is, if the tab is recording or broadcasting and
playing sounds that should show instead of the audio animation.

BUG=3541
TEST=see bug

Review URL: https://chromiumcodereview.appspot.com/12328027
------------------------------------------------------------------------
Feb 21, 2013
#67 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=183980

------------------------------------------------------------------------
r183980 | dalecurtis@google.com | 2013-02-22T02:24:06.348886Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab_renderer_data.cc?r1=183980&r2=183979&pathrev=183980
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab.cc?r1=183980&r2=183979&pathrev=183980
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab_renderer_data.h?r1=183980&r2=183979&pathrev=183980
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab.h?r1=183980&r2=183979&pathrev=183980
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc?r1=183980&r2=183979&pathrev=183980

Revert 183977
> Audio indicator in each tab
> 
> Basically a throbber animation that cycles over a number of
> frames on a bitmap. Currently only 6 frames, which is too little
> but good enough for testing.
> 
> Note that the tab.cc logic should make it so that the audio indicator
> is low on the priority. That is, if the tab is recording or broadcasting and
> playing sounds that should show instead of the audio animation.
> 
> BUG=3541
> TEST=see bug
> 
> Review URL: https://chromiumcodereview.appspot.com/12328027

Broke Linux ChromiumOS Debug Clang: http://goo.gl/iOwf2

TBR=cpu@chromium.org
Review URL: https://codereview.chromium.org/12319058
------------------------------------------------------------------------
Feb 22, 2013
#68 cpu@chromium.org
The fix for  bug 164587  landed a few minutes ahead of mine and it renamed a function that I was using so my patch via CQ broke chrome and was reverted. Both incompatible patches in the same CQ run. awesome.

That is what happens when you put your faith in technology. Trying again today.


Feb 22, 2013
#69 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=184183

------------------------------------------------------------------------
r184183 | cpu@chromium.org | 2013-02-22T21:41:56.431700Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab_renderer_data.cc?r1=184183&r2=184182&pathrev=184183
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab.cc?r1=184183&r2=184182&pathrev=184183
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab_renderer_data.h?r1=184183&r2=184182&pathrev=184183
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab.h?r1=184183&r2=184182&pathrev=184183
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc?r1=184183&r2=184182&pathrev=184183

Audio indicator in each tab

Basically a throbber animation that cycles over a number of
frames on a bitmap. Currently only 6 frames, which is too little
but good enough for testing.

Note that the tab.cc logic should make it so that the audio indicator
is low on the priority. That is, if the tab is recording or broadcasting and
playing sounds that should show instead of the audio animation.

BUG=3541
TEST=see bug

Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=183977
Review URL: https://codereview.chromium.org/12328027
------------------------------------------------------------------------
Feb 22, 2013
#70 techtonik@gmail.com
In theory it is possible to build an index of functions (and other stuff)
of the project and use commit hook script to validate that your snippet is
valid. I know it is a job of compiler, but compilers need to evolve sooner
or later. Distributed compiler with distributed state that could be checked
and updated incrementally. A technically feasible dream.
Feb 25, 2013
#71 c...@google.com
its a bit crashy on canary a fix is in the works :
https://codereview.chromium.org/12319104/


Feb 27, 2013
#72 jeffr...@google.com
thakis@ may do the implementation on Mac. (I'll let him confirm when he has the time to take a look.)
Cc: thakis@chromium.org
Feb 28, 2013
#73 jeffr...@google.com
(No comment was entered for this change.)
Blockedon: chromium:178607
Feb 28, 2013
#74 jeffr...@google.com
adding yihongg@ for QA.
Cc: yiho...@chromium.org
Mar 2, 2013
#76 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=185715

------------------------------------------------------------------------
r185715 | sail@chromium.org | 2013-03-02T17:14:29.960189Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/tab_strip_controller.mm?r1=185715&r2=185714&pathrev=185715
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/throbbing_image_view.mm?r1=185715&r2=185714&pathrev=185715
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/throbbing_image_view.h?r1=185715&r2=185714&pathrev=185715

Mac: Audio indicator in each tab

This is the Mac version of this views CL:
https://chromiumcodereview.appspot.com/12328027/

When audio is playing a throbber animation is displayed in the tab.

BUG=3541
TEST=
    Navigate to http://www.html5rocks.com/en/tutorials/video/basics/
    Play video. Verify that throbber is displayed over the fav icon.
    Pause video. Verify that throbber stops.


Review URL: https://chromiumcodereview.appspot.com/12374042
------------------------------------------------------------------------
Mar 7, 2013
#77 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=186778

------------------------------------------------------------------------
r186778 | sail@chromium.org | 2013-03-07T20:40:35.948393Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/theme/default_100_percent/common/audio_animation.png?r1=186778&r2=186777&pathrev=186778
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/theme/default_200_percent/common/audio_animation.png?r1=186778&r2=186777&pathrev=186778

Audio indicator: updated icons

New audio indicator icons:
  - more frames, from 6 to 24
  - switch to 16x16 to match fav icon sizes
The 2nd change also fixes a problem where we were drawing the 2x icon in 1x mode.

BUG=3541

Review URL: https://codereview.chromium.org/12545015
------------------------------------------------------------------------
Mar 9, 2013
#78 joesix...@gmail.com
FYI, the audio indicator icons as currently implemented can become invisible in tab stacking mode. 
Mar 10, 2013
#79 bugdro...@chromium.org
(No comment was entered for this change.)
Labels: -Area-UI -Feature-Flash -Feature-TabCapture -Mstone-27 Cr-UI-Browser-TabCapture Cr-Content-Plugins-Flash M-27 Cr-UI
Mar 11, 2013
#80 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=187216

------------------------------------------------------------------------
r187216 | sail@chromium.org | 2013-03-10T18:52:04.579771Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/throbbing_image_view.h?r1=187216&r2=187215&pathrev=187216
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/tab_strip_controller.mm?r1=187216&r2=187215&pathrev=187216
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/throbbing_image_view.mm?r1=187216&r2=187215&pathrev=187216

Revert 185715
> Mac: Audio indicator in each tab
> 
> This is the Mac version of this views CL:
> https://chromiumcodereview.appspot.com/12328027/
> 
> When audio is playing a throbber animation is displayed in the tab.
> 
> BUG=3541
> TEST=
>     Navigate to http://www.html5rocks.com/en/tutorials/video/basics/
>     Play video. Verify that throbber is displayed over the fav icon.
>     Pause video. Verify that throbber stops.
> 
> 
> Review URL: https://chromiumcodereview.appspot.com/12374042

TBR=sail@chromium.org
Review URL: https://codereview.chromium.org/12701004
------------------------------------------------------------------------
Mar 12, 2013
#81 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=187602

------------------------------------------------------------------------
r187602 | sail@chromium.org | 2013-03-12T16:58:33.509842Z

Changed paths:
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/theme/default_100_percent/common/audio_equalizer_column.png?r1=187602&r2=187601&pathrev=187602
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/theme/default_200_percent/common/audio_equalizer_column.png?r1=187602&r2=187601&pathrev=187602
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/theme/theme_resources.grd?r1=187602&r2=187601&pathrev=187602

Audio indicator: new single column icons

The current audio indicator icon is filmstrip containing 24 icons. Each icon
represents an equlizer with 3 columns (bars).

This CL adds a new audio indicator icon that's just a single bar. This bar is drawn
three times at various vertical offsets to achieve the same effect.

BUG=3541

Review URL: https://codereview.chromium.org/12595006
------------------------------------------------------------------------
Mar 12, 2013
#82 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=187690

------------------------------------------------------------------------
r187690 | sail@chromium.org | 2013-03-12T23:16:02.300473Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/media/audio_stream_indicator.h?r1=187690&r2=187689&pathrev=187690
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_ui.gypi?r1=187690&r2=187689&pathrev=187690
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=187690&r2=187689&pathrev=187690

Audio indicator: cross platform drawing and animation

This CL adds a new class, TabAudioIndicator, that does cross-platform
drawing and animating of the audio indicator.

BUG=3541
TEST=Verified that TabAudioIndicatorTest.* passed. UI changes to come in a later patch.

Review URL: https://codereview.chromium.org/12744003
------------------------------------------------------------------------
Mar 12, 2013
#83 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=187692

------------------------------------------------------------------------
r187692 | sail@chromium.org | 2013-03-12T23:21:37.685036Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_ui.gypi?r1=187692&r2=187691&pathrev=187692
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=187692&r2=187691&pathrev=187692
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/media/audio_stream_indicator.h?r1=187692&r2=187691&pathrev=187692

Revert 187690 "Audio indicator: cross platform drawing and anima..."

> Audio indicator: cross platform drawing and animation
> 
> This CL adds a new class, TabAudioIndicator, that does cross-platform
> drawing and animating of the audio indicator.
> 
> BUG=3541
> TEST=Verified that TabAudioIndicatorTest.* passed. UI changes to come in a later patch.
> 
> Review URL: https://codereview.chromium.org/12744003

TBR=sail@chromium.org
------------------------------------------------------------------------
Mar 12, 2013
#84 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=187720

------------------------------------------------------------------------
r187720 | sail@chromium.org | 2013-03-13T00:38:16.001548Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_ui.gypi?r1=187720&r2=187719&pathrev=187720
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=187720&r2=187719&pathrev=187720
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/tabs/tab_audio_indicator_unittest.cc?r1=187720&r2=187719&pathrev=187720
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/media/audio_stream_indicator.h?r1=187720&r2=187719&pathrev=187720
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/tabs/tab_audio_indicator.cc?r1=187720&r2=187719&pathrev=187720
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/tabs/tab_audio_indicator.h?r1=187720&r2=187719&pathrev=187720

Audio indicator: cross platform drawing and animation

This CL adds a new class, TabAudioIndicator, that does cross-platform
drawing and animating of the audio indicator.

BUG=3541
TEST=Verified that TabAudioIndicatorTest.* passed. UI changes to come in a later patch.

Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=187690

Review URL: https://codereview.chromium.org/12744003
------------------------------------------------------------------------
Mar 13, 2013
#85 sergeyu@chromium.org
 Issue 184655  has been merged into this issue.
Mar 14, 2013
#86 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=188191

------------------------------------------------------------------------
r188191 | sail@chromium.org | 2013-03-14T21:00:45.623536Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab_unittest.cc?r1=188191&r2=188190&pathrev=188191
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab.cc?r1=188191&r2=188190&pathrev=188191
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/views/tabs/tab.h?r1=188191&r2=188190&pathrev=188191

Audio indicator: Views UI

This CL hooks up the new TabAudioIndicator class to the Views UI.

Test build: https://docs.google.com/file/d/0B0Odde3V7EhWQklseGhYcmZ5R3M/edit?usp=sharing

BUG=3541
TEST=Played audio and verified that an audio indicator was displayed
in the tab.

Review URL: https://codereview.chromium.org/12757002
------------------------------------------------------------------------
Mar 15, 2013
#87 jaim...@google.com
I love this feature. One piece of feedback. It's really tough to see the audio indicator on fav icons with white backgrounds. EX: http://www.campanulasf.com/. I'd imagine it would be even harder for grey?
Mar 15, 2013
#88 bugdro...@chromium.org
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=188475

------------------------------------------------------------------------
r188475 | sail@chromium.org | 2013-03-15T21:06:44.212682Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/tab_strip_controller.mm?r1=188475&r2=188474&pathrev=188475
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/tab_audio_indicator_view_mac.h?r1=188475&r2=188474&pathrev=188475
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/tab_audio_indicator_view_mac_unittest.mm?r1=188475&r2=188474&pathrev=188475
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/tab_audio_indicator_view_mac.mm?r1=188475&r2=188474&pathrev=188475
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_ui.gypi?r1=188475&r2=188474&pathrev=188475
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=188475&r2=188474&pathrev=188475

Audio indicator: Mac UI

This CL hooks up the new TabAudioIndicator class to the Mac UI.

Test build: https://docs.google.com/file/d/0B0Odde3V7EhWREFSdzlEWlJIY0E/edit?usp=sharing

BUG=3541
TEST=Navigated to http://www.html5rocks.com/en/tutorials/video/basics/
Played video  and verified that an audio indicator was displayed in the tab.

Review URL: https://chromiumcodereview.appspot.com/12648004
------------------------------------------------------------------------
Mar 19, 2013
#89 jeffr...@google.com
As per our email thread, we're going to take another cycle to get all the UI details right.
Labels: -M-27 M-28
Mar 19, 2013
#90 aever...@gmail.com
Thanks for your work on this feature. I starred this issue several years ago, and it's nice to have patience finally pay off.

In theory I love the idea; in practice, however, it is not turning out as helpful as I had imagined.
If the UI is still being reworked, might I suggest making the indicator significantly more visible in a couple of ways?

1. Is there some way to make sure there is sufficient contrast between the "EQ" animation and the favicon?

2. If the user has too many tabs open, the animation on the favicon can't be seen. To make it more visible, could the tab's color be changed, or could it even pulse dynamically (I'm dreaming, I know) in response to the sound being produced?

3. Could some kind of sound indicator also be added to the line in the Task Manager for the process? (I'm searching here as a result of having too many tabs open to see the favicon.)

Thanks for this nice feature; looking forward to seeing further developments!
Mar 20, 2013
#91 Jher...@gmail.com
Please see ticket #'d  Issue 217706 . I have Windows XP and last week I noticed that the favicon on the bookmark's bar would show the "Pause" symbol whenever I paused a YouTube video. As noted in the ticket I created, this was a fantastic feature, but soon thereafter it disappeared. Any word on whether it will be re-added? 

Changing the favicon on the tab to show the "Pause" symbol is fine, but it's so much better to see the change on the bookmark's bar -- especially if you, as in my case, remove the bookmark name so that the favicon looks like a button.
Mar 20, 2013
#92 megazzt
That is a YouTube feature, not a Chrome feature.  Any website can do something like that.  I doubt the Chrome team has any control over what the YouTube team chooses to do with their site. :)
Mar 22, 2013
#93 Jher...@gmail.com
I'll do that. I wasn't aware that Chrome bookmark and tab favicons weren't Chrome features. Thanks for the follow-up.
Mar 27, 2013
#94 bugdro...@chromium.org
------------------------------------------------------------------------
r190985 | sail@chromium.org | 2013-03-27T18:36:01.573732Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/theme/default_100_percent/common/audio_equalizer_column.png?r1=190985&r2=190984&pathrev=190985
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/theme/default_200_percent/common/audio_equalizer_column.png?r1=190985&r2=190984&pathrev=190985

Tab audio indicator tweaks (binary files)

This are the binary files for this CL:
https://codereview.chromium.org/13055002/

BUG=3541
TBR=cpu@chromium.org

Review URL: https://codereview.chromium.org/12845014
------------------------------------------------------------------------
Apr 5, 2013
#97 bugdro...@chromium.org
(No comment was entered for this change.)
Labels: Cr-Blink
Apr 5, 2013
#98 bugdro...@chromium.org
(No comment was entered for this change.)
Labels: -Cr-Content-Plugins-Flash Cr-Internals-Plugins-Flash
Apr 10, 2013
#99 bugdro...@chromium.org
------------------------------------------------------------------------
r193521 | sail@chromium.org | 2013-04-11T00:35:50.227284Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/tabs/tab_audio_indicator.cc?r1=193521&r2=193520&pathrev=193521

Tab audio indicator: tweak levels

New level values from sgabriel.

BUG=3541
TBR=thakis@chromium.org
NOTRY=true


Review URL: https://chromiumcodereview.appspot.com/13987005
------------------------------------------------------------------------
Apr 17, 2013
#100 bugdro...@chromium.org
------------------------------------------------------------------------
r194657 | sail@chromium.org | 2013-04-17T19:41:15.795836Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/tabs/tab_audio_indicator.cc?r1=194657&r2=194656&pathrev=194657

Tab audio indicator: Tweak animation

Two small tweaks to the audio indicator:
  - change the equalizer levels to look better with fewer bars
  - make animation slightly faster 300 ms per frame to 250 ms per frame.
This doesn't noticeably increase CPU usage on my machine.

Also fixed a small bug where the indicator would be drawn incorrectly
when an equalizer level was 0.

BUG=3541
TEST=Played a youtube video. Verified that the audio indicator in the
     favicon was updated.

Review URL: https://codereview.chromium.org/14139022
------------------------------------------------------------------------
Apr 18, 2013
#101 bugdro...@chromium.org
------------------------------------------------------------------------
r195059 | sail@chromium.org | 2013-04-19T03:07:41.410187Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/tab_strip_controller.h?r1=195059&r2=195058&pathrev=195059
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/throbbing_image_view.h?r1=195059&r2=195058&pathrev=195059
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/throbbing_image_view_unittest.mm?r1=195059&r2=195058&pathrev=195059
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/tab_strip_controller.mm?r1=195059&r2=195058&pathrev=195059
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/throbbing_image_view.mm?r1=195059&r2=195058&pathrev=195059
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/tab_audio_indicator_view_mac.h?r1=195059&r2=195058&pathrev=195059
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/tab_audio_indicator_view_mac.mm?r1=195059&r2=195058&pathrev=195059
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/tab_projecting_image_view.h?r1=195059&r2=195058&pathrev=195059
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/tab_projecting_image_view_unittest.mm?r1=195059&r2=195058&pathrev=195059
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/tabs/tab_projecting_image_view.mm?r1=195059&r2=195058&pathrev=195059

Tab audio indicator: Use animation container on Mac

When showning an audio indicator on multiple tabs, the CPU usage on
my machine is:
  1 tab: 1.5%
  2 tab: 2.5%
  3 tab: 3.2%

This CL uses a common animation container for all tabs in a window.
This changes the CPU usage to:
  1 tab: 1.5%
  2 tab: 1.5%
  3 tab: 1.5%

BUG=3541

Review URL: https://chromiumcodereview.appspot.com/13867007
------------------------------------------------------------------------
Apr 22, 2013
#102 HoshiN...@gmail.com
I would think how about the Web Audio API with control panel capabilities to achieve per-tab volume control. Group domain, application categories to enable and disable the audio.

AND even giving access to OS per-application volume control. 
(Think about when future, where the computing may look like a bit of Minority Report, we either need an cross platform High-Level control panel or fragmented OS audio control panel to manage different tabs in BROWSER and applications control. )

May 8, 2013
#103 bugdro...@chromium.org
Moving all non essential bugs to the next Milestone.
Labels: -M-28 MovedFrom-28 M-29
Jul 24, 2013
#104 lafo...@google.com
(No comment was entered for this change.)
Cc: -jeffr...@chromium.org
Oct 22, 2013
#105 miu@chromium.org
Update: The re-designed tab audio output indicator will be enabled by default (https://codereview.chromium.org/32543006), starting with tomorrow's Chrome Canary (or the next day, depending on where the branch gets cut).  For those that can't wait, running the current canary with the --enable-audible-notifications command-line flag will activate the feature.

To address a plethora of usability concerns, we ditched the original "equalizer bars over favicon" treatment, and went with a simpler and less-distracting static icon to the right of the title text within the tab.  We also took this opportunity to clean-up the tab capture and webcam/microphone recording indicators, making everything consistent.

There have been questions about whether the indicator will work for all browser audio.  It should work for all browser built-ins and also all plugins that deliver audio to the operating system *through* Chrome.  So, Pepper Flash (the Flash built into Chrome) and all PPAPI/NACL plugins should activate the indicator.  On the other hand, NPAPI plugins (e.g., non-built-in Flash or QuickTime or Silverlight) deliver audio directly to the operating system, and so Chrome has no way to "listen" to activate the indicator.

Enjoy!  :-)

Cc: som...@chromium.org
Labels: -M-29 M-32
Oct 22, 2013
#106 adman.com@gmail.com
Just wondering, is there any (visual) distinction between a tab recording video and a tab recording audio? Could there be if there isn't? just "recording" isn't very granular.
Oct 23, 2013
#107 dhw@chromium.org
 Issue 165045  has been merged into this issue.
Nov 7, 2013
#108 kar...@google.com
This issue has already been moved once and is lower than Priority 1,therefore removing mstone.
Labels: -M-32 MovedFrom-32
Nov 11, 2013
#109 bugdro...@chromium.org
(No comment was entered for this change.)
Labels: -Cr-UI-Browser-TabCapture Cr-Internals-Media-Capture-Tab
Feb 6, 2014
#110 nothingl...@gmail.com
The speaker icon is next to useless if you have more than ~100 tabs open (dependent on screen resolution). Use of flag #stacked-tab-strip can help, but said flag's behaviour is not up to par with Mozilla's implementation.
Feb 6, 2014
#111 mcwag...@gmail.com
When there is a short (read: really, really short) pause the icon appears to flicker. I've noticed this more after switching to HTML5 Audio on Google Play. I don't know if it's a conscience, but the same behavior started up on the YouTubes, too...
Feb 6, 2014
#112 miu@chromium.org
mcwagner: The aggressiveness of the toggle on/off of the indicator is being addressed in open  bug 339133 .

Feb 7, 2014
#113 miu@chromium.org
We've introduced a tab audio playback indicator (as of Chrome 32).

However, after much debate, we decided not to proceed with a tab mute control, as this crosses a very important line: If we provide Chrome controls for content, we're implying that Chrome should take on a responsibility to police content.

Today, users are (rightfully) mad at misbehaving content for doing things like auto-playing annoying ad audio, but they should continue to pressure web site authors to change this behavior.  Also, some have pointed out that there is already a mute button to the right of the audio indicator (the "X").  In all seriousness, note that many web pages will register onClose() events to monitor when users leave their site.  Thus, closing the tab will be a very strong signal to the web sites that their annoying ads are scaring all their users away!

For "behaving" content, we think it's reasonable for a user to click on a tab and use the content's media controls to stop playback.  In this case, a Chrome tab mute control would be redundant.  This redundancy is bad since it can confuse users (e.g., to play a video and forget that a tab was muted days ago); and, based on experience, confused users often report unexpected behaviors as browser bugs, which would be a big distraction to the Support and Eng staff.

Status: Fixed
Feb 7, 2014
#115 jared.s...@gmail.com
I built the MuteTab Chrome extension.  I have had 220,000 people try out my extension since it came out and a very frequent request is that people want to be able to play old Flash games (which lack a mute button) muted while listening to their background music coming from another tab.  At present, there is still no solution for this problem (although now it should be technically possible via changes within Chrome.)

I think there should be a new Chrome API that lets extensions control sound.  (That API could also be used to implement another user request I've seen a few times: mute all tabs by default, and it would help people discover sounds when they have so many tabs open (or over multiple windows) that they cannot see all of the audio indicators.  By doing this at the extension level, it doesn't force Chrome to police content.

(I've already looked through the Chromium code to roughly identify required changes to enable this API and have started putting together an extension API proposal; not sure if it makes sense to add an issue to this site or not.)

Jared Sohn
http://www.mutetab.com/
Feb 7, 2014
#116 miu@chromium.org
Jared: Sounds reasonable to me.  Yes, please open a new issue and cc me (miu@chromium.org), and add this label so the extensions folks can find it: Cr-Platform-Extensions-API.
Feb 10, 2014
#117 zhamdi.into
#113 miu@chromium.org: 

Thanks for this complete and wise answer, maybe there could be a "chrome reporting service" that saves how often people mute a page and processes that result as a "ranking vector": people who behave by muting a tab are definitely agressed by that specific tab and don't want to mute the entire computer, at the same time, they don't want to close the tab because there is a part of the content (usually the hook to the annoying advertisement) that interests them (but they are annoyed by the ad)

So even for the advertiser this information is valuable to understand they're taking the wrong direction. The content provider will be afraid to loose audience and will choose more gallant partners.

This said, the aggressiveness of the toggle on/off of the indicator is by fare less aggressive than the "X" button, so this is still a middle 'tuned' reaction :-)
Feb 11, 2014
#118 pkasting@chromium.org
miu: Comment 113 doesn't make sense to me, in particular where you say that "If we provide Chrome controls for content, we're implying that Chrome should take on a responsibility to police content."  Chrome provides all kinds of controls for content, and has done so for years.  Look at all the different content settings for examples of how Chrome lets you make plugins click-to-play, disable images, prompt before accepting cookies, etc.

How is this feature different than all those others?

Regarding the rest of your points:

* If I load a page and then leave it five seconds later, how does the web author have any indication that my leaving was due to annoying ads?  It seems like telling site authors "20% of your visitors explicitly mute you" would be a far clearer signal.

* It's certainly not possible to "use content's media controls" to stop playback for the majority of ads.  Even when it is possible, it is much faster to do a single click on an icon in the tabstrip rather than click to change tabs, hunt for the transport controls, then click them to silence things.

* Regarding redundancy, again, we provide things like plugin click-to-play that are in some sense "redundant" with the play/pause controls on videos.  I don't think "redundancy", in general, is a viable argument to not do something.

In summary, I don't think you've provided a compelling rationale to avoid a mute control.  Adding an extension API is a nice-to-have, but it doesn't address the desire to do this natively in Chrome.  When you say that "we decided", who's we?  I know my opinion as a UI team member certainly wasn't solicited.  I'd like to understand who made this decision, because I don't think it's been sufficiently justified here.
Cc: pkasting@chromium.org
Feb 14, 2014
#119 phistuck
@miu (comment 113) -
I find this explanation lacking. The browser provides a popup blocker. How is that different? the popup blocker exists due to misbehaving websites. Of course the browser is the 'police'. Who else would be the 'police' if not the browser? web security (cross origin blocks, mixed content blocks) is also an example of the browser (or the platform, but the browser is the platform) being the 'police'.
Feb 18, 2014
#120 jennsc...@google.com
This is obviously a contentious topic with a lot of viewpoints to consider, so I thought I'd chime in with some UX thinking behind this decision.

The biggest UX concern with this feature is that adding an additional level of audio management, while being useful for some users, would create additional complexity for the majority of users, so it doesn't make sense to be part of default Chrome. We're definitely supportive of having the functionality for users who really desire it in the form of an extension (a version of which exists today). 

OS-level muting (or taking out your headphones) is the fastest (and broadest) way to stop unwanted audio. Content-level controls (e.g. in a web video player) will always be the most useful for more granular control since they have the most context with regard to what they are controlling. The auto-playing ad scenario is interesting, but the real need in that case is have the ability to mute the ad, not necessarily to mute the entire tab (e.g. if a misbehaving ad is playing audio on a page in which you want to watch a video, muting the tab still doesn't yield desired results).

All this said, technology and the web are always changing, so the UX team may choose to revisit this at another time.
Feb 18, 2014
#121 bruno.bo...@gmail.com
Thanks for the new analysis.

What's the name of the extension?

B4N

Bruno Boutteau
Tel 06 52 51 16 99
Le 18 fvr. 2014 23:55, <chromium@googlecode.com> a crit :
Feb 18, 2014
#122 adman.com@gmail.com
Thanks for the explanation.

As for the use case, would the Chrome team consider adding a form of the Web Audio API to chrome extensions that can analyse, filter and otherwise modify sounds on a tab-level context? That would allow extensions to do some very cool things with existing audio content (graphic equaliser anyone?) as well as just the simple muting case.
Feb 19, 2014
#123 jbti...@gmail.com
@jennsc...@google.com
OS level mute is not an option. I want to listen to my music or Skype but I don't want the sound of ads, or the website's background music while I'm reading an article.
Feb 19, 2014
#124 jared.s...@gmail.com
(I wrote the MuteTab Chrome extension and a proposal for adding audio-related API methods to the tab/tabs APIs that is under review; based on the work I've done and what I've read, here is my current thinking.)

If Chrome's audio indicator is clicked, the tab is muted and the indicator gets changed to reflect that.  If clicked again, it gets unmuted.  If a user never clicks on it and never uses an extension that makes use of the tab audio API, then a user will never be aware that it is possible to mute a tab (so it shouldn't make things more confusing.)

When a tab is muted, all sounds coming from that tab must be muted.  Here is why I think that is the only solution that makes sense:

* Implementing this will solve most users' problems with respect to sound in the browser.

* This would not work if a webpage has both an ad playing sound and a game or video playing sound.  Users can resolve this problem by 'stopping' the ad via an extension (like MuteTab does) or via click-to-play or FlashBlock.  Since the user does not care about the content otherwise, this is okay.

* The only situation this will not work in is when a webpage contains multiple sources that play sound and they want to mute one of them because it does not feature a mute button but not otherwise stop it.  I cannot envision when this scenario would actually happen, beyond having a music player and a noisy game on the same webpage.  (But why would someone construct a page like this?)

* If some kind of UI was created to let the user choose which portion of a webpage to mute, beyond finding space for it there would need to be an easy way to identify them (such as a URL) which would be hard for users to use.  MuteTab attempts this but it is really a more advanced feature.

* There would need to be some kind of behavior to indicate if future audio sources should be muted or not and some way to update the indicator to indicate that things are partially muted.

* Tabs (or audio sources) should not have a volume associated with them (beyond what already exists) that is not set to either 0% or 100% (unless in the middle of a fade).  Otherwise, UI would need to be used to show the current volume levels.  A negative consequence of this is that one couldn't create an equalizer that also works for sounds coming from plug-ins, but I think it is necessary from a UI complexity standpoint.

tl;dr: Basically, I think providing a mute/unmute option for the page as a whole (and letting extensions further block unwanted sounds) solves most problems while avoiding most complexity (and all complexity for users who don't make use of the feature.) Providing volume control for plug-ins requires too much UI complexity.


----------------------------------------------------------------

People are going to want some kind of ability for automatically muting some or all tabs.  This could start out as an extension (like Flashblock), but I suspect over time people might want this included in the browser itself (like Click-To-Play).  This is a form of policing content which is similar to what Chrome does now; but if it was just possible in an extension people who care about this may be happy.

----------------------------------------------------------------

Beyond this, an API that can get sound information would be useful in that:

* It presents no new security issues, requires no new permissions (beyond Tabs), and cannot be abused in new ways.

* It would allow an extension to indicate which tabs play sound when a window has a large number of tabs or when noisy tabs span multiple windows.

----------------------------------------------------------------

An API that can also set sound information would be useful in that:

* It allows implementing whitelists/blacklists (as described earlier), provided that it happens early enough upon page load.

* It lets extensions mute/unmute just like clicking an audio indicator would do.

* It allows an extension to automatically mute all background tabs (except sites that might be whitelisted.)  It could fade out your music when another sound is played (and then fade it in again.)


A problem with this API is that evil extensions could randomly mute/unmute pages.  However, this could be limited somewhat by having extensions require a special "tab audio" permission.  Also, this problem is really no different than how extensions alter the DOM of webpages.

Apr 16, 2014
#125 miu@chromium.org
(No comment was entered for this change.)
Blocking: chromium:360372
May 23, 2014
#126 mr.ber...@gmail.com
Inspired by Issue 278561 (Ability to play/Pause youtube video from tab itself), I came up with this. Once this decision in #113 is re-considered, one may take this into consideration as well.

Pausing youtube video from tab itself would require a sound-/media-control browser API for web applications to tell the browser how music/videos can be stopped, restarted, muted, ... (Google knows Youtube, of course - but soundcloud and mixcloud are equally interesting). I don't think such an API is in the works, but I find it highly interesting.

While this is very similar to the issue at hand (tab muting), there is a major difference: with a sound-control API, this feature would probably
1) require opt-in by the web application, and thus would be perceived as more "belonging to the web page rather than to Chrome" by the user, 
2) the actions on the tab title could be undone on the web site (so there is no "additional layer" of interaction), and 
3) its actions would be bound to the web application and not to the tab.

I think both of these properties would solve the problems/objections mentioned in Comment 113. 1) The user would not perceive these options as a way to handle "misbehaving web sites", because this API will most probably only be used by "behaving" web sites. (What would be the point for misbehaving web sites to allow pausing of auto-playing ad videos?). 2) Users would not be confused by videos/sounds being paused or muted, because they can unpause/unmute easily within the tab content (because the tab title sound-control API would just refer to these same within-tab controls), and 3), when navigating to a different web site, the API would be reset because it would be site-/web-application-specific.

I am not sure if this discussion should be continued here or in Issue 278561, but I thought I would be able to influence most of the relevant people here rather than there :)
Jun 19, 2014
#127 a...@chromium.org
(No comment was entered for this change.)
Labels: hasTestcase
Sep 23 (6 days ago)
#128 lafo...@google.com
(No comment was entered for this change.)
Labels: -Cr-Internals-Media-Capture-Tab Cr-Blink-GetUserMedia-Tab
Sign in to add a comment

Powered by Google Project Hosting