Commit Graph

332 Commits

Author SHA1 Message Date
Phil Ringnalda
04ae3c60e8 Backed out 12 changesets (bug 1269045, bug 1269046) as the most likely cause of Windows build bustage
CLOSED TREE

Backed out changeset 16db55b642a9 (bug 1269046)
Backed out changeset a0008dd33cf4 (bug 1269046)
Backed out changeset 75b58c4e61e6 (bug 1269046)
Backed out changeset fb7655f3e1cf (bug 1269046)
Backed out changeset 8088e5a9e6e3 (bug 1269046)
Backed out changeset eea6479452f0 (bug 1269046)
Backed out changeset eb4b52bf06ec (bug 1269046)
Backed out changeset 539db74e4a88 (bug 1269046)
Backed out changeset f57f9ac1435e (bug 1269045)
Backed out changeset 2162d5c9fb54 (bug 1269045)
Backed out changeset 7aa8199183fc (bug 1269045)
Backed out changeset 86a391e3e163 (bug 1269045)

MozReview-Commit-ID: HYL7Bh8l02E
2016-10-27 21:59:00 -07:00
Daniel Holbert
f0899cafae Bug 1269046 part 7: Give nsFlexContainerFrame a CSSAlignmentForAbsPosChild() implementation (to determine appropriate align enum for abspos children). r=mats
MozReview-Commit-ID: LFQfKPlR9Gv
2016-10-27 18:58:26 -07:00
Daniel Holbert
4746b90f98 Bug 1269046 part 6: Add a flags enum-class to customize FlexboxAxisTracker behavior. r=mats
Right now, there's only one flag in this new class (with no usages until a
later patch). This flag suppresses a hack, which otherwise makes us
transparently reverse the child list & flex axes in some circumstances, to
prevent bottom-to-top child ordering. (We don't want that hack when we're
dealing with individual abspos children, since it only makes things more
complicated.)

MozReview-Commit-ID: HYUf0vjlfiJ
2016-10-27 18:58:26 -07:00
Daniel Holbert
51815d7446 Bug 1269046 part 4: Set flags on nsPlaceholderFrame & ReflowInput to track abspos frames that need CSS Box Alignment to resolve static position. r=mats
(We'll react to the ReflowInput flags and do the actual CSS Box Alignment in a
later patch in this series.)

MozReview-Commit-ID: EZd7npWSzQI
2016-10-27 18:58:26 -07:00
Daniel Holbert
4ec892cc09 Bug 1269045 part 3: Stop wrapping placeholder frames in anonymous flex items. r=mats
This patch also:
 * Removes some now-unnecessary code from nsFlexContainerFrame, which was for jumping from wrapped-placeholders to their out-of-flow frames (for DOM comparisons). This code is now unnecessary because placeholders won't be wrapped anymore.
 * Updates some reftests with abspos content to match the updated spec's expectations, with one marked as "fails" for the time being (until bug 1269046 implements css box alignment, which we need to render that test correctly).

MozReview-Commit-ID: 8canWfXk6Kf
2016-10-27 18:58:26 -07:00
Daniel Holbert
76e7d7d54f Bug 1269045 part 2: Separate out abspos placeholders when creating FlexItems, and give them a trivial reflow at container's content-box origin. r=mats
MozReview-Commit-ID: 5lXUsusLryC
2016-10-27 18:58:26 -07:00
Daniel Holbert
7b6b5973bb Bug 1269045 part 1: Adjust flex item "order"-sorting code to treat placeholder frames as <= anything they're compared against, including each other. r=mats
This patch makes the following specific changes:
 (1) Adds an early-return to both versions of the IsOrderLEQ function, to treat placeholder children as LEQ everything (including each other). This will tend to sort them to the beginning of the child list, which is unimportant but fine. More importantly, though: this means our "order"-sorting code won't reorder placeholders *with respect to each other* (since our sort algorithm is stable). So their painting order won't be affected by the "order" property, which is required by the spec.
 (2) Drops some nsPlaceholderFrame::GetRealFrameFor() calls -- they're unnecessary, since any placeholder frames will have prompted us to return earlier.

