Commit Graph

2663 Commits

Author SHA1 Message Date
Andrew McCreight
7a07e0c48b Bug 1449670, part 1 - Convert IsNodeOfType(nsINode::eTEXT) to IsText(). r=bz
This method is not a virtual call, and also looks nicer.

This patch was mostly generated by a Python script, but I manually
cleaned up the code in a few places where statements didn't need to be
split across multiple lines any more.

MozReview-Commit-ID: 8JExxqSRc59
2018-04-12 15:41:00 -07:00
Daniel Holbert
f7514050d1 Bug 1374540 part 4: Change nsFrame::ComputeSize to treat used flex-basis:content as 'max-content'. r=mats
This brings us into alignment with the spec and makes us pass some web-platform
tests, along with the reftests that I've included for this bug.

MozReview-Commit-ID: KoKPi18svGE
2018-04-13 12:17:51 -07:00
Daniel Holbert
bd66c7df60 Bug 1374540 part 3: Refactor nsFrame::ComputeSize methods to handle the two "used flex-basis of content" scenarios with a consistent codepath. r=mats
This patch doesn't change behavior.

It simply makes us share code/data for two different cases that both ended up
producing mainAxisCoord->GetUnit() == eStyleUnit_Auto.  Now, they'll *both* use
the same static nsStyleCoord to represent this "auto" value.

