This is required for moving the audio stack to an utility process. The current monitoring is tightly coupled with WebContentsImpl, which must remain on the browser process.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a79f734269fecea8cc69f7982ae68b66ce510608 commit a79f734269fecea8cc69f7982ae68b66ce510608 Author: Guido Urdaneta <guidou@chromium.org> Date: Fri Dec 01 23:16:10 2017 Decouple audio monitoring from WebContentsImpl This CL moves most of the logic for monitoring audibility of audio output streams from AudioStreamMonitor to AudioOutputDelegateImpl. This is in anticipation to moving the audio stack to an utility process. AudioStreamMonitor is tightly coupled with WebContentsImpl and will remain on the browser process. The approach this CL takes is to move actual monitoring to AudioOutputDelegateImpl and use a Mojo object to pass notifications to AudioStreamMonitor. The Mojo object (AudioOutputStreamObserver) will live on the browser process and a reference to it will be passed to AudioOutputDelegateImpl so that it can forward updates. The only significant behavior change is that the indicator will be on for some amount of time after the tab becomes inaudible. Previously, the indicator was on for some amount of time after the last time the tab was polled to be audible. In both cases, frequent changes in audibility do not affect the indicator on the tab UI, but the new scheme might keep the indicator on slightly longer due to the notification latency. Bug: 784812 Change-Id: I38912122e8bca8a0c508957271fd762f27ecda2a Reviewed-on: https://chromium-review.googlesource.com/738198 Commit-Queue: Guido Urdaneta <guidou@chromium.org> Reviewed-by: Dale Curtis <dalecurtis@chromium.org> Reviewed-by: Chris Palmer <palmer@chromium.org> Reviewed-by: Avi Drissman <avi@chromium.org> Reviewed-by: Olga Sharonova <olka@chromium.org> Reviewed-by: Max Morin <maxmorin@chromium.org> Reviewed-by: Yuri Wiitala <miu@chromium.org> Cr-Commit-Position: refs/heads/master@{#521105} [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/BUILD.gn [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/media/audio_stream_monitor.cc [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/media/audio_stream_monitor.h [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/media/audio_stream_monitor_unittest.cc [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/renderer_host/media/audio_output_delegate_impl.cc [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/renderer_host/media/audio_output_delegate_impl.h [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/renderer_host/media/audio_output_delegate_impl_unittest.cc [add] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/renderer_host/media/audio_output_stream_observer_impl.cc [add] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/renderer_host/media/audio_output_stream_observer_impl.h [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/renderer_host/media/audio_renderer_host.cc [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/renderer_host/media/render_frame_audio_output_stream_factory.cc [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/renderer_host/media/render_frame_audio_output_stream_factory.h [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/renderer_host/media/render_frame_audio_output_stream_factory_unittest.cc [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/renderer_host/media/renderer_audio_output_stream_factory_context.h [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/renderer_host/media/renderer_audio_output_stream_factory_context_impl.cc [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/content/browser/renderer_host/media/renderer_audio_output_stream_factory_context_impl.h [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/media/mojo/interfaces/audio_output_stream.mojom [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/media/mojo/services/mojo_audio_output_stream_provider.cc [modify] https://crrev.com/a79f734269fecea8cc69f7982ae68b66ce510608/media/mojo/services/mojo_audio_output_stream_provider.h
Comment 1 by guidou@chromium.org
, Nov 14 2017