Commit graph

897 commits

Author SHA1 Message Date
Matthew Gregan
3efbb6fca4 Bug 1388236 - Remove B2G-only AudioChannel code from HTMLMediaElement. r=jwwang 2017-08-10 13:00:08 +12:00
Matthew Gregan
2f8cc7804c Bug 1388236 - Remove B2G-only AudioChannel code from MSG. r=padenot 2017-08-10 13:00:08 +12:00
Matthew Gregan
89fde0ce0f Bug 1388236 - Remove B2G-only AudioChannel code from media playback. r=jwwang 2017-08-10 13:00:07 +12:00
Honza Bambas
e372b0a90f Bug 1377206 - Explicitly disable throttling of media HTTP responses, r=cpearce
--HG--
extra : rebase_source : 01f913c44c7ce02bedd733faaf11262353f3461d
2017-08-04 04:38:00 +02:00
JW Wang
b2d75fa057 Bug 1383628. P5 - move CanClone() from MediaResource to BaseMediaResource. r=gerald
1. we move clone related methods to BaseMediaResource which is the only cloneable sub-class of MediaResource.
2. add CanClone() to ChannelMediaDecoder to reduce the dependency on MediaResource for HTMLMediaElement.
   MediaResource should be internal details to MediaDecoder.

MozReview-Commit-ID: Hl2nAiuyTO0

--HG--
extra : rebase_source : 43dd9ee33ef2ef2e9093eb6b264dc174379d61d2
extra : source : 978ded48a90f2c407c4545486243acabf492736a
2017-08-04 15:29:55 +08:00
JW Wang
a8a917b8bb Bug 1383628. P2 - move the call to Load() into Clone(). r=gerald
MozReview-Commit-ID: 9k8BXLwAepI

--HG--
extra : rebase_source : 52d3fb871bad53691585e774c2745f328592eb3f
extra : source : cdc492f87aa634eaaae0809aacb261ad25be7b08
2017-08-03 17:47:23 +08:00
Sebastian Hengst
765cc1b925 merge mozilla-inbound to mozilla-central. r=merge a=merge
MozReview-Commit-ID: JhesEg4Bxjy
2017-08-04 19:28:27 +02:00
Bill McCloskey
2273c53b75 Bug 1364821 - Introduce AbstractThread::AutoEnter and remove main thread's AbstractThread::GetCurrent() (r=jwwang)
MozReview-Commit-ID: FSLVn7xe3sq
2017-08-03 14:19:02 -07:00
JW Wang
be3df48dc5 Bug 1384831. P5 - remove unused arguments from HLSDecoder::Load(). r=gerald
MozReview-Commit-ID: JsULuDcMiNa

--HG--
extra : rebase_source : c9c78f57a4fb2278143c8c69343d5e8a97765bbb
extra : source : e019f6fc241c8f35d58a8aa27854159b09dd21f9
2017-07-27 02:54:53 +08:00
JW Wang
197591cec8 Bug 1384831. P2 - rewrite HTMLMediaElement::InitializeDecoderForChannel() and move HLSDecoder creation code to it. r=gerald
Since we will remove ChannelMediaDecoder from HLSDecoder's base class, we can't
create HLSDecoder in InstantiateDecoder which returns a ChannelMediaDecoder.

MozReview-Commit-ID: 9wcrIVIOZFp

--HG--
extra : rebase_source : cf0e55a6a0eafeb4e34ff1eed5bb7e1d97d73e80
extra : source : edefbf5d7179c5390bd2a25fbbcd025095d39555
2017-07-26 15:49:03 +08:00
Paul Adenot
757aef5fa0 Bug 1385305 - Change CanBeCaptured and friends so that they use explicit and self-explaining constants. r=jya
MozReview-Commit-ID: Hpuxlc8Ib5j

--HG--
extra : rebase_source : 3a15d350b8d296f3d6c3fb3419938cdcc01526c2
2017-07-28 17:53:12 +02:00
JW Wang
1ab15ede36 Bug 1385699. P3 - remove MediaDecoder::SetInfinite() and related code. r=cpearce
Since inf can be encoded in MDSM::mDuration, we don't need an additional flag
in MediaDecoder to indicate 'infinite' anymore. Note duration change from infinite
to finite is handled by MDSM, so we can remove the explicit calls to SetInfinite(false).

MozReview-Commit-ID: EoxwZJzPAJl

--HG--
extra : rebase_source : 669d7ed5b99a89b1827f60f89e0a21f08a18dedd
extra : source : a30b614784afe8772b2212728c1e4a2eac67f94b
2017-08-01 14:15:29 +08:00
Paul Adenot
7f1c17c634 Bug 1384247 - Check if an HTMLMediaElement can be capture before doing it. r=dminor
MozReview-Commit-ID: EWpf2qA2Yce

--HG--
extra : rebase_source : fd990877481c6f3977e2dc0ec615c0282d30123d
2017-07-27 16:02:28 +02:00
Gerald Squelart
bc05f23ecc Bug 1383984 - Enable debugging HTMLMediaElement APIs with 'tabs' permission - r=jya,smaug
While "debugger" is not available yet, we can enable these debugging APIs for
extensions that have the "tabs" privilege, which includes the Media Panel
Devtools extension, so we/webdev will get better media-playback information.

MozReview-Commit-ID: I0MAZH9g0HU

--HG--
extra : rebase_source : 98c21147cb2da4f5f3f1c4dea9d3180b774f8c1a
2017-07-25 15:53:01 +12:00
Jean-Yves Avenard
daf2be6beb Bug 1382303 - P2. Do not activate autoplay early. r=jwwang
Per spec, autoplay should only gets triggered once readyState is equal to HAVE_ENOUGH_DATA

MozReview-Commit-ID: 6nW1U6G1qme

--HG--
extra : rebase_source : da46988cc75b0b5c2a87d86f55fca2fda912be55
2017-07-20 19:11:44 +02:00
JW Wang
cf0ba2ea01 Bug 1380569. P3 - remove AbstractMediaDecoder::NotifyWaitingForKey() and its callers. r=gerald
MozReview-Commit-ID: 3fHDr0xw92P

--HG--
extra : rebase_source : 07ca1ae4e8d65e66beca2d1eb0de232ec6e291fb
extra : intermediate-source : d367e33cc9c132abb9e66aae652f4bbbf4f58be1
extra : source : 029ccea837ef1948bd33ce1d786626f362c41bdf
2017-07-13 14:52:05 +08:00
JW Wang
5cf374a225 Bug 1380569. P1 - rename CannotDecryptWaitingForKey() to NotifyWaitingForKey() and add the function to MediaDecoderOwner. r=gerald
We will use MediaEventSource to plumb the event from MFR to the media element.

MozReview-Commit-ID: 4gaEx7vYybE

--HG--
extra : rebase_source : fd595399e2db4e76ad117636768e160c2f054775
extra : intermediate-source : 1fc86c40dc83e79306c721b1acb0f31803181509
extra : source : d24b62a6041966b2639e5543c9ecccc4f7656a0d
2017-07-13 14:41:09 +08:00
JW Wang
51b253855d Bug 1376004. P1 - include http response code in the error.message field so the UI has more details to display a proper error message. r=cpearce
MozReview-Commit-ID: CHBXZZxfPc0

--HG--
extra : rebase_source : 004f5bb3552b8d2b8b3b911887037c78e7cb9e79
2017-07-14 15:17:32 +08:00
Bevis Tseng
f051ae4a45 Bug 1341540 - Label runnables in dom/html/HTMLMediaElement.cpp. r=jwwang
MozReview-Commit-ID: 7i0MhGWoNPb

--HG--
extra : rebase_source : 577a231ac5ed3658311eacd19cd3fe912fdee0b0
2017-07-07 10:36:13 +08:00
Olli Pettay
21b0ca3bbf Bug 1378196, Make IsEventAttributeName non-virtual in common case, r=ehsan
--HG--
extra : rebase_source : 9daf46de13698348b7ab6b68f8da13ffb338c0a0
2017-07-04 23:54:30 +03:00
Paul Adenot
404c800005 Bug 1341555 - Consolidate use of the MSG's AbstractMainThread, and stop having AbstractMainThread on MediaStreams. r=pehrsons
MozReview-Commit-ID: 5hGDQcfpH6a

--HG--
extra : rebase_source : 41bb678f37cfcdbc9912a25f45a5ca488084aabe
2017-06-29 11:30:57 -07:00
Paul Adenot
6e485889b8 Bug 1330360 - Create new MSGs for each nsPIDOMWindow. r=jesup
MozReview-Commit-ID: 5m1MGcLmT7J

--HG--
extra : rebase_source : b9c05464bb545c047b7718a048eb7e5de3fe275d
2017-06-23 16:18:34 -07:00
Paul Adenot
d1a2003316 Bug 1371719 - Don't create a MediaStreamGraph without doing anything with it. r=jesup
The MediaStreamGraph relies on having at least one message sent to its message
queue on creation, or it will just sit there and do nothing, and block shutdown
because its not running its rendering loop, so it's not progressing in the
MediaStreamGraph life cycle state machine.

This patch makes sure the `captureStream` will succeed before creating an MSG.

MozReview-Commit-ID: CN1arWydmxC

--HG--
extra : rebase_source : b59a8ec4de17aa90d274819ea0c7d687673c8075
2017-06-28 15:19:39 -07:00
JW Wang
1e2be3e873 Bug 1376363. P1 - store container type in MediaDecoder. r=gerald
So we can remove MediaResource::GetContentType() in the future.

MozReview-Commit-ID: zWUNF2uGpf

--HG--
extra : rebase_source : 04f50c4db9dac8503f878a8a1986e627f9a074a3
extra : source : 10737393beaabed640aa3ff67fac2a07567400b4
2017-06-26 17:10:47 +08:00
Chris Pearce
c1a1beca7f Bug 1376509 - Bump supported playack rates to [1/16,16]. r=padenot
Chrome supports playback rates in the ranges of [1/16,16], so we may as well
support the same.

MozReview-Commit-ID: 7mMXQfPiv9d

--HG--
extra : rebase_source : 5dd0b717ad711f49ff3df5156cc07d48c8a694b7
2017-06-28 10:00:58 -07:00
Bill McCloskey
f115503a0b Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-26 14:19:58 -07:00
JW Wang
43c85c2307 Bug 1376227. P5 - merge CreateResource() and Load() for they are highly coupled. r=gerald
MozReview-Commit-ID: EH9NROdQfmd

--HG--
extra : rebase_source : 63c2ba04de1a25fb05db15977d8a19638e31b272
2017-06-23 15:39:57 +08:00
JW Wang
42e66521f5 Bug 1376227. P4 - remove the unused parameter from FinishDecoderSetup(). r=gerald
MozReview-Commit-ID: 7Ux811oMq9y

--HG--
extra : rebase_source : 82f058ad862daf93bc3c5bbb2dbc6a1b57757811
2017-06-23 15:25:40 +08:00
JW Wang
350f03bde7 Bug 1376227. P3 - move Load() down the class hierarchy. r=gerald
So we won't pass an unused |nsIStreamListener**| to MediaSourceDecoder::Load().

MozReview-Commit-ID: 2TCby8m8K5H

