Commit graph

123 commits

Author SHA1 Message Date
Emilio Cobos Álvarez
e9ae3b0907 Bug 1527410 - Use Rust sizes for flex-basis, width, height, and their min/max properties. r=jwatt
Really sorry for the size of the patch :(

Only intentional behavior change is in the uses of HasLengthAndPercentage(),
where it's easier to do the right thing. The checks that used to check for
(IsCalcUnit() && CalcHasPercentage()) are wrong since bug 957915.

Differential Revision: https://phabricator.services.mozilla.com/D19553
2019-02-15 03:59:31 +01:00
Emilio Cobos Álvarez
12867b1a3f Bug 1525371 - Kill ComputedStyle::mPresContext, move the pointer to the frame instead. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D18734
2019-02-07 11:15:36 +01:00
Sylvestre Ledru
265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Brad Werth
346bc8427e Bug 1506687 Part 1: Make FlexItemValues also provide the item's frame rect. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D12182

--HG--
extra : source : d8230f3fdd2c3ecea4771ebe98c83be6e3ebcbfc
2018-11-17 00:56:51 +00:00
Cosmin Sabou
06a105eed0 Backed out 2 changesets (bug 1506687) for causing mochitest mass failures. CLOSED TREE
Backed out changeset f93f179fb3b4 (bug 1506687)
Backed out changeset d8230f3fdd2c (bug 1506687)
2018-11-17 05:05:53 +02:00
Brad Werth
cae2b12074 Bug 1506687 Part 1: Make FlexItemValues also provide the item's frame rect. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D12182

--HG--
extra : moz-landing-system : lando
2018-11-17 00:56:51 +00:00
Cosmin Sabou
5394c8a6ca Backed out 3 changesets (bug 1506687) for devtools failures on browser_flexbox_sizing_info_for_text_nodes. CLOSED TREE
Backed out changeset 2788a93e179a (bug 1506687)
Backed out changeset 1c3baa04d4ce (bug 1506687)
Backed out changeset c50af93cfc84 (bug 1506687)
2018-11-15 20:01:52 +02:00
Brad Werth
5e72dc5a5b Bug 1506687 Part 2: Make FlexItemValues also provide the item's position and size. r=dholbert
Depends on D11782

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

--HG--
extra : moz-landing-system : lando
2018-11-15 16:20:40 +00:00
Brad Werth
1600580027 Bug 1498273 Part 3: Define and set ComputedFlexItemInfo::mClampState. r=dholbert
Depends on D9727

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

--HG--
extra : moz-landing-system : lando
2018-10-24 23:47:23 +00:00
Brad Werth
29992e3858 Bug 1501109 Part 1: Change Flex API growth state to match layout algorithm, and use enums from webidl. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D9454

--HG--
extra : moz-landing-system : lando
2018-10-23 16:23:37 +00:00
Mats Palmgren
4b5a264c80 Bug 1500609 part 1 - Add a nsFlexContainerFrame method to remove cached data that depend on flex items' intrinsic isize (idempotent patch). r=dholbert 2018-10-22 00:54:57 +02:00
Brad Werth
e2f5a79f00 Bug 1497589 Part 4: Set ComputedFlexContainerInfo physical axis values, and expose them through the Flex API. r=dholbert
Depends on D8616

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

--HG--
extra : moz-landing-system : lando
2018-10-17 20:23:09 +00:00
Emilio Cobos Álvarez
eed1014705 Bug 1495169 - Remove cached measuring reflows if we aren't measuring the right thing because we got interrupted. r=dholbert
If we're waiting on an interrupt, then our child items haven't been totally
reflowed and our measures would be bogus.

This will probably regress performance in the cases bug 1209697 fixed, so we
should probably add an interrupt check somewhere in nsFlexContainerFrame to
avoid keeping reflowing flex containers indefinitely.

We could probably just bail out from our reflow if any kid reflow was
interrupted.

Filed bug 1495532 to consider that.

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

--HG--
extra : moz-landing-system : lando
2018-10-04 20:24:04 +00:00
Brad Werth
c279aabb20 Bug 1494694: Improve a comment in the ComputedFlexItemInfo structure header. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D7115

--HG--
extra : moz-landing-system : lando
2018-10-01 16:08:00 +00:00
Mihir Iyer
b3ebeebc31 Bug 1398483 - Implement column and row gap for flexbox. r=dholbert
MozReview-Commit-ID: 2EmaG3G0HRI

--HG--
extra : rebase_source : ce90f9a38c0f3a6634a95b0f4f97a2a3fbd48a57
2018-06-19 10:28:31 -07:00
Daniel Holbert
acccfe6d00 Bug 1454822 part 2: Cache the results of nsFlexContainerFrame::GetMinISize/GetPrefISize. r=mats
Assuming we call MarkIntrinsicISizesDirty in the appropriate scenarios, this
patch shouldn't change behavior - it just caches these values so we don't
needlessly recalculate them.

MozReview-Commit-ID: 8QY4AZJXshy

--HG--
extra : rebase_source : a7c87b03ac8240ba71efd2198ce1976d96c91f64
2018-04-17 17:06:26 -07:00
Daniel Holbert
14267669bd Bug 1454822 part 1: Refactor nsFlexContainerFrame::GetMinISize/GetPrefISize to be implemented via a common helper function. r=mats
This patch does not change behavior; it just merges the implementations of
these two functions into a single common function.

MozReview-Commit-ID: BqsRt3p2NQT

--HG--
extra : rebase_source : e8792f2bed3fd0708ffb38b91cf15a78cb6fbd59
2018-04-17 17:06:23 -07:00
Daniel Holbert
555deebbc9 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

--HG--
extra : rebase_source : 17efe1e9f721324d6182db654e601727c791800b
2018-04-13 12:17:51 -07:00
Daniel Holbert
99b46a1c49 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

--HG--
extra : rebase_source : 695a2341074b1c344a1c5831989b95a693e16970
2018-03-29 14:49:28 -07:00
Emilio Cobos Álvarez
e341b20ec4 Bug 1447483: Merge nsStyleContext and ServoStyleContext, rename to ComputedStyle. r=jwatt on a CLOSED TREE
MozReview-Commit-ID: JPopq0LudD
2018-03-22 20:06:24 +01:00
Emilio Cobos Álvarez
5dd797f154 Back out changeset b683bb3f22a1 (Bug 1447483) for not landing with all the files. r=me on a CLOSED TREE
This reverts commit 1808914126bb9f9e4a82d2c3d7ac961885fe7d62.

MozReview-Commit-ID: 5skESBseEvo
2018-03-22 20:05:22 +01:00
Emilio Cobos Álvarez
ca5ac79cca Bug 1447483: Merge nsStyleContext and ServoStyleContext, rename to ComputedStyle. r=jwatt
MozReview-Commit-ID: JPopq0LudD
2018-03-22 19:48:42 +01:00
Daniel Holbert
375dc5dc6e Bug 1174003 part 1: [css-flexbox] Remove unused method nsFlexContainerFrame::IsHorizontal. r=mats
MozReview-Commit-ID: JzvGzJvMhLS

--HG--
extra : rebase_source : 08916cb0fa201f036d69de41f7a3f760a6c081d9
2018-02-27 11:21:22 -08:00
Daniel Holbert
fa61229977 Bug 1267462 part 7: Generalize nsFlexContainerFrame::ResolveAutoFlexBasisAndMinSize and helpers to use logical axes & coords. r=mats
In particlar, this patch:

 - ...renames a bunch of 'auto'-BSize-measurement functions/variables from
   "Height" to "BSize".  (I thought about splitting this part out, but
   typically the correctness of the renames was intrinsically tied to the logic
   generalizations that I'm performing here, and vice versa, so it seemed
   clearest to group it all together.)

 - ...replaces some calls to IsMainAxisHorizontal() with the more general
   "FlexItem::IsInlineAxisMainAxis()" API, for cases when we're reasoning about
   whether a flex item's main-size is really just its (easier-to-resolve) ISize.

 - ...replaces some calls to IsCrossAxisHorizontal() with either
   IsColumnOriented() or FlexItem::IsInlineAxisCrossAxis() (depending on
   whether we're reasoning about the flex container's cross-size vs. a flex
   item's cross size).

This makes a bunch of tests start passing (including a "received" w3c
reftest/wpt-test), so this patch also removes some failure annotations.

MozReview-Commit-ID: 3uR1mOzvytX

--HG--
extra : rebase_source : 40f4e7dd6aacfb4f267d2f4d217fbf84befb5ebf
2018-02-08 15:15:07 -08:00
Daniel Holbert
9070f50509 Bug 1398963 part 6: Make "visibility:collapse" cause flex items to be 0-sized, in emulated -moz-{inline-}box. r=mats
In modern flexbox and in "display:-webkit-box", children with
"visibility:collapse" currently generate "struts" which have 0 main-size but
nonzero cross-size.

But XUL/-moz-box treats these children differently -- it makes them 0-sized in
both axes. So we need to add a custom behavior to modern flexbox in order to
emulate that.

Specifically, this patch makes us:
 - Ignore these children when computing the flex container's intrinsic sizes.
 - Take a simpler codepath with 0-sized struts for collapsed elements when
   laying out a -moz-box (rather than the typical 2-pass layout, with strut
   cross-size being established in the 1st pass).

MozReview-Commit-ID: IpkADpFFBMx

--HG--
extra : rebase_source : d42a291c414c61906a82c2be2b5f1834aa24e4e3
2017-12-18 12:17:11 -06:00
Brad Werth
dfee74ad04 Bug 1419924 Part 1: Capture FlexLine cross start position to report to devtools when requested. r=dholbert
MozReview-Commit-ID: 8opVdr4W9S3

--HG--
extra : rebase_source : 45edd3a73fa4fd56e5e0557ca3ea5ba86cc5f7a6
2017-12-01 13:02:35 -08:00
Brad Werth
947c621008 Bug 1409083 Part 1: Capture computed flex data for use by devtools. r=dholbert
MozReview-Commit-ID: 2TorIXOJZdh

--HG--
extra : rebase_source : b75e8d1786efda9ff48bae81b06f1834648096d1
2017-10-20 11:20:46 -07:00
Phil Ringnalda
9d10710b26 Backed out 5 changesets (bug 1409083) for eslint failures
Backed out changeset 9de539be3665 (bug 1409083)
Backed out changeset 660e79af5c93 (bug 1409083)
Backed out changeset 574cd09aad41 (bug 1409083)
Backed out changeset b21b06a24705 (bug 1409083)
Backed out changeset b21e6a795493 (bug 1409083)
2017-12-07 19:47:09 -08:00
Brad Werth
9c08fad38e Bug 1409083 Part 1: Capture computed flex data for use by devtools. r=dholbert
MozReview-Commit-ID: 2TorIXOJZdh

--HG--
extra : rebase_source : d3463af8122702d0c80f5aaa520785b9c294a92f
2017-10-20 11:20:46 -07:00
Daniel Holbert
680815cd6e Bug 1412346 part 5: (automated patch) Switch a bunch of C++ files in layout to use our standard mode lines. r=jfkthame
This patch was generated automatically by the "modeline.py" script, available
here: https://github.com/amccreight/moz-source-tools/blob/master/modeline.py

For every file that is modified in this patch, the changes are as follows:
 (1) The patch changes the file to use the exact C++ mode lines from the
     Mozilla coding style guide, available here:
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line

 (2) The patch deletes any blank lines between the mode line & the MPL
     boilerplate comment.

 (3) If the file previously had the mode lines and MPL boilerplate in a
     single contiguous C++ comment, then the patch splits them into
     separate C++ comments, to match the boilerplate in the coding style.

MozReview-Commit-ID: EuRsDue63tK

--HG--
extra : rebase_source : 3356d4b80ff6213935192e87cdbc9103fec6084c
2017-10-27 10:33:53 -07:00
Daniel Holbert
a7f82bed77 Bug 1412346 part 4: Update stale MPL license boilerplate on a few files in layout. r=jfkthame
We have a fair number of files that have a particular stale version of the MPL
boilerplate.  (It was probably originally correct, and then the official
boilerplate changed, and the stale MPL boilerplate continued to propagate via
copypasting from neighboring files into newly-added files.)

This patch updates this stale MPL text (and *only* the MPL text) to the latest
version, which can be found at https://www.mozilla.org/en-US/MPL/headers/ and
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line

MozReview-Commit-ID: 8WeBb8b0uRo

--HG--
extra : rebase_source : 2c3aa8d07ba23714501c9e26ad03625aeab36a7a
2017-10-27 10:09:35 -07:00
Matt Woodrow
40f5b92e3b Bug 1388161 - Store the dirty rect on the display list builder rather than passing it as a parameter to BuildDisplayList. r=mstange 2017-08-07 14:23:35 +12:00
Sebastian Hengst
8257b2d113 Backed out changeset 8f2dd8f13b53 (bug 1388161) for failing chrome's test_animation_performance_warning.html | preserve-3d transform. r=backout 2017-08-10 14:40:21 +02:00
Matt Woodrow
a3a130b6ff Bug 1388161 - Store the dirty rect on the display list builder rather than passing it as a parameter to BuildDisplayList. r=mstange 2017-08-07 14:23:35 +12:00
Alexis Beingessner
adb013669b Bug 1088760 - Remove nsRenderingContext, replacing all of its uses with gfxContext. r=jwatt,jrmuizel
MozReview-Commit-ID: K1WUIOnvazF
2017-06-13 11:00:10 -04:00
Sebastian Hengst
f3bf820bfd Backed out changeset 3d1ce85e6348 (bug 1088760) for bustage, at least on Android at layout/generic/nsPluginFrame.cpp:1612. r=backout 2017-06-13 00:30:03 +02:00
Alexis Beingessner
c75211cb95 Bug 1088760 - Remove nsRenderingContext, replacing all of its uses with gfxContext. r=jwatt,jrmuizel
MozReview-Commit-ID: K1WUIOnvazF
2017-06-12 17:32:48 -04:00
Mats Palmgren
a254b64145 Bug 1364805 part 4 - Remove the now unused LayoutFrameType values from the ctors. r=jfkthame
MozReview-Commit-ID: 1RSDoc3pQXf
2017-05-26 12:11:11 +02:00
Mats Palmgren
1242172259 Bug 1364805 part 2 - Add a nsIFrame::mClass field and propagate the concrete class' value up the ctor chain. r=jfkthame
nsIFrame::mClass is of type enum class nsQueryFrame::ClassID which is
a strict subset of the nsQueryFrame::FrameIID values.  For a concrete
frame class, its FrameIID is the same numeric value as its ClassID.

MozReview-Commit-ID: 1N0AkCGo1ol
2017-05-26 12:11:11 +02:00
Mats Palmgren
ec6b1ef065 Bug 1364805 part 1 - Make every concrete frame class be a NS_DECL_QUERYFRAME_TARGET. r=jfkthame
MozReview-Commit-ID: Gy9gcEYupeY
2017-05-26 12:11:11 +02:00
Daniel Holbert
886c9c28ca Bug 1361617: Remove unused member var nsFlexContainerFrame::mChildrenHaveBeenReordered. r=mats
MozReview-Commit-ID: Iqk85piO9gT

--HG--
extra : rebase_source : f96b3086c62a6dc5c0bbde5640211d4343cb68a8
2017-05-11 23:09:38 -07:00
Emilio Cobos Álvarez
23bce99ae1 Bug 1361051: rename mozilla::FrameType to mozilla::LayoutFrameType. r=xidorn
This avoids conflicts with mozilla::dom::FrameType.

MozReview-Commit-ID: 7aEMbHRaTFk

--HG--
extra : rebase_source : 2d01321f5ce0ec8c0e3f70984674f82678034b3c
2017-05-01 19:32:52 +02:00
Emilio Cobos Álvarez
e44543aad4 Bug 1360241: Devirtualize nsIFrame::GetType. r=heycam
MozReview-Commit-ID: 5Nzhyta5Hle

--HG--
extra : rebase_source : c2e9d4bfb9239f5e851d110cd7dff98c1e1a8d8b
2017-04-30 17:30:08 +02:00
Emilio Cobos Álvarez
d161d20ce7 Bug 1336708: Don't reuse cached flex-item reflow measurements if the item's computed height has changed. r=dholbert
For some stretched items, we override the computed height of the input for
measuring reflows, which may change the ascent and height result.

Just use that as a key for the reflow result cache too.

MozReview-Commit-ID: 9NyObfVucnC
2017-02-07 21:00:45 +01:00
Emilio Cobos Álvarez
222cfd4e2c Bug 1209697: Part 2, Cache flex measuring reflows to avoid exponential behavior. r=dholbert
MozReview-Commit-ID: 8vcLUvASEFM
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>

--HG--
extra : rebase_source : e0341ceaf269a6d0ed44fb6a82fff90956192073
2017-01-06 15:34:16 +01:00
Daniel Holbert
85f6680212 Bug 1331756 part 5: Drop redundant 'virtual' keyword from method overrides in several frame classes. r=xidorn
MozReview-Commit-ID: IwjWBbGe9jo
2017-01-17 16:27:03 -08:00
Mats Palmgren
deb52d2e03 Bug 1312379 part 2 - [css-flexbox] Improve support for CSS Alignment 'last baseline' alignment by exporting the last baseline when asked for. r=dholbert 2016-12-20 23:56:35 +01:00
Mats Palmgren
ed15c70d6d Bug 1312379 part 1 - [css-align][css-flexbox][css-grid] Introduce nsIFrame methods for calculating baselines per CSS Alignment and CSS2 'vertical-align'. r=dholbert 2016-12-20 23:56:35 +01:00
Daniel Holbert
a720a44ada Bug 1321698 part 2: Use the new frame state bit to check for -webkit-box containers. r=mats
Note that at the callsites in nsCSSFrameConstructor.cpp, we have to also check
the frame type (since the frame state bit is in a range of bits whose meaning
differs depending on frame type).  The first change in this patch is the
addition of a convenience fucntion that checks both the frame type as well as
the frame state bit.

MozReview-Commit-ID: DEOThTX5NAO

--HG--
extra : rebase_source : 95e86eec663b3ef2e7bb86214871fcd3ea86057c
2016-12-02 10:32:31 -08:00
Daniel Holbert
f2e0c89b68 Bug 1321698 part 1: Set a frame state bit on nsFlexContainerFrame if it's emulating -webkit-box. r=mats
MozReview-Commit-ID: 5eL55atUBnT

--HG--
extra : rebase_source : c947804edfadd1b9aa3630e1f1e57484b98adb59
2016-12-02 01:02:00 -08:00