Originally, in one of these cases ("flex-basis:auto;[main-size-property]:auto),
we left the mainAxisCoord untouched. Now we'll point it at this dummy 'auto'
value. Either way we end up with mainAxisCoord->GetUnit() == eStyleUnit_Auto,
so the behavior doesn't change.

The next patch in this series will make further changes to one of these spots,
as noted in the "XXXdholbert" code-comment included here.

MozReview-Commit-ID: 5ClfbNHuKhO
2018-04-13 12:17:51 -07:00
Matt Woodrow
3ae7a838dd Bug 1451971 - Rebuild the whole page when we have perspective or preserve-3d. r=miko
MozReview-Commit-ID: 2SkKvpdLWMi
2018-04-11 21:49:30 +12:00
Daniel Zielas
2af458e291 Bug 1420512 - Try unifying data structures for scrollbar container and scrollbar thumb info. r=botond
MozReview-Commit-ID: 9zPkrA3CwsN
2018-03-02 19:00:03 +01:00
Mats Palmgren
f3a0c9e1e8 Bug 1434478 part 6 - Propagate a percentage basis to nsIFrame::IntrinsicISizeOffsets for resolving padding/margin. r=dholbert
This is needed only for CSS Grid since in other cases we're
only using IntrinsicISizeOffsets in the inline-axis and
the percentage basis is always indefinite for *intrinsic
sizing*.  When calculating the intrinsic size of grid items
in the grid container's block axis however, we do have
a definite size for the grid area in the inline-axis and it
should be used per:
https://drafts.csswg.org/css-grid/#algo-overview
"2. Next, the track sizing algorithm resolves the sizes of
the grid rows, using the grid column sizes calculated in
the previous step."

(Percentage padding/margin for grid items is always resolved
against the grid area's inline-size nowadays.)
2018-04-10 00:16:58 +02:00
Mats Palmgren
0eee70c35a Bug 1434478 part 3 - Remove IntrinsicISizeOffsetData::hPctPadding/hPctMargin members since they are now unused. r=dholbert 2018-04-10 00:16:58 +02:00
Emilio Cobos Álvarez
3284a9dda8 Bug 1447827: Remove ServoRestyleManager. r=xidorn
MozReview-Commit-ID: CFafQsb4rQn
2018-04-07 15:50:06 +02:00
Emilio Cobos Álvarez
95a825cbf6 Bug 1303605: Remove the undisplayed maps. r=bz,mats
This is mostly code removal, changing GetDisplayContentsStyle(..) checks by an
FFI call to Servo.

The tricky parts are:

 * MaybeCreateLazily, which I fixed to avoid setting bits under display: none
   stuff. This was a pre-existing problem, which was wallpapered by the
   sc->IsInDisplayNoneSubtree() check, which effectively made the whole
   assertion useless (see bug 1381017 for the only crashtest that hit this
   though).

 * ContentRemoved, where we can no longer know for sure whether the element is
   actually display: contents if we're removing it as a response to a style
   change. See the comment there. That kinda sucks, but that case is relatively
   weird, and it's better than adding tons of complexity to handle that.

 * GetParentComputedStyle, which also has a comment there. Also, this function
   has only one caller now, so we should maybe try to remove it.

The different assertions after DestroyFramesForAndRestyle are changed for a
single assertion in the function itself, and the node bit used as an
optimization to avoid hashtable lookups is taken back.

MozReview-Commit-ID: AZm822QnhF9
2018-04-07 15:21:56 +02:00
Emilio Cobos Álvarez
bf9e6bc798 Bug 1451217: Remove VerifyStyleTree stuff. r=xidorn
MozReview-Commit-ID: DDXMq9WkUkE
2018-04-04 13:34:11 +02:00
Margareta Eliza Balazs
4a65daf2b1 Merge inbound to mozilla-central. a=merge 2018-04-04 12:43:55 +03:00
Matt Woodrow
4e885ca8c2 Bug 1370575 - Do less manual invalidation when tables changes, and rely on DLBI instead. r=mstange 2018-04-04 16:17:49 +12:00
Matt Woodrow
e037d14d46 Bug 1450189 - Don't invalidate display items when we get a new style context. r=miko 2018-04-04 16:17:25 +12:00
Matt Woodrow
2fd4b8810a Bug 1442844 - Don't mark display items invalid when temporarily setting the frame size in FinishAndStoreOverflow. r=dbaron 2018-04-04 16:17:01 +12:00
Matt Woodrow
3a11330208 Bug 1443380 - Don't mark all descendant frames modified for display list building when invalidating a frame subtree since marking just the root is sufficient. r=miko 2018-04-04 16:15:49 +12:00
Matt Woodrow
e5353835c2 Bug 1443027 - Fix the merging algorithm to pass the new tests correctly. r=mstange
MozReview-Commit-ID: JnglCbdhZzE
* * *
[mq]: update-test
2018-03-23 16:47:37 +13:00
Ting-Yu Lin
53f9fd2dce Bug 1404222 Part 3: Block onload when shape-outside images are requested for a frame, and keep it blocked until the frame is removed, the image fails to load, or reflow is complete. r=dbaron,dholbert
When we finish decoding an image frame, we need to trigger reflow for the
frame containing a float with shape-outside: <image>, and delay the firing
of the document's onload event until that reflow is complete.
2018-01-25 14:56:43 +08:00
Sebastian Hengst
6cc69993bd Backed out 2 changesets (bug 1443027) for frequent crashes on OS X. a=backout
Backed out changeset 1e3dc6112e76 (bug 1443027)
Backed out changeset d2734042605a (bug 1443027)
2018-04-03 19:51:49 +03:00
Matt Woodrow
21e0c0a201 Bug 1443027 - Fix the merging algorithm to pass the new tests correctly. r=mstange
MozReview-Commit-ID: JnglCbdhZzE
* * *
[mq]: update-test
2018-03-23 16:47:37 +13:00
Hiroyuki Ikezoe
b7f506f202 Bug 1443358 - Consider that the target frame is scrolled out if scrollable parent frame size is empty. r=birtles
This patch adds three test cases;

1) Animation on position:absolute element in a zero-height iframe
  This animation should be throttled.
2) Animation on a non-zero width and hight position:absolute element but whose
   parent has a zero height
  This animation should NOT be throttled since the animation is visible
3) Animation on a zero-height position:absolute element whose parent also has
   zero height.
  This animation should be throttled since the animation is invisible

The first test fails without this fix and passes with the fix.
The second one passes regardless of the fix
The third one is marked as 'todo' since it doesn't pass with this fix.

