This restores similar skipping of unnecessary AudioSink initialization as was
implemented for device changes when they were handled by
MediaDecoderStateMachine. This AudioSinkWrapper implementation also reduces
initializations if multiple mute/unmute cycles trigger excess initializations.
Depends on D181975
Differential Revision: https://phabricator.services.mozilla.com/D181976
This allows video playback to continue uninterrupted.
The AudioSinkWrapper now maintains the correct playback position in the media
data. Previously the replacement AudioSinkWrapper started its clock at the
"current playback position" from the MediaDecoderStateMachine, which did not
include additional time from looping, so silence would be played until the
missing time had passed.
The AudioSinkWrapper now continues to periodically attempt to open a new
output device if not initially available. Previously such attempts were only
performed on state changes such as seeking or unmuting.
The promise returned from MediaDecoderStateMachine::InvokeSetSink() now
resolves regardless of whether the new device can be opened successfully.
Previously the promise could be rejected if the device was necessary for audio
output at the time of the call but no check for device availability (beyond
that of device enumeration) was performed if playback was suspended or muted
or if a subsequent device change had already been queued. Even previously the
underlying device was changed even when the promise was rejected and could be
used if a state change occurred.
Differential Revision: https://phabricator.services.mozilla.com/D181975
The Debian 12 based docker images don't have those libraries installed
(although we could install them, it's not a long term fix, as newer
versions of libssl come as libssl.so.3 and libssl.so.1.1 is bound to
disappear for good from future distros)
Differential Revision: https://phabricator.services.mozilla.com/D182130
Introduces the new Glean metric pwmgr.form_autofill_result, which is as labeled_counter
and collects the same data (in a slightly different way) than the Legacy Telemetry histogram PWMGR_FORM_AUTOFILL_RESULT.
E.g. If the autofill result was "FILLED":
Telemetry probe -> { 0 : 1 }, adds 1 to the histogram index 0 (which represents the result "FILLED").
Glean metric -> { filled : 1 }, increments the counter for the label "filled"
Both metrics will co-exist for now until we have collected enough data with Glean to be able remove the legacy telemetry probe.
Differential Revision: https://phabricator.services.mozilla.com/D179478
This is necessary for activating the site/command virtualenvs earlier,
since we can't determine what the objdir will be very early on in the
mach process intialization. We do know where the state dir is, and how
to get to the state dir for a specific topsrcdir, so we can use that
instead. This is already where the `mach` virtualenv lives anyway.
Differential Revision: https://phabricator.services.mozilla.com/D181029
If this is not done, the state dir (`.mozbuild`) is owned by root. With
the upcoming changes to moving the python site venvs to the state dir,
this would prevent the mach process from writing to the state dir, and
causing the python virtualenvs to not be successfully created.
Differential Revision: https://phabricator.services.mozilla.com/D181910
Uses the fastText pref to determine which method of language
identification to use in full-page translation
Depends on D180745
Differential Revision: https://phabricator.services.mozilla.com/D180746
Uses the fastText pref to determine which method of language
identification to use in about:translations
Depends on D180744
Differential Revision: https://phabricator.services.mozilla.com/D180745
Adds a pref that will be used to determine whether Translations
language identification should use fastText or not.
Depends on D180743
Differential Revision: https://phabricator.services.mozilla.com/D180744
It's used only by the mail composers. However, `EditorBase::mWrapColumn` is
also used by `TextEditor`. Therefore, `EditorBase` still needs to manage the
member, but the setters, `SetWrapColumn()` and `SetWrapWidth()` can be in
`TextEditor` and `HTMLEditor`.
Differential Revision: https://phabricator.services.mozilla.com/D181836
This restores similar skipping of unnecessary AudioSink initialization as was
implemented for device changes when they were handled by
MediaDecoderStateMachine. This AudioSinkWrapper implementation also reduces
initializations if multiple mute/unmute cycles trigger excess initializations.
Depends on D181975
Differential Revision: https://phabricator.services.mozilla.com/D181976
Currently it runs if the instance is a `TextEditor` or it's in the plaintext
mode of `HTMLEditor`. However, it does not make sense to run it only in
specific mode of `HTMLEditor`, and most part does not make sense for
`HTMLEditor`.
This patch moves the method to `TextEditor`, and for
`EditorBase::InsertTextWithTransaction()` and
`AutoRangeArray::ExtendAnchorFocusRangeFor()`, adds new method to
`EditorDOMPointBase` to get a text node position if it points around
a text node.
Differential Revision: https://phabricator.services.mozilla.com/D181835
The legacy DOM mutation events shouldn't be used even in content and must not be
used in chrome.
This patch makes it crash if legacy mutation event listener is:
* added to a node in a chrome document
* added to a node in a native anonymous subtree
* added to the system event group
* implemented by C++
This causes some crash tests and chrome tests. Therefore, this patch modifies
them to use `MutationObserver` instead or removes them if it's impossible to
rewrite with `MutationObserver`.
Note that if I prevent to dispatch mutation events in some/all of the cases,
that causes performance regression in Speedometer3. Therefore, this patch
does not touch `EventDispatcher`.
Differential Revision: https://phabricator.services.mozilla.com/D181828
The log string generation may take too long. Let's allow timeout of that.
The test checks a crash bug, so, ignoring intermittent timeout is okay.
Differential Revision: https://phabricator.services.mozilla.com/D181838
This patch has three parts to it:
1) Use NS_IsContentAccessibleAboutURI to ensure that only safe
about: documents get exempted.
With this change, we will no longer allow about:blank or
about:srcdoc to be exempted base on URI. If they are to be
exempted, it will need to be base on other information.
2) In Document::RecomputeResistFingerprinting we previously
deferred to a Parent Document if we had one, and either the
principals matched or we were a null principal.
We will do the same thing, except we will also defer to our
opener as well as the parent document. Now about:blank
documents can be exempted.
However, this deferral only works if the opener is
same-process. For cross-process openers, we make the decision
ourselves.
We can make the wrong decision though. CookieJarSettings is
inherited through iframes but it is _not_ inherited through popups.
(Yet. There's some discussion there, but it's not implemented.)
Conceptually; however, we do want CJS to inherit, and we do want
RFP to inherit as well. Because a popup can collude with its
opener to bypass RFP and Storage restrictions, we should propagate
the CJS information.
This does lead to an unusual situation: if you have exempted
b.com, and a.com (which is not exempted) creates a popup for b.com
then that popup will not be exempted. But an open tab for b.com
would be. And it might be hard to tell those two apart, or why
they behave differently.
The third part of the patch:
3) In LoadInfo we want to populate information down from the
opener to the popup. This is needed because otherwise a
cross-origin popup will not defer to its opener (because in
Fission they're in different processes) and will decide if
it should be exempted itself. It's the CookieJarSettings
object that prevents the cross-origin document from thinking
it should be exempted - CJS tells it 'No, you're a child
(either a subdocument or a popup) and if I say you don't get
an exemption, you don't.'
Finally, there is one more caveat: we can only defer to a parent
document or opener if it still exists. A popup may outlive its
opener. If that happens, and something induces a call to
RecomputeResistFingerprinting, then (e.g.) an about:blank popup
may lose an RFP exemption that it had received from its parent.
This isn't expected to happen in practice -
RecomputeResistFingerprinting is only called on document creation
and pref changes I believe.
It is not possible for a popup to _gain_ an exemption though,
because even if the parent document is gone, the CJS lives on and
restricts it.
Differential Revision: https://phabricator.services.mozilla.com/D178866
I was able to adapt the simple iframe test to a popup
test with pretty minimal adaptations, so I did that.
Remains to be seen if I can do it for the others.
Differential Revision: https://phabricator.services.mozilla.com/D178684
This allows video playback to continue uninterrupted.
The AudioSinkWrapper now maintains the correct playback position in the media
data. Previously the replacement AudioSinkWrapper started its clock at the
"current playback position" from the MediaDecoderStateMachine, which did not
include additional time from looping, so silence would be played until the
missing time had passed.
The AudioSinkWrapper now continues to periodically attempt to open a new
output device if not initially available. Previously such attempts were only
performed on state changes such as seeking or unmuting.
The promise returned from MediaDecoderStateMachine::InvokeSetSink() now
resolves regardless of whether the new device can be opened successfully.
Previously the promise could be rejected if the device was necessary for audio
output at the time of the call but no check for device availability (beyond
that of device enumeration) was performed if playback was suspended or muted
or if a subsequent device change had already been queued. Even previously the
underlying device was changed even when the promise was rejected and could be
used if a state change occurred.
Differential Revision: https://phabricator.services.mozilla.com/D181975
The runnables will need to be run serially in a future patch when the sink will
not necessarily be the same for each runnable.
This will also allow us to use InvokeAsync() and Then() in a future patch for
easier promise management.
Depends on D181971
Differential Revision: https://phabricator.services.mozilla.com/D181972
Even though it still requires significant work, this allows us to keep
track of progress more properly in wpt.fyi.
Since we expect implementation progress to improve quite a bit in H2,
and this shouldn't be an stability hazard, this seems fine unless the
missing bits cause big compat issues.
Differential Revision: https://phabricator.services.mozilla.com/D182111
This patch does several things:
1. Remove virtual cursor doc accessible member.
2. Remove state-keeping nsAccessiblePivot implementation and replace it
with something that is much more similar to the native Pivot
interface.
3. Move nsIAccessiblePivot implementation to xpcom and rename it
xpcAccessiblePivot.
4. Delete mochitests and introduce browser tests.
5. Make new xpcom implementation work on remote accessibles as well.
Differential Revision: https://phabricator.services.mozilla.com/D181813