One caveat to (2): this patch does leave a few "nsPlaceholderFrame::GetRealFrameFor()" calls in place, *for the moment*.  These remaining calls are for handling placeholders that are wrapped, i.e. inside of anonymous flex items. These calls are still needed to avoid assertion-failures (i.e. to get a consistent ordering) at this point, but they'll be removed in a later patch in this same bug, when we stop wrapping placeholders in anonymous flex items.

MozReview-Commit-ID: 1R6NW30Kxgv
2016-10-27 18:58:25 -07:00
Daniel Holbert
e8ea031c67 Bug 1313421 part 2: Use flex container's FlexLine linked-list to determine the first flex item, rather than its child-frame list. r=mats
This shouldn't change our behavior right now, but it will make a difference
after bug 1269045 -- when that bug lands, we'll have nsPlaceholderFrames (which
are not flex items) in the child-frame list, which means we can't depend on its
first entry being a flex item anymore.

MozReview-Commit-ID: KRXYaK8R8bc
2016-10-27 18:56:48 -07:00
Daniel Holbert
255517923b Bug 1313421 part 1: Unconditionally cache a FlexItem's ascent, after it's been reflowed. r=mats
This removes a (very minor) optimization. The optimization was simply that we
avoided storing this nscoord value, if we could tell that we weren't ever going
to need it. Now it's becoming a bit more complicated to prove that we'll never
need it, so we might as well just store it unconditionally.

MozReview-Commit-ID: 94FFc9SO516
2016-10-27 18:56:41 -07:00
Daniel Holbert
7129e2309d Bug 1309119 part 2: Make nsFlexContainerFrame::IsLegacyBox assert that legacy -webkit-box elements are backed by nsFlexContainerFrame. r=mats
MozReview-Commit-ID: 62VsCtKJg3C
2016-10-20 13:23:51 -07:00
Daniel Holbert
ff99650d94 Bug 1309119 part 1: Expose nsFlexContainerFrame helper-function IsLegacyBox as a static method. r=mats
MozReview-Commit-ID: 8fztWk2sp0L
2016-10-20 13:23:51 -07:00
Brad Werth
5efd23fdd5 Bug 1235922 Part 4: Add support for "align-content: space-evenly" to flexbox layout. r=mats
MozReview-Commit-ID: 3ETuPrIURJ3
2016-10-14 17:17:33 -07:00
Daniel Holbert
fc4f02bd1d Bug 1235922 Part 2: Add support for "justify-content: space-evenly" to flexbox layout. r=mats
MozReview-Commit-ID: 6Am15EIVAXH
2016-10-14 17:16:00 -07:00
Brad Werth
b3ab8b18b5 Bug 1235922 Part 1: Introduce a helper-function to share code for justify-content and align-content space-around and space-between in flexbox layout. r=mats
MozReview-Commit-ID: tncRJiojh
2016-10-14 17:23:36 -07:00
Brad Werth
23a798cfe6 Bug 1310015: Change MainAxisTracker to consistently use NS_STYLE_JUSTIFY constants. r=mats
MozReview-Commit-ID: F8VfIuZJqFa
2016-10-13 14:20:48 -07:00
Julian Descottes
767cf287ed Bug 1308993 - aboutdebugging remove align-items: self-start;r=erahm
MozReview-Commit-ID: 7d054lVgwdt
2016-10-13 16:42:26 +02:00
Daniel Holbert
19aa0ed340 Bug 1090031: Apply CSS 'align-content' in flex containers if they *could* wrap (rather than if they *have* wrapped). r=mats
The spec says that single-line flex containers should stretch their one flex
line to the flex container's cross size, and should ignore 'align-content'.

Initially, the spec defined 'single-line' to include any flex container that
happens to have only 1 line (even if it's got 'flex-wrap:wrap' or
'wrap-reverse'). But later, the term 'single-line' was intentionally redefined
to *only* include flex containers that have 'flex-wrap: nowrap'.  So, instead
of checking the line-count, we should instead check 'flex-wrap', when deciding
whether to stretch our one line & ignore 'align-content'.


