Changes:
Most tests have smaller value for the `minDiff` side of things, and a slightly larger value for the `maxPixelCount` side of things when ubunt1804 runs the test. Adjust the expectation so that ubuntu1604 and ubuntu1804 both pass for the time being, then tighten the values once ubuntu1604 is decommissioned.
Differential Revision: https://phabricator.services.mozilla.com/D57560
--HG--
extra : moz-landing-system : lando
Changes:
As with other ubuntu1804 reftests, the difference counts need to be updated when run with `webrender`. Once migration is complete, tighten the values.
Differential Revision: https://phabricator.services.mozilla.com/D57604
--HG--
extra : moz-landing-system : lando
Changes:
Some tests in `layout/reftests/svg/text/reftests.list` now pass unconditionally when run on ubuntu1804. Permit pixel differential value of 0 for these tests while ubuntu1604 and ubutnu1804 coexist, leave the bug open then once the migration is complete look to remove the redundant annotation.
Differential Revision: https://phabricator.services.mozilla.com/D57546
--HG--
extra : moz-landing-system : lando
Changes:
This test is a permafail on ubuntu1804, and should be marked as such as the migration to ubunt1804 is actively underway with target date of end of December 2019.
With a fail-if annotation, the hope is that if this test suddenly begins passing we will be notified of it (as opposed to skipping it outright).
Differential Revision: https://phabricator.services.mozilla.com/D57381
--HG--
extra : moz-landing-system : lando
Not having a copy-assignment operator is a massive footgun (as it won't call the
right constructors / destructors). :(
Filed https://bugzilla.mozilla.org/show_bug.cgi?id=1604075 for an analysis that
would've caught this.
One of my WIP patches adding a heap allocation to LengthPercentage caught this.
While at it, add non-const versions of the arrow and deref operators and fix
operator!= too (which doesn't compile, but we don't use it so C++'s template
madness says it's just fine).
Differential Revision: https://phabricator.services.mozilla.com/D57257
--HG--
extra : moz-landing-system : lando
In this way, we can avoid duplicates in FlexItem's normal constructor
and 'strut' constructor.
Differential Revision: https://phabricator.services.mozilla.com/D55821
--HG--
extra : moz-landing-system : lando
Changes:
With permission from the feature owner, this test is marked with a permissive fuzzy-if on ubuntu1804.
Once ubuntu1804 migration is complete, the annotation should be tightened to restrictive.
Differential Revision: https://phabricator.services.mozilla.com/D55552
--HG--
extra : moz-landing-system : lando
Merely checking for having a displayport isn't enough, because the paint to
tell APZ about the new scroll frame could still be pending.
Differential Revision: https://phabricator.services.mozilla.com/D56662
--HG--
extra : moz-landing-system : lando
Changes:
With acknowledgement from the test owner, add a permissive `fuzzy-if` annotation for the test such that ubuntu1804 no longer reports a failure, but the test continues running as intended on ubuntu1604.
Once the migration to ubuntu1804 is complete, the annotation is to be changed to a permanent `fails-if` due to the large pixel variation.
Differential Revision: https://phabricator.services.mozilla.com/D55554
--HG--
extra : moz-landing-system : lando
Changes:
Annotate the reftest failure on ubuntu1804 with a permissive `fuzzy-if` annotation designed to work with both ubuntu1604 and ubuntu1804.
Once the switchover to ubuntu1804 takes place, tighten the pixel range such that future failures can be caught.
Differential Revision: https://phabricator.services.mozilla.com/D55030
--HG--
extra : moz-landing-system : lando
Changes:
Insert permissive `fuzzy-if` annotation to the test to accommodate ubuntu1804 where the test fails due to large pixel difference.
Once the migration completes the pixel difference value will be tightened.
Differential Revision: https://phabricator.services.mozilla.com/D57229
--HG--
extra : moz-landing-system : lando
Changes:
Insert a permissive `fuzzy-if` to accommodate ubuntu1804 where the test fails due to large pixel difference.
Once ubuntu1804 migration completes, tighten the annotation to a restrictive one.
Differential Revision: https://phabricator.services.mozilla.com/D57228
--HG--
extra : moz-landing-system : lando
Changes:
Insert a permissive `fuzzy-if` for the `number-selected.html` test to accommodate ubuntu1804 where the test fails due to large pixel difference.
Once the migration to ubuntu1804 is complete, the permissive range will be tightened such that future deviations can be caught.
Differential Revision: https://phabricator.services.mozilla.com/D57227
--HG--
extra : moz-landing-system : lando
These reftests can be safely removed because all css-namespace tests are
pass in both received/reftest.list and wpt reftests (no
testing/web-platform/meta/css/css-namespaces folder).
The only manual modification in this patch are removing
`os.path.join("css-namespaces"),` in import-tests.py.
Others parts are generated by running import-tests.py on a wpt
repository with commit 15f199c91a72b0d51bf0a12b3b77827ecb5051ff.
Depends on D56376
Differential Revision: https://phabricator.services.mozilla.com/D56377
--HG--
extra : moz-landing-system : lando
When executing `./import-tests.py` in a python virtualenv, the path of
the python interpreter won't be at /usr/bin/python. By using
`/usr/bin/env python`, it works as the system can find a python
interpreter in $PATH.
Differential Revision: https://phabricator.services.mozilla.com/D56376
--HG--
extra : moz-landing-system : lando
While it calls `RestyleManager::ContentStateChanged()`, it blocks script
with `nsAutoCauseReflowNotifier`. Therefore, it should be marked as
`MOZ_CAN_RUN_SCRIPT_BOUNDARY` at least (looks like the other override,
`DocAccessible::ContentStateChanged()` does not run script).
There is a concern about the lifetime of `RestyleManager`. It's destroyed
when `nsPresContext::DetachPresShell()` is called. It's called by
`PresShell::Destroy()` and destructor of `nsPresContext`. The latter is
safe since `PresShell` owns `mPresContext` and it's never cleared. However,
I'm not sure about the former. It might be better to create blocker of
synchronous handling of `PresShell::Destroy()`.
And also this does not make `Document::ContentStateChanged()` use
`RefPtr<PresShell>` at calling it because it might cause performance
regression, but it does not do anything after destroying
`nsAutoCauseReflowNotifier`.
Finally, for guaranteeing that the lifetime of `PresShell::mPresContext` is
longer than `PresShell`, this makes it to `RefPtr<nsPresContext> const`.
However, initializing it in constructor breaks other objects' initialization
process since they assume that `PresShell::GetPresContext()` won't return
valid pointer until the `nsPresContext` is attached. For solving this issue
safe, this patch keeps setting `mPresContext` in `Init()` with `const_cast`
hack.
Differential Revision: https://phabricator.services.mozilla.com/D55804
--HG--
extra : moz-landing-system : lando
foo ? true : false
or:
foo ? false : true
Have always a nicer way to be written.
Differential Revision: https://phabricator.services.mozilla.com/D56842
--HG--
extra : moz-landing-system : lando
When print previewing, use the content-viewer bounds as the visible area of the
document.
We used to get this fixed up via BrowserChild::RecvUpdateDimensions, but no
longer do.
Setting the page size without pixel scaling as the visible size makes no sense.
This code is generally pretty messy, it'd be good to try to unify it somehow
with the non-printing code.
Differential Revision: https://phabricator.services.mozilla.com/D57154
--HG--
extra : moz-landing-system : lando
This is generally pretty straightforward, and rewrites nearly all calls. It
skips the ones that it can detect using frame script globals like
`sendAsyncMessage`, though.
Differential Revision: https://phabricator.services.mozilla.com/D53740
--HG--
extra : moz-landing-system : lando
It calls `Document::FlushPendingNotification()` so that we should mark it
as `MOZ_CAN_RUN_SCRIPT`.
And the method calls it of `mDocument` and `mDocument` is never modified
after it's initialized. Therefore, we can move the initializer to the
constructor and make `RefPtr<Document>` to `RefPtr<Document> const`. Thus,
we can avoid unnecessary auto `RefPtr`.
Differential Revision: https://phabricator.services.mozilla.com/D55803
--HG--
extra : moz-landing-system : lando
Changes:
Partially revert the changes made in D56572 because it appears reftests running on macosx1014 also rely on the `skiaContent` manifest.
The unified manifest condition caused the `macosx1014-shippable-qr` tasks to report a failure with `1-1,1-1`. A separate bug should be used to update the expected failure values for macosx1014 if appropriate.
Differential Revision: https://phabricator.services.mozilla.com/D56861
--HG--
extra : moz-landing-system : lando
It dispatches a DOM event so that it should be marked as `MOZ_CAN_RUN_SCRIPT`.
Differential Revision: https://phabricator.services.mozilla.com/D55801
--HG--
extra : moz-landing-system : lando
Otherwise code like StyleChildrenIterator won't find it, plus it is the right
thing to do anyway.
You don't really want this to inherit from the root element, even though given
this content is under our control (only in chrome documents) it is less of an
issue.
Differential Revision: https://phabricator.services.mozilla.com/D56637
--HG--
extra : moz-landing-system : lando
The line-box's visual overflow area includes margin/border/padding area on
its descendants, as well as extra empty space for text-indent and text-align.
None of that area contains text & merits a backplate. So, we can't rely on
the line-box's visual overflow area to determine the backplate -- we have to
actually dig down to find the text frames.
Also, this patch simplifies our suite of backplate reftests in several ways.
Most notably, this patch:
- removes unnecessary backplatable whitespace in the testcase (since that's
awkward to mock up in the reference case).
- uses a linear-gradient for the background instead of a longer data URI.
- uses the predictably-sized Ahem font inside of tests' form controls.
Differential Revision: https://phabricator.services.mozilla.com/D52065
--HG--
extra : moz-landing-system : lando
The line-box's visual overflow area includes margin/border/padding area on
its descendants, as well as extra empty space for text-indent and text-align.
None of that area contains text & merits a backplate. So, we can't rely on
the line-box's visual overflow area to determine the backplate -- we have to
actually dig down to find the text frames.
Also, this patch simplifies our suite of backplate reftests in several ways.
Most notably, this patch:
- removes unnecessary backplatable whitespace in the testcase (since that's
awkward to mock up in the reference case).
- uses a linear-gradient for the background instead of a longer data URI.
- uses the predictably-sized Ahem font inside of tests' form controls.
Differential Revision: https://phabricator.services.mozilla.com/D52065
--HG--
extra : moz-landing-system : lando
So the reason we get the current bogus result is that overflow:hidden
are block-formatting contexts (BFC) and in paginated mode they are
implemented as block frames with NS_BLOCK_CLIP_PAGINATED_OVERFLOW
to do the clipping. When we have a child float that doesn't fit,
we split it and currently we report that as Overflow-Incomplete
(which is correct for a normal block, but not a BFC) which leads
to creating an overflow-container continuation which has zero
size which we then clip. We should report it as Incomplete
instead, except if we already are an overflow-container.
Differential Revision: https://phabricator.services.mozilla.com/D56416
--HG--
extra : moz-landing-system : lando
The idea of this patch is to try to not use oberver mechanism as possible. To
achieve that, it introduces deleteByOriginAttributes() to cleaners. Different
from other methods, it would only be executed if it's implemented from a
cleaner.
It doesn't remove oberver mechanism entirely since some cleaners are still using
that for other deleteByXXX() functions. So, it only applies removing stuff to
PushService, QuotaManagerService, ServiceWorkerManager, nsPermissionManager,
nsApplicationCacheService, and nsCookieService.
Since the original issue is related to QuotaManagerService, it adds xpcshell
test under the dom/quota/test/unit/ to ensure the behavior won't be changed
accidentally in the future.
Differential Revision: https://phabricator.services.mozilla.com/D33758
--HG--
extra : moz-landing-system : lando
Note that `TextControlState::BindToFrame()` may also run script if it's
called without script blocker. However, it shouldn't occur. Therefore,
we don't need to mark it `MOZ_CAN_RUN_SCRIPT`, but we should check
script blocker existence with `MOZ_ASSERT`.
Differential Revision: https://phabricator.services.mozilla.com/D55776
--HG--
extra : moz-landing-system : lando
Similar to the previous patch, it may notify selection listeners of native
anonymous tree in `<input>` and `<textarea>` element.
Differential Revision: https://phabricator.services.mozilla.com/D55774
--HG--
extra : moz-landing-system : lando
This is generally pretty straightforward, and rewrites nearly all calls. It
skips the ones that it can detect using frame script globals like
`sendAsyncMessage`, though.
Differential Revision: https://phabricator.services.mozilla.com/D53740
--HG--
extra : moz-landing-system : lando
This reference is necessary when sending session storage data for
all browsing context to the parent process. Note that it entails
making SessionStorageManager a cycle collection participant, since
adding this reference creates a cycle.
Differential Revision: https://phabricator.services.mozilla.com/D55659
--HG--
extra : moz-landing-system : lando
Changes:
With approval from test owner, expand the pixel difference value of `transformations-1.html` reftest such that test also passes under ubuntu1804.
Differential Revision: https://phabricator.services.mozilla.com/D56572
--HG--
extra : moz-landing-system : lando
This works in chrome because they don't event create an image box for this case,
which is totally against the spec.
The spec doesn't consider an image with a null image request, but our behavior
changes in some other places as well because of it...
Depends on D56367
Differential Revision: https://phabricator.services.mozilla.com/D56368
--HG--
extra : moz-landing-system : lando
When we apply the transformation on the <g> element, its transformation also
performs on its child elements. So Motion-path should also work well in this
case.
For offset-path:path(), we have to make sure the element is on the svg path, no
matter what is its x and y values. That's why we have to calculate the
the frame position of the transformed SVG element if transform-box is fill-box.
However, for <g> element, its nsIFrame::GetPosition() is (0, 0), so we have to
calculate the geometry bbox instead, to make sure it works well on <g> or other
svg transformed elements.
Differential Revision: https://phabricator.services.mozilla.com/D55888
--HG--
extra : moz-landing-system : lando
We enable the pref in the harness so that local testing with --enable-fission will get the same results as treeherder.
Differential Revision: https://phabricator.services.mozilla.com/D56313
--HG--
extra : moz-landing-system : lando
This is covered by existing tests, via the removal of the rule in forms.css
Differential Revision: https://phabricator.services.mozilla.com/D56355
--HG--
extra : moz-landing-system : lando
This reference is necessary when sending session storage data for
all browsing context to the parent process. Note that it entails
making SessionStorageManager a cycle collection participant, since
adding this reference creates a cycle.
Depends on D55276
Differential Revision: https://phabricator.services.mozilla.com/D55659
--HG--
extra : moz-landing-system : lando
I was going to send a test for `:focus` via wpt, but then realized it was
probably not spec-compliant with the new rules people want to follow for
:focus, so I filed https://github.com/w3c/csswg-drafts/issues/4555 instead.
Testing `:hover` / `:active` via wpt looked quite a bit of a hassle.
Differential Revision: https://phabricator.services.mozilla.com/D55591
--HG--
extra : moz-landing-system : lando
This includes more bitflag operators, which means we can remove some slightly
ugly code.
Differential Revision: https://phabricator.services.mozilla.com/D56308
--HG--
extra : moz-landing-system : lando
Now that we have C++17, and thus inline const, we can do this.
Depends on D56306
Differential Revision: https://phabricator.services.mozilla.com/D56307
--HG--
extra : moz-landing-system : lando
This intended to fix some windows builds, but that didn't end up working.
This removes some unused members and such, and fixes some missing includes
that they uncover (whoops).
This was needed because some windows headers used in the sandbox redefine STRICT
(which is used by `StyleContain`) and `TRANSPARENT`, which is used by some WR
stuff.
Differential Revision: https://phabricator.services.mozilla.com/D56317
--HG--
extra : moz-landing-system : lando
That is, we consume the synthesized mouse move events without doing
anything in PressCaretState and DragCaretState.
Differential Revision: https://phabricator.services.mozilla.com/D52113
--HG--
extra : moz-landing-system : lando
Also, don't drain OverflowList unless we need to.
And make EnsureChildContinuation deal with continuations going from being
normal continuations to overflow-continuations (and vice versa) better.
Differential Revision: https://phabricator.services.mozilla.com/D55644
--HG--
extra : moz-landing-system : lando
FTR, the origin of the Reset() call in the else-branch I'm removing
is bug 397428. I think this is before we had a break-before status,
or at least before our table code knew how to deal with it, so it
might have been correct to change an INCOMPLETE status into COMPLETE
in those days. It seems the intent was to push the row-group:
https://bugzilla.mozilla.org/show_bug.cgi?id=397428#c14
"... and they all set aStatus to NS_FRAME_COMPLETE, which is logical
because we want to push this entire rowgroup to a new page and try
to reflow the row again..."
Nowadays though, returning a break-before status is the correct
way to do that.
Differential Revision: https://phabricator.services.mozilla.com/D56157
--HG--
extra : moz-landing-system : lando
Previously we were just checking overflow hidden here, which is not enough because we can scroll overflow hidden if we are zoomed in.
Differential Revision: https://phabricator.services.mozilla.com/D55918
--HG--
extra : moz-landing-system : lando
This is generally pretty straightforward, and rewrites nearly all calls. It
skips the ones that it can detect using frame script globals like
`sendAsyncMessage`, though.
Differential Revision: https://phabricator.services.mozilla.com/D53740
--HG--
extra : moz-landing-system : lando
This is generally pretty straightforward, and rewrites nearly all calls. It
skips the ones that it can detect using frame script globals like
`sendAsyncMessage`, though.
Differential Revision: https://phabricator.services.mozilla.com/D53740
--HG--
extra : moz-landing-system : lando
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.
find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
if [ -n "$interfaces" ]; then
if [[ "$interfaces" == *$'\n'* ]]; then
regexp="\("
for i in $interfaces; do regexp="$regexp$i\|"; done
regexp="${regexp%%\\\|}\)"
else
regexp="$interfaces"
fi
interface=$(basename "$path")
rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
if [ $hits -eq 0 ]; then
echo "Removing ${interface} from ${path2}"
grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
mv -f "$path2".tmp "$path2"
fi
done
fi
done
Differential Revision: https://phabricator.services.mozilla.com/D55443
--HG--
extra : moz-landing-system : lando
As the width and height arguments to ResizeReflow are treated as constraints,
not the final size, in that case.
Differential Revision: https://phabricator.services.mozilla.com/D56108
--HG--
extra : moz-landing-system : lando
Historically there were kludges in how we chose to snap layers and
transforms, nominally for performance reasons (see bug 602200 comment
36). WebRender appears to render what was considered at the time the
ideal outcome, which also makes the most sense as a content author.
Given we are otherwise lacking a reason to continue with the old
behaviour, this patch adds a new test case to confirm WebRender snaps in
the ideal fashion, and non-WebRender does not.
Differential Revision: https://phabricator.services.mozilla.com/D55852
--HG--
extra : moz-landing-system : lando
The size of the visible region, for either a painted layer or a webrender blob
image, is calculated from the building rects of the contained display items, in
local-space. This should be restricted to the display port, to prevent the
visible regions growing too large leading to excessive memory usage.
For items within large scale transforms, the local-space visible region should
be very small. However, as we do not allow fractional sizes, the size of the
visible region will be rounded up to at least 1. This means that when we convert
the region back to screen-space, we are multiplying the extremely large scale by
at least one, rather than by a much smaller fraction. This can result in
incredibly large visible regions, and was causing OOM crashes.
To avoid this, we clamp the maximum chosen scale for these layers/blob images to
32k. Layers affected by this problem should have a visible region with
dimensions of 1 or 2, so this limits the resulting screen-space size for
those to an acceptable value. Layers with visible regions sized greater than
that should not have scales anywhere near this large, so will not be affected.
Differential Revision: https://phabricator.services.mozilla.com/D55691
--HG--
extra : moz-landing-system : lando
These values start out false in the other two ways display lists can be build:
- Without retained display lists, a new nsDisplayList object is created which starts out with these values being false.
- When partial update succeeds (or at least gets far enough to run PreProcessDisplayList), RestoreState() is called on the root display list which sets these values to false.
But when partial update fails, we have an old nsDisplayList object and we were not clearing those values.
Differential Revision: https://phabricator.services.mozilla.com/D55866
--HG--
extra : moz-landing-system : lando
Some of these were obvious typos. Others probably reflect once-correct components
that have been combined, split, or otherwise obsoleted; for these I've tried to
use the component associated with the bugs for recent changes to the affected files.
Differential Revision: https://phabricator.services.mozilla.com/D55756
--HG--
extra : moz-landing-system : lando
* Removed the STATUS_LINK constant.
* Removed the statusType parameter from nsIWebBrowserChrome::setStatus.
* Removed the setStatusWithContext method. No one uses the information from
statusContext.
* Removed the nsIWebBrowserChrome2 interface as setStatusWithContext was the
only method.
Differential Revision: https://phabricator.services.mozilla.com/D55195
--HG--
extra : moz-landing-system : lando
Note that the GetXULPrefSize API might still do a "::BoxReflow" under the hood,
inside its call to RefreshSizeCache.
Also: we can't use GetLogicalUsedMargin() in this special case, because the
child may not have been reflowed (which is what populates the "used margin"
frame property). So instead, we pull the margin off of the reflow state.
As noted in the code-comment alongside that call, this won't work with
percent margins, but hopefully we can just avoid those in our frontend code
that uses XUL-in-grid-items.
Also, this patch makes the grid call ReflowChild() on its grid items using
a loose guess at their position, rather than at position 0,0. This helps
popup frames figure out their size during reflow and size their children
properly.
Differential Revision: https://phabricator.services.mozilla.com/D54886
--HG--
extra : moz-landing-system : lando
Using Rect() will work properly when mDrawTarget does not have 0,0
origin. It also makes the code's intention more clear.
Differential Revision: https://phabricator.services.mozilla.com/D55337
--HG--
extra : moz-landing-system : lando