--HG--
extra : rebase_source : 349179aa4303c0abd8b86a695789770e158e5c28
extra : intermediate-source : d6f550bd6709a0ee7db6033286af42565a20cdb1
extra : source : ed524d855a1a78665c499152a9360ba961655641
2017-06-23 14:12:41 +08:00
JW Wang
1dbf0f77fa Bug 1376227. P2 - remove unused code following P1. r=gerald
MozReview-Commit-ID: JbwY1Owtk7H

--HG--
extra : rebase_source : 0f82ac16f56ce6ba27944b093b49c8ff6479e66c
extra : intermediate-source : 38c1c8a70fb0209f8c6a3ca596664db9af089763
extra : source : 7cfe394c4790ca7687db9004c96380f088c2bb59
2017-06-21 17:34:22 +08:00
JW Wang
884c26d368 Bug 1376227. P1 - let MediaDecoder sub-classes have the knowledge how to create a MediaResource. r=gerald
MozReview-Commit-ID: 2fHEkU46MUr

--HG--
extra : rebase_source : 18f5b01a065d6acbdc88ce808f8bd1e8e462e8d7
extra : intermediate-source : e003e070535d95f7e6334f4a92d6d763d436023c
extra : source : 450d506c6bb85f53b44fed296a32845bcd777905
2017-06-21 17:30:56 +08:00
Mats Palmgren
3ae8e80f81 Bug 1375075 - Remove a FlushPendingNotifications that we don't need anymore. r=cpearce
The code that needed it was removed in bug 1325053.

MozReview-Commit-ID: 8P60SOpqyPq
2017-06-23 02:03:09 +02:00
Mats Palmgren
c3f48d9dd2 Bug 1374875 - Use simpler mutation observer than nsRange for media elements. r=cpearce
MozReview-Commit-ID: FVPdHC6tBXg
2017-06-23 02:03:08 +02:00
JW Wang
61f7ca2479 Bug 1374930. P3 - move Clone() down to ChannelMediaDecoder for clone is possible only for those use channel-based resource. r=cpearce
MozReview-Commit-ID: Ci2kbts2pkQ

--HG--
extra : rebase_source : 3a2e70ca4bf56e1c73b7faff8e183211787a96bf
extra : source : 682cb949adae4683ae1cbbfbb4c457b83cb1fddc
2017-06-20 18:10:27 +08:00
JW Wang
1aa2d7bbd7 Bug 1374930. P2 - add an entry only after FinishDecoderSetup() succeeds. r=cpearce
MozReview-Commit-ID: 6MKRhVIZ4Z6

--HG--
extra : rebase_source : ab5a8551a1a054eba93be85c602b954ab15f9d8e
extra : intermediate-source : 75c4be291a53f119a30f40b3ae555a5ce7a0544f
extra : source : 20dd0be1d8d4f7838a0aff0755ad14e00a1d6eb0
2017-06-20 15:27:45 +08:00
JW Wang
75e01f7b0a Bug 1371202. P1 - plumb the 'loop' attribute into MDSM. r=jya
MozReview-Commit-ID: DtsaXmtQw76

--HG--
extra : rebase_source : 34686d455670975a824dc803a16b8acff97c86ab
extra : intermediate-source : 0de95b1644a365dda9beff4b75d56251da2258c7
extra : source : ba5b2599c949766395bf5b0381023a752bc6e04d
2017-06-08 12:03:10 +08:00
JW Wang
e8a94c0927 Bug 1371200. P2 - add more fields to MediaDecoderInit. r=cpearce
Now we can init some members in the constructor and remove the setters
that are called only once.

MozReview-Commit-ID: 2hkrIA6pFlh

--HG--
extra : rebase_source : 33c008ef1508597e64ef7f92b028867dbd4ffba6
extra : source : fa213ee733ea881f4f76dac06c9b4709aeba4b91
2017-06-07 14:10:26 +08:00
JW Wang
4031d18757 Bug 1371200. P1 - add MediaDecoderInit and fix MediaDecoder constructor and its friends. r=cpearce
We will add more fields to MediaDecoderInit and be able to remove some setters.

MozReview-Commit-ID: BVx935IHQHf

--HG--
extra : rebase_source : 6d167265e478ce39881ceada1303e9ca18189bbf
extra : source : 0c26f909568f673591ad6720458dfc912c01daad
2017-06-07 12:14:11 +08:00
Kirk Steuber
99a80af5db Bug 1365092 - Move side effects of SetAttr, UnsetAttr, and ParseAttribute functions to BeforeSetAttr and AfterSetAttr r=bz
This is necessary to facilitate the transition to cloning attributes instead of reparsing them.

MozReview-Commit-ID: Gyd1tD6ldly

--HG--
extra : rebase_source : 777cfed750c95c448f953a6ec98026481997e227
2017-06-07 10:28:20 -07:00
Jean-Yves Avenard
a16fab66e4 Bug 1362165: P7. Only complete appendBuffer once readyState has changed. r=jwwang
MSE specs require that the readyState be modified during either the Initialization Segment Received or the Coded Frame Processing algorithms.

At this stage, we only handle the Initialization Segment part (readyState moving from HAVE_NOTHING to HAVE_METADATA)

MozReview-Commit-ID: KBnnWuHJ6Om

--HG--
extra : rebase_source : a4450139762d5d033438fbee2ce560fe02ed6ffc
2017-05-09 12:23:11 +02:00
Alastor Wu
6ad4f8c987 Bug 1362793 - part1 : shouldn't shutdown decoder too early. r=jwwang
The spec says that we don't need to change the ready state when getting the error.
If the ready state is "HAVE_METADATA", it means we could get the video's duration
at that time.

However, if we shutdown decoder too early, we won't get the correct duration.

In addition, since we remove old decoder prior to create new one in the function
HTMLMediaElement::SetDecoder(), we can remove the decoder checking assertion
in HTMLMediaElement::InitializeDecoderForChannel().

MozReview-Commit-ID: CHRJHng8Xm0

--HG--
extra : rebase_source : 32b2114f5b4bce2d777826295959a6ce0701984d
2017-05-19 12:38:17 +08:00
Kirk Steuber
e74f1cd513 Bug 1363481 - Add the old attribute value as a parameter to Element::AfterSetAttr r=bz
In order to facilitate the movement of code with side-effects called by Element::SetAttr to Element::BeforeSetAttr and Element::AfterSetAttr, Element::AfterSetAttr should have access to the old value of the attribute. This includes information about whether there was previously a value set or not.

Accomplishing this involved passing an additional argument through functions that find and change the old attribute value in order to ensure that we can differentiate between an empty old value and an absent old value (attribute was not set).

Note that while I tried to ensure that accurate values (and their absence) are reported to Element::AfterSetAttr, I largely ignored SVG. While the old value reported for SVG values should be however accurate the value already being reported to SetAttrAndNotify was, SVG elements do not currently report unset values properly because they will never pass a null pointer to SetAttrAndNotify.

MozReview-Commit-ID: K1mha8CNFZP

--HG--
extra : rebase_source : 42776eb01451d371e4aebcc17fe3dd112c8d268b
2017-05-18 14:09:01 -07:00
Tom Ritter
f447134149 Bug 1365036 Lowercase Objbase.h so MinGW can find the file r=baku
MozReview-Commit-ID: JCgyym17EO7

--HG--
extra : rebase_source : 2cc153f51f5de6632afa359b9b291a24401fe307
2017-05-15 15:34:58 -05:00
Chun-Min Chang
da52aad1f7 Bug 1331763 - part1: Support EME content for AudioContext::CreateMediaElementSource; r=cpearce
MozReview-Commit-ID: 1OMySAPCH4i

--HG--
extra : rebase_source : abd014ffc19976abbfdb523b6a172e42a3a80521
2017-05-15 13:21:28 +08:00
Chris Pearce
8be5473cac Bug 1362212 - Implement HTMLMediaElement.reportCanPlayTelemetry. r=gerald
Defer determining whether we have usable decoders to an off-main thread in
order to avoid janking the main thread.

MozReview-Commit-ID: Ape5zEBBMrz

--HG--
extra : rebase_source : 1b77046ebb7bb2d4ff1ba53afce904d3de45c335
2017-05-10 11:31:16 +12:00
Alastor Wu
a6e6b04a38 Bug 1351087 - part1 : don't register agent for audio without audio track. r=baku
Since we don't want to show media control for media without audio track (eg. GIFV),
it's no need to register audio agent for them.

MozReview-Commit-ID: 22YrMkpNrcP

--HG--
extra : rebase_source : 78a6c41b6018f91ed9370fb2f15c650fe76ba3a1
2017-05-09 14:10:43 +08:00
Alastor Wu
acab9ac022 Bug 1357633 - part1 : request audio focus again when resume media from page. r=baku
Should also update audio playing changed after resumed from page.

MozReview-Commit-ID: 66vuJJFeWN3

--HG--
extra : rebase_source : 06802b2e49f5e712a1d9fd34d4ae017995faaa75
2017-05-10 23:43:11 +08:00
Carsten "Tomcat" Book
d66b9f27d5 merge mozilla-inbound to mozilla-central a=merge 2017-05-10 15:07:28 +02:00
Bill McCloskey
c197e07ff2 Bug 1363560 - Name more runnables (r=mccr8)
MozReview-Commit-ID: 3hxZDA4JlTV
2017-05-09 21:53:25 -07:00
Tom Tung
150ceb8855 Bug 1348050 - Part 4: Mark channel as urgent-start for loading media. r=baku
The part is mainly to set urgent-start for loading media when it's initiated by
user interaction. For the HTMLMedia element, it has its algorithm to pre-load
the media and users will get feedback once they play the media. Thus, I only
set urgent-start when the media element has autoplay attribute since the sooner
enough resource is loaded the sooner the media will be played.

MozReview-Commit-ID: 7nu3PUt8iYo

--HG--
extra : rebase_source : f1abfecdccb74f4ec79a057534c2e9a1bfd5ae41
2017-04-28 15:27:10 +08:00
Iris Hsiao
541787d3f9 Backed out changeset 763cc804a25d (bug 1361944) for causing crashtest perma failure on Android 2017-05-05 15:12:51 +08:00
JW Wang
dba2f2df64 Bug 1361944. P2 - be sure to shut down the existing decoder before loading the next source child. r=cpearce
Otherwise we will fail the assertion (!mDecoder, "Shouldn't have a decoder")
in HTMLMediaElement::InitializeDecoderForChannel().

MozReview-Commit-ID: 1zShp0th3Uv

--HG--
extra : rebase_source : 9b61fd8f6817e33c7d041e4b49bc34ccbc357a15
2017-05-04 13:28:17 +08:00
JW Wang
0b67e0ea16 Bug 1361944. P1 - add a crash test. r=cpearce
The crash happens when:
1. there are multiple <source> children.
2. decode error happens on the 1st child.

MozReview-Commit-ID: 60UXaQ475Nh

--HG--
extra : rebase_source : b7e61ae909cfa10fb2db3c41b278449de41b9450
2017-05-04 14:23:23 +08:00
Kirk Steuber
7fdb378650 Bug 1359556 - Optimize cloneNode by preinitializing attribute and child arrays r=bz
Currently, attribute and child arrays (implemented in dom/base/nsAttrAndChildArray.h) start out empty. When cloning, the array ends up being resized multiple times in order to add the attributes and children that are being cloned from the original node. This would be quicker if the array was initialized to the correct size in the first place so that resizes are not necessary.

However, preallocating space for children is only necessary when performing a deep clone. Therefore, an additional parameter is being added to the Clone, CopyInnerTo, and CloneDocHelper methods to indicate whether preallocation of children should happen. Attributes are copied either way, so that part of the array is preallocated in both cases.