MozReview-Commit-ID: D2ZMIBS16ui
2016-10-12 09:04:03 -07:00
Wes Kocher
875b8d2e93 Backed out changeset 37e0c017b268 (bug 1090031) for reftest failures a=backout 2016-10-12 14:46:23 -07:00
Daniel Holbert
7be0e7ad64 Bug 1090031: Apply CSS 'align-content' in flex containers if they *could* wrap (rather than if they *have* wrapped). r=mats
The spec says that single-line flex containers should stretch their one flex
line to the flex container's cross size, and should ignore 'align-content'.

Initially, the spec defined 'single-line' to include any flex container that
happens to have only 1 line (even if it's got 'flex-wrap:wrap' or
'wrap-reverse'). But later, the term 'single-line' was intentionally redefined
to *only* include flex containers that have 'flex-wrap: nowrap'.  So, instead
of checking the line-count, we should instead check 'flex-wrap', when deciding
whether to stretch our one line & ignore 'align-content'.


MozReview-Commit-ID: D2ZMIBS16ui
2016-10-12 09:04:03 -07:00
Brad Werth
59ba3ec6e3 Bug 1306894 Part 1: Cache baseline from nsFlexContainerFrame::Reflow() for use in later calls to GetLogicalBaseline(). r=dholbert
MozReview-Commit-ID: JXUK8a0L1RZ
2016-10-11 12:54:00 -07:00
Brad Werth
bd72b09910 Bug 1221565 Part 2: Make nsFlexContainerFrame map justify-content and align-content values of 'left' and 'right' to 'start' or 'end'. r=dholbert
MozReview-Commit-ID: 8sZyFwIlpr4
2016-10-07 09:22:52 -07:00
Brad Werth
ca944ec246 Bug 1221565 Part 1: Make nsFlexContainerFrame map align-self values of 'left' and 'right' to either 'start' or 'end'. r=dholbert
MozReview-Commit-ID: 8Xv4BzZ3Okv
2016-10-06 15:55:39 -07:00
Mats Palmgren
860b9c5155 Bug 984869 - Add support for display:flex/grid and columnset layout to <button>. r=tn 2016-10-06 22:43:22 +02:00
Brad Werth
dd331658a6 Bug 1305844 - Make most align/justify nsStylePosition members public, and remove trivial accessors. r=dholbert 2016-10-03 13:05:35 -07:00
Brad Werth
1148c21217 Bug 1304012 -- Part 2: Rename nsStyleStruct Computed**Self functions to Used**Self. r=dholbert
MozReview-Commit-ID: FCBuT2Z7sy6
2016-09-30 09:15:57 -07:00
Daniel Holbert
19c23008a3 Bug 1306213: When resolving a flex item's "align-self: auto", use the flex container (not style-context parent) as the "align-items" source. r=mats
(Normally, the style-context parent will *be* the flex container's style
context, so this patch won't change behavior at all. But if a flex container
has a "display:table" child, then there's an extra style context in the
inheritance chain (due to how style inheritance works for nsTableWrapperFrame).
And we don't want that extra style context to mess up the ability of a flex
container's "align-items" property to actually align the flex items.)

MozReview-Commit-ID: GFyxhEwM68S
2016-09-28 23:53:20 -07:00
Xidorn Quan
24734c1427 Bug 1301014 - Fix intrinsic inline-size of flex container in vertical writing modes. r=dholbert
MozReview-Commit-ID: 7ef2EqMxOI5
2016-09-16 20:39:39 +10:00
Nicholas Nethercote
887efe04d5 Bug 1299727 - Rename NS_WARN_IF_FALSE as NS_WARNING_ASSERTION. r=erahm.
The new name makes the sense of the condition much clearer. E.g. compare:

  NS_WARN_IF_FALSE(!rv.Failed());

with:

  NS_WARNING_ASSERTION(!rv.Failed());

The new name also makes it clearer that it only has effect in debug builds,
because that's standard for assertions.
2016-09-01 15:01:16 +10:00
Emilio Cobos Álvarez
2efcfaad38 Bug 1299066: Make NS_STYLE_DISPLAY_* an enum class. Prefer indexing instead of linear search in the frame constructor r=heycam,bz
The main renaming was generated with the following python script:

```

import sys
import re

CAMEL_CASE_REGEX = re.compile(r"(^|_|-)([A-Z])([A-Z]+)")
DISPLAY_REGEX = re.compile(r"\bNS_STYLE_DISPLAY_([^M][A-Z_]+)\b")

def to_camel_case(ident):
  return re.sub(CAMEL_CASE_REGEX,
                lambda m: m.group(2) + m.group(3).lower(), ident)

def constant_to_enum(constant):
  return "StyleDisplay::" + to_camel_case(constant) + ("_" if constant == "NONE" else "")

def process_line(line):
  return re.sub(DISPLAY_REGEX,
                lambda m: constant_to_enum(m.group(1)), line)

lines = []
with open(sys.argv[1], "r") as f:
  for line in f:
    lines.append(process_line(line))

with open(sys.argv[1], "w") as f:
  for line in lines:
    f.write(line)
```

And the following shell commands:

```
find . -name '*.cpp' -exec python display.py {} \;
find . -name '*.h' -exec python display.py {} \;
```

MozReview-Commit-ID: 91xYCbLC2Vf
2016-09-01 20:41:17 -07:00
Mats Palmgren
36560b9509 Bug 1171419 part 10 - Rename RenumberLists() to RenumberList(). r=xidorn 2016-09-01 17:36:23 +02:00
Mats Palmgren
6b1e9e5fc6 Bug 1171419 part 9 - Implement list-item numbering for flex containers. r=xidorn 2016-09-01 17:36:23 +02:00
Ravi Shankar
27b0e2b9f2 Bug 1297982 - Replace NS_STYLE_BOX_ORIENT_* with enum class; r=xidorn
MozReview-Commit-ID: GC0VRyHUM4V
2016-08-26 12:48:41 +05:30
Ravi Shankar
26db0836fe Bug 1297982 - Replace NS_STYLE_BOX_DIRECTION_* with enum class; r=xidorn
MozReview-Commit-ID: H6Mr73864O2
2016-08-26 12:47:09 +05:30
Ravi Shankar
49bd1a9b5f Bug 1297982 - Replace NS_STYLE_BOX_PACK_* with enum class; r=xidorn
MozReview-Commit-ID: Cx20hOJbmad
2016-08-26 12:41:54 +05:30
Ravi Shankar
8b54ac9176 Bug 1297982 - Replace NS_STYLE_BOX_ALIGN_* with enum class; r=xidorn
MozReview-Commit-ID: EO8hXmXooft
2016-08-26 12:39:19 +05:30
Pranaydeep Singh
2d0c6f7543 Bug 1293738 - Remove unneeded aWM arg from some FlexboxAxisTracker methods. r=dholbert, r=emilio 2016-08-12 05:43:06 +05:30
Emilio Cobos Álvarez
7e74dea1dc Bug 1000957: For single-line flex containers, clamp the flex line to container's min/max cross size. r=dholbert
MozReview-Commit-ID: 9Kqg0lPnkv0
2016-08-10 15:46:35 -07:00
Emilio Cobos Álvarez
cae631d3af Bug 1000957: Whitespace cleanup in nsFlexContainerFrame::Reflow. r=dholbert
MozReview-Commit-ID: 1kGrL6Ji0Rp
2016-08-10 15:46:30 -07:00
Emilio Cobos Álvarez
2d81d293c7 Bug 1000957: Uncomment some flexbox warnings referencing fixed bugs. r=dholbert
MozReview-Commit-ID: COy0I1nm3DU
2016-08-10 15:46:21 -07:00
Ting-Yu Lin
7e5a56b15d Bug 1277129 Part 7c - Rename various RS variables to RI. r=dbaron
This patch is generated by the following script:

function rename() {
find layout\
     -type f\
     ! -path "./obj*"\
     ! -path "./.git"\
     ! -path "./.hg"\
     \( -name "*.cpp" -or\
        -name "*.h" \)\
        -exec sed -i -r "s/$1/$2/g" "{}" \;
}

rename aChildRS aChildRI
rename aContainingBlockRS aContainingBlockRI
rename aFrameRS aFrameRI
rename aLastRS aLastRI
rename aOuterRS aOuterRI
rename aRS aRI
rename blockHtmlRS blockHtmlRI
rename captionRS captionRI
rename cellRS cellRI
rename childRS childRI
rename firstAncestorRS firstAncestorRI
rename flexContainerRS flexContainerRI
rename gridRS gridRI
rename innerRS innerRI
rename lastButOneRS lastButOneRI
rename LineContainerRS LineContainerRI
rename mBlockRS mBlockRI
rename parentRS parentRI
rename secondAncestorRS secondAncestorRI
rename lastRSSize lastRISize
rename lastRSPadding lastRIPadding

MozReview-Commit-ID: YEgZs3WMow
2016-07-21 18:36:39 +08:00
Ting-Yu Lin
d3e8cf1818 Bug 1277129 Part 7b - Rename various ReflowState variables to ReflowInput. r=dbaron
This patch is generated by the following script:

function rename() {
find .\
     -type f\
     ! -path "./obj*"\
     ! -path "./.git"\
     ! -path "./.hg"\
     \( -name "*.cpp" -or\
        -name "*.h" \)\
        -exec sed -i -r "s/$1/$2/g" "{}" \;
}

rename "([[:alpha:]]*)([rR])eflowState(s?)" "\1\2eflowInput\3"

MozReview-Commit-ID: ITFO7uMTkSb
2016-07-21 18:36:39 +08:00
Ting-Yu Lin
3b9a7090d9 Bug 1277129 Part 6b - Rename rendContext to mRenderingContext in SizeComputationInput. r=dbaron
MozReview-Commit-ID: LczLJDtDncy
2016-07-21 18:36:38 +08:00
Ting-Yu Lin
a16062e5d0 Bug 1277129 Part 6a - Rename frame to mFrame in SizeComputationInput. r=dbaron
MozReview-Commit-ID: 3SXZ4qEZJc
2016-07-21 18:36:38 +08:00
Ting-Yu Lin
bb0825b5c7 Bug 1277129 Part 5c - Rename nsHTMLReflowMetrics to ReflowOutput. r=dbaron
This patch is generated by the following script:

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 "nsHTMLReflowMetrics" "ReflowOutput"

MozReview-Commit-ID: 2HBb7DkooH5
2016-07-21 18:36:38 +08:00
Ting-Yu Lin
10912a51e3 Bug 1277129 Part 1c - Rename nsHTMLReflowState to ReflowInput. r=dbaron
This patch is generated by the following script:

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 nsHTMLReflowState ReflowInput

MozReview-Commit-ID: 9r9vdVv1pXc
2016-07-21 18:36:35 +08:00
Michael Li
a5d5ed2560 Bug 1283273 - Change nsAutoPtr to UniquePtr in classes within layout/generic. r=dholbert 2016-07-08 08:08:00 +02:00
Brad Werth
69ccb7e3db Bug 1243559 - Removes static casts from calls to FrameProperties::Get, ::Set, and ::Remove, and forces callers to use the type associated with the property. r=dbaron 2016-06-21 13:17:11 -07:00
Phil Ringnalda
ae1f6b874d Back out changeset 0bb00282a4c2 (bug 1243559) for widespread SVG assertion failures
CLOSED TREE
2016-06-22 18:45:08 -07:00
Brad Werth
665cd94da6 Bug 1243559 - Removes static casts from calls to FrameProperties::Get, ::Set, and ::Remove, and forces callers to use the type associated with the property. r=dbaron 2016-06-21 13:17:11 -07:00
Astley Chen
f691419a15 Bug 1277131 : Part 3 - rename nsGkAtoms::tableOuterFrame and nsCSSAnonBoxes::tableOuter. r=heycam
MozReview-Commit-ID: 7GIjtUH9hdZ
2016-06-16 13:35:43 +01:00