Граф коммитов

130 Коммитов

Автор SHA1 Сообщение Дата
alwu 549eca85d5 Bug 1578615 - part1 : provide function GetAudibleState() on media element. r=chunmin
As we have another usage to know whether media is audible or not, we remove this function from AudioChannelWrapper and make it as media element's function.

In addition, it also makes sense to have this function for media element, because the result is decided by media element's own attributes.

Differential Revision: https://phabricator.services.mozilla.com/D44744

--HG--
extra : moz-landing-system : lando
2019-09-25 20:07:06 +00:00
alwu 6b7faa2225 Bug 1580659 - part7 : make AudioChannelAgent's 'WindowVolumeChanged()' consistent with other 'WindowXXXChanged()'. r=Ehsan
Now other `WindowXXXChanged()` would receive the change directly from their input parameter, we should make `WindowVolumeChanged()` consistent with them, instead of asking `AudioChannelService` again.

Differential Revision: https://phabricator.services.mozilla.com/D45754

--HG--
extra : moz-landing-system : lando
2019-09-24 06:55:35 +00:00
Alastor Wu 330adf4d9e Bug 1580659 - part5 : stop audio capturing explicitly. r=chunmin,karlt
As we start audio capturing explicitly, we should also take responsibility to stop audio capturing when we don't need it.

We were hiding too many details on `AudioChannelAgent` before, which allow us hard to know who and where we handle audio capturing.

Differential Revision: https://phabricator.services.mozilla.com/D45752

--HG--
extra : moz-landing-system : lando
2019-09-24 06:55:39 +00:00
Alastor Wu 5d31bee21f Bug 1580659 - part3 : call 'WindowAudioCaptureChanged()' explicitly. r=chunmin,karlt
Previously `AudioChannelService` called `WindowAudioCaptureChanged()` implicitly whenever we added the agent to the service [1], which made the audio capturing callback happen before finishing registration.

There are two drawbacks,
(1) it's hard to be aware of that the audio capturing callback would be called before finishing `AudioChannelAgent::NotifyStartedPlaying()` [2], which causes unclear call flow.

(2) If someone checks `AudioChannelAgent::IsPlayingStarted()` [3] inside audio capturing callback, then we would find that the `mIsRegToService` is false even if we have registered the agent to `AudioChannelService` because `mIsRegToService` is updated in the last line in the `AudioChannelAgent::NotifyStartedPlaying()`, but the audio capturing callback could be executed before that.

[1] https://searchfox.org/mozilla-central/rev/a777ff11b6d700a698c61e5bd17e73b044304494/dom/audiochannel/AudioChannelService.cpp#723
[2] https://searchfox.org/mozilla-central/rev/a777ff11b6d700a698c61e5bd17e73b044304494/dom/audiochannel/AudioChannelAgent.cpp#144
[3] https://searchfox.org/mozilla-central/rev/a777ff11b6d700a698c61e5bd17e73b044304494/dom/audiochannel/AudioChannelAgent.cpp#285

Differential Revision: https://phabricator.services.mozilla.com/D45750

--HG--
extra : moz-landing-system : lando
2019-09-24 06:55:43 +00:00
shindli bfa22f415b Backed out 9 changesets (bug 1580659) for causing linting failure in /builds/worker/checkouts/gecko/dom/plugins/base/nsNPAPIPluginInstance.cpp CLOSED TREE
Backed out changeset b8c46aaec410 (bug 1580659)
Backed out changeset fd31977767d5 (bug 1580659)
Backed out changeset 8b9f61694270 (bug 1580659)
Backed out changeset 276827f54c71 (bug 1580659)
Backed out changeset ecb2bf9fb452 (bug 1580659)
Backed out changeset b712f15af619 (bug 1580659)
Backed out changeset c25bfc8b31b1 (bug 1580659)
Backed out changeset 20cfcd96a40e (bug 1580659)
Backed out changeset e92ff4ac7f43 (bug 1580659)
2019-09-24 09:50:42 +03:00
alwu 3aa62361f8 Bug 1580659 - part7 : make AudioChannelAgent's 'WindowVolumeChanged()' consistent with other 'WindowXXXChanged()'. r=Ehsan
Now other `WindowXXXChanged()` would receive the change directly from their input parameter, we should make `WindowVolumeChanged()` consistent with them, instead of asking `AudioChannelService` again.

Differential Revision: https://phabricator.services.mozilla.com/D45754

--HG--
extra : moz-landing-system : lando
2019-09-17 18:59:27 +00:00
Alastor Wu eaf6b8ef6e Bug 1580659 - part5 : stop audio capturing explicitly. r=chunmin,karlt
As we start audio capturing explicitly, we should also take responsibility to stop audio capturing when we don't need it.