MozReview-Commit-ID: 8pNUFQ71ivj
2018-04-02 13:34:14 +09:00
Daniel Holbert
3555fe34a3 Bug 1105111 part 3: Add support for 'flex-basis:content' in layout. r=mats
BACKGROUND:
Early in flex layout, we have to resolve the 'flex-basis' value to produce the
"flex base size" (basically, the flex-basis resolved to an absolute length).

This resolution happens in two "phases" (which both happen within
nsFlexContainer::GenerateFlexItemForChild()):

First phase: we try to resolve the flex-basis by creating a ReflowInput for the
flex item (which gets us some other things as well).  Under the hood, we use
the flex-basis when resolving this ReflowInput's main-axis size.  The code for
this lives in nsFrame::ComputeSize (and in
nsFrame::ComputeSizeWithIntrinsicDimensions, via some frame classes' overrides of
ComputeSize).

Second phase: If the first phase didn't get us a definite size, then that means
we have to do reflow to measure the content size & produce a resolved flex base
size, which we do via ResolveAutoFlexBasisAndMinSize().

NOTES ON THIS PATCH:
To add 'flex-basis:content' support to layout, this patch only needs to modify
the first phase discussed above. If it turns out we also have some second-phase
work to do (i.e. if we need to do reflow to resolve 'flex-basis:content'), this
patch causes that reflow to happen by simply making us use eStyleUnit_Auto in
the main axis's nsStyleCoord in the first phase.  (And then, if that 'auto'
nsStyleCoord really does require reflow, then that first phase will end up
producing an unconstrained main-size in the flex item's ReflowInput, which will
automatically trigger the second phase.)

MozReview-Commit-ID: 2nH4Fh78C81
2018-04-02 04:30:38 +02:00
Cosmin Sabou
6a78c2895e Merge central to autoland. a=merge CLOSED TREE 2018-03-30 21:46:52 +03:00
Noemi Erli
0ca6532065 Backed out 2 changesets (bug 1443027) for breacking Gmail on OSX r=pascalc a=backout
Backed out changeset 5deb310542a9 (bug 1443027)
Backed out changeset e04979dd66be (bug 1443027)
2018-03-30 19:08:30 +03:00
shindli
03600438ed Merge inbound to mozilla-central. a=merge 2018-03-30 12:56:21 +03:00
Matt Woodrow
c6c8303663 Bug 1443027 - Fix the merging algorithm to pass the new tests correctly. r=mstange
MozReview-Commit-ID: JnglCbdhZzE
* * *
[mq]: update-test

MozReview-Commit-ID: JMIzrnVeSTo
2018-03-23 16:47:37 +13:00
Ciure Andrei
fe2267c2c5 Merge mozilla-central to mozilla-inbound. a=merge CLOSED TREE 2018-03-30 01:11:06 +03:00
Daniel Holbert
2046f84547 Bug 1436881: Remove redundant special-case code for treating flex-basis enum values as 'auto' in vertical axis. r=mats
This patch should not affect behavior.

Logic-wise: the idea behind this patch is to behave as if the
'usingFlexBasisForHeight' variable were always false, which in turn lets us
remove an "if (!usingFlexBasisForHeight || ...)" check, because it trivially
passes when that bool is false.

Background on this special case & why we can remove it:
=======================================================
In the original flexbox implementation, we had some special-case code to be
sure we didn't end up swapping in e.g. "flex-basis:-moz-min-content" for
"height" in these ComputeSize functions, because that was a scenario that
previously would've been prevented at the parser level (height:-moz-min-content
is rejected for now), and hence may not have ended up being handled robustly.

However, nowadays it'll be handled just fine in these functions, and will
produce the same result as our special-case exception tries to achieve.