MozReview-Commit-ID: 3iVezeAKXnI

--HG--
extra : rebase_source : 9c3deec6d7aafd6411044d623d4863637b45fd58
2017-04-20 12:57:48 -07:00
Kaku Kuo
dab014bd99 Bug 1360123 P2 - move ConstructMediaTracks/RemoveMediaTracks to HTMLMediaElemnt; r=jwwang
MozReview-Commit-ID: 3S63JeXAX2w

--HG--
extra : rebase_source : ef807247a5042fa23ba6b6f5c907035bd8d64199
2017-04-18 15:43:55 +08:00
Kaku Kuo
bb1078e81f Bug 1360123 P1 - don't bother creating a new track list in HTMLMediaElement::RemoveMediaTracks() r=jwwang
MozReview-Commit-ID: 6lmSxmKMrDK

--HG--
extra : rebase_source : b99831cdf14a2d0ae156792f49ef7f7f65b1a1cd
2017-04-10 18:09:35 +08:00
Alastor Wu
c03792963c Bug 1358061 - remove moz-audiochannel codes for media element and web audio. r=baku
MozReview-Commit-ID: KPuhxCVezOZ

--HG--
extra : rebase_source : 74a9c9a9746d0add26f279c6dd5ddc30681be901
2017-04-26 12:02:32 +08:00
Phil Ringnalda
6b3d58414b Backed out changeset 6e7efb9115fd (bug 1358061) for build bustage
CLOSED TREE

MozReview-Commit-ID: F9FSciVgynw
2017-04-25 20:55:30 -07:00
Alastor Wu
222377e8ac Bug 1358061 - remove moz-audiochannel codes for media element and web audio. r=baku
MozReview-Commit-ID: BwZ6vHUPnSB

--HG--
extra : rebase_source : c92556cf92ff96b8014281396b28e1e232aa8576
2017-04-25 12:19:28 +08:00
JW Wang
e96831f0c7 Bug 1356514 - remove the usage of nsContentUtils::IsInPrivateBrowsing() in HTMLMediaElement.cpp. r=Ehsan
Per bug 1194891 comment 35, use |NodePrincipal()->GetPrivateBrowsingId() > 0| instead.

MozReview-Commit-ID: Cu6geuTWhGz

--HG--
extra : rebase_source : 1f899705ce1c2d9b7beec44a2f88a2cb37d0430f
2017-04-18 14:26:32 +08:00
JW Wang
433b4bb763 Bug 1348053 - add the UrgentStart flag to the channel when the loading is initiated by a user interaction for quicker network response. r=cpearce
MozReview-Commit-ID: 1tk9k8u1zTu

--HG--
extra : rebase_source : 349a518dd071f4c4b10a3853f7d42fe9a43f0804
extra : intermediate-source : 379f010a50f6a72d5429c530b1a24bfd1c9ed803
extra : source : cd10c3301c6da15e9bc87b956d8cc2c956acefaf
2017-04-10 15:23:11 +08:00
Kaku Kuo
36ef069505 Bug 1344357 P3 - dont' pass dom::Promise into MediaDecoder anymore; r=jwwang
MozReview-Commit-ID: 5RUNauRRajP

--HG--
extra : rebase_source : 4c12d5cd730657da37b2c94987e84518c2c67ae5
2017-04-17 18:49:55 +08:00
Kaku Kuo
707fc9d61a Bug 1344357 P2 - put HTMLMediaElement::mSeekDOMPromise into cycle collector; r=jwwang
MozReview-Commit-ID: 5NOyAz02vTj

--HG--
extra : rebase_source : d54318fd81ee11f5f10a6dfe44d6a2c0affb8881
2017-04-17 18:40:17 +08:00
Kaku Kuo
b06e8a5370 Bug 1344357 P1 - move the MediaDecoder::mSeekDOMPromise to HTMLMediaElement; r=jwwang
There was a cycle amoung a window object -> a HTMLMediaElement -> a MediaDecoder -> a Promise (-> back to the window object).
And we have no way to break the cycle since the MediaDecoder does not participate into the collection.

By moving the Promise form MediaDecoder to HTMLMediaElement, we will be able to break the cycle since the HTMLMediaElement is in the collection.

We'll implement the cycle collection in the next patch.

MozReview-Commit-ID: CyVXBl6IMI3

--HG--
extra : rebase_source : 195a322ce3e6fe933e72be4aec5d2ebfa1f54865
2017-04-17 18:25:26 +08:00
Gerald Squelart
76e4d2f3eb Bug 1343437 - HTMLMediaElement::DecodeWarning() should store a warning instead of an error - r=jya
MozReview-Commit-ID: 47hURppxH5H

--HG--
extra : rebase_source : f373d61a61dfbabd64de3c5f99c056ee65dae643
2017-03-14 01:12:20 +11:00
JW Wang
84734bb3c0 Bug 1194891. P1 - plumb 'isPrivateBrowsing' down to MediaCacheStream. r=cpearce
MozReview-Commit-ID: EBKkOfK7K1p

--HG--
extra : rebase_source : 82daa16ffa0809a4de660867ab61d9a9efdf2a83
extra : source : b61d0c22837a6ee8085c95afbd1370ffa8286e6e
2017-04-06 16:20:00 +08:00
Alastor Wu
6218dd5593 Bug 1247433 - don't set error for unsupported type media. r=JamesCheng,jwwang,kaku
On Fennec, we use external video player to play unsupported type media.

In this bug, we can't execute play() successfully because the spec said that
we should abort the play if the value of media element's error is
MEDIA_ERR_SRC_NOT_SUPPORTED [1].

Therefore, we do a hack for unsupported type media, we don't set its error, but
we would still remember the src is unsupported type. When media element starts
playing, we would use an external video player to play that src.

[1] https://goo.gl/GlLbeA

MozReview-Commit-ID: 42HxQtXdWDe

--HG--
extra : rebase_source : 83425528eacee8af1829eaead2fef39b0be51ae5
2017-03-29 11:55:50 +08:00
Alastor Wu
192096681c Bug 1347648 - part4 : notify audible change after finishing set suspend and pause state. r=jwwang
Since the audible state would depend on pause and suspend state, we should do
the check after finishing play() or pause().

MozReview-Commit-ID: 1yhxuQDw067

--HG--
extra : rebase_source : 888bac3da52f42b75eeb1c3db1337e223d792a11
2017-03-27 10:59:44 +08:00
Alastor Wu
758808ea61 Bug 1347648 - part2 : paused media element is non-audible. r=jwwang
If the media element is paused, it should be non-audible.

MozReview-Commit-ID: 2HjV9gNNcnV

--HG--
extra : rebase_source : 39b0812788d020d3f9c1a96afa1397b32057de8c
2017-03-27 10:59:07 +08: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
Alastor Wu
7c05349889 Bug 1347758 - part2 : remove add/removeMediaContent() and related codes. r=Ehsan
Since the window would know when need to resume the media, we don't need the
add/removeMediaContent() anymore.

MozReview-Commit-ID: F9MSiqqnOiV

--HG--
extra : rebase_source : fa86b3977e13d1f2a6b6233b6d608ccc331b5bf7
2017-03-24 14:43:40 +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
8591f98cad Bug 1347758 - part2 : remove add/removeMediaContent() and related codes. r=Ehsan
Since the window would know when need to resume the media, we don't need the
add/removeMediaContent() anymore.

MozReview-Commit-ID: F9MSiqqnOiV

--HG--
extra : rebase_source : 28a8312373054b8e29b93267677de99dd862a074
2017-03-24 12:01:46 +08:00
Kaku Kuo
c4629a637d Bug 1349456 part 2 - mark elemet as tainted while captured via MozCaptureStream(); r=jwwang
MozReview-Commit-ID: 1V776bLuH43

--HG--
extra : rebase_source : 546587dc77dba4931788359a0a80507892594a7d
2017-03-22 14:46:09 +08:00
Kaku Kuo
1cf3c62747 Bug 1349456 part 1 - correct indentation; r=jwwang
MozReview-Commit-ID: 4i8sQaotJpO

--HG--
extra : rebase_source : 601553fb2ac3715b6a89cfb64d8c3d3b8880af25
2017-03-22 14:33:11 +08:00
Kaku Kuo
a2b8741937 Bug 1348432 - move the mMediaTracksConstructed flag back to MediaDecoder; r=jwwang
This mMediaTracksConstructed flag should belong to a MediaDecoder,
every time a HTMLMediaElement switches its MediaDecoder, the flag should be reset to false again.

So, we move the mMediaTracksConstructed flag back to MediaDecoder, by this way,
HTMLMediaElement provides only the mechanism to construct and remove media tracks,
and MediaDecoder uses the flag, mMediaTracksConstructed, to provide policy.

MozReview-Commit-ID: L7mMAmLjQCy

--HG--
extra : rebase_source : 1625d604afb34bffe79eda06a46c9feb780a14d9
2017-03-18 22:34:01 +08:00
Alastor Wu
295d2183ba Bug 1329122 - should unregister agent when media element becomes inactive. r=baku
We should remove the media control interface immediately when the document is inacitve, even it was paused by media control before.

MozReview-Commit-ID: GBDhzEFOTXE

--HG--
extra : rebase_source : f357d19ceb26d307d1d68696ad875d044e14aa8b
2017-03-22 00:04:24 +08:00
Kaku Kuo
0696209786 Bug 1347892 part 2 - pass the visibility state of media element to media decoder as a Visibility variable; r=jwwang
MozReview-Commit-ID: AbkJeIpYZlN

--HG--
extra : rebase_source : 3ace472786b9b9900b125164996819b6d6e3627f
2017-03-17 12:51:11 +08:00
Kaku Kuo
6da6d229fa Bug 1347892 part 1 - initialize a media element's mVisibilityState to be UNTRACKED; r=jwwang
MozReview-Commit-ID: Bkkh6hvCNu4

--HG--
extra : rebase_source : 48af639b9ce04f11a20cc55088dc3cb3f59971ec
2017-03-16 19:26:49 +08:00
Kaku Kuo
0d5f3a200f Bug 1347402 part 5 - create MediaElementGMPCrashHelper in HTMLMediaElement.cpp; r=cpearce,jwwang
Move the creation of MediaElementGMPCrashHelper out from MediaDecoder.cpp
which reduces the dependency of MediaDecoder to HTMLMediaElement.

MozReview-Commit-ID: E60aMfcFr7V

--HG--
extra : rebase_source : f50a8ee6f2fbec0bdf117eb1217066bc9c701745
extra : source : dd4e52da6d0d6205fe61d0caba44bbff008fd21a
2017-03-16 11:16:15 +08:00
Kaku Kuo
b7fee84e84 Bug 1347402 part 4 - move ConstructMediaTracks/RemoveMediaTracks to HTMLMediaElemnt; r=jwwang
ConstructMediaTracks and RemoveMediaTracks are actually HTMLMediaElement's responsibilities.

MozReview-Commit-ID: 8lOdzD4pN7N

--HG--
extra : rebase_source : 7159d2c62b77429e5b2305b9e3eb7a0020a3b52c
extra : source : 0467c059be3cd8f066da5fc912b7738a5b9c4dd9
2017-03-15 17:33:21 +08:00
Kaku Kuo
a71c156f34 Bug 1347402 part 2 - open a GetOwnerDoc() interface at the MediaDecoderOwner; r=jwwang
Open a GetOwnerDoc() method to the MediaDecoderOwner interface and then we can get the
owner document via a pointer to MediaDecoderOwner in MediaDecoder.