We were hiding too many details on `AudioChannelAgent` before, which allow us hard to know who and where we handle audio capturing.

Differential Revision: https://phabricator.services.mozilla.com/D45752

--HG--
extra : moz-landing-system : lando
2019-09-21 02:21:58 +00:00
Alastor Wu f74da16941 Bug 1580659 - part3 : call 'WindowAudioCaptureChanged()' explicitly. r=chunmin,karlt
Previously `AudioChannelService` called `WindowAudioCaptureChanged()` implicitly whenever we added the agent to the service [1], which made the audio capturing callback happen before finishing registration.

There are two drawbacks,
(1) it's hard to be aware of that the audio capturing callback would be called before finishing `AudioChannelAgent::NotifyStartedPlaying()` [2], which causes unclear call flow.

(2) If someone checks `AudioChannelAgent::IsPlayingStarted()` [3] inside audio capturing callback, then we would find that the `mIsRegToService` is false even if we have registered the agent to `AudioChannelService` because `mIsRegToService` is updated in the last line in the `AudioChannelAgent::NotifyStartedPlaying()`, but the audio capturing callback could be executed before that.

[1] https://searchfox.org/mozilla-central/rev/a777ff11b6d700a698c61e5bd17e73b044304494/dom/audiochannel/AudioChannelService.cpp#723
[2] https://searchfox.org/mozilla-central/rev/a777ff11b6d700a698c61e5bd17e73b044304494/dom/audiochannel/AudioChannelAgent.cpp#144
[3] https://searchfox.org/mozilla-central/rev/a777ff11b6d700a698c61e5bd17e73b044304494/dom/audiochannel/AudioChannelAgent.cpp#285

Differential Revision: https://phabricator.services.mozilla.com/D45750

--HG--
extra : moz-landing-system : lando
2019-09-18 21:59:32 +00:00
Sylvestre Ledru 265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Matthew Gregan db34390cd9 Bug 1388236 - Remove now obsolete AudioChannelConfig in favour of AudioPlaybackConfig. r=alwu 2017-08-10 13:00:09 +12:00
Matthew Gregan 526a07e856 Bug 1388236 - Remove B2G-only AudioChannel code from dom/audiochannel. r=alwu 2017-08-10 13:00:09 +12:00
Alastor Wu a3c591450b Bug 1347791 - part3 : update block stauts to front-end side. r=baku,dao,mikedeboer
When the block stauts of the window was changed, we would notify front-end side
to update the vaule, so that we can save it for session restore.

MozReview-Commit-ID: FyclKmAxZHf

--HG--
extra : rebase_source : 5ac8bb9d82279074939caed53dd79c072a5097bc
2017-06-29 05:46:20 -07:00
Alastor Wu 5ea418e1fe Bug 1347791 - part2 : the tab would always be resumed when it goes to foreground first time. r=baku
Since now we move the block/resume logic to front-end side, we can remove
the changing from bug1319771 and other related bugs which are used to ensure the
pinned tab should be blocked successfully after session restore.

MozReview-Commit-ID: Ixe7tOvCEhv

--HG--
extra : rebase_source : 4214c68b4c95df5c33bf1a68c9ffb84ee4c4d5aa
2017-06-29 04:52:02 -07:00
btian de5fa4f269 Bug 1299390 - part 5: Remove useless AudioChannelService code. r=alwu
Changes:
- remove code addressed by reviewer
- remove PContent.ipdl, PBrowser.ipdl, and ProcessPriorityManager code
  that relates only to removed AudioChannelService methods
- correct test case listening to event from removed code
- remove useless test case files

MozReview-Commit-ID: I96nR8zTXJt

--HG--
extra : rebase_source : 127876c672744811c025ca55839ff2e8a06b1fce
2017-05-18 09:51:53 +08:00
btian eb73e59657 Bug 1299390 - part 2: Remove AudioChannelService methods required by BrowserElementAudioChannel only. r=alwu,baku
Changes:
- remove nsIAudioChannelService methods
- remove method AudioChannelService::RefreshAgentsVolumeAndPropagate and IPC method AudioChannelChangeNotification
- remove workaround for bug 1183033

MozReview-Commit-ID: BqlXYVhgrat

--HG--
extra : rebase_source : 64905901d645aea801b93e742472ac67ff7fb49e
2017-05-18 09:31:00 +08:00
Carsten "Tomcat" Book b5eb8a2a1b Backed out changeset be04f96bf78b (bug 1347791) 2017-05-17 08:11:09 +02:00
Alastor Wu aae22221f8 Bug 1347791 - part2 : the tab would always be resumed when it goes to foreground first time. r=baku
Since now we move the block/resume logic to front-end side, we can remove
the changing from bug1319771 and other related bugs which are used to ensure the
pinned tab should be blocked successfully after session restore.

