Commit Graph

1441 Commits

Author SHA1 Message Date
Csoregi Natalia
63a481d54c Backed out changeset fe753b00f953 (bug 1701276) for wpt fails on resource-selection-currentSrc.html. CLOSED TREE 2021-03-31 21:00:20 +03:00
Paul Adenot
ae66dd1a6e Bug 1701276 - Adjust currentSrc behaviour to match the spec more closely. r=bryce
Firefox and Chrome support setting `src` with an `ObjectURL`. This is
technically a URL and should be treated as such. Firefox recently changed to
return `""` when a `MediaSource` is playing, and this is wrong, because even
though it's playing a from a "Media Provider Object", it got loaded from the
`src` attribute, so should have a non-null `currentSrc`, which should be the
blob url (`blob:origin/<an uuid>`). In this case, `currentSrc` is a string that
is opaque and doesn't allow introspection but refers to the "real" `MediaSource`
or `Blob`.

If the same `MediaSource` is loaded via the `srcObject` attribute (that Firefox
and Chrome don't support), then `currentSrc` should return `""` and `srcObject`
still has the object set to it to understand what the HTMLMediaElement is
playing. We'll implement and test this later.

Differential Revision: https://phabricator.services.mozilla.com/D110290
2021-03-31 12:28:39 +00:00
Eden Chuang
fde79b287b Bug 1696111 - Make LoadInfo know if the request is triggered from a media element and if it's an initial request. r=necko-reviewers,alwu,dragana
Differential Revision: https://phabricator.services.mozilla.com/D106890
2021-03-30 00:52:31 +00:00
Butkovits Atila
eaa725a4a6 Backed out 12 changesets (bug 1683131, bug 1696111, bug 1695987) for causing crashes(Bug 1701151). a=backout
Backed out changeset 8ffef57e27d2 (bug 1683131)
Backed out changeset c02d5dc72abb (bug 1695987)
Backed out changeset 276f016ddc67 (bug 1683131)
Backed out changeset 2c7a45e20b50 (bug 1683131)
Backed out changeset 11fdb503d537 (bug 1696111)
Backed out changeset 2946eff1e9c8 (bug 1696111)
Backed out changeset e4d01b88e517 (bug 1696111)
Backed out changeset fab7f4cd445d (bug 1696111)
Backed out changeset d60c38f8939a (bug 1696111)
Backed out changeset 3fdc8089a46f (bug 1696111)
Backed out changeset 51a16dfabc98 (bug 1696111)
Backed out changeset 642bdd52fd57 (bug 1696111)
2021-03-26 11:30:28 +02:00
Eden Chuang
24dd01230f Bug 1696111 - Make LoadInfo know if the request is triggered from a media element and if it's an initial request. r=necko-reviewers,alwu,dragana
Differential Revision: https://phabricator.services.mozilla.com/D106890
2021-03-25 12:09:40 +00:00
Simon Giesecke
87c754b1bd Bug 1184468 - Use nsTHashtable::Keys where possible. r=xpcom-reviewers,nika
Differential Revision: https://phabricator.services.mozilla.com/D108588
2021-03-24 17:56:50 +00:00
Simon Giesecke
9e995a79e8 Bug 1184468 - Use nsBaseHashtable::Values. r=xpcom-reviewers,nika
Differential Revision: https://phabricator.services.mozilla.com/D108587
2021-03-24 17:56:49 +00:00
Simon Giesecke
86e29e162f Bug 1695162 - Use range-based for instead of custom hashtable iterators. r=xpcom-reviewers,kmag
Differential Revision: https://phabricator.services.mozilla.com/D108585
2021-03-17 15:49:46 +00:00
Simon Giesecke
73866a5384 Bug 1695162 - Make nsTHashtable::ConstIter return a real ConstIterator. r=xpcom-reviewers,nika
Differential Revision: https://phabricator.services.mozilla.com/D107038
2021-03-09 10:28:16 +00:00
Sylvestre Ledru
50c4de1fef Bug 1519636 - Reformat recent changes to the Google coding style r=necko-reviewers,valentin
Updated with clang-format version 11.0.1 (taskcluster-B6bdwSKDRF-luRQWXBuzpA)

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D106920
2021-03-02 16:14:46 +00:00
Simon Giesecke
fba5f29d05 Bug 1693541 - Improve uses of nsBaseHashtable and descendants and avoid multiple subsequent lookups in dom/html. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D106112
2021-03-01 09:59:29 +00:00
Simon Giesecke
95c38cc6b8 Bug 1691913 - Rename nsBaseHashtable::Put to InsertOrUpdate. r=xpcom-reviewers,necko-reviewers,jgilbert,dragana,nika
This makes the naming more consistent with other functions called
Insert and/or Update. Also, it removes the ambiguity whether
Put expects that an entry already exists or not, in particular because
it differed from nsTHashtable::PutEntry in that regard.

Differential Revision: https://phabricator.services.mozilla.com/D105473
2021-02-26 09:11:46 +00:00
alwu
3d6d1b5570 Bug 1691578 - part7 : add test case for audio sink failed start-up. r=bryce,emilio
Differential Revision: https://phabricator.services.mozilla.com/D104571
2021-02-25 18:07:07 +00:00
alwu
f04288172c Bug 1691578 - part6 : add test cases to test reporting decode error. r=bryce,webidl,emilio
Differential Revision: https://phabricator.services.mozilla.com/D104570
2021-02-25 18:07:06 +00:00
alwu
bcfc99dc97 Bug 1691578 - part5 : add test cases to test the ability of reporting error for not supported media type. r=bryce,emilio
Add test cases for `DecoderDoctorDiagnostics::StoreFormatDiagnostics()`, which is used when checking the ability of whether the decoder is supported for certain type.

Differential Revision: https://phabricator.services.mozilla.com/D104475
2021-02-25 18:07:06 +00:00
Cosmin Sabou
26e6b5110c Backed out 8 changesets (bug 1691578) for bc failures on browser_decoderDoctor.js. CLOSED TREE
Backed out changeset c535dd429ada (bug 1691578)
Backed out changeset 518eadda7826 (bug 1691578)
Backed out changeset c181e29b13f2 (bug 1691578)
Backed out changeset 23f6dcc3ceb5 (bug 1691578)
Backed out changeset bfd3e4878545 (bug 1691578)
Backed out changeset 214ab3a2f00b (bug 1691578)
Backed out changeset 71a17ff3322c (bug 1691578)
Backed out changeset 6aa662e8d06e (bug 1691578)
2021-02-25 21:08:07 +02:00
alwu
fb225347cc Bug 1691578 - part7 : add test case for audio sink failed start-up. r=bryce,emilio
Differential Revision: https://phabricator.services.mozilla.com/D104571
2021-02-25 18:07:07 +00:00
alwu
50ec8cc8d2 Bug 1691578 - part6 : add test cases to test reporting decode error. r=bryce,webidl,emilio
Differential Revision: https://phabricator.services.mozilla.com/D104570
2021-02-25 18:07:06 +00:00
alwu
234b5d9181 Bug 1691578 - part5 : add test cases to test the ability of reporting error for not supported media type. r=bryce,emilio
Add test cases for `DecoderDoctorDiagnostics::StoreFormatDiagnostics()`, which is used when checking the ability of whether the decoder is supported for certain type.

Differential Revision: https://phabricator.services.mozilla.com/D104475
2021-02-25 18:07:06 +00:00
Paul Adenot
633b484570 Bug 1686914 - Don't reset currentSrc when aborting a load in HTMLMediaElement, and reset it when it should be reset. r=bryce
Roughly:
- Don't reset on load
- Don't reset on URL parsing error
- Reset when playing a MediaStream, a MediaSource
- Otherwise follow the resource selection algorithm, and set it to what has been selected

Differential Revision: https://phabricator.services.mozilla.com/D101937
2021-02-16 12:39:34 +00:00
alwu
2c6ba27d65 Bug 1686696 - part5 : remove nsSyncSection. r=bryce
`nsSyncSection` is not related with media event, so that's not proper ot put it in `MediaElementEventRunners.h`.

In addition, that can simply be implemented by `NS_NewRunnableFunction` so we don't need `nsSyncSection` anymore.

Differential Revision: https://phabricator.services.mozilla.com/D104115
2021-02-11 20:19:25 +00:00
alwu
d82660eae4 Bug 1686696 - part3 : enforce to only dispatch periodic timeupdate once within 250ms. r=bryce
Inplemented an event runner for `timeupdate` only, which would ensure that for periodic `timeupdate` it should be only dispatched once within 250ms.

Differential Revision: https://phabricator.services.mozilla.com/D102675
2021-02-11 20:19:24 +00:00
alwu
2cc69ea212 Bug 1686696 - part2 : rework how does decoder handle owner's events when the logical position changes. r=bryce
Decoder needs to handle owner's events differently based on different situations, this patch makes the process clearer.

Differential Revision: https://phabricator.services.mozilla.com/D102674
2021-02-11 20:19:24 +00:00
alwu
8de222ed59 Bug 1686696 - part1 : store pending event runner instead of saving event name. r=bryce,mccr8
In this patch, we move all event runners to a separate file and implement an event blocker.

In order to allow us to do a special check for `timeupdate` event, we have to know that event is periodic or mandatory.

We have to save extra information for `timeupdate, however, current design for storing pending events is not flexible enough to achieve that.

Therefore, instead of storing the event name, we store the event runners which can all have different implementation and know when they should dispatch their own event.

Differential Revision: https://phabricator.services.mozilla.com/D102673
2021-02-11 20:19:23 +00:00
Bogdan Tara
f3776aebd8 Backed out 6 changesets (bug 1686696) for 1587248.html crashtest failures CLOSED TREE
Backed out changeset 690c6a094f8a (bug 1686696)
Backed out changeset 7f9d487945c3 (bug 1686696)
Backed out changeset 40358a758624 (bug 1686696)
Backed out changeset 36c696166033 (bug 1686696)
Backed out changeset ab149e8fc0d5 (bug 1686696)
Backed out changeset 8fce79f9bd65 (bug 1686696)
2021-02-11 06:29:47 +02:00
alwu
ed129ef725 Bug 1686696 - part5 : remove nsSyncSection. r=bryce
`nsSyncSection` is not related with media event, so that's not proper ot put it in `MediaElementEventRunners.h`.

In addition, that can simply be implemented by `NS_NewRunnableFunction` so we don't need `nsSyncSection` anymore.

Differential Revision: https://phabricator.services.mozilla.com/D104115
2021-02-11 03:45:30 +00:00
alwu
ac4e041d07 Bug 1686696 - part3 : enforce to only dispatch periodic timeupdate once within 250ms. r=bryce
Inplemented an event runner for `timeupdate` only, which would ensure that for periodic `timeupdate` it should be only dispatched once within 250ms.

Differential Revision: https://phabricator.services.mozilla.com/D102675
2021-02-11 03:45:30 +00:00
alwu
568391f075 Bug 1686696 - part2 : rework how does decoder handle owner's events when the logical position changes. r=bryce
Decoder needs to handle owner's events differently based on different situations, this patch makes the process clearer.

Differential Revision: https://phabricator.services.mozilla.com/D102674
2021-02-11 03:45:29 +00:00
alwu
a5b9c95ef7 Bug 1686696 - part1 : store pending event runner instead of saving event name. r=bryce,mccr8
In this patch, we move all event runners to a separate file and implement an event blocker.

In order to allow us to do a special check for `timeupdate` event, we have to know that event is periodic or mandatory.

We have to save extra information for `timeupdate, however, current design for storing pending events is not flexible enough to achieve that.

Therefore, instead of storing the event name, we store the event runners which can all have different implementation and know when they should dispatch their own event.

Differential Revision: https://phabricator.services.mozilla.com/D102673
2021-02-11 03:45:28 +00:00
alwu
828669890a Bug 1690416 - remove HTMLMediaElement::ReportCanPlayTelemetry(). r=bryce,Gijs,webidl,mccr8
The actual telemetry probes has been removed by this, so this function is no longer reporting any result and we can remove it.

[1] https://phabricator.services.mozilla.com/D37313

Differential Revision: https://phabricator.services.mozilla.com/D103846
2021-02-09 18:27:33 +00:00
Andreas Pehrson
43b06b20b1 Bug 1690976 - Don't reveal error details for CORS-cross-origin decoding errors. r=sstreich,bryce
Differential Revision: https://phabricator.services.mozilla.com/D104169
2021-02-08 11:43:36 +00:00
Bogdan Tara
96488cebeb Backed out 2 changesets (bug 1690976) for ES lint failure in test_decode_error_crossorigin.html CLOSED TREE
Backed out changeset ed0ab9078607 (bug 1690976)
Backed out changeset c6c868eaf915 (bug 1690976)
2021-02-08 13:34:59 +02:00
Andreas Pehrson
8edc2e0391 Bug 1690976 - Don't reveal error details for CORS-cross-origin decoding errors. r=sstreich,bryce
Differential Revision: https://phabricator.services.mozilla.com/D104169
2021-02-08 10:01:07 +00:00
Bogdan Tara
5302446b80 Backed out 2 changesets (bug 1690976) for test_decode_error_crossorigin.html failures CLOSED TREE
DONTBUILD
Backed out changeset d119750e8469 (bug 1690976)
Backed out changeset ff2dd7ee09b6 (bug 1690976)
2021-02-08 11:56:23 +02:00
Andreas Pehrson
e06fab5bfb Bug 1690976 - Don't reveal error details for CORS-cross-origin decoding errors. r=sstreich,bryce
Differential Revision: https://phabricator.services.mozilla.com/D104169
2021-02-05 18:07:16 +00:00
alwu
63730357e7 Bug 1687899 - part2 : wrap details of determining if we should dispatch 'timeupdate' event into a helper function. r=bryce
Differential Revision: https://phabricator.services.mozilla.com/D102248
2021-01-22 18:11:29 +00:00
alwu
21d2b34cd3 Bug 1687899 - part1 : use enum class to replace boolean for a better understanding why we need to dispatch 'timeupdate'. r=bryce
Differential Revision: https://phabricator.services.mozilla.com/D102247
2021-01-22 18:07:14 +00:00
alwu
113f4b293d Bug 1685399 - part13 : add test. r=padenot
As we can only snapshot a telemetry histogram in the chrome process, we have to make them measurable in the chrome process and write a chrome mochitest.

Differential Revision: https://phabricator.services.mozilla.com/D101266
2021-01-19 19:49:23 +00:00
alwu
a2a7139cc6 Bug 1685399 - part10 : add chrome-only attributes to allow us check accumulated time during testing. r=padenot,emilio
Differential Revision: https://phabricator.services.mozilla.com/D101264
2021-01-15 19:58:13 +00:00
alwu
c8b54c29bb Bug 1685399 - part7 : implement a helper class to accumulate and report the telemetry probe. r=padenot,bryce
In this patch, we move the responsibility of accumulating time and report the telemetry to `TelemetryProbesReporter`.

There are some differences between new telemetry report and the old one.
1. more accuracy on knowing if element is visible
2. more accuracy on determining when it should start accumulating visible & invisible play time
3. being able to report the correct result when element encounts an error or changes to a new resource
4. report result whenever MediaDecoder stops working

Here is the explanation [1] describing why our previous method was not able to achieve those advantages.

[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1685399#c13

Differential Revision: https://phabricator.services.mozilla.com/D101112
2021-01-19 17:34:47 +00:00
alwu
9d3429c2f1 Bug 1685399 - part4 : check media info directly to know if video is valid. r=padenot
I will move these telemetry related codes out from media element, so I want to avoid using media element's own attribute to determine if we need to report the probe or not, which will help that following works don't need to reply on media element's own attribute.

Differential Revision: https://phabricator.services.mozilla.com/D101109
2021-01-14 19:54:42 +00:00
alwu
23c6726a98 Bug 1685399 - part3 : use actual invisible state to determine if we should suspend decoding. r=padenot
There is no need for decoder to use both "document visibility" and "element's layout visibility" to determine if we should suspend decoding.

That can simply be done by checking `HTMLMediaElement::IsActuallyInvisible()`.

Differential Revision: https://phabricator.services.mozilla.com/D101108
2021-01-14 19:54:42 +00:00
alwu
2cbc778a00 Bug 1685399 - part2 : reorgnize functions being used for determining if element is visible. r=padenot,webidl,mccr8
There are several functions related with an element's visibie state, which are confusing. So this patch is going to make them clearer and remove unnecessary function.

- `IsVisible()` : add description to mention that the visibility state is only for layout level, which doesn't represent the actual visible state.
- rename `IsHidden()` to `IsActualInvisible()` : make it represent the actual visible state of an element.
- remove `IsActive()` : current two callers of `IsActive()` only care about if the page is inactive or not, it doesn't care about if page hidden or not. So we can call the owner doc's method directly.

Differential Revision: https://phabricator.services.mozilla.com/D101107
2021-01-19 19:48:43 +00:00
alwu
9611f79b40 Bug 1685399 - part1 : remove mCurrentLoadPlayTime. r=padenot
`mCurrentLoadPlayTime` was added in [1], which is no longer in use, so we should remove it.

[1] https://phabricator.services.mozilla.com/D18628

Differential Revision: https://phabricator.services.mozilla.com/D101106
2021-01-14 19:54:41 +00:00
Andreas Pehrson
eccd8c0312 Bug 1601385 - Don't continue UpdateOutputTrackSources if the tracks-captured state changed. r=jib
Changing the tracks-captured state will trigger another run of
UpdateOutputTrackSources, so continuing the current one is futile. The next run
will properly re-evaluate all input state to this function.

Differential Revision: https://phabricator.services.mozilla.com/D100004
2021-01-12 09:35:20 +00:00
Andreas Pehrson
fdc125c730 Bug 1601422 - Update output track sources synchronously when aborted by content. r=jib
Differential Revision: https://phabricator.services.mozilla.com/D99936
2021-01-12 02:05:36 +00:00
Andreas Pehrson
500f7507e3 Bug 1601799 - Use a SharedDummyTrack for graph access in DecodedStream. r=karlt
When enabling our MediaTrack implementation (which we don't plan to by default,
NB) and disabling all audio tracks and unselecting all video tracks while having
an active captureStream leads to having no output tracks in DecodedStream.

In this case, DecodedStream doesn't know which graph to use for creating the
intermediary tracks it feeds data to. We don't want to resort to the default
graph either, since two graphs on different clocks could then race each other.

With this patch we plumb down a SharedDummyTrack from the media element where
the captureStream was triggered, through MediaDecoder, to DecodedStream. The
SharedDummyTrack guarantees to keep the graph alive, and holds the graph used
for the output tracks.

Differential Revision: https://phabricator.services.mozilla.com/D99822
2021-01-05 07:43:34 +00:00
Emilio Cobos Álvarez
136e604164 Bug 1635914 - Move active flag handling explicitly to BrowsingContext. r=nika
And have it mirror in the parent process more automatically.

The docShellIsActive setter in the browser-custom-element side needs to
be there rather than in the usual DidSet() calls because the
AsyncTabSwitcher code relies on getting an exact amount of notifications
as response to that specific setter. Not pretty, but...

BrowserChild no longer sets IsActive() on the docshell itself for OOP
iframes. This fixes bug 1679521. PresShell activeness is used to
throttle rAF as well, which handles OOP iframes nicely as well.

Differential Revision: https://phabricator.services.mozilla.com/D96072
2020-12-11 15:43:19 +00:00
Simon Giesecke
fbb9c742c8 Bug 1679272 - Include ScopeExit.h exactly where used. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D98888
2020-12-07 14:25:59 +00:00
Simon Giesecke
46908cfb51 Bug 1660470 - Add missing include directives/forward declarations. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D87865
2020-11-23 16:21:38 +00:00