MozReview-Commit-ID: JCzQDLx1MsU

--HG--
extra : rebase_source : e194c95cb1513046ec7aa19d6c6e9f8231971a2d
extra : source : 1b9c45911a036e3677b6636cda84a636681d71de
2017-03-15 11:40:37 +08:00
Kaku Kuo
7f7c37e4b3 Bug 1347836 part 2 - make HTMLMediaElement::GetCurrentImage() return an already_AddRefed<layers::Image>; r=jwwang
MozReview-Commit-ID: FZ4JRdbPUry

--HG--
extra : rebase_source : 9d532e4bb55be8b9d83d120ee62a7b2f5e521efc
2017-03-16 17:07:04 +08:00
Kaku Kuo
97ae833320 Bug 1347836 part 1 - fix comment; r=jwwang
MozReview-Commit-ID: 61ElwSsArw1

--HG--
extra : rebase_source : bf7ffa38145692c47762b0f47c7f2dc943f2c33d
2017-03-16 17:05:10 +08:00
Kaku Kuo
a1edb1f6ed Bug 1346116 part 2 - consider a video is in-tree or not in the suspend-video-decoding policy; r=jwwang
We never suspend videos that is NOT in-tree because we found that, according to the Telemetry data, most (>70%) videos
which are used as the argument of drawImage() are not in-tree. So, by preventing suspending not-in-tree videos, we should
be able to alleviate the pain of not able to resume video decoders synchronously.

MozReview-Commit-ID: 8eqs0pHZLIt

--HG--
extra : rebase_source : 964c0047753696cad2e40bcf74c2b8ee9faccdea
extra : source : 93c38caa15b1a29f8f1e8e6d3a5e859f97bc1aae
2017-03-12 14:02:04 +08:00
Kaku Kuo
f758e455ea Bug 1346116 part 1 - initialize MediaDecoder::mIsDocumentVisible and MediaDecoder::mIsElementVisible at HTMLMediaElement::FinishDecoderSetup(); r=jwwang
Initialize the MediaDecoder::mIsElementVisible to be "!aOwner->IsHidden()" at the MediaDecoder's constructor is wrong.
Insted, we initialize both MediaDecoder::mIsDocumentVisible and MediaDecoder::mIsElementVisible to be false at the construtor,
and then assign the HTMLMediaElement's real values to them at HTMLMediaElement::FinishDecoderSetup() via the the MediaDecoder::SetActiviyChangesToDecoder().

The initialization values of MediaDecoder::mIsDocumentVisible and MediaDecoder::mIsElementVisible (in the constructor) do not matter because the valuse are
not read untile the first MediaDecoder::SetActiviyChangesToDecoder() method call.

MozReview-Commit-ID: Cdovq5pG9Nv

--HG--
extra : rebase_source : 91f3b4c2515124b4c195dd246bd9b404178a35de
extra : source : 81b5e89a5bd20f37b8c3daa1230db30808026ff4
2017-03-12 13:56:43 +08:00
Kaku Kuo
7e43b9cace Bug 1346498 part 9 - move all policy codes into MediaDecoder::UpdateVideoDecodeMode(); r=jwwang
Make HTMLMediaElement no longer has logic of deciding visibility, it just passes all information into MediaDecoder.

MozReview-Commit-ID: ApVcEQfboO

--HG--
extra : rebase_source : 88c70b0cf1933d9cf814359909463a811be2ab9f
extra : source : 669d1340d3c93d3e0eab55ce87693f842cf40247
2017-03-11 19:56:17 +08:00
Kaku Kuo
fbcb4f2d6f Bug 1346498 part 8 - extract the HTMLMediaElement::NotifyDecoderActivityChanges() method; r=jwwang
Move all the policy rules into this method now, will then move the policies into MediaDecoder at next patch.

MozReview-Commit-ID: ILAYLrTwCJy

--HG--
extra : rebase_source : 8ae3adcbbd8f2fd61f0da0de437f41f78d945c89
extra : source : feb8ad754e86b43e15bf2eeb3a2ba2dc24a00599
2017-03-11 18:25:41 +08:00
Kaku Kuo
541a442e39 Bug 1346498 part 7 - remove outdated comments in HTMLMediaElement.cpp; r=jwwang
MDSM's dormant mechanism has nothing to do with the HTMLMediaElement's states now.

MozReview-Commit-ID: 4RSHsexy7fi

--HG--
extra : rebase_source : cb84fda2c182c63c6276b143ce071afc01c694d8
extra : source : af0217686959affe143167487588faab137212ce
2017-03-11 16:33:50 +08:00
Kaku Kuo
2f5609af1a Bug 1345403 part 3 - Test element becomes tainted by DrawImage; r=jwwang,smaug
MozReview-Commit-ID: 9Txz4FbFtPe

--HG--
extra : rebase_source : eab599fdcbafa2fef60cc9951863727d8cc9c265
extra : intermediate-source : edc821a13b41fdfdae851e5fe2a8784795f248d9
extra : source : f540afdef527d1beb10a29c235f2e3b5637fc814
2017-03-08 20:22:05 +08:00
Kaku Kuo
93f2cee949 Bug 1345403 part 2 - Mark element tainted when DrawImage is used; r=jwwang,mattwoodrow
Mark video element as tainted (stored on the decoder owned by video element) when the video is used as source to drawImage() on canvas.

MozReview-Commit-ID: HdciVwhqPu3

--HG--
extra : rebase_source : 79e1bbdc671abb8555d68f7fb6106929c45fd528
extra : intermediate-source : 47fbcedbed69a5434b1cb25b8f72f862e9cefeac
extra : source : 149234329b62015dfd2e954030c23bf9c6b1d55e
2017-03-08 19:41:08 +08:00
Iris Hsiao
bdff9504ef Backed out 5 changesets (bug 1345403) for permanent failure in autophone Mdm tests
Backed out changeset f6415ae0ba89 (bug 1345403)
Backed out changeset ac12e246a808 (bug 1345403)
Backed out changeset a3e4ce12194f (bug 1345403)
Backed out changeset ba072186c917 (bug 1345403)
Backed out changeset 7a7d6e9b8329 (bug 1345403)
2017-03-13 15:28:14 +08:00
Kaku Kuo
0759051af2 Bug 1345403 part 3 - Test element becomes tainted by DrawImage; r=jwwang,smaug
MozReview-Commit-ID: 9Txz4FbFtPe

--HG--
extra : rebase_source : 904462698bdcdd89dad05ab1631910ea3b9bf5d2
extra : source : f540afdef527d1beb10a29c235f2e3b5637fc814
2017-03-08 20:22:05 +08:00
Kaku Kuo
fe566c1222 Bug 1345403 part 2 - Mark element tainted when DrawImage is used; r=jwwang,mattwoodrow
Mark video element as tainted (stored on the decoder owned by video element) when the video is used as source to drawImage() on canvas.

MozReview-Commit-ID: HdciVwhqPu3

--HG--
extra : rebase_source : b26c257afaaabdd6346a5421988d95e82281d7ef
extra : source : 149234329b62015dfd2e954030c23bf9c6b1d55e
2017-03-08 19:41:08 +08:00
Michael Layzell
befc7b0924 Bug 1331434 - Part 9: Return after ErrorResult::Throw in /dom, r=ehsan
MozReview-Commit-ID: CWjx4L8LTr9
2017-03-07 19:06:48 -05:00
Wei-Cheng Pan
510ba75c20 Bug 1310127 - Part 17: Use MOZ_MUST_USE in netwerk/protocol/http r=smaug
MozReview-Commit-ID: 5gvVZtsa3yS

--HG--
extra : rebase_source : 5e1ab2fc06ae58f18abb8909ac93f9512abbe220
2016-12-20 11:49:32 +08:00
David Major
ed0b8f8653 Bug 1344615: Remove nsXPCOMStrings.{h,cpp} r=bsmedberg
These are now dead code.

MozReview-Commit-ID: AClU0Qx3kmN

--HG--
extra : rebase_source : df83cf89292da1519bb26027c11e14923d5c54a0
2017-03-06 17:52:54 +13:00
Carsten "Tomcat" Book
d0bd960945 merge mozilla-inbound to mozilla-central a=merge 2017-03-06 10:53:27 +01:00
Alastor Wu
f973d1e5cf Bug 1343465 - part1 : check audio track to decide the audible state when the media element was muted. r=baku
If the media starts after muting the tab, IsOwnerAudible() would always return
"eNotAudible". It causes that the "play tab" icon can't be displayed because we
only show the "play tab" icon for the "eMaybeAudible" or "eAudible".

We should check whether owner owns the audio track to decide the return value.

MozReview-Commit-ID: DGwkArx0a4R

--HG--
extra : rebase_source : 920968acc744593f4ef383be4068352233c74101
2017-03-04 16:51:12 +08:00
Alastor Wu
77053f1035 Bug 1338137 - part1 : ref media content when the media element bind to tree. r=baku
In bug1319771, we found that the tab would become visible unexpectly in short
period in some situations. We don't want to resume the tab in this kind of
situation, so we check whether there is any alive media component in the tab
using IsServiceStarted(). However, since we have lots different ways to create
the service, this function is not accurate at all.

Therefore, we can add media element directly to the document when it binds to
tree so that we can really know whether there is any alive media component.

MozReview-Commit-ID: FvZFg91IqgE

--HG--
extra : rebase_source : 43c2460f6e9a39d44bf2ca1638c992a0e27b196c
2017-03-04 01:14:24 +08:00
karo
3c2b014e09 Bug 1343409 - HTMLMediaElement::MozRequestDebugInfo returns EMEInfo. r=cpearce
MozReview-Commit-ID: 1iQP3OJmwdP

--HG--
extra : rebase_source : 171155ab5e58cac8cc9db9109a5c2fc88b1930d3
2017-03-01 12:56:29 +13:00
Patrick McManus
0a3349e548 Bug 1344374 - remove now-meaningless nsIRequest::INHIBIT_PIPELINE r=hurley 2017-03-03 16:46:53 -05:00
Gerald Squelart
418963d5c8 Bug 1343161 - MediaDecoderOwner::DecodeWarning and HTMLMediaElement implementation - r=jya
Similar to DecodeError, except we allow decoding to continue.

MozReview-Commit-ID: FN9m03o6GXV

--HG--
extra : rebase_source : a6ca0cc28d2990ab143676758cd880baaca7bcb7
2017-02-27 12:12:37 +11:00
Gerald Squelart
bfa6625f32 Bug 1343161 - StoreDecodeError from HTMLMediaElement::DecodeError - r=jya
MozReview-Commit-ID: 8Q66JScrrxS

--HG--
extra : rebase_source : d2c6703fde49e65bcacd775c4a0098e5724cf80a
2017-02-21 14:02:11 +11:00
Alastor Wu
674bf43368 Bug 1339230 - part2 : should be non-audible when media is suspended. r=baku
MozReview-Commit-ID: GtktbXEpuUU

--HG--
extra : rebase_source : 0085f2551767dc894e10897b98c23c72b63dc197
2017-02-24 17:15:22 +08:00
Alastor Wu
ea63f2e354 Bug 1192818 - part4 : only mute media element if there is alive track. r=jwwang
If we don't have any alive track in MediaTrackList, we don't need to mute
MediaElement.

