|
|
Chromium Code Reviews|
Created:
4 years ago by David Tseng Modified:
4 years ago CC:
aboxhall+watch_chromium.org, alemate+watch_chromium.org, arv+watch_chromium.org, chromium-apps-reviews_chromium.org, chromium-reviews, darin-cc_chromium.org, dmazzoni+watch_chromium.org, dtseng+watch_chromium.org, extensions-reviews_chromium.org, feature-media-reviews_chromium.org, jam, je_julie, nektar+watch_chromium.org, oshima+watch_chromium.org, yuzo+watch_chromium.org, Zhiqiang Zhang (Slow) Target Ref:
refs/pending/heads/master Project:
chromium Visibility:
Public. |
DescriptionExpose media controls to accessibility
This cl wires up media controls given a web contents -> AX tree mapping.
Actions:
startDuckingMedia: requests the associated MediaSession start ducking. This gets passed back to the MediaSessionController which eventually relays the new volume multiplier.
stopDuckingMedia: same as above with volume multiplier set to 1.0.
resumeMedia: resumes suspended media
suspendMedia: suspends currently playing media
Events:
mediaStartedPlaying
mediaStoppedPlaying
Note: to see this work, use flag --enable-default-media-session
This would allow a client extension to:
- duck audio on a specific web contents
- observe when a media session is started/stopped
For ChromeVox, we can then allow audio not coming from the TTS extension or the ChromeVox extension (e.g. earcons) to be ducked. This also allows us to duck web contents in the background, longer running media sessions, foreground web contents based on a key command, after a tts start event, etc.
TEST=observe events; play media, stop media; verify media started/stopped come through. Explicitly call start/stop ducking; verify audio ducks/unducks. Also, call resume/suspend and verify audio resumes/suspends.
BUG=621697
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation
Committed: https://crrev.com/e6a3fc3ecf930563d9ad972691e7c8f24c27654f
Cr-Commit-Position: refs/heads/master@{#438525}
Patch Set 1 #
Total comments: 4
Patch Set 2 : Not for review; illustrates audio focus #Patch Set 3 : git cl format #Patch Set 4 : Expose ducking controls to accessibility #Patch Set 5 : Expose ducking controls to accessibility #Patch Set 6 : Expose ducking controls to accessibility #
Total comments: 2
Patch Set 7 : Expose ducking controls to accessibility #Patch Set 8 : Fix Chrome Cast build #Patch Set 9 : Expose ducking controls to accessibility #Dependent Patchsets: Messages
Total messages: 65 (38 generated)
Description was changed from ========== Expose ducking controls to accessibility This cl wires up ducking controls given a web contents -> AX tree mapping. Actions: startDucking: requests the associated MediaSession start ducking. This gets passed back to the MediaSessionController which eventually relays the new volume multiplier. stopDucking: same as above with volume multiplier set to 1.0. Events: mediaStartedPlaying mediaStoppedPlaying Note: to see this work, use flag --enable-default-media-session This would allow a client extension to: - duck audio on a specific web contents - observe when a media session is started/stopped For ChromeVox, we can then allow audio not coming from the TTS extension or the ChromeVox extension (e.g. earcons) to be ducked. This also allows us to duck web contents in the background, longer running media sessions, foreground web contents based on a key command, etc. TEST=observe events; play media, stop media; verify media started/stopped come through. Explicitly call start/stop ducking; verify audio ducks/unducks. BUG= ========== to ========== Expose ducking controls to accessibility This cl wires up ducking controls given a web contents -> AX tree mapping. Actions: startDucking: requests the associated MediaSession start ducking. This gets passed back to the MediaSessionController which eventually relays the new volume multiplier. stopDucking: same as above with volume multiplier set to 1.0. Events: mediaStartedPlaying mediaStoppedPlaying Note: to see this work, use flag --enable-default-media-session This would allow a client extension to: - duck audio on a specific web contents - observe when a media session is started/stopped For ChromeVox, we can then allow audio not coming from the TTS extension or the ChromeVox extension (e.g. earcons) to be ducked. This also allows us to duck web contents in the background, longer running media sessions, foreground web contents based on a key command, etc. TEST=observe events; play media, stop media; verify media started/stopped come through. Explicitly call start/stop ducking; verify audio ducks/unducks. BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation ==========
Description was changed from ========== Expose ducking controls to accessibility This cl wires up ducking controls given a web contents -> AX tree mapping. Actions: startDucking: requests the associated MediaSession start ducking. This gets passed back to the MediaSessionController which eventually relays the new volume multiplier. stopDucking: same as above with volume multiplier set to 1.0. Events: mediaStartedPlaying mediaStoppedPlaying Note: to see this work, use flag --enable-default-media-session This would allow a client extension to: - duck audio on a specific web contents - observe when a media session is started/stopped For ChromeVox, we can then allow audio not coming from the TTS extension or the ChromeVox extension (e.g. earcons) to be ducked. This also allows us to duck web contents in the background, longer running media sessions, foreground web contents based on a key command, etc. TEST=observe events; play media, stop media; verify media started/stopped come through. Explicitly call start/stop ducking; verify audio ducks/unducks. BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation ========== to ========== Expose ducking controls to accessibility This cl wires up ducking controls given a web contents -> AX tree mapping. Actions: startDucking: requests the associated MediaSession start ducking. This gets passed back to the MediaSessionController which eventually relays the new volume multiplier. stopDucking: same as above with volume multiplier set to 1.0. Events: mediaStartedPlaying mediaStoppedPlaying Note: to see this work, use flag --enable-default-media-session This would allow a client extension to: - duck audio on a specific web contents - observe when a media session is started/stopped For ChromeVox, we can then allow audio not coming from the TTS extension or the ChromeVox extension (e.g. earcons) to be ducked. This also allows us to duck web contents in the background, longer running media sessions, foreground web contents based on a key command, after a tts start event, etc. TEST=observe events; play media, stop media; verify media started/stopped come through. Explicitly call start/stop ducking; verify audio ducks/unducks. BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation ==========
dtseng@chromium.org changed reviewers: + dalecurtis@chromium.org, dmazzoni@chromium.org
dalecurtis for media related changes dmazzoni for accessibility Ready for an initial look.
dmazzoni@chromium.org changed reviewers: + dgreid@chromium.org
It looks to me like the goal is for ChromeVox to get a notification when media other than TTS starts playing, and then send a command to start ducking that other media. Isn't that too late, though? By that point the media will already be loud. I think what we want to do instead is "tag" the RVH for the extension background page that's providing speech for accessibility, then identify that RVH's stream to the media system as a high-priority audio stream that should cause ducking in other lower-priority streams. My understanding is that the media system already has the ability to do ducking once this is set up and we shouldn't need to send it start and stop events on each media stream. https://codereview.chromium.org/2550593003/diff/1/chrome/browser/extensions/a... File chrome/browser/extensions/api/automation_internal/automation_internal_api.cc (right): https://codereview.chromium.org/2550593003/diff/1/chrome/browser/extensions/a... chrome/browser/extensions/api/automation_internal/automation_internal_api.cc:227: const MediaPlayerId& id) override { nit: indentation https://codereview.chromium.org/2550593003/diff/1/chrome/browser/extensions/a... chrome/browser/extensions/api/automation_internal/automation_internal_api.cc:230: detail.ax_tree_id = id.first->GetAXTreeID(); nit: extra space https://codereview.chromium.org/2550593003/diff/1/chrome/browser/extensions/a... chrome/browser/extensions/api/automation_internal/automation_internal_api.cc:237: const MediaPlayerId& id) override { same https://codereview.chromium.org/2550593003/diff/1/chrome/browser/extensions/a... chrome/browser/extensions/api/automation_internal/automation_internal_api.cc:240: detail.ax_tree_id = id.first->GetAXTreeID(); same
On 2016/12/02 17:01:43, dmazzoni wrote: > It looks to me like the goal is for ChromeVox to > get a notification when media other than TTS starts > playing, and then send a command to start ducking > that other media. Isn't that too late, though? By > that point the media will already be loud. I tried what you're suggesting as well. It's patchset 2. Either way I go, I need to manually update the individual MediaSession streams to duck or unduck. In ps2, we'd have to iterate over all MediaSession each time any audio from a high priority stream gains audio focus (except do it natively). As far as being too late, the ducking logic happens browser side, so I'm unsure how we would start ducking before the stream starts playing renderer side unless there's a lower level way of doing this. > I think what we want to do instead is "tag" the > RVH for the extension background page that's > providing speech for accessibility, then identify > that RVH's stream to the media system as a > high-priority audio stream that should cause > ducking in other lower-priority streams. > > My understanding is that the media system already > has the ability to do ducking once this is set up > and we shouldn't need to send it start and stop > events on each media stream. > > https://codereview.chromium.org/2550593003/diff/1/chrome/browser/extensions/a... > File > chrome/browser/extensions/api/automation_internal/automation_internal_api.cc > (right): > > https://codereview.chromium.org/2550593003/diff/1/chrome/browser/extensions/a... > chrome/browser/extensions/api/automation_internal/automation_internal_api.cc:227: > const MediaPlayerId& id) override { > nit: indentation > > https://codereview.chromium.org/2550593003/diff/1/chrome/browser/extensions/a... > chrome/browser/extensions/api/automation_internal/automation_internal_api.cc:230: > detail.ax_tree_id = id.first->GetAXTreeID(); > nit: extra space > > https://codereview.chromium.org/2550593003/diff/1/chrome/browser/extensions/a... > chrome/browser/extensions/api/automation_internal/automation_internal_api.cc:237: > const MediaPlayerId& id) override { > same > > https://codereview.chromium.org/2550593003/diff/1/chrome/browser/extensions/a... > chrome/browser/extensions/api/automation_internal/automation_internal_api.cc:240: > detail.ax_tree_id = id.first->GetAXTreeID(); > same
dalecurtis@chromium.org changed reviewers: + mlamouri@chromium.org
=>media session owner.
dalecurtis@chromium.org changed reviewers: - dalecurtis@chromium.org
I was also thinking we would not want to duck media that's short (e.g. less than a second), so that would possibly mitigate the issues with having to duck the media before it starts playing. On Fri, Dec 2, 2016 at 10:23 AM, <dtseng@chromium.org> wrote: > On 2016/12/02 17:01:43, dmazzoni wrote: > > It looks to me like the goal is for ChromeVox to > > get a notification when media other than TTS starts > > playing, and then send a command to start ducking > > that other media. Isn't that too late, though? By > > that point the media will already be loud. > > > > I tried what you're suggesting as well. It's patchset 2. > > Either way I go, I need to manually update the individual MediaSession > streams > to duck or unduck. In ps2, we'd have to iterate over all MediaSession each > time > any audio from a high priority stream gains audio focus (except do it > natively). > > As far as being too late, the ducking logic happens browser side, so I'm > unsure > how we would start ducking before the stream starts playing renderer side > unless > there's a lower level way of doing this. > > > I think what we want to do instead is "tag" the > > RVH for the extension background page that's > > providing speech for accessibility, then identify > > that RVH's stream to the media system as a > > high-priority audio stream that should cause > > ducking in other lower-priority streams. > > > > My understanding is that the media system already > > has the ability to do ducking once this is set up > > and we shouldn't need to send it start and stop > > events on each media stream. > > > > > https://codereview.chromium.org/2550593003/diff/1/chrome/ > browser/extensions/api/automation_internal/automation_internal_api.cc > > File > > chrome/browser/extensions/api/automation_internal/ > automation_internal_api.cc > > (right): > > > > > https://codereview.chromium.org/2550593003/diff/1/chrome/ > browser/extensions/api/automation_internal/automation_internal_api.cc# > newcode227 > > > chrome/browser/extensions/api/automation_internal/ > automation_internal_api.cc:227: > > const MediaPlayerId& id) override { > > nit: indentation > > > > > https://codereview.chromium.org/2550593003/diff/1/chrome/ > browser/extensions/api/automation_internal/automation_internal_api.cc# > newcode230 > > > chrome/browser/extensions/api/automation_internal/ > automation_internal_api.cc:230: > > detail.ax_tree_id = id.first->GetAXTreeID(); > > nit: extra space > > > > > https://codereview.chromium.org/2550593003/diff/1/chrome/ > browser/extensions/api/automation_internal/automation_internal_api.cc# > newcode237 > > > chrome/browser/extensions/api/automation_internal/ > automation_internal_api.cc:237: > > const MediaPlayerId& id) override { > > same > > > > > https://codereview.chromium.org/2550593003/diff/1/chrome/ > browser/extensions/api/automation_internal/automation_internal_api.cc# > newcode240 > > > chrome/browser/extensions/api/automation_internal/ > automation_internal_api.cc:240: > > detail.ax_tree_id = id.first->GetAXTreeID(); > > same > > > > https://codereview.chromium.org/2550593003/ > > -- > You received this message because you are subscribed to the Google Groups > "Chromium-reviews" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to chromium-reviews+unsubscribe@chromium.org. > -- You received this message because you are subscribed to the Google Groups "Chromium-reviews" group. To unsubscribe from this group and stop receiving emails from it, send an email to chromium-reviews+unsubscribe@chromium.org.
+zqzhang@ FYI lgtm
Description was changed from ========== Expose ducking controls to accessibility This cl wires up ducking controls given a web contents -> AX tree mapping. Actions: startDucking: requests the associated MediaSession start ducking. This gets passed back to the MediaSessionController which eventually relays the new volume multiplier. stopDucking: same as above with volume multiplier set to 1.0. Events: mediaStartedPlaying mediaStoppedPlaying Note: to see this work, use flag --enable-default-media-session This would allow a client extension to: - duck audio on a specific web contents - observe when a media session is started/stopped For ChromeVox, we can then allow audio not coming from the TTS extension or the ChromeVox extension (e.g. earcons) to be ducked. This also allows us to duck web contents in the background, longer running media sessions, foreground web contents based on a key command, after a tts start event, etc. TEST=observe events; play media, stop media; verify media started/stopped come through. Explicitly call start/stop ducking; verify audio ducks/unducks. BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation ========== to ========== Expose media controls to accessibility This cl wires up media controls given a web contents -> AX tree mapping. Actions: startDuckingMedia: requests the associated MediaSession start ducking. This gets passed back to the MediaSessionController which eventually relays the new volume multiplier. stopDuckingMedia: same as above with volume multiplier set to 1.0. resumeMedia: resumes suspended media suspendMedia: suspends currently playing media Events: mediaStartedPlaying mediaStoppedPlaying Note: to see this work, use flag --enable-default-media-session This would allow a client extension to: - duck audio on a specific web contents - observe when a media session is started/stopped For ChromeVox, we can then allow audio not coming from the TTS extension or the ChromeVox extension (e.g. earcons) to be ducked. This also allows us to duck web contents in the background, longer running media sessions, foreground web contents based on a key command, after a tts start event, etc. TEST=observe events; play media, stop media; verify media started/stopped come through. Explicitly call start/stop ducking; verify audio ducks/unducks. BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation ==========
PTAL dmazzoni@. I also added resume and suspend controls. We can have the flexibility to pause/resume media rather than duck which can make more sense in some situations for tts.
lgtm Please add a linked bug, maybe 621697 https://codereview.chromium.org/2550593003/diff/100001/ui/accessibility/ax_en... File ui/accessibility/ax_enums.idl (right): https://codereview.chromium.org/2550593003/diff/100001/ui/accessibility/ax_en... ui/accessibility/ax_enums.idl:48: media_started_playing, Comment these as Chrome OS only or automation API only?
Description was changed from ========== Expose media controls to accessibility This cl wires up media controls given a web contents -> AX tree mapping. Actions: startDuckingMedia: requests the associated MediaSession start ducking. This gets passed back to the MediaSessionController which eventually relays the new volume multiplier. stopDuckingMedia: same as above with volume multiplier set to 1.0. resumeMedia: resumes suspended media suspendMedia: suspends currently playing media Events: mediaStartedPlaying mediaStoppedPlaying Note: to see this work, use flag --enable-default-media-session This would allow a client extension to: - duck audio on a specific web contents - observe when a media session is started/stopped For ChromeVox, we can then allow audio not coming from the TTS extension or the ChromeVox extension (e.g. earcons) to be ducked. This also allows us to duck web contents in the background, longer running media sessions, foreground web contents based on a key command, after a tts start event, etc. TEST=observe events; play media, stop media; verify media started/stopped come through. Explicitly call start/stop ducking; verify audio ducks/unducks. BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation ========== to ========== Expose media controls to accessibility This cl wires up media controls given a web contents -> AX tree mapping. Actions: startDuckingMedia: requests the associated MediaSession start ducking. This gets passed back to the MediaSessionController which eventually relays the new volume multiplier. stopDuckingMedia: same as above with volume multiplier set to 1.0. resumeMedia: resumes suspended media suspendMedia: suspends currently playing media Events: mediaStartedPlaying mediaStoppedPlaying Note: to see this work, use flag --enable-default-media-session This would allow a client extension to: - duck audio on a specific web contents - observe when a media session is started/stopped For ChromeVox, we can then allow audio not coming from the TTS extension or the ChromeVox extension (e.g. earcons) to be ducked. This also allows us to duck web contents in the background, longer running media sessions, foreground web contents based on a key command, after a tts start event, etc. TEST=observe events; play media, stop media; verify media started/stopped come through. Explicitly call start/stop ducking; verify audio ducks/unducks. Also, call resume/suspend and verify audio resumes/suspends. BUG=621697 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation ==========
Added BUG. https://codereview.chromium.org/2550593003/diff/100001/ui/accessibility/ax_en... File ui/accessibility/ax_enums.idl (right): https://codereview.chromium.org/2550593003/diff/100001/ui/accessibility/ax_en... ui/accessibility/ax_enums.idl:48: media_started_playing, On 2016/12/08 20:54:27, dmazzoni wrote: > Comment these as Chrome OS only or automation API only? added // automation (in theory, they should work everywhere automation does).
The CQ bit was checked by dtseng@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: cast_shell_android on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/cast_shell_a...)
The CQ bit was checked by dtseng@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from mlamouri@chromium.org, dmazzoni@chromium.org Link to the patchset: https://codereview.chromium.org/2550593003/#ps120001 (title: "Expose ducking controls to accessibility")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: chromium_presubmit on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/chromium_presub...)
dtseng@chromium.org changed reviewers: + avi@chromium.org
+ avi for content/public/browser
dtseng@chromium.org changed reviewers: + jam@chromium.org
Trying different owner + jam for content/public/browser
LGTM Please poke me if I ever fail to respond in less than 24h.
The CQ bit was checked by dtseng@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: cast_shell_linux on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/cast_shell_linu...)
The CQ bit was checked by dtseng@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: cast_shell_linux on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/cast_shell_linu...)
The CQ bit was checked by dtseng@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: cast_shell_linux on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/cast_shell_linu...)
The CQ bit was checked by dtseng@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by dtseng@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from dmazzoni@chromium.org, avi@chromium.org, mlamouri@chromium.org Link to the patchset: https://codereview.chromium.org/2550593003/#ps160001 (title: "Expose ducking controls to accessibility")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: chromium_presubmit on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/chromium_presub...)
dtseng@chromium.org changed reviewers: + oshima@chromium.org
+ oshima for chromecast/
On 2016/12/13 23:10:32, David Tseng wrote: > + oshima for chromecast/ I'm afraid that I'm not the owner of chromecast :)
dtseng@chromium.org changed reviewers: + halliwell@chromium.org - jam@chromium.org, oshima@chromium.org
+ halliwell@ for chromecast.
On 2016/12/14 06:09:55, David Tseng wrote: > + halliwell@ for chromecast. chromecast/ lgtm
The CQ bit was checked by dtseng@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
CQ is committing da patch.
Bot data: {"patchset_id": 160001, "attempt_start_ts": 1481730792825370,
"parent_rev": "b2203a42d5c4359fddc751a2123f019f6feb82b1", "commit_rev":
"23757b916f9b56136efeac284d2f896821d86d39"}
Message was sent while issue was closed.
Description was changed from ========== Expose media controls to accessibility This cl wires up media controls given a web contents -> AX tree mapping. Actions: startDuckingMedia: requests the associated MediaSession start ducking. This gets passed back to the MediaSessionController which eventually relays the new volume multiplier. stopDuckingMedia: same as above with volume multiplier set to 1.0. resumeMedia: resumes suspended media suspendMedia: suspends currently playing media Events: mediaStartedPlaying mediaStoppedPlaying Note: to see this work, use flag --enable-default-media-session This would allow a client extension to: - duck audio on a specific web contents - observe when a media session is started/stopped For ChromeVox, we can then allow audio not coming from the TTS extension or the ChromeVox extension (e.g. earcons) to be ducked. This also allows us to duck web contents in the background, longer running media sessions, foreground web contents based on a key command, after a tts start event, etc. TEST=observe events; play media, stop media; verify media started/stopped come through. Explicitly call start/stop ducking; verify audio ducks/unducks. Also, call resume/suspend and verify audio resumes/suspends. BUG=621697 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation ========== to ========== Expose media controls to accessibility This cl wires up media controls given a web contents -> AX tree mapping. Actions: startDuckingMedia: requests the associated MediaSession start ducking. This gets passed back to the MediaSessionController which eventually relays the new volume multiplier. stopDuckingMedia: same as above with volume multiplier set to 1.0. resumeMedia: resumes suspended media suspendMedia: suspends currently playing media Events: mediaStartedPlaying mediaStoppedPlaying Note: to see this work, use flag --enable-default-media-session This would allow a client extension to: - duck audio on a specific web contents - observe when a media session is started/stopped For ChromeVox, we can then allow audio not coming from the TTS extension or the ChromeVox extension (e.g. earcons) to be ducked. This also allows us to duck web contents in the background, longer running media sessions, foreground web contents based on a key command, after a tts start event, etc. TEST=observe events; play media, stop media; verify media started/stopped come through. Explicitly call start/stop ducking; verify audio ducks/unducks. Also, call resume/suspend and verify audio resumes/suspends. BUG=621697 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation Review-Url: https://codereview.chromium.org/2550593003 ==========
Message was sent while issue was closed.
Committed patchset #9 (id:160001)
Message was sent while issue was closed.
Description was changed from ========== Expose media controls to accessibility This cl wires up media controls given a web contents -> AX tree mapping. Actions: startDuckingMedia: requests the associated MediaSession start ducking. This gets passed back to the MediaSessionController which eventually relays the new volume multiplier. stopDuckingMedia: same as above with volume multiplier set to 1.0. resumeMedia: resumes suspended media suspendMedia: suspends currently playing media Events: mediaStartedPlaying mediaStoppedPlaying Note: to see this work, use flag --enable-default-media-session This would allow a client extension to: - duck audio on a specific web contents - observe when a media session is started/stopped For ChromeVox, we can then allow audio not coming from the TTS extension or the ChromeVox extension (e.g. earcons) to be ducked. This also allows us to duck web contents in the background, longer running media sessions, foreground web contents based on a key command, after a tts start event, etc. TEST=observe events; play media, stop media; verify media started/stopped come through. Explicitly call start/stop ducking; verify audio ducks/unducks. Also, call resume/suspend and verify audio resumes/suspends. BUG=621697 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation Review-Url: https://codereview.chromium.org/2550593003 ========== to ========== Expose media controls to accessibility This cl wires up media controls given a web contents -> AX tree mapping. Actions: startDuckingMedia: requests the associated MediaSession start ducking. This gets passed back to the MediaSessionController which eventually relays the new volume multiplier. stopDuckingMedia: same as above with volume multiplier set to 1.0. resumeMedia: resumes suspended media suspendMedia: suspends currently playing media Events: mediaStartedPlaying mediaStoppedPlaying Note: to see this work, use flag --enable-default-media-session This would allow a client extension to: - duck audio on a specific web contents - observe when a media session is started/stopped For ChromeVox, we can then allow audio not coming from the TTS extension or the ChromeVox extension (e.g. earcons) to be ducked. This also allows us to duck web contents in the background, longer running media sessions, foreground web contents based on a key command, after a tts start event, etc. TEST=observe events; play media, stop media; verify media started/stopped come through. Explicitly call start/stop ducking; verify audio ducks/unducks. Also, call resume/suspend and verify audio resumes/suspends. BUG=621697 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation Committed: https://crrev.com/e6a3fc3ecf930563d9ad972691e7c8f24c27654f Cr-Commit-Position: refs/heads/master@{#438525} ==========
Message was sent while issue was closed.
Patchset 9 (id:??) landed as https://crrev.com/e6a3fc3ecf930563d9ad972691e7c8f24c27654f Cr-Commit-Position: refs/heads/master@{#438525} |