In particular, for a nsFrame that is a flex item in a flex container with a
vertical main axis (the scenario that these special cases are catching):

 - If the (vertical) main axis is this nsFrame's inline axis (i.e. if this
   nsFrame has a vertical writing-mode), then Stylo actually converts
   enumerated flex-basis values like "-moz-min-content" to "auto" when
   producing the computed values that layout sees.  So it's not actually
   possible for layout to see a computed "flex-basis" of -moz-min-content, in
   that scenario.

 - Otherwise, i.e. if the (vertical) main axis is this nsFrame's block axis,
   then these ComputeSize functions will now end up getting an enumerated
   "blockStyleCoord" (really pointing to flexBasis), but that'll still end up
   being treated like 'auto'. This happens by virtue of ComputeSize's calls to
   ComputeAutoSize (which initializes the tentative bsize value to
   NS_UNCONSTRAINEDSIZE) and to nsLayoutUtils::IsAutoBSize (which returns
   "true" for eStyleUnit_Enumerated values and then makes us leave the
   ComputeAutoSize result unperturbed).
2018-03-29 11:46:27 -07:00
Emilio Cobos Álvarez
3cf86a54cf Bug 1449010: Respect ::selection background styles for image overlays. r=mattwoodrow
I don't have a strong preference about blending with white vs. just doing alpha
0.5, so I kept doing what we were doing, since Blink and WebKit also apply the
blending to the text background, and I'm not sure that's particularly desirable.

MozReview-Commit-ID: AwYtAgdlcxj
2018-03-29 02:53:02 +02:00
Emilio Cobos Álvarez
941948acb7 Bug 1449010: Some minor cleanup in selection-related code. r=matwoodrow
MozReview-Commit-ID: AAhHZmOBc3Z
2018-03-29 02:53:01 +02:00
Gurzau Raul
ffbc52ee86 Merge mozilla-central to inbound. a=merge CLOSED TREE 2018-03-29 01:00:42 +03:00
Jonathan Kew
df1402e562 Bug 1449157 - Guard against mContent being null in nsFrame::HandlePress. r=dholbert 2018-03-28 14:42:20 +01:00
Cosmin Sabou
bc201526a4 Backed out 3 changesets (bug 1449321, bug 1449566, bug 1449565) as per developer request.
Backed out changeset c31de7e26809 (bug 1449565)
Backed out changeset 72f9188800af (bug 1449566)
Backed out changeset 763277b299e4 (bug 1449321)
2018-03-28 18:10:11 +03:00
Jonathan Watt
0d59536e73 Bug 1449321 - Remove the IsServo and IsGecko methods from the style system code. r=emilio 2018-03-23 16:01:34 +00:00
Jonathan Watt
44d37e68d5 Bug 1449321 - Remove the IsServo and IsGecko methods from the style system code. r=emilio 2018-03-23 16:01:34 +00:00
Xidorn Quan
99b3d4120a Bug 1448728 part 1 - Make popular headers not include nsWindowSizes.h. r=njn
MozReview-Commit-ID: EC5J9Im3gfu
2018-03-28 10:44:49 +11:00
Henri Sivonen
a21b99cbd0 Bug 1448590 - Avoid useless use of SIMD-accelerated Latin1 to UTF-16 conversion in layout. r=dbaron.
MozReview-Commit-ID: Inm13Jw2t31
2018-03-24 21:31:19 +02:00
Daniel Holbert
cc46d0d0be Bug 1449838 part 2: Morph 'usingFlexBasisForISize' variable in nsFrame::ComputeSize* methods, to better reflect reality. r=mats
This patch doesn't affect behavior; it just adjusts a variable for clarity.