MozReview-Commit-ID: 9vY692O7N0e

--HG--
extra : rebase_source : 3abd2fb360385b1975dbffd9dcaf4e395b1afda1
2017-02-23 14:16:44 +08:00
Alastor Wu
c268fbdbaf Bug 1192818 - part1 : dispatch DOMAudioPlaybackStopped when mute the tab. r=baku
The root cause of the intermittent fail is because "DOMAudioPlaybackStopped" has no directly relationship with browser.mute()/unmute().

In [1], the "DOMAudioPlaybackStopped" is caused by audio stop playing, not by calling the browser.mute(). If the audio stops playing before calling the wait_for_event(), the test would be time-out. I guess the bug 1302280 is also caused by same reason.

So this patch would do two thinngs,
1. dispatch "DOMAudioPlaybackStopped" when we mute tab
2. loop the audio in test file, to make sure the "DOMAudioPlaybackStopped" is
   dispatched when muting the audio, not the file ended.
[1] https://goo.gl/ymUv8P

MozReview-Commit-ID: 5RnyBRE73lQ

--HG--
extra : rebase_source : 40ad97cbf84da6f5d013d832cb12e3ed88473dfd
2017-02-23 14:15:45 +08:00
Sebastian Hengst
2fc30f09d3 Backed out changeset 38fa2ec33fa4 (bug 1192818) for frequently failing test_noAudioNotificationOnVolume0Element.html on Android 4.3 debug. r=backout 2017-02-21 19:30:26 +01:00
bechen
2f4c6ee015 Bug 1334112 - part2: When changing the readyState to HAVE_FUTURE_DATA and HAVE_ENOUGH_DATA, the texttracks must be loaded. r=jwwang
MozReview-Commit-ID: I7oA3TleAFo

--HG--
extra : rebase_source : 4a77aa7d6e8cfd366327dd10a03ad5c228c925c0
2017-02-21 15:44:00 +08:00
Alastor Wu
c5d7911229 Bug 1192818 - part1 : dispatch DOMAudioPlaybackStopped when mute the tab. r=baku
The root cause of the intermittent fail is because "DOMAudioPlaybackStopped" has no directly relationship with browser.mute()/unmute().

In [1], the "DOMAudioPlaybackStopped" is caused by audio stop playing, not by calling the browser.mute(). If the audio stops playing before calling the wait_for_event(), the test would be time-out. I guess the bug 1302280 is also caused by same reason.

So this patch would do two thinngs,
1. dispatch "DOMAudioPlaybackStopped" when we mute tab
2. loop the audio in test file, to make sure the "DOMAudioPlaybackStopped" is
   dispatched when muting the audio, not the file ended.
[1] https://goo.gl/ymUv8P

MozReview-Commit-ID: 703JHj9dICT

--HG--
extra : rebase_source : ad2985bd14d6a9b91a73c0d4103aa51c4981124c
2017-02-21 18:41:09 +08:00
Tom Tromey
5f8f360823 Bug 1060419 - make log_print use Printf.h, r=froydnj
MozReview-Commit-ID: BIZ1GQEZ1vs

--HG--
extra : rebase_source : 2f1f0aa12493c44f352d9a7e8683e7bb72d2d75b
2016-12-15 20:16:31 -07:00
karo
6dfa1efcd2 Bug 1339961 - Check for 'debugger' privilege when accessing HTMLMediaElement.mozMediaSourceObject, mozDebugReaderData, mozRequestDebugInfo(). r=kentuckyfriedtakahe,smaug
MozReview-Commit-ID: 5Rhc0Ukn1W4

--HG--
extra : rebase_source : 7bade668984bbf917d82bcb41e42e0d3ca18bc09
2017-02-10 08:54:12 +13:00
Chris Pearce
1f1b7e1168 Bug 1338032 - Report VP9 in MP4 not supported in HTMLMediaElement.canPlayType, but supported in MediaSource.isTypeSupported(). r=gerald
We don't have an MP4 demuxer that can handle VP9 in non-fragmented MP4.  Jay's
change to DecoderTraits in Bug 1339204 will make MediaSource.isTypeSupported()
report that it can play VP9 in MP4. But we don't want to report that we can
play VP9 in MP4 in HTMLMediaElement.canPlayType(), as usually canPlayType() is
used with the intention to check for whether fragmented MP4 can be played. So
we need to special case canPlayType() so that it reports that it can't play
VP9 in MP4.

The upcoming Rust demuxer will be able to support VP9 in MP4, so once we've
enabled that, we can confidently report in canPlayType that we support VP9 in
MP4.

MozReview-Commit-ID: G0q5ho5N2wr

--HG--
extra : rebase_source : cd7a18ff3080b2c9bca90b6935b03bfa2c8d780f
2017-02-15 13:37:01 +13:00
Andrea Marchesini
bd4af63b7f Bug 1338538 - Remove AutoNoJSAPI in HTMLMediaElement, r=alwu 2017-02-13 15:40:28 +01:00
Kaku Kuo
e0d4ae1189 Bug 1337301 part 2 - modify the MarkAsContentSource() API; r=gerald
MozReview-Commit-ID: 7hgZZUEvDEK

--HG--
extra : rebase_source : 64f96a5043a921312fbde0cf93b793e5fba6c3dc
2017-02-07 18:20:47 +08:00
JW Wang
dc7d9fc978 Bug 1333289. Part 2 - retrieve debugging data from MediaDecoder/MDSM. r=jya
MozReview-Commit-ID: F4AxZFBPVPB

--HG--
extra : rebase_source : 2f70995597808332749332de8a2b27046b2a702e
extra : source : 66b5a72457bf49b0be90397abfc5bd8c4fe9f828
2017-01-24 10:49:37 +08:00
JW Wang
c6bbdcd459 Bug 1333289. Part 1 - add a function to the webidl to retrieve debugging data in an asynchronous way. r=bz
MozReview-Commit-ID: AXTpOYaq56A

--HG--
extra : rebase_source : 7a04919aa07c71f42e26d35f81b055dea2ed19f2
extra : intermediate-source : 0ddcc9dc7ba1952a06e2b48593e8b16378847b69
extra : source : 7c1de996eaa5989359debd34b4ec1a5af37f9ee7
2017-01-18 16:14:57 +08:00
JW Wang
9b0debfda1 Bug 1333576 - Ensure Shutdown() is called before releasing the decoder. r=gerald
MozReview-Commit-ID: CBEOgh5v90L
2017-01-25 10:49:29 +08:00
Bill McCloskey
a1715e6737 Bug 1331804 - New naming scheme for runnables (r=ehsan)
MozReview-Commit-ID: FOfrUXwGYws
2017-01-24 16:34:37 -08:00
Wes Kocher
f7ccafcb58 Backed out 8 changesets (bug 1331804, bug 1332100) for windows vm debug dt5 failures a=backout
Backed out changeset 8bf7f0e27c6c (bug 1331804)
Backed out changeset 600c0b9026c2 (bug 1331804)
Backed out changeset 3a5b5b9ecace (bug 1331804)
Backed out changeset c76432c9954e (bug 1331804)
Backed out changeset 46a9096745e7 (bug 1332100)
Backed out changeset 8b751230fa23 (bug 1331804)
Backed out changeset 2810212347fd (bug 1331804)
Backed out changeset be72b7763910 (bug 1331804)

MozReview-Commit-ID: Ywdsr4GZ4a
2017-01-24 15:12:21 -08:00
Bill McCloskey
187dedfae8 Bug 1331804 - New naming scheme for runnables (r=ehsan)
MozReview-Commit-ID: FOfrUXwGYws
2017-01-24 10:04:55 -08:00
Carsten "Tomcat" Book
e12cc94275 merge mozilla-inbound to mozilla-central a=merge 2017-01-23 11:15:58 +01:00
Alastor Wu
07ed0954e6 Bug 1322505 - part2 : reset suspend type for blocked media after calling media.pause(). r=baku
If the blocked media is paused before resuming it, we should not resume it again
after the tab is visible. The way to achieve that is to unregister the agent so
AudioChannelService can't resume that media because we have disconnected their
relationship.

MozReview-Commit-ID: 6Dq4K9hVsU0

--HG--
extra : rebase_source : 740f38a63ad02852fe914a781d09ff9e45eb5cea
2017-01-23 10:52:06 +08:00
Alastor Wu
6968ad68af Bug 1322505 - part1 : rename audio channel wrapper's function. r=baku
Rename function and modify the comment.

MozReview-Commit-ID: F5JTmPvH7GC

--HG--
extra : rebase_source : 7e0841809d5f338c071e9e7d56d9a7c3d4c7169f
2017-01-23 10:52:04 +08:00
Bevis Tseng
72d516ef01 Bug 1314833 - Part 2.2: Use AbstractThread::CreateDirectTaskDrainer() to Drain Direct Tasks Dispatched to MediaStreamGraph. f=rjesup,r=padenot,jwwang
MozReview-Commit-ID: 1KgE3uKu4CG

--HG--
extra : rebase_source : 2ad950afe84675fb9bc4c449e53e7c0d52270175
2016-12-07 22:00:12 -10:00
Bevis Tseng
f2bdbd8fd1 Bug 1314833 - Part 2.1: Factor out AbstractThread::MainThread() used in Media Playback. r=billm,jwwang
MozReview-Commit-ID: 9yJi3iDtVZG

--HG--
extra : rebase_source : 39c720ccc576ed9247b5e8abb70d99d7873b3ad6
2016-11-29 13:03:36 +08:00
Phil Ringnalda
f10b4dc62e Backed out 4 changesets (bug 1322505) for frequent timeouts in browser_block_autoplay_media_pausedAfterPlay.js
Backed out changeset dad8acbe41e9 (bug 1322505)
Backed out changeset 861f01ee0e6e (bug 1322505)
Backed out changeset ddf90342d71d (bug 1322505)
Backed out changeset 049ab1a92da6 (bug 1322505)
2017-01-19 21:57:46 -08:00
Alastor Wu
81e53a452c Bug 1322505 - part2 : reset suspend type for blocked media after calling media.pause(). r=baku
If the blocked media is paused before resuming it, we should not resume it again
after the tab is visible. The way to achieve that is to unregister the agent so
AudioChannelService can't resume that media because we have disconnected their
relationship.

MozReview-Commit-ID: 6Dq4K9hVsU0

--HG--
extra : rebase_source : 1a1f17e09e5ab85e18b4bce9d009ab51ccaa7aab
2017-01-20 11:30:03 +08:00
Alastor Wu
13dcc2d20e Bug 1322505 - part1 : rename audio channel wrapper's function. r=baku
Rename function and modify the comment.

MozReview-Commit-ID: F5JTmPvH7GC

--HG--
extra : rebase_source : 0195f5b52cc6b101eb8b6551f65128cd6d70252f
2017-01-20 11:29:51 +08:00
JW Wang
992114f5fd Bug 1332160 - use nsCString internally whenever possible. r=gerald
MozReview-Commit-ID: 1DUaJWfbL88

--HG--
extra : rebase_source : f4a02736b0385e4be6258a185822f7855d0b0189
extra : intermediate-source : 1faaf4254a2e1ce2c096a8650b66d07c84c7fdbe
extra : source : c23fc2cea382627af8ff20ae3edea926eaa6d51a
2017-01-18 16:51:31 +08:00
Gerald Squelart
5745998021 Bug 1331770 - Rename 'MediaContentType' to 'MediaContainerType' - r=jya
MozReview-Commit-ID: F0BWai8vPyo

