Closed
Bug 1309162
Opened 8 years ago
Closed 8 years ago
Create an audio channel wrapper object for media element
Categories
(Core :: Audio/Video: Playback, defect, P3)
Tracking
()
RESOLVED
FIXED
mozilla53
Tracking | Status | |
---|---|---|
firefox53 | --- | fixed |
People
(Reporter: alwu, Assigned: alwu)
References
Details
Attachments
(7 files)
58 bytes,
text/x-review-board-request
|
baku
:
review+
jwwang
:
review+
|
Details |
58 bytes,
text/x-review-board-request
|
jwwang
:
review+
|
Details |
58 bytes,
text/x-review-board-request
|
baku
:
review+
|
Details |
58 bytes,
text/x-review-board-request
|
baku
:
review+
|
Details |
58 bytes,
text/x-review-board-request
|
baku
:
review+
|
Details |
58 bytes,
text/x-review-board-request
|
jwwang
:
review+
|
Details |
58 bytes,
text/x-review-board-request
|
jwwang
:
review+
|
Details |
Fork form bug1301055 comment20, we want to move all audio channel related code into another new wrapper object, and that can reduce the complexity of media element's code. The media element should only handle spec-related code, and any our custom behaviors codes should be in other wrapper classes.
Assignee | ||
Comment 1•8 years ago
|
||
I'll start to work on this bug after finishing the bug1302350.
Updated•8 years ago
|
Priority: -- → P3
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment 24•8 years ago
|
||
mozreview-review |
Comment on attachment 8809332 [details] Bug 1309162 - part1 : create a separate class to handle audio channel releated stuffs. https://reviewboard.mozilla.org/r/91894/#review92988 r+ except for the CC parts. ::: dom/html/HTMLMediaElement.h:760 (Diff revision 6) > void MarkAsContentSource(CallerAPI aAPI); > > protected: > virtual ~HTMLMediaElement(); > > + class AudioChannelWrapper; Call this AudioChannelAgentCallback. ::: dom/html/HTMLMediaElement.h:1300 (Diff revision 6) > > // The current decoder. Load() has been called on this decoder. > // At most one of mDecoder and mSrcStream can be non-null. > RefPtr<MediaDecoder> mDecoder; > > + uint32_t GetMuted() const { You don't need this function because AudioChannelWrapper can access private members of HTMLMediaElement. ::: dom/html/HTMLMediaElement.cpp:557 (Diff revision 6) > +{ > +public: > + NS_DECL_CYCLE_COLLECTING_ISUPPORTS > + NS_DECL_CYCLE_COLLECTION_CLASS(AudioChannelWrapper) > + > + explicit AudioChannelWrapper(HTMLMediaElement* aOwner, AudioChannel aChannel) 'explicit' is needed for one-parameter constructor only. ::: dom/html/HTMLMediaElement.cpp:558 (Diff revision 6) > +public: > + NS_DECL_CYCLE_COLLECTING_ISUPPORTS > + NS_DECL_CYCLE_COLLECTION_CLASS(AudioChannelWrapper) > + > + explicit AudioChannelWrapper(HTMLMediaElement* aOwner, AudioChannel aChannel) > + : mOwner(aOwner), Coding style: MyClass(int aVar, int aVar2) : mVar(aVar) , mVar2(aVar2) { ... } ::: dom/html/HTMLMediaElement.cpp:1164 (Diff revision 6) > NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mSrcStream) > NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mSrcAttrStream) > NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mSourcePointer) > NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mLoadBlockedDoc) > NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mSourceLoadCandidate) > - NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mAudioChannelAgent) > + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mAudioChannelWrapper) Does it really need to participate CC? If not, mAudioChannelWrapper is guaranteed to be non-null for the lifetime of HTMLMediaElement and you can save some null checks.
Attachment #8809332 -
Flags: review?(jwwang) → review+
Comment 25•8 years ago
|
||
mozreview-review |
Comment on attachment 8809333 [details] Bug 1309162 - part2 : remove audio channel code from media element. https://reviewboard.mozilla.org/r/91896/#review92990
Attachment #8809333 -
Flags: review?(jwwang) → review+
Comment 26•8 years ago
|
||
mozreview-review |
Comment on attachment 8810694 [details] Bug 1309162 - part6 : remove useless comment. https://reviewboard.mozilla.org/r/92974/#review92992
Attachment #8810694 -
Flags: review?(jwwang) → review+
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment 39•8 years ago
|
||
mozreview-review |
Comment on attachment 8809332 [details] Bug 1309162 - part1 : create a separate class to handle audio channel releated stuffs. https://reviewboard.mozilla.org/r/91894/#review95712 ::: dom/html/HTMLMediaElement.cpp:595 (Diff revision 8) > + // but resumed it from page. > + SetSuspended(nsISuspendedTypes::NONE_SUSPENDED); > + UpdateAudioChannelPlayingState(); > + } > + > + NS_IMETHODIMP WindowVolumeChanged(float aVolume, bool aMuted) override use the syntax: returnType MethodName(...) { ...
Attachment #8809332 -
Flags: review?(amarchesini) → review+
Comment 40•8 years ago
|
||
mozreview-review |
Comment on attachment 8810328 [details] Bug 1309162 - part3 : modify the place calling UpdateAudioChannelPlayingState(). https://reviewboard.mozilla.org/r/92680/#review95714
Attachment #8810328 -
Flags: review?(amarchesini) → review+
Comment 41•8 years ago
|
||
mozreview-review |
Comment on attachment 8810329 [details] Bug 1309162 - part4 : remove checking for mPlayingBeforeSeek. https://reviewboard.mozilla.org/r/92682/#review95716 r+, I hope we have enough tests for this :)
Attachment #8810329 -
Flags: review?(amarchesini) → review+
Comment 42•8 years ago
|
||
mozreview-review |
Comment on attachment 8810330 [details] Bug 1309162 - part5 : only set the audible state when stream starts playing. https://reviewboard.mozilla.org/r/92684/#review95718
Attachment #8810330 -
Flags: review?(amarchesini) → review+
Assignee | ||
Comment 43•8 years ago
|
||
(In reply to Andrea Marchesini [:baku] from comment #41) > r+, I hope we have enough tests for this :) Yes, we have a test to check that (browserElement_AudioChannelSeeking.js). In addition, now hiding tab audio indicator will be delayed for 3 seconds (bug1232357), so we don't need to worry about the indicator blinking during seeking :)
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment 51•8 years ago
|
||
mozreview-review |
Comment on attachment 8814765 [details] Bug 1309162 - part7 : wrap custom policy function. https://reviewboard.mozilla.org/r/95858/#review95882
Attachment #8814765 -
Flags: review?(jwwang) → review+
Comment 52•8 years ago
|
||
Pushed by alwu@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/6b09c6adcfa5 part1 : create a separate class to handle audio channel releated stuffs. r=baku,jwwang https://hg.mozilla.org/integration/autoland/rev/16ceabbf8eef part2 : remove audio channel code from media element. r=jwwang https://hg.mozilla.org/integration/autoland/rev/b5ab5eae225d part3 : modify the place calling UpdateAudioChannelPlayingState(). r=baku https://hg.mozilla.org/integration/autoland/rev/fe1771c91309 part4 : remove checking for mPlayingBeforeSeek. r=baku https://hg.mozilla.org/integration/autoland/rev/2015de6577af part5 : only set the audible state when stream starts playing. r=baku https://hg.mozilla.org/integration/autoland/rev/17c744162fbe part6 : remove useless comment. r=jwwang https://hg.mozilla.org/integration/autoland/rev/3f0ad2d2c594 part7 : wrap custom policy function. r=jwwang
I had to back this out for valgrind failures like https://treeherder.mozilla.org/logviewer.html#?job_id=7298889&repo=autoland https://hg.mozilla.org/integration/autoland/rev/eb95159069bb4e50d52a004d6df9fcdf1f9eae42
Flags: needinfo?(alwu)
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Assignee | ||
Comment 61•8 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=f7c6c68dd19039ed1d3cf8346133a3de82cbc760
Comment 62•8 years ago
|
||
Pushed by alwu@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/17d4303e4f86 part1 : create a separate class to handle audio channel releated stuffs. r=baku,jwwang https://hg.mozilla.org/integration/autoland/rev/bd25005744ed part2 : remove audio channel code from media element. r=jwwang https://hg.mozilla.org/integration/autoland/rev/37f5c9c13c2f part3 : modify the place calling UpdateAudioChannelPlayingState(). r=baku https://hg.mozilla.org/integration/autoland/rev/67431dae9ec8 part4 : remove checking for mPlayingBeforeSeek. r=baku https://hg.mozilla.org/integration/autoland/rev/583e3edec539 part5 : only set the audible state when stream starts playing. r=baku https://hg.mozilla.org/integration/autoland/rev/eef982c27c7b part6 : remove useless comment. r=jwwang https://hg.mozilla.org/integration/autoland/rev/716be76c9a2f part7 : wrap custom policy function. r=jwwang
Comment 63•8 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/17d4303e4f86 https://hg.mozilla.org/mozilla-central/rev/bd25005744ed https://hg.mozilla.org/mozilla-central/rev/37f5c9c13c2f https://hg.mozilla.org/mozilla-central/rev/67431dae9ec8 https://hg.mozilla.org/mozilla-central/rev/583e3edec539 https://hg.mozilla.org/mozilla-central/rev/eef982c27c7b https://hg.mozilla.org/mozilla-central/rev/716be76c9a2f
Status: NEW → RESOLVED
Closed: 8 years ago
status-firefox53:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla53
Assignee | ||
Updated•8 years ago
|
Flags: needinfo?(alwu)
Comment 64•7 years ago
|
||
Alastor, I'm trying to understand the AutoNoJSAPI and its comments about IsCallerChrome in NotifyAudioChannelAgent. There are no IsCallerChrome checks in audiochannel. What is this AutoNoJSAPI trying to prevent, exactly?
Flags: needinfo?(alwu)
Assignee | ||
Comment 65•7 years ago
|
||
That is previous modification, transfer NI to baku.
Flags: needinfo?(alwu) → needinfo?(amarchesini)
Comment 66•7 years ago
|
||
> checks in audiochannel. What is this AutoNoJSAPI trying to prevent, exactly?
We wanted to be sure that any AudioChannelAgent method was exposed only to chrome code. But at some point, we found out that there was a content operation able to trigger an AudioChannelAgent method (not directly, of course). Instead removing the assertion, I preferred to add AutoNoJSAPI. I don't remember the detail, but in case, I can remove AudioNoJSAPI an push to try to see if this assertion is triggered by some tests.
Flags: needinfo?(amarchesini)
Comment 67•7 years ago
|
||
Please do. I'm not aware of what assertion you're talking about.
Flags: needinfo?(amarchesini)
Comment 68•7 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=f8a0f9acd005502b23c50fab333d3ea5bd3caee2&selectedJob=75942019 Green on treeherder. I think we can remove that AutoNoJSAPI.
Flags: needinfo?(amarchesini)
Comment 69•7 years ago
|
||
Great. Bug 1338337.
You need to log in
before you can comment on or make changes to this bug.
Description
•