This is in preparation to disable (but not remove) support for these customizations
by default. We want to avoid scanning for these files on start-up, but also don't want
to make our users jump through a pref-flipping hoop to get their customizations back.
So we'll detect those files and flip the pref for this release. For the next release,
we'll not load those files unless the pref is flipped.
Differential Revision: https://phabricator.services.mozilla.com/D30414
--HG--
extra : moz-landing-system : lando
Before this change, only elements inside the shadow root tree were scanned for the
draggable=true attribute. We now check the flattened tree instead so an element
inside a shadow root can start a drag for an element containing the shadow root.
Differential Revision: https://phabricator.services.mozilla.com/D30365
--HG--
extra : moz-landing-system : lando
The patch in bug 1507744 was not sufficient by itself, as the line-breaker could still accumulate a single "current word" across a text-run boundary, and then a single word-break value would be applied to it. We need to flush the line-breaker when word-break changes, so that each part of the word will have break opportunities set according to the appropriate value.
Differential Revision: https://phabricator.services.mozilla.com/D30260
--HG--
extra : moz-landing-system : lando
Move ApplyOpacity(), CanApplyOpacity(), Paint() and PaintWithClip() methods to nsPaintedDisplayItem
Differential Revision: https://phabricator.services.mozilla.com/D30225
--HG--
extra : moz-landing-system : lando
Add multicol-width-004.html and multicol-width-005.html to test "width:
min-content" and "width: max-content" with column-span:all children.
There's no size containment in these tests.
Note it may be worth to reuse nsBlockFrame's mCachedMinISize and
mCachedPrefISize to cache intrinsic size for ColumnSetWrapperFrame, but
this can be done separately.
Differential Revision: https://phabricator.services.mozilla.com/D29616
--HG--
extra : moz-landing-system : lando
If column-span is enabled, nsColumnSetFrame becomes an inner frame under
ColumnSetWrapperFrame, and that outer frame is then where we should be
handling size containment.
This patch doesn't change the logic but make the logic easier to
simplify once we start eliminating column-span pref.
Differential Revision: https://phabricator.services.mozilla.com/D29615
--HG--
extra : moz-landing-system : lando
The functions move to ColumnUtils will be used by ColumnSetWrapperFrame
to implement GetPrefISize() and GetMinISize().
Also, I verify locally that non-unified build is still working by
s/UNIFIED_SOURCES/SOURCES/ in layout/generic/moz.build.
Differential Revision: https://phabricator.services.mozilla.com/D29614
--HG--
extra : moz-landing-system : lando
ColumnSetFrame always tries to reflow column content regardless of it's
dirtiness. Making ColumnSetWrapperFrame's children dirty can have the
same effect.
Differential Revision: https://phabricator.services.mozilla.com/D29435
--HG--
extra : moz-landing-system : lando
Per bug 1487927, margin-bottom value is not always rendered as expected
with our column balancing algorithm. I'd like to remove it from
column-balancing-nested-001.html, and add <br> to separate each cases.
Differential Revision: https://phabricator.services.mozilla.com/D30287
--HG--
extra : moz-landing-system : lando
We use `columnCount == aConfig.mBalanceColCount - 1` in other places to
determine if we are at the last column. Advancing the column count at
the end of the loop make the condition consistent.
Differential Revision: https://phabricator.services.mozilla.com/D29433
--HG--
extra : moz-landing-system : lando
In order to show all popups on Wayland we need to set popup parent runtime for popups which don't have
fixed parent. For instance popup menus (fired after right button mouse click) can be issued on top of another popup
and we need to follow that connection on Wayland.
We track all open (active) popups to:
- close all visible tooltip windows when we're going to open another tooltip
- close concurrent popup on the same level when a new one is about to open
- get latest active popup as a parent for a new tooltip windows
- get latest active popup as a parent for a new popup menu without fixed parent
Differential Revision: https://phabricator.services.mozilla.com/D29348
--HG--
extra : moz-landing-system : lando
Test coverage for this is provided in the web platform test
html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-samedoc.html.
Differential Revision: https://phabricator.services.mozilla.com/D30105
--HG--
extra : moz-landing-system : lando
ColumnSetFrame always tries to reflow column content regardless of it's
dirtiness. Making ColumnSetWrapperFrame's children dirty can have the
same effect.
Differential Revision: https://phabricator.services.mozilla.com/D29435
--HG--
extra : moz-landing-system : lando
We use `columnCount == aConfig.mBalanceColCount - 1` in other places to
determine if we are at the last column. Advancing the column count at
the end of the loop make the condition consistent.
Differential Revision: https://phabricator.services.mozilla.com/D29433
--HG--
extra : moz-landing-system : lando
The test itself is reasonable, except that it reads scroll positions
from the main thread. With APZ enabled we need to flush any pending APZ
repaints before reading these scroll positions. So changing the
waitForAllPaints to the APZ-flushing variant makes that happen, and the
test passes.
Depends on D29921
Differential Revision: https://phabricator.services.mozilla.com/D29922
--HG--
extra : moz-landing-system : lando
Unfortunately, `EventChainVisitor` does not grab the `nsPresContext` with
`RefPtr` by itself. Therefore, there is no guarantee of the lifetime without
checking the origin when its subclasses are instantiated. This patch changes
it and subclasses to `MOZ_STACK_CLASS` since only `EventDispatcher::Dispatch()`
creates them in the stack with given `nsPresContext`. Additionally, it's
already been marked as MOZ_CAN_RUN_SCRIPT_BOUNDARY`. Therefore, the
`nsPresContext` instance has already been guaranteed its lifetime by the
caller. For making this fact stronger, this patch marks their constructors
as `MOZ_CAN_RUN_SCRIPT`. Therefore, nobody can create those instances without
guaranteeing the lifetime of `nsPresContext` and `dom::Event`. Note that
it may look like that `mPresContext` of `EventChainPostVisitor` is not
guaranteed. However, `EventChainPreVisitor` which gives `nsPresContext` to it
is also a stack only class. So, it won't be deleted before
`EventChainPostVisitor` instance.
Differential Revision: https://phabricator.services.mozilla.com/D30010
--HG--
extra : moz-landing-system : lando
Typically this would be handled by the visible region of the layer
changing. However, since we build the container layer for the filter
item directly the visible region doesn't get set or checked. As a
shortcut to using more of FLB we just ensure the building rect hasn't
changed.
The situations under which this bugs shows up are somewhat rare:
- The filtered item needs to be in transform so that it's bounds
are not changed by scrolling.
- The filtered item needs to contain items that change their drawing
depending on the building rect. In this case an image with downscale
on decode.
- The filter needs to be unsupported by WebRender.
Differential Revision: https://phabricator.services.mozilla.com/D29879
--HG--
extra : moz-landing-system : lando
Converting the NS_STYLE_BORDER definitions in to enumerated classes as
per bug 1277133.
The original constants broke the convention used by the rest of the
definitions as the CSS property being described is `border-collapse`,
so corrections were made with the migration to the enumerated class.
Differential Revision: https://phabricator.services.mozilla.com/D29951
--HG--
extra : moz-landing-system : lando
Like Part 2, I choose mCachedPrefISize because grid and flex container
are using it.
Differential Revision: https://phabricator.services.mozilla.com/D29748
--HG--
extra : moz-landing-system : lando
Instead of renaming it to mMinISize, I choose mCachedMinISize because
both grid and flex container frames use mCachedMinISize for similar
purpose.
Differential Revision: https://phabricator.services.mozilla.com/D29747
--HG--
extra : moz-landing-system : lando
This patch is generated by running the following script under layout/,
and then manually delete the FIXME comment in LayoutConstants.h
#!/bin/bash
function rename() {
find .\
-type f\
! -path "./obj*"\
! -path "./.git"\
! -path "./.hg"\
\( -name "*.cpp" -or\
-name "*.h" \)\
-exec sed -i -e "s/$1/$2/g" "{}" \;
}
rename NS_INTRINSIC_WIDTH_UNKNOWN NS_INTRINSIC_ISIZE_UNKNOWN
Differential Revision: https://phabricator.services.mozilla.com/D29746
--HG--
extra : moz-landing-system : lando
Consumers that just care about this boolean state should use this instead of
getting the JSObject* directly.
Differential Revision: https://phabricator.services.mozilla.com/D29705
--HG--
extra : moz-landing-system : lando
Added a test to test the empty block (didn't submit to WPT because it's not
clear to me if the outlines of the two spans should form a single rect or not).
Differential Revision: https://phabricator.services.mozilla.com/D29819
--HG--
extra : moz-landing-system : lando
Due to the syntax limitation in failures.list, I cannot mark
multicol-rule-004.xht as fails with column-span enabled and success with
column-span disabled simultaneously. Luckily, we had another copy of it
in testing/web-platform/tests/css/css-multicol/multicol-rule-004.xht, We
can use it to test with column-span disabled for now.
Differential Revision: https://phabricator.services.mozilla.com/D29419
--HG--
extra : moz-landing-system : lando
Bug 1547939 added a bunch of extra tests for three properties (background, mask,
and -webkit-mask). This made them time out more frequently in the Android
emulator.
Request a longer timeout to address this. Alternative is maybe just removing the
tests or such, I don't think they're of particularly great value.
Differential Revision: https://phabricator.services.mozilla.com/D29650
--HG--
extra : moz-landing-system : lando
I'm still wondering why is bing.com doing this but oh well. This should address
the regression and probably even improve it.
I don't think these documents are observable from content (at least I haven't
found how) so this should be safe. Let me know if you want me to just wrap the
whole stylesheet in an `@media (width > 0) and (height > 0)` rule or such.
Differential Revision: https://phabricator.services.mozilla.com/D29640
--HG--
extra : moz-landing-system : lando
This is a first step towards allowing (some) batching work to be
done during prepare_prims pass rather than render pass building.
This is prep work related to output different batch lists for a given
picture (e.g. a different batch list per dirty region), rather than
replaying the same batch list.
Differential Revision: https://phabricator.services.mozilla.com/D29445
--HG--
extra : moz-landing-system : lando
This early return is just an optimization to prevent the DAG from becoming too complex, and if we're keeping the list linked, then we know it won't be getting more complex on the current paint.
Future paints that actually modify the list will still take this path.
Differential Revision: https://phabricator.services.mozilla.com/D29408
--HG--
extra : moz-landing-system : lando
The comment in nsDisplayTransform::GetTransformForRendering() clearly
says that |aOutOrigin| should return the same offset as GetTransform().
GetTransform() will pass the offset to GetResultingTransformMatrix()
which will round it in many cases to avoid subpixel blurry rendering.
But GetTransformForRendering() doesn't take this rounding into account,
thus contradicting the intent described by the comment.
This rounding is important to keep subpixel behavior consistent with
or without webrender enabled. Currently, SVG will be rendered blurry
in some cases if it's at a subpixel position. After fixing the problem
in non-webrender case, the strange blur still occurs in webrender case.
It turns out to be caused by this inconsistency.
Differential Revision: https://phabricator.services.mozilla.com/D29495
--HG--
extra : moz-landing-system : lando
We should snap subpixel value at nsDisplayTransform::GetResultingTransformMatrix
for outer svg and the anon child. This will solve blurry rendering for subpixel position
when webrender is __not__ enabled.
Differential Revision: https://phabricator.services.mozilla.com/D29344
--HG--
extra : moz-landing-system : lando
This adds the same bailing out behavior that was added in bug 1402109 to a number
of other functions implementing SVG DOM text methods.
Differential Revision: https://phabricator.services.mozilla.com/D25550
--HG--
extra : moz-landing-system : lando
This adds the same bailing out behavior that was added in bug 1402109 to a number
of other functions implementing SVG DOM text methods.
Differential Revision: https://phabricator.services.mozilla.com/D25550
--HG--
extra : moz-landing-system : lando
This patch makes widget use `mozilla::PresShell` directly rather than via
`nsIPresShell` and changes some pure virtual methods of `nsIPresShell` which
called by widget to `mozilla::PresShell`'s non-virtual methods.
Differential Revision: https://phabricator.services.mozilla.com/D29112
--HG--
extra : moz-landing-system : lando
We always include the combinator for pseudo-elements now (not including it was
just an optimization) in order to not match when nested pseudo-elements are
involved.
We could add a more generic check in `matches_simple_selector` like:
```
if element.is_pseudo_element() {
match *selector {
Component::PseudoElement(..) |
Component::NonTSPseudoClass(..) => {},
_ => return false,
}
}
```
But even that wouldn't be enough to make selectors like `:hover::marker` not
match on the `::before::marker` pseudo-element, plus that code is really hot.
So for now do the check on the `next_element_for_combinator` function. It's a
bit hacky but it's the best I could came up with...
While at it, simplify some checks to use is_pseudo_element() instead of
implemented_pseudo_element() directly.
Only the Rust patch as-is would make markers for ::before and ::after on list
items not show up, so we also need to switch ::marker to use ProbeMarkerStyle()
rather than ProbePseudoElementStyle(), since the marker should exist even if it
matches no rules.
Differential Revision: https://phabricator.services.mozilla.com/D27529
--HG--
extra : moz-landing-system : lando
This doesn't clean up all that much, yet, but it's a step in the right
direction.
Differential Revision: https://phabricator.services.mozilla.com/D29168
--HG--
extra : moz-landing-system : lando
This won't reintroduce any of the regressions that were triggered by our
previous attempts to turn off -moz prefixed gradients, and lets us massively
simplify the gradient code, if it sticks.
Differential Revision: https://phabricator.services.mozilla.com/D29346
--HG--
extra : moz-landing-system : lando