MozReview-Commit-ID: Ixe7tOvCEhv

--HG--
extra : rebase_source : 190e63b5df53c85f7282b5c2144ae7e7830d7ad3
2017-05-17 11:56:03 +08:00
Michael Layzell 8b7ba021a4 Bug 1339537 - Part 6: Pass std::function values tree by const reference instead of by value, r=ehsan
MozReview-Commit-ID: PVAqU2DPs2
2017-04-27 12:44:57 -04:00
Alastor Wu d8197f5d08 Bug 1347758 - part4 : add audio channel log. r=Ehsan
MozReview-Commit-ID: 3zVYtD86O82

--HG--
extra : rebase_source : 3a7726760d6e4941cdbe2e6c9ee7132420482bb4
2017-03-24 14:44:18 +08:00
Iris Hsiao 26a234de5d Backed out 6 changesets (bug 1347758) for eslint failure
Backed out changeset 9becd55242c1 (bug 1347758)
Backed out changeset 2abce19f5001 (bug 1347758)
Backed out changeset 80232d4c85d5 (bug 1347758)
Backed out changeset 1fd084ec34d4 (bug 1347758)
Backed out changeset cafb3c12027b (bug 1347758)
Backed out changeset 85846edfe957 (bug 1347758)
2017-03-24 16:58:08 +08:00
Alastor Wu e81c17d1b2 Bug 1347758 - part4 : add audio channel log. r=Ehsan
MozReview-Commit-ID: LNXzRZx2rC2

--HG--
extra : rebase_source : eef0ad3d65161c422d3cab57e6e081796452bdd1
2017-03-24 12:04:15 +08:00
Alastor Wu 860c67add0 Bug 1348783 - use LazyLogModule for AudioChannel logging. r=baku
LazyLog can be used easily via adding the pref("logging.MODULE_NAME", DEBUG_LEVEL).
It's more convenient than PRLog.

MozReview-Commit-ID: T7uSxVAiN3

--HG--
extra : rebase_source : c0b8925e5c60353c690ca68b8fe4361b48a0f57a
2017-03-21 10:38:48 +08:00
Alastor Wu 20af818a6f Bug 1338137 - part2 : remove function IsServiceStarted(). r=baku
The reason we introduced the IsServiceStarted(), check bug1338466 comment5 for
more details.

The patch1 introduces more robust way to check the alive media component, so
we can remove IsServiceStarted().

MozReview-Commit-ID: LIma8hZTuhA

--HG--
extra : rebase_source : 4687ef41cc765f4ffeb97aeac63b727897456167
2017-03-04 01:14:28 +08:00
Alastor Wu f940903c73 Bug 1339230 - part1 : only need to do audio competing for active agent. r=baku
In Fennec, the audio competiting is to stop the playing tab if there is new
incoming tab. We only implement the way to pause the tab, not including to resume
the tab, so we just need to run the audio competing related stuffs when the agent
is active.

MozReview-Commit-ID: 3F0M2jLw9VY

--HG--
extra : rebase_source : 59eeb82cdda4a976a078663557776f4bc3b5d27b
2017-02-24 17:15:20 +08:00
Ehsan Akhgari 8a998d9134 Bug 1336484 - Don't throttle timeouts in background tabs that are playing audio; r=baku
In websites such as Facebook Live, timeout chains are used to drive the
playback of a video or something similar in JavaScript.  Throttling the
minimum timeout values a tab playing a video from such websites in the
background could make the timeout based scheduling of video playback to
not work correctly, and cause audio buffer under-runs that are audible.