Really, this variable tracks which axis (inline vs. block) is the main axis (if
we're a flex item). So, this patch morphs the variable to more directly track
that.

The variable's old name 'usingFlexBasisForISize' was confusing, because even
when it was set to 'true', we might not *really* be using the flex-basis in
place of the ISize property. In particular: when we have 'flex-basis:auto', we
don't use 'flex-basis' in place of the ISize/BSize property -- rather, that
indicates that 'flex-basis' is *deferring* to the main-axis size property.

Hopefully the new name/type makes it clearer what we're actually tracking.

MozReview-Commit-ID: ITkb4zuEwgQ
2018-03-29 14:49:40 -07:00
Daniel Holbert
bf58e2eec5 Bug 1449838 part 1: Add utility function nsFlexContainerFrame::IsItemInlineAxisMainAxis(). r=mats
This patch doesn't affect behavior - it's just refactoring / de-duplicating.

(The refactored function does include some new "legacy box" code, just for
completeness & to ensure that the included assertion passes.  But beyond the
assertion, that new code isn't exercised right now -- this function's only
callsites are skipped if the NS_STATE_FLEX_IS_EMULATING_LEGACY_BOX state-bit is
set on the container. Hence, this patch still doesn't affect behavior, even
though it's adding some new logic in the refactored-out function.)

MozReview-Commit-ID: G5aCzwTwkTa
2018-03-29 14:49:28 -07:00
Jeff Muizelaar
e93159c4c0 Bug 1450134. Replace ToRelativeLayoutRect() with ToRoundedLayoutRect(). r=kats
This function doesn't use any StackingContextHelper state anymore.
We should make what it does clearer and move it to a better place.
2018-03-29 17:57:43 -04:00
Ryan VanderMeulen
83a96dc38a Merge m-c to autoland. a=merge 2018-03-26 09:19:29 -04:00
Ryan VanderMeulen
11e8f52ae7 Backed out changesets d9f154931d6d and 90e564873aa1 (bug 1443027) for causing Nightly topcrash bug 1448841. 2018-03-26 09:13:54 -04:00
Emilio Cobos Álvarez
fb9a0faf99 Bug 1448559: Cleanup CalcStyleDifference. r=xidorn
The aSamePointerStructs argument is unused now.

Also, aIgnoreVariables can be true everywhere now, since variable changes can't
generate change hints, and anonymous boxes and such don't care about whether
they really changed or not.

Only one caller cares about struct equality, and that already compares variables
manually as an optimization on the rust side.

We had this optimization inconsistently in some cases but not others.

MozReview-Commit-ID: F2EISKlxR3K
2018-03-26 09:47:33 +02:00
Matt Woodrow
a5c39f77af Bug 1443027 - Fix the merging algorithm to pass the new tests correctly. r=mstange
MozReview-Commit-ID: JnglCbdhZzE
* * *
[mq]: update-test

MozReview-Commit-ID: JMIzrnVeSTo
2018-03-23 16:47:37 +13:00
Jonathan Watt
a30a336781 Bug 1448337 - Remove RuleNodeCacheConditions.h. r=emilio 2018-03-25 20:43:47 +02:00
Narcis Beleuzu
2764b805dc Backed out 2 changesets (bug 1448294, bug 1448337) for wpt and reftest failures on /mathml
Backed out changeset 180051cfe357 (bug 1448294)
Backed out changeset c188176f3289 (bug 1448337)
2018-03-25 21:31:08 +03:00
Emilio Cobos Álvarez
0b3a18a950 Bug 1448413: Do a bit of misc cleanup. r=jwatt
Summary: Mostly removing unneeded AsServo() and such.

Reviewers: jwatt

Bug #: 1448413

Differential Revision: https://phabricator.services.mozilla.com/D798

MozReview-Commit-ID: 8muHF7uMA53
2018-03-25 18:14:36 +02:00
Jonathan Watt
0b904e9bb7 Bug 1448337 - Remove RuleNodeCacheConditions.h. r=emilio 2018-03-22 08:44:07 +00:00
Xidorn Quan
04dfe2b263 Bug 1448557 - Crash when GECKO_DISPLAY_REFLOW_RULES_FILE points to a file cannot be open. r=dbaron
MozReview-Commit-ID: CRLF2UwhKbq
2018-03-25 00:53:33 +11:00
Xidorn Quan
4c17d886cb Bug 1448551 - Fix reported intrinsic size in reflow log of some frames. r=dbaron
MozReview-Commit-ID: 4jcrurjqGgu
2018-03-25 00:17:33 +11:00
Noemi Erli
3472f3c066 Merge inbound to mozilla-central. a=merge 2018-03-23 00:53:07 +02:00