--HG--
rename : dom/media/MediaContentType.cpp => dom/media/MediaContainerType.cpp
rename : dom/media/MediaContentType.h => dom/media/MediaContainerType.h
extra : rebase_source : 640ada96750b4496055087e80ae3f600c9df31c9
2017-01-18 11:59:03 +11:00
Chris Pearce
5b7a58a56b Bug 1329543 - Remove IsPrimetimeKeySystem(string) from Gecko. r=gerald
MozReview-Commit-ID: LX1ywPZDHtj

--HG--
extra : rebase_source : 8f2181b426159d7f58e9452ad3b0f4ae474388b2
2017-01-09 21:51:40 +08:00
Gerald Squelart
cd181bc396 Bug 1329561 - MediaContentType is always valid - r=jya
MediaContentType can only be created through MakeMediaContentType(), which
returns a Maybe<MediaContentType>.
If the return value is Nothing, parsing failed.
Otherwise the contained MediaContentType object is guaranteed to be valid;
E.g., GetMIMEType() will always return a non-empty string.

Note that this interface will change a lot in the following bugs&patches, so
please don't worry about the 'Get' in the never-failing GetMIMEType(), it will
be gone soon!

MozReview-Commit-ID: IjGKkQ6RVd4

--HG--
extra : rebase_source : 5254af80dec0beb05da49f68c12fecc28edd725e
2016-12-01 12:56:11 +11:00
Kilik Kuo
2873d75a62 Bug 1316573 - Reset the information in EncryptionInfo to make MediaElement reusable from encrypted content to plain content. r=jya
MozReview-Commit-ID: 4OU0sb2OSzi

--HG--
extra : rebase_source : c18f76229bc2cfde79dc114ff5bc892a973a1ae2
2017-01-12 11:33:55 +08:00
Andreas Pehrson
974dfed8db Bug 1329075 - Avoid an infinite event loop spin. r=jesup
Because we add tracks to the output streams async, it's possible to switch the
mSrcStream of a media element and *then* get a notification of an added track,
when this track originated from the old mSrcStream.
If the new mSrcStream is an output stream of the media element, this would
again add a new track async, which on the next event loop spin would show up
on mSrcStream, and the loop continues.

MozReview-Commit-ID: HmKgXLYmubh

--HG--
extra : rebase_source : 242f864e79b0b2335719a07fe9ee4b8b940d85dc
2017-01-09 19:10:48 +01:00
Andreas Pehrson
4fab9749c7 Bug 1329075 - Add asserts to StreamCaptureTrackSource for sanity. r=jesup
MozReview-Commit-ID: EeSKM4JHWGv

--HG--
extra : rebase_source : dd7f923d633dc80d6c72a97eb6aa47fe51a30f43
2017-01-09 17:02:13 +01:00
Andreas Pehrson
03beb7fb5e Bug 1329075 - Fix potential null deref issues in media element track sources. r=jesup
MozReview-Commit-ID: ExUh2magc2z

--HG--
extra : rebase_source : 9377109b8b5881d3cc122bc0c1447019dce5e069
2017-01-09 17:00:43 +01:00
Andreas Pehrson
13c708b237 Bug 1329075 - Fix assertion failure in debug build. r=jesup
With the attached test case I was failing an assert in a debug build because
NotifyMediaTrackEnabled exited early due to `mReadyState == HAVE_NOTHING` but
NotifyMediaTrackDisabled didn't. The latter would fail an assert.

MozReview-Commit-ID: 7Frpj62s0Bc

--HG--
extra : rebase_source : a1dea4f2db564fe28e6eb7f7fcd9c382a46409ac
2017-01-09 16:36:00 +01:00
Gerald Squelart
5d4cad020a Bug 1320785 - Remove obsolete 'ns' from 'StorensRefPtrPassByPtr' - r=froydnj
MozReview-Commit-ID: FuhlsLVFdLi

--HG--
extra : rebase_source : c1bb8330c4ca0dbf15a68a4dbd0dfeff615163be
2017-01-09 07:55:19 +11:00
Kaku Kuo
e3f3f93c62 Bug 1299096 - Remove the event-based play() method out from nsIDOMHTMLMediaElement.idl; r=bz
MozReview-Commit-ID: 3pHsSsADPLu

--HG--
extra : rebase_source : 9e3620c4565118f0c4f016b0bbe75ec046928718
2016-12-13 16:04:45 +08:00
Cameron McCormack
babad063ff Bug 1328832 - Part 2: Rename mozFlushType to mozilla::FlushType and make it an enum class. r=bzbarsky
MozReview-Commit-ID: D3fIngSHSsl
2017-01-05 15:31:56 +08:00
ctai
dea6f82442 Bug 1325053 - Remove media attribute code and set the currentSrc attribute to urlString after type checking in HTMLMediaElement. r=jwwang
According to current WhatWG HTML spec, the checking of media attribute in SourceElement is removed. Fix the Gecko code to reflect current spec.

MozReview-Commit-ID: 43d9zL9Fvih

--HG--
extra : rebase_source : beb87387cb1d55eb42713fbb0d344c0c64a0b6da
2016-12-21 20:42:48 +08:00
ctai
3ce829affc Bug 1323369 - Make HTMLMediaElement::UnbindFromTree to follow WhatWG HTML spec. r=jwwang
W3C HTML5 spec isn't very actively maintained now. WhatWG HTML spec:
When a media element is removed from a Document, the user agent must run the following steps:
Below is the related statement in WhatWG HTML spec:
Await a stable state, allowing the task that removed the media element from the Document to continue. The synchronous section consists of all the remaining steps of this algorithm. (Steps in the synchronous section are marked with .)
 If the media element is in a document, abort these steps.
 Run the internal pause steps for the media element.

MozReview-Commit-ID: H4EgPqj2YxD

--HG--
extra : rebase_source : 2c15adaaadd955662797dcf1c5158927f16bab97
2016-12-13 15:34:14 +08:00
ctai
3a16a07779 Bug 1222980 - Dispatch |QueueLoadFromSourceTask| to main thread. And end the synchronous section and asynchronously await a stable state when the src is not set. r=jwwang.
Dispatch |QueueLoadFromSourceTask| to main thread to make sure the task will be executed later than loadstart event. And when the src get errors, we need to end the synchronous section.

MozReview-Commit-ID: EQ0jVIMnqoZ

--HG--
extra : rebase_source : 876c62669f56581e903830beddbf0ce4435366e2
2016-12-13 15:45:59 +08:00
Jean-Yves Avenard
5203c55c49 Bug 1319992: P5. Don't attempt to estimate readyState when ended. r=jwwang
Buffered range is now calculated asynchronously. It may not be up to date by the time the MDSM has entered ended mode.
There's no point estimating readyState in ended mode anyway: we know what it is...

MozReview-Commit-ID: ErGsAwBzeXI

--HG--
extra : rebase_source : db3bde99b21f5b4377ce88509979f1499b1cd677
2016-12-14 17:35:36 +11:00
Sebastian Hengst
088b219e17 Backed out changeset 48b968826893 (bug 1319992) 2016-12-19 12:38:23 +01:00
Jean-Yves Avenard
e60f4efb30 Bug 1319992: P5. Don't attempt to estimate readyState when ended. r=jwwang
Buffered range is now calculated asynchronously. It may not be up to date by the time the MDSM has entered ended mode.
There's no point estimating readyState in ended mode anyway: we know what it is...

MozReview-Commit-ID: ErGsAwBzeXI

--HG--
extra : rebase_source : 5c57cdfab9f64a20ac1f8c5c49f36918b7f4485c
2016-12-14 17:35:36 +11:00
Carsten "Tomcat" Book
8ac85b373f Backed out changeset f982627067f7 (bug 1319992) 2016-12-16 12:41:05 +01:00
Jean-Yves Avenard
d2f0d0608b Bug 1319992: P5. Don't attempt to estimate readyState when ended. r=jwwang
Buffered range is now calculated asynchronously. It may not be up to date by the time the MDSM has entered ended mode.
There's no point estimating readyState in ended mode anyway: we know what it is...

MozReview-Commit-ID: ErGsAwBzeXI

--HG--
extra : rebase_source : bd8cecca96e93114e970e09faf09a80f56bf4c98
2016-12-14 17:35:36 +11:00
Carsten "Tomcat" Book
ed17e5f439 Backed out changeset e30080454885 (bug 1222980) 2016-12-15 17:13:46 +01:00
Carsten "Tomcat" Book
ced1610284 Backed out changeset 6bf4393db489 (bug 1323369) for causing memory leaks on a CLOSED TREE 2016-12-15 17:11:02 +01:00
ctai
673b533118 Bug 1323369 - Make HTMLMediaElement::UnbindFromTree to follow WhatWG HTML spec. r=jwwang
W3C HTML5 spec isn't very actively maintained now. WhatWG HTML spec:
When a media element is removed from a Document, the user agent must run the following steps:
Below is the related statement in WhatWG HTML spec:
Await a stable state, allowing the task that removed the media element from the Document to continue. The synchronous section consists of all the remaining steps of this algorithm. (Steps in the synchronous section are marked with .)
 If the media element is in a document, abort these steps.
 Run the internal pause steps for the media element.

MozReview-Commit-ID: H4EgPqj2YxD

--HG--
extra : rebase_source : 4f875b7cbd0ead4cf0d8ce191a3ba32fb6f6395b
2016-12-13 15:34:14 +08:00
ctai
d44c8978b2 Bug 1222980 - Dispatch |QueueLoadFromSourceTask| to main thread. And end the synchronous section and asynchronously await a stable state when the src is not set. r=jwwang.
Dispatch |QueueLoadFromSourceTask| to main thread to make sure the task will be executed later than loadstart event. And when the src get errors, we need to end the synchronous section.

MozReview-Commit-ID: EQ0jVIMnqoZ

--HG--
extra : rebase_source : 6651826ad8de361deda5bdc0a49b2c68dcf86220
2016-12-13 15:45:59 +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
Kaku Kuo
f3b6c19f63 Bug 1244768 part 9 - modify the play() method; r=alwu,bz,jwwang
4.8.12.8
https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play

MozReview-Commit-ID: 5r4xOIQwOEr

--HG--
extra : rebase_source : a603e8865b8873a31fafdc7004d01bc2cd840d2c
2016-12-01 14:54:33 +08:00
Kaku Kuo
daf1b64ef4 Bug 1244768 part 8 - extract the HTMLMediaElement::CreateDOMPromise() utility; r=jwwang
MozReview-Commit-ID: 28NopfA8lgV

--HG--
extra : rebase_source : d1ff22945e40a3df99319fe6e712494906163551
extra : intermediate-source : b409ef682a189ffa0bbb79e84fa0b6bca84f145b
extra : source : 7b00c027ee6e7b85dcc65bb4e304f048aa85a944
2016-08-08 16:53:20 +08:00
Kaku Kuo
89e7d04f16 Bug 1244768 part 7 - refactor the Play() and PlayInternal() methods; r=jwwang
MozReview-Commit-ID: CP00vERdWMv