In order to address this, other major browsers don't throttle timeouts
in tabs that are playing audio.  This brings us to parity to other
browsers (even though we already do this for websites that use Web Audio
since we've had similar bug reports using the Web Audio API.)

The current audio agent setup that drives the tab audio notification
icons is currently tracking whether a Window is playing audio.  We use
this setup to decide whether to throttle timeouts when a window goes
into background.
2017-02-10 12:08:25 -05:00
Alastor Wu 3e3c405bdd Bug 1328058 - part2 : rename function. r=baku
Rename function MaybeNotifyMediaBlocked() to MaybeNotifyMediaBlockStart().

MozReview-Commit-ID: CJyWiKKkpwd

--HG--
extra : rebase_source : cc9c86f366f580830fec47006da686feeed4030b
2017-02-03 14:47:11 +08:00
Alastor Wu 1694edb819 Bug 1328058 - part1 : notify block-stop event when the tab was resumed. r=baku
In present design, the tab would hide the unblocking icon when receives
the audio-playback event, but it means we can't hide the icon if the media isn't
audible.

For example, we won't show the unblocking icon for audio with audio track, but
we show the icon for audio with silent audio track which can only be detected
after starting decoding.

In this case, we can't receive the audio-playback after resuming that media.
Therefore, we should dispatch the different event to notify tab UI that the
tab has already been resumed.

MozReview-Commit-ID: 3xCWQU7nVCl

--HG--
extra : rebase_source : b5f8855b17664bb1cc2b485f1d85120c0939931f
2017-02-03 14:47:08 +08:00
Phil Ringnalda 3281b2aab2 Backed out 5 changesets (bug 1328058) for timing out in browser_block_silentAudioTrack_media.js
CLOSED TREE

Backed out changeset 0c48cff3db5d (bug 1328058)
Backed out changeset 37d35ca95b1f (bug 1328058)
Backed out changeset 0c177bdf5ec3 (bug 1328058)
Backed out changeset b369d9999b8a (bug 1328058)
Backed out changeset 61dbcbe35565 (bug 1328058)
2017-02-02 20:59:34 -08:00
Alastor Wu 915bb36a5d Bug 1328058 - part2 : rename function. r=baku
Rename function MaybeNotifyMediaBlocked() to MaybeNotifyMediaBlockStart().

MozReview-Commit-ID: CJyWiKKkpwd

--HG--
extra : rebase_source : 63cb95fd65565bfe872546dd2b4cf5c21d57af47
2017-02-03 11:25:06 +08:00
Alastor Wu e684e589c7 Bug 1328058 - part1 : notify block-stop event when the tab was resumed. r=baku
In present design, the tab would hide the unblocking icon when receives
the audio-playback event, but it means we can't hide the icon if the media isn't
audible.

For example, we won't show the unblocking icon for audio with audio track, but
we show the icon for audio with silent audio track which can only be detected
after starting decoding.

In this case, we can't receive the audio-playback after resuming that media.
Therefore, we should dispatch the different event to notify tab UI that the
tab has already been resumed.

MozReview-Commit-ID: 3xCWQU7nVCl

--HG--
extra : rebase_source : 7b4214f1f552ba75da94e4bb1795178983af20f7
2017-02-03 11:25:04 +08:00
Alastor Wu b55cdff3c1 Bug 1319771 - part2 : resume foreground window if it was still be blocked. r=baku
In previous patch, we modify the behavior of nsDocument, now it would only resume
window when document has active media components.

However, it causes another issue. If the tab really goes to foreground, but
there is no active media component, the tab would still be blocked and it won't
be resumed anymore.

Therefore, we need to resume it by ourself if the tab is on the foreground but
doesn't be resumed yet.

MozReview-Commit-ID: EdnQ7sRkSJK

--HG--
extra : rebase_source : c2ab932cc3134531e5c49581c5e63b4aabef6ca4
2017-02-03 10:50:07 +08:00
Alastor Wu 9e4d1c7549 Bug 1319771 - part1 : only resume the window when there has active media components. r=baku
For the first pinned tab, it would be set to visible first and then set to
invisible if there exists other tabs after restarting the whole browser.

If the tab is set to visible, we would activate the media component (set the
|mMediaSuspended| in outer window to none-suspend). In this case, the first
pinned tab would be set to visible briefly, but it doesn't mean the tab is in
the foreground, it's just how DOM manage the tab's visibility.

In that moment, none of the media component has been created yet. Therefore, we
would only activate the media component after the audio channel service exists.

MozReview-Commit-ID: 1FgdMq84yWX

--HG--
extra : rebase_source : d5d7568b9f4bfddf2abd0b2c2a4e9391a856882b
2017-02-03 10:48:38 +08:00
Alastor Wu ce4c37a7ff Bug 1320005 - don't show the 'play tab' icon for the media element without audio track. r=baku
MozReview-Commit-ID: K42I0yWaI7N

--HG--
extra : rebase_source : 6b2cd50bb327a644f9092c1e018203854d3d899f
2016-12-13 22:47:13 +08:00
Nathan Froyd 2ebbd09068 Bug 1320752 - remove mozilla/Function.h; r=gerald
We have std::function available now, which is likely to be somewhat more
efficient.
2016-11-28 11:03:53 -05:00
Michelangelo De Simone 4b90783184 Bug 1317853 - Remove DOM/speakermanager and related code. r=jst
MozReview-Commit-ID: AHkMHalG99K

--HG--
extra : rebase_source : 7f0f47374d1208de97fad90ac9f3098dd5b2b330
2016-11-16 13:14:36 -08:00
Alastor Wu b2b31d2a59 Bug 1308153 - part1 : notify tabbrowser when the tab was blocked. r=baku,jaws
We need to notify tabbrowser about media-blocking so that we can show the unblocking tab icon.
See bug1308399 for more UX details.

MozReview-Commit-ID: E25lEhZLCZk

--HG--
extra : rebase_source : dcb6cb520bb0983010dfcc728f7251994a886612
2016-11-11 10:42:35 +08:00
Alastor Wu 48bbee4b31 Bug 1290467 - part7 : enable audio competing for non-audible media. r=baku
In general, the audio competing should only be for audible media and it helps user can focus on one media at the same time. However, we hope to treat all media as the same in the mobile device.

First reason is we have media control on fennec and we just want to control one media at once time. Second reason is to reduce the bandwidth, avoiding to play any non-audible media in background which user doesn't notice about.

MozReview-Commit-ID: yB3181cmVE

--HG--
extra : rebase_source : 0f7bc1d4e9fc3f68e2085f59eb0a313d44a1c058
2016-09-09 09:50:40 +08:00
Alastor Wu 4e4bd18cc6 Bug 1240423 - part2 : introduce audible changing reasons. r=baku
MozReview-Commit-ID: 6V69hOCpyG3

--HG--
extra : rebase_source : 4606710b4b7b72da873a3fb37fec85db89f2e4c0
2016-06-01 10:26:04 +08:00
Alastor Wu fa47d77e11 Bug 1257738 - part1 : implement the audio competing mechanism.
MozReview-Commit-ID: GZw7P0kbhOa
2016-06-01 10:21:13 +08:00
Alastor Wu 12d3b72c2e Bug 1235612 - Part 2: Notify audible state in NotifyStartedPlaying. r=baku
MozReview-Commit-ID: B1u8FYaX5wd

--HG--
extra : rebase_source : 73db1d40298be67945aa630412b46d49710f7502
2016-05-03 17:59:27 +08:00
Alastor Wu 56716374de Bug 1235612 - Part 1: Implement notify media-playback. r=baku
MozReview-Commit-ID: HAd9FKWcHtl

--HG--
extra : rebase_source : 9ccc4e69c67113785857ec1b8cfc3054ef6c487c
2016-05-03 10:03:02 +08:00
Alastor Wu 30466d68e1 Bug 1242874 - part3 : implement different suspended methods. r=baku, r=jwwang
MozReview-Commit-ID: HHYX29gbLwk

--HG--
extra : rebase_source : d774e1338c6e0cd2ce8b4329b28ad9650011a7e5
2016-05-03 09:52:38 +08:00
Carsten "Tomcat" Book b4a55fdcfc Backed out changeset d09b20eeb382 (bug 1242874) 2016-04-28 13:59:04 +02:00
Alastor Wu daaa9802c9 Bug 1242874 - part3 : implement different suspended methods. r=baku, r=jwwang
MozReview-Commit-ID: Co4avRLWGRK

--HG--
extra : transplant_source : b%17%81%60%94_%F1%C2%5D%B1%B3%D5%F3%5C%7D4p%7F%03%EB
2016-04-28 00:23:42 +08:00
Kyle Huey 91efc5a86c Bug 1241764: Replace nsPIDOMWindow with nsPIDOMWindowInner/Outer. r=mrbkap,smaug 2016-01-30 09:05:36 -08:00
Alastor Wu f0d62419f0 Bug 1228564 - part 2 : check audio capturing when the agent is registered/unregistered. r=baku. 2015-12-24 17:28:45 +08:00
Alastor Wu 6a38526a4d Bug 1228564 - part 1 : revert the changeset of bug 1190040. r=baku. 2015-12-24 17:17:30 +08:00
Sebastian Hengst 3c1eb47e3a Backed out changesets 961f205d340d, 14a4637e9d96 and 14a4637e9d96 (bug 1228564) for failing Android M(4) test_browserElement_inproc_AudioChannel.html. r=backout 2015-12-27 22:28:08 +01:00
Alastor Wu 7ff9329b36 Bug 1228564 - part 2 : check audio capturing when the agent is registered/unregistered. r=baku.
--HG--
extra : commitid : B7NcXGTFGrv
2015-12-24 17:28:45 +08:00
Alastor Wu b4cb129af1 Bug 1228564 - part 1 : revert the changeset of bug 1190040. r=baku.
--HG--
extra : commitid : JZF4VU0qxpg
2015-12-24 17:17:30 +08:00