Had to get rid of dependency on MustPrune because this happens at
instantiaton. If an accessible loses or gains a child in its lifetime
the interfaces it supports cannot change.
Differential Revision: https://phabricator.services.mozilla.com/D241690
There are multiple problems and inconsistencies in the way we previously calculated text bounds in various places:
1. TextLeafRange::WalkLineRects and TextLeafRange::Bounds calculated bounds inclusive of the range end. However, everywhere else, range ends are exclusive.
2. To compensate for this, HyperTextAccessibleBase::TextBounds walked back 1 character from the end before calling TextLeafRange::Bounds. However, other callers (UIA and Mac) didn't do this. Including the range end meant we included the bounds for an additional character or even an entire line in some cases.
3. When lines end with a line feed character, we tried to include this in the bounds calculation. Since line feeds have a 0 rect, this messed up the calculation.
4. Even though WalkLineRects constrained line bounds to the end of the range, the provided sub-ranges were not constrained.
To fix these problems, TextLeafRange::WalkLineRects and TextLeafRange::Bounds now explicitly return bounds and sub-ranges constrained to, but exclusive of, the end of the range.
HyperTextAccessibleBase::TextBounds has been updated accordingly.
The line feed character is ignored when calculating line bounds.
Co-authored-by: Nathan LaPre <nlapre@mozilla.com>
Differential Revision: https://phabricator.services.mozilla.com/D237142
For consistency with the rest of the build system, have gradle build folders be
created in TOPOBJDR. Put the logic in shared-settings.gradle and apply it to all
projects. Existing gradle and taskcluster configuration uses the 'gradle/build'
prefix, so continue using that for now.
Only apply this when building top-level for now since a fair bit of automation
of fenix/focus/a-c projects expects build artifacts in the source directory.
Plugins are compiled as "composite builds" so they somewhat exist in their own
world. For simplicity, just manually specify the `buildDir` for each plugin.
Differential Revision: https://phabricator.services.mozilla.com/D240116
I originally intended to reset the NON_PACKED flag in this code if there were no holes, but after a closer look, I realized that we exit early from the loop once we've seen enough non-holes, but resetting the flag would require us to examine every element.
Differential Revision: https://phabricator.services.mozilla.com/D241534
This seemed like a reasonable place to draw the line. Combined with the previous patch, code like this:
```
let arr = new Array(50000);
for (let i = arr.length - 1; i >= 0; i--) {
arr[i] = 0;
}
```
is 9-10x faster.
Differential Revision: https://phabricator.services.mozilla.com/D241533
With this patch, we have jitcode support for storing anywhere within the allocated elements capacity, or one item past.
The assertion in addDenseElementPure is no longer correct because we reallocate the capacity before we initialize the holes and update initLength.
We could add support for writing more than one element past the capacity, but we'd have to call a different VM function and think more carefully about when should go sparse.
Differential Revision: https://phabricator.services.mozilla.com/D241532
The two code paths were already almost identical. The only differences were that the Ion code used setupAlignedABICall and had a small optimization to reuse the condition flags an earlier test (on architectures with condition flags).
Differential Revision: https://phabricator.services.mozilla.com/D241531
Without this preference set in the test, none of the built-in addons
(including the newtab build-in addon) will be available during the
test.
Differential Revision: https://phabricator.services.mozilla.com/D241464
This also updates the addon-jar.mn script to remove the static chrome / resource registrations,
as this is taken care of in resource-mapping.js, and causes interesting test failures in CI
when included (specifically, if the manifest is refreshed after resource-mapping has run).
Differential Revision: https://phabricator.services.mozilla.com/D241463
Otherwise, the HTMLInputElement doesn't handle the mPickerRunning flag right if
it is in parent process. There is no such problem on content process because
the IPC is async.
Differential Revision: https://phabricator.services.mozilla.com/D241440
The 'safe' flag actually causes overflow to be lost, in cases where the
flex container is set up to scroll in the reverse direction. The spec says
to use that flag here, but I don't think other browsers do (and we didn't
either until recently); and I'm proposing we change the spec in
https://github.com/w3c/csswg-drafts/issues/11937
Differential Revision: https://phabricator.services.mozilla.com/D241670
No other browser shows favicon on notifications, and even though the the latest macOS 15.3.2 passes the condition to enter the block, it does not make any actual visual change anymore.
Differential Revision: https://phabricator.services.mozilla.com/D241457
The ANDROID_SERIAL variable is used adb and gradle, as well as other parts of
our scripts. This leaves the DEVICE_SERIAL checks in place as a fallback since
some of our hardware CI workers still set that variable to indicate device.
Going forward, ANDROID_SERIAL should be prefered for compatibility with android
ecosystem.
Differential Revision: https://phabricator.services.mozilla.com/D237288
Fix issues with mozrunner when multiple devices/emulators are on system.
- Resolve inconsistent states between device_serial argument and
DEVICE_SERIAL environment variable.
- Ignore detached or unauthorized devices when deciding which to use or
determining if selection is ambiguous.
- Fail verify_android_device if device selection is ambiguous.
Differential Revision: https://phabricator.services.mozilla.com/D239849
Currently we trigger write barriers when we destroy a weakmap but this is
ununecessary. This removes them by making the actual storage of the map
unbarriered, and casting it to a barriered map for all mutator accesses.
Differential Revision: https://phabricator.services.mozilla.com/D241204