--HG--
extra : rebase_source : 87a269a7183ad73b703aad6e3e873df7d79e4c62
extra : intermediate-source : 339778ed6f0b202d03b87436845fe0046e1ccc2c
extra : source : 3c3d972cd4a09ca6e3ec1ef60fdf679023229208
2016-08-08 14:52:00 +08:00
Kaku Kuo
a68e2e663c Bug 1244768 part 6 - modify the internal pause steps; r=jwwang
4.8.12.8
https://html.spec.whatwg.org/multipage/embedded-content.html#internal-pause-steps

MozReview-Commit-ID: Dt0VVbXLrhw

--HG--
extra : rebase_source : 1ed05897e67cd96de544e7f53c5f9ad1223aa27b
extra : intermediate-source : f6772d737e12b27f049e5d6235ecbbfbfc22f283
extra : source : 8e299b404ff6924f81e3bd3b0afdbe44a8dc957b
2016-08-18 20:05:13 +08:00
Kaku Kuo
599fed6bd5 Bug 1244768 part 5 - reject pending play promises while the playback reaching the end; r=jwwang
4.8.12.8
https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-ended

MozReview-Commit-ID: H7Tw0XGzpW0

--HG--
extra : rebase_source : 409c1bb62baf1dbffff4d22c8d0494dc8a41147e
extra : intermediate-source : b5347204487023cdee9c04ef735addafa2124887
extra : source : f89758cbd1109ab92db1a644caa7c450a45757c0
2016-08-19 11:52:04 +08:00
Kaku Kuo
85f1c5b29d Bug 1244768 part 4 - call NotifyAboutPlaying() while ready state is changed; r=jwwang
4.8.12.7
https://html.spec.whatwg.org/multipage/embedded-content.html#ready-states

MozReview-Commit-ID: 1RUIU6Rw2SF

--HG--
extra : rebase_source : 81cb3107414d30d487e386519670e0f1864e3a6a
extra : intermediate-source : 4f51bbd1f1d68a6fa18f1502712a168171ba64ce
extra : source : 5c2b8029b3be04c739fca36b3e617c9996928a69
2016-08-05 16:42:31 +08:00
Kaku Kuo
bfa7d7c710 Bug 1244768 part 3 - modify the resource selection algorithm; r=jwwang
4.8.12.5
https://html.spec.whatwg.org/multipage/embedded-content.html#concept-media-load-algorithm
https://html.spec.whatwg.org/multipage/embedded-content.html#dedicated-media-source-failure-steps

MozReview-Commit-ID: DKFQC4v92Vi

--HG--
extra : rebase_source : ad5d4e782ce0af9879242d1c2830cf7c4461faac
extra : intermediate-source : e823b33657216c0ae0bf082c2d0820e9b6258eec
extra : source : 649a119bf21c1cd89d0d147604892147ab6692fc
2016-08-18 20:04:27 +08:00
Kaku Kuo
210ff4354f Bug 1244768 part 2 - modify media element load algorith; r=jwwang
4.8.12.5
https://html.spec.whatwg.org/multipage/embedded-content.html#media-element-load-algorithim

The living WHATWG spec has been changed since I implemented this patch.
Will update to the latest spec later.

MozReview-Commit-ID: 7U1AC2Ua83Z

--HG--
extra : rebase_source : d4b7c5103b29271cfdde5d180d7e7c8a65d89b2f
extra : intermediate-source : 616bc473295c8673e3cfae726b8a19c64b2906f1
extra : source : 69d8b411ee5f85139f3f40ce4bc7a4d7ad018b8d
2016-08-18 20:03:48 +08:00
Kaku Kuo
3cc7546ff4 Bug 1244768 part 1 - implement utilities which are the foundation of promise-based play operation; r=jwwang
In this patch, the following utilities are implemented:
(1) A list to keep pending promises of a HTMLMediaElement.
(2) A method to take pending promises out from the HTMLMediaElement.
(3) A global function to resolve the passed promises.
(4) A global function to reject the passed promises with an error code.
(5) A method to asynchronously resolve all pending promises of a HTMLMediaElement.
(6) A method to asynchronously reject all pending promises of a HTMLMediaElement.
(7) A method to dispatch a 'playing' event and resolve all the pending play promises.

All the above functionalities are defined at WHATWG 4.8.12.8:
https://html.spec.whatwg.org/multipage/embedded-content.html#list-of-pending-play-promises

This patch also implements two MediaEvent classes, nsResolveOrRejectPendingPlayPromisesRunner and nsNotifyAboutPlayingRunner, which help (5), (6) and (7).

This patch also implements a list of already-dispatched nsResolveOrRejectPendingPlayPromisesRunner; we keep tracing these tasks because the load algorithm resolves/rejects all already-dispatched pending play promises (in patch 2).

MozReview-Commit-ID: EUirNqDfttk

--HG--
extra : rebase_source : e48196e77341926900747b3f9477c5ee9ed28f62
extra : intermediate-source : 9b349c0e9eedad8822a1b8e8ef375ac6cb0b635a
extra : source : 75ee3b084edb68709503c98ad7b72850af7bb9c8
2016-12-08 14:34:39 -10:00
JW Wang
a7e9648832 Bug 1322087. Part 2 - move readyState to HAVE_ENOUGH_DATA when we have no more data to fetch. r=cpearce
http://searchfox.org/mozilla-central/rev/dc8cf05768b83a6ef0b4039edd6efddd56ee4109/dom/media/MediaDecoderStateMachine.cpp#1065
Changing nextFrameStatus to UNAVAILABLE might change readyState to HAVE_CURRENT_DATA and cause 'waiting' to fire.
It doesn't make sense to fire 'waiting' at the end of playback.

http://searchfox.org/mozilla-central/rev/dc8cf05768b83a6ef0b4039edd6efddd56ee4109/dom/html/HTMLMediaElement.cpp#5423
Note the check for Ended() doesn't work as expected to prevent 'waiting' from firing at the end of playback
because of the way how TailDispatcher schedules stateChange tasks.

This patch keeps readyState in HAVE_ENOUGH_DATA when playback is near the end for wanting no more data.
readyState will change to HAVE_CURRENT_DATA when the playing state of MediaDecoder is changed to PLAY_STATE_ENDED.

MozReview-Commit-ID: 6EspaD2hhx

--HG--
extra : rebase_source : 345aad2757d684e24863ae2daf506b035955efe7
extra : source : 56736efbab04a5c2d66faf2514bac93acf4c79f7
2016-12-07 10:41:33 -10:00
JW Wang
8e49c2b21d Bug 1322087. Part 1 - move |if (!mFirstFrameLoaded)| up to save some duplicate checks. r=cpearce
MozReview-Commit-ID: 77duxxtEAQP

--HG--
extra : rebase_source : 19810302dff31bdc02f12d79d1518ad9793fabc0
extra : source : bd86f44a0c38b8d60fafd8bdb26bdb786662c90f
2016-12-06 15:54:51 -10:00
Kaku Kuo
36f4bc694f Bug 1321497 - correct the logic of resuming from AudioChannel; r=alwu,jwwang
MozReview-Commit-ID: JxeqdzADlrU

--HG--
extra : rebase_source : 0263f14e4cdf482150af2a1697c201cedbe5ddcb
2016-12-01 16:30:18 +08:00
Alastor Wu
24c6192cfe Bug 1321410 - stop agent after cycle collection. r=jwwang
The crash reason seems the mOwner has been released, so we shouldn't call any method which would call mOwner.
The AudioChannelAgentCallback could only be called from two parts, one is from mOwner, another is from AudioChannelService (via AudioChannelAgent).
We don't want this class be called after mOwner was released, we should disconnect it from AudioChannelService.
Calling NotifyStoppedPlaying() can unregister agent from service, so service won't call agent anymore.
Therefore, no one would call AudioChannelAgentCallback after CC happened.

MozReview-Commit-ID: 7HY4KpciacB

--HG--
extra : rebase_source : 228c4988cd5aaae7b8b5c10463eb8445a8771d62
2016-12-04 11:02:10 +08:00
Bill McCloskey
2336b52695 Bug 1318506 - Label some common runnables with a DocGroup (r=ehsan)
MozReview-Commit-ID: 19gyZRfbzXP
2016-12-01 15:00:13 -08:00
Kaku Kuo
16e7762061 Bug 1321196 part 2 - rework the IsAllowedToPlay policy; r=alwu,jwwang
MozReview-Commit-ID: 8mrXoLRK42y

--HG--
extra : rebase_source : 1198c795e10476a696cf1a7046dd1d48dea7e44b
2016-11-30 16:01:36 +08:00
Kaku Kuo
e0595cae1a Bug 1321196 part 1 - typo correction; r=alwu
MozReview-Commit-ID: 4EodGXfjb8i

--HG--
extra : rebase_source : 76fd88aed1f46efd3dc5b7086f11ba7bddd2abac
2016-11-30 14:43:41 +08:00
ctai
32abedf65d Bug 1133483 - Dispatch |NoSupportedMediaSourceError| to main thread in |SelectResource|. r=jwwang
We need to end the synchronous section when the src attribute is empty and then run the "failed with elements step" in non-sync section.

MozReview-Commit-ID: DJ7GYqa6aI5

--HG--
extra : rebase_source : 41f4312408a62497a52e301cfacc2ac209e89bd4
2016-11-18 11:04:36 +08:00
Alastor Wu
3e46cb5b86 Bug 1309162 - part7 : wrap custom policy function. r=jwwang
MozReview-Commit-ID: EdjzMi90ukx

--HG--
extra : rebase_source : c9b3d9a55031fbf2421276cc9b16928af9b164a8
2016-11-29 12:40:47 +08:00
Alastor Wu
448b9c9c09 Bug 1309162 - part6 : remove useless comment. r=jwwang
These comments should be removed after landing bug1302350.

MozReview-Commit-ID: 7N0cWImZDDI

--HG--
extra : rebase_source : ee78246f4bb7f7a1dc2c95f08295e5159312f498
2016-11-29 12:40:45 +08:00
Alastor Wu
5b64c297d2 Bug 1309162 - part5 : only set the audible state when stream starts playing. r=baku
If input is a media stream, we would always regard it as audible when it's playing.
We won't need to set it as non-audible.

MozReview-Commit-ID: 8mzTsAkt6lG

--HG--
extra : rebase_source : f406542c2b8a9a349e14d199108d37ce57e9a223
2016-11-29 12:40:43 +08:00
Alastor Wu
6bcf0cf537 Bug 1309162 - part4 : remove checking for mPlayingBeforeSeek. r=baku
In previous patch, we removed UpdateAudioChannelPlayingState() from AddRemoveSelfReference(), now we
don't call UpdateAudioChannelPlayingState() during the seeking. So we don't need to afraid to stop
audio channel agent during the seeking.


MozReview-Commit-ID: GTuIRB24zlq

--HG--
extra : rebase_source : fb09137fd578adc9332eff8eee41891980157cf9
2016-11-29 12:40:41 +08:00
Alastor Wu
368697789a Bug 1309162 - part3 : modify the place calling UpdateAudioChannelPlayingState(). r=baku
UpdateAudioChannelPlayingState() should only be called when following attributes changed.
eg. pause/ready state/error/owner document's visibility/exteral source stream.

Therefore, we don't need to call this function in FinishDecoderSetup() and AddRemoveSelfReference().

Remove AutoNotifyAudioChannelAgent is because now we don't check HasAudio() for IsPlayingThroughTheAudioChannel().

MozReview-Commit-ID: 4VTHIAdAqX1

