This is a bandaid designed to cope with a subset of the encountered transforms that
may be applied to a pattern inside FillRect. The existing code did not consider the
transform at all that might be applied to a pattern when it tried to manually clip
the geometry to a no-repeat pattern.
This manual clipping only seems to occur in FillRect, whereas no-repeat patterns
are not properly handled anywhere else in canvas entry-points. To fix this more
generally requires a clamp-to-transparent tile mode (like Skia's decal or Cairo's
none) which we can't currently rely upon with our D2D support. However, that is
much beyond the scope of this temporary workaround.
Differential Revision: https://phabricator.services.mozilla.com/D122186
I had this `requestLongerTimeout()` call in my local patch in the original
revision D121785 (bug 1723158) but I forgot to push it to Phabricator before
landing. I saw this Mac TV timeout on my try pushes too, and this fixed it.
Differential Revision: https://phabricator.services.mozilla.com/D122160
Firefox shows a blank window and then swaps it for the real thing for
percieved startup performance. This causes us to throw away the
activated state stored on the initial root widget. Instead of storing
the state, we should retrieve it from widget.
Differential Revision: https://phabricator.services.mozilla.com/D122168
Also changed the unwrap performed in EnqueuePromiseReactionJob from unchecked
to checked, given we don't rely on the job's realm there, and fallbacking
to the current realm works.
Differential Revision: https://phabricator.services.mozilla.com/D121816
This patch swaps out the nsCollation for the mozilla::intl::Collator. Note how
the options bag is now opinionated towards ECMA-402's Intl.Collator.
Differential Revision: https://phabricator.services.mozilla.com/D120526
This patch attempts to directly wire the Intl.Collator implementation to the
mozilla::intl::Collator::Options bag. The only complexity that wasn't factored
out was the use of the locale keywords, which would invalidate the locale in
the current implementation.
Differential Revision: https://phabricator.services.mozilla.com/D120904
SpiderMonkey requires the BCP 47 locale extensions, which involves iterating
over the keywords in ICU, and mapping them to the BCP 47 version. Specifically,
this will change the "phonebook" keyword to "phonebk". This should hopefully
expose a simpler API to SpiderMonkey, the only consumer.
Differential Revision: https://phabricator.services.mozilla.com/D120903
This collator attempts to match the options bag from the Intl.Collator API
from ECMA-402. It is built to be compatible and consistent across both Gecko
code and SpiderMonkey code. Its behavior is designed to match ECMA-402.
Differential Revision: https://phabricator.services.mozilla.com/D120494
This patch has a few minor improvements to `./mach ide vscode` to make
it nicer to use in various situations. Specifically:
* Tries to locate the `code` using `shutil.which` in addition to the
existing methods so that the binary is found when being run from
within a vscode remote shell.
* If locating the code binary fails, only prompts to ask whether or not
to continue, rather than requiring entering the complete path. The
only use of the vscode command is to start an instance connected to the
correct path, so if no binary was found, a message is logged instead.
(bug 1699943)
* When changes need to be made to the settings.json file, a full diff is
shown between the old and new files, rather than just showing the
computed state before and after.
* If parsing the existing settings.json file fails (e.g. because there
were c-style comments in it - see bug 1670997), the diff is shown and
an additional warning is emitted to ask if the change should be made.
Differential Revision: https://phabricator.services.mozilla.com/D121157
Chrome has removed 3DES completely[0], but we're still seeing some uses of it
in telemetry. Our assumption is that this is either due to old devices that
can't be upgraded, and hence probably use TLS 1.0, or servers that bafflingly
choose 3DES when there are other, better, ciphersuites in common.
This patch allows 3DES to only be enabled when deprecated versions of TLS are
enabled. This should protect users against the latter case (where 3DES is
unnecessary) while allowing them to use it in the former case (where it may be
necessary).
NB: The only 3DES ciphersuite gecko makes possible to enable is
TLS_RSA_WITH_3DES_EDE_CBC_SHA. This patch also changes the preference
corresponding to this ciphersuite from "security.ssl3.rsa_des_ede3_sha" to
"security.ssl3.deprecated.rsa_des_ede3_sha".
[0] https://www.chromestatus.com/feature/6678134168485888
Differential Revision: https://phabricator.services.mozilla.com/D121797
Correct the description of the MacMemoryPressureSysctl crash annotation to indicate 1 is the value for normal memory pressure.
The integer values are from the XNU kernel event.h header file and observable with `$ sysctl kern.memorystatus_vm_pressure_level`.
Differential Revision: https://phabricator.services.mozilla.com/D122032
This patch upgrades the kinto-http.js library to add a `fetchFunc` hook.
We then replace calls to `fetch()` everywhere by `Utils.fetch()` which will leverage ServiceRequest, a derivative of XMLHTTPRequest that sets the beConservative flag.
Differential Revision: https://phabricator.services.mozilla.com/D121531
This enables us to use CDMs that support multiple key systems. E.g. if we have a
CDM that supports keySystem1 and keySystem2, and it needs to know which key
system we want, this lets us tell it which.
This exact case can be used to let us have a more flexible and configurable
clearkey CDM with differently behaved key systems for specific tests.
Differential Revision: https://phabricator.services.mozilla.com/D122137
Right now, GetCDM is only called with aTags containing a key system string. This
patch changes the function args to reflect that. This makes it easier to reason
about the function without having to look up call sites.
Differential Revision: https://phabricator.services.mozilla.com/D122136
And make sure the caret ends up being visible, rather than _not_
visible.
This should be implementable on windows as well. It seems macOS doesn't
have a timeout thing.
Differential Revision: https://phabricator.services.mozilla.com/D122132
Without this change, there was a race where the promiseBrowserLoaded promise
from the loadURL call could return early due to observing the load completing
for the default about:blank document, rather than for the second explicit
about:blank load, leading to intermittent timeouts due to loads interrupting
one-another. This change skips the default about:blank document load with
nodefaultsrc, avoiding the issue.
Differential Revision: https://phabricator.services.mozilla.com/D121778
This change makes all browsers which were not created with an initial `remote`
attribute within a non-`useRemoteTabs` window be unable to process-switch, as
otherwise we may attempt to switch loads into a content process. We need to
keep process switching enabled for explicitly-remote browsers loaded in a
non-`useRemoteTabs` window as it's relied on for tests and can lead to
assertion failures due to loading remote content in the parent process.
Differential Revision: https://phabricator.services.mozilla.com/D121285
This load was causing a process switch after the changes in this patch.
This caused the view-source load to also process-switch back when loaded
and confused some view-source machinery. The load isn't necessary, and
if skipped the process switch due to navigation will not occur.
Differential Revision: https://phabricator.services.mozilla.com/D120736
The changes in the previous part had a few behaviour changes which are visible
in tests, including cross-origin iframes with sandboxed origins now loading
remotely, and process selection for chrome-triggered null principal loads
behaving differently. In general this caused more process switches.
Differential Revision: https://phabricator.services.mozilla.com/D120674
This is a large refactoring of the DocumentChannel process switch codepath,
with the end goal of being better able to support future process switch
requirements such as dynamic isolation on android, as well as the immediate
requirement of null principal handling.
The major changes include:
1. The logic is in C++ and has less failure cases, meaning it should be harder
for us to error out unexpectedly and not process switch.
2. Process selection decisions are more explicit, and tend to rely less on
state such as the current remoteType when possible. This makes reasoning
about where a specific load will complete easier.
3. Additional checks are made after a "WebContent" behavior is selected to
ensure that if an existing document in the same BCG is found, the load will
finish in the required content process. This should make dynamic checks such
as Android's logged-in site isolation easier to implement.
4. ProcessIsolation logging is split out from DocumentChannel so that it's
easier to log just the information related to process selection when
debugging.
5. Null result principal precursors are considered when performing process
selection.
Other uses of E10SUtils for process selection have not yet been migrated to the
new design as they have slightly different requirements. This will be done in
follow-up bugs.
Differential Revision: https://phabricator.services.mozilla.com/D120673