--HG--
extra : rebase_source : 5ee4cabd543fe43b4e51fa4ce68af083c8fd8e1a
2016-11-29 12:40:39 +08:00
Alastor Wu
f8bfec29ce Bug 1309162 - part2 : remove audio channel code from media element. r=jwwang
Remove the audio channel related codes.

MozReview-Commit-ID: Fc09gDDF21a

--HG--
extra : rebase_source : 1312437cabff8c4186df82e0f59e94a1c2ab45e4
2016-11-29 12:40:35 +08:00
Alastor Wu
4316cc30a4 Bug 1309162 - part1 : create a separate class to handle audio channel releated stuffs. r=baku,jwwang
In order to keep the media element's code clear (spec code only), we want to remove our
custom policy code out from media element. This new class will handle all audio channel
related stuffs, eg. mute/unmuted operation from tab audio indicator, play/resume from
Fennec's media control.

MozReview-Commit-ID: 5mDqDBTnBOr

--HG--
extra : rebase_source : cdb0a4b67c3e96bede79f61cc9d79b920517f139
2016-11-29 12:40:32 +08:00
Wes Kocher
52efb60291 Backed out 7 changesets (bug 1309162) for valgrind failures a=backout
Backed out changeset 3f0ad2d2c594 (bug 1309162)
Backed out changeset 17c744162fbe (bug 1309162)
Backed out changeset 2015de6577af (bug 1309162)
Backed out changeset fe1771c91309 (bug 1309162)
Backed out changeset b5ab5eae225d (bug 1309162)
Backed out changeset 16ceabbf8eef (bug 1309162)
Backed out changeset 6b09c6adcfa5 (bug 1309162)
2016-11-28 13:16:31 -08:00
Alastor Wu
ea67dfa463 Bug 1309162 - part7 : wrap custom policy function. r=jwwang
MozReview-Commit-ID: EdjzMi90ukx

--HG--
extra : rebase_source : 6bfc2fa4638b5a2200087961bf4842f8b482cc66
2016-11-28 10:23:14 +08:00
Alastor Wu
ff1cca9a1e Bug 1309162 - part6 : remove useless comment. r=jwwang
These comments should be removed after landing bug1302350.

MozReview-Commit-ID: 7N0cWImZDDI

--HG--
extra : rebase_source : b259780a2c901449d72dfcf1280de72cae890ade
2016-11-26 02:35:23 +08:00
Alastor Wu
7af99e933f Bug 1309162 - part5 : only set the audible state when stream starts playing. r=baku
If input is a media stream, we would always regard it as audible when it's playing.
We won't need to set it as non-audible.

MozReview-Commit-ID: 8mzTsAkt6lG

--HG--
extra : rebase_source : 2eaa6f1d92ef2f4048fae61ed99739157cf08287
2016-11-26 02:35:20 +08:00
Alastor Wu
f15425595d Bug 1309162 - part4 : remove checking for mPlayingBeforeSeek. r=baku
In previous patch, we removed UpdateAudioChannelPlayingState() from AddRemoveSelfReference(), now we
don't call UpdateAudioChannelPlayingState() during the seeking. So we don't need to afraid to stop
audio channel agent during the seeking.


MozReview-Commit-ID: GTuIRB24zlq

--HG--
extra : rebase_source : 20cae16efabd296f4b3c404886364aaa92db5df6
2016-11-26 02:35:18 +08:00
Alastor Wu
202cfad46d Bug 1309162 - part3 : modify the place calling UpdateAudioChannelPlayingState(). r=baku
UpdateAudioChannelPlayingState() should only be called when following attributes changed.
eg. pause/ready state/error/owner document's visibility/exteral source stream.

Therefore, we don't need to call this function in FinishDecoderSetup() and AddRemoveSelfReference().

Remove AutoNotifyAudioChannelAgent is because now we don't check HasAudio() for IsPlayingThroughTheAudioChannel().

MozReview-Commit-ID: 4VTHIAdAqX1

--HG--
extra : rebase_source : 7f196581fb2e5a7e75afef27d874522986d2cdc5
2016-11-26 02:34:49 +08:00
Alastor Wu
59b85ce47d Bug 1309162 - part2 : remove audio channel code from media element. r=jwwang
Remove the audio channel related codes.

MozReview-Commit-ID: Fc09gDDF21a

--HG--
extra : rebase_source : 08aa5c042924de7f0c9a9dffd3f71ecfa59e7a05
2016-11-26 02:34:42 +08:00
Alastor Wu
b32367de75 Bug 1309162 - part1 : create a separate class to handle audio channel releated stuffs. r=baku,jwwang
In order to keep the media element's code clear (spec code only), we want to remove our
custom policy code out from media element. This new class will handle all audio channel
related stuffs, eg. mute/unmuted operation from tab audio indicator, play/resume from
Fennec's media control.

MozReview-Commit-ID: 5mDqDBTnBOr

--HG--
extra : rebase_source : e9d4c3a41ce9a994ef4d44f059537a69f27c7c1e
2016-11-26 02:34:39 +08:00
Kilik Kuo
de713f4c77 Bug 1319686 - Remove the use of AutoNoJSAPI from HTMLMediaElement::NotifyAudioChannelAgent r=jwwang
MozReview-Commit-ID: FMKloJPpT93

--HG--
extra : rebase_source : 8796cdb9085882c319234595d5fa9aef67ba6532
2016-11-23 18:16:31 +08:00
Alastor Wu
ba429ab233 Bug 1301055 - part4 : special error dispatching stragedy for Fennec. r=jwwang
On Fennec, we would use external app (Android view) to play the media whih is
unsupported by gecko. We implement some special logic in error sink.

(1) dispatch "OpenMediaWithExternalApp" event
we use this event to start the android video player

(2) doesn't dispatch "error" event
some JS players won't let user to trigger play() again after receving the "error".
So we don't dispatch that event if we want to play the unsupported media more than once.

MozReview-Commit-ID: 7fZK5hdvaOG

--HG--
extra : rebase_source : 929db331c22e31a74f76dfa89a99a8adac65d0f6
2016-11-24 10:24:08 +08:00
Alastor Wu
a455141cb1 Bug 1301055 - part2 : create a error sink to handle media element's error related event. r=bkelly,jwwang
Error sink would be response for the error handling, we could write different
error dispatching stragedies for different situation. eg. if we can play
unsupported type media with external app, we won't dispatch the "error" event on fennec.

MozReview-Commit-ID: Lm4x9ksspAY

--HG--
extra : rebase_source : 05331714425ea111d21f06fc03abfc1b016654ca
2016-11-24 10:24:04 +08:00
Kilik Kuo
e883edbbf2 Bug 1316758-Remove nsContentUtils::LegacyIsCallerChromeOrNativeCode and IsCallerChrome calls from HTMLMediaElement. r=cpearce
MozReview-Commit-ID: 47pOATtfflP

--HG--
extra : rebase_source : 43123ebd61a2730b3ccdeaccfaf4dfccfb0cbe55
2016-11-18 10:30:00 +08:00
Alastor Wu
1c128b5ce5 Bug 1317167 - only need to do the untrust JS checking in play(). r=jwwang
The first checking condition in the IsAllowedPlay() is used to prevent the play() operation
is called by untrusted JS when media.autoplay.enabled=false. Therefore, we don't need to check
that in CanActivateAutoplay().

MozReview-Commit-ID: 6yqoG8ISyra

--HG--
extra : rebase_source : a3e52a1a5591691f503d7d4ca78dda63c05aef27
2016-11-17 15:09:59 +08:00
Bryce Van Dyk
51b7a05529 Bug 1298027 - Shut down CDMs when a containing document becomes inactive. r=cpearce
The previous changeset against this bug relaxed the conditions under which the
CDM and associated objects were shut down. This was to address moving a tab to a
new window breaking EME videos. However, this had the unwanted side effect of
not shutting down those objects early enough when pages are closed.

This changeset introduces a new check to see if the containing document is
currently active, if not we shutdown the CDM. This means CDMs are shutdown on
time, while retaining the desired behaviour that CDMs should not be shut down on
moving tabs to new windows. Shutdowns previously happened because we shut down
if a page hide happened, which took place during a reparent.

MozReview-Commit-ID: K5CD3ej43Y0

--HG--
extra : rebase_source : 28fdc277a89c371ad204d5e545779a5950063494
2016-11-14 15:02:48 +13:00
Bryce Van Dyk
5dbd650b59 Bug 1298027 - Relax decoder shutdown and mediakey removal on MediaElement suspension. r=cpearce
This changeset relaxes the shutting down of decoders and removal of mediakeys
when suspending HTMLMediaElements. This should now only happen for adobe
primetime. This alleviates, for non-primetime CDMs, the issue of videos
breaking when moving an EME protected video from a tab to a new window.

These conditions can be relaxed as neither clearkey or widevine support
secure stop. This means we don't need to shutdown their decoders and keys to
signal a stoppage, as at this stage, doing so doesn't give us secure stop and
instead means that playback is busted when we try to resume.

MozReview-Commit-ID: 3MGNXGGDVLS

--HG--
extra : rebase_source : cbf46b3da089f79d9b6729a02997d1a0a12b68a7
2016-10-31 10:55:19 +13:00
Alastor Wu
a97a900bc3 Bug 1315551 - part2 : check we have initialized agent when we want to call the agent's function. r=jwwang
Because the agent's initialization might fail if we don't get the valid inner window, we need to
check whether the agent exists before calling the agent's method.

MozReview-Commit-ID: IUuvyGh7CMd

--HG--
extra : rebase_source : 54d0811aad736abdbac5ae7c3cd8cfebed88923a
2016-11-08 11:08:02 +08:00
Phil Ringnalda
2d0fad04f6 Backed out changeset 87b698764664 (bug 1315521) for jetpack failures in test-leak-tab-events.js.test 2016-11-07 21:01:45 -08:00
Alastor Wu
50ccc2b3a2 Bug 1315521 - remove CC for audio channel agent. r=jwwang
Because audio channel agent uses weak ref to HTMLMediaElement, so we don't need to add it into the CC list.

MozReview-Commit-ID: 4cFfDUlbMFB

--HG--
extra : rebase_source : 4d595397d11e2e3c46cce17df148bea8f77f92e8
2016-11-08 11:03:23 +08:00
JW Wang
544c3e8512 Bug 1314547. Part 1 - remove the call to MediaDecoder::SetMediaSeekableOnlyInBufferedRanges(). r=cpearce
MozReview-Commit-ID: 52BESjY8f74

--HG--
extra : rebase_source : 132b2c54247864f1e594ba1da12108449ba2bce5
extra : source : b177332ca07279b2b577e9ac1ccb62c01bbb8cbe
2016-11-02 17:11:29 +08:00
JW Wang
e6bb1c3c9c Bug 1314529. Part 1 - remove the call to MediaDecoder::SetMediaSeekable(). r=cpearce
MozReview-Commit-ID: 1vsazRU9KNw

--HG--
extra : rebase_source : ec7a318b6e28322493f39bee59b34967e59c25c8
extra : source : 8495dbe9dae7566dd26e82fdc4194335542f9b68
2016-11-02 14:39:18 +08:00
Jean-Yves Avenard
a50a86289f Bug 1302656: P1. Don't detach mediasource when error occurs. r=jwwang
MozReview-Commit-ID: 88EIb4XXcdR

--HG--
extra : rebase_source : 3e09f64f2af6993f055e353411d6f782527904ed
2016-11-01 20:33:33 +11:00