Commit Graph

1788 Commits

Author SHA1 Message Date
Mats Palmgren
a78235ff8d Bug 205202 part 4 - [css-lists][css-pseudo] Rename various uses of bullet with marker to avoid any misleading association with nsBulletFrame (idempotent patch). r=emilio 2019-03-24 23:13:53 +01:00
Mats Palmgren
a31b79f0fd Bug 205202 part 3 - [css-lists][css-pseudo] Add support for the 'content' CSS property on ::marker pseudo elements. r=emilio 2019-03-24 23:13:53 +01:00
Mats Palmgren
127f3ae120 Bug 205202 part 1 - [css-lists][css-pseudo] Add support for the ::marker pseudo element on list items. Alias :-moz-list-bullet/number to that in the parser. r=emilio 2019-03-24 23:13:53 +01:00
Mats Palmgren
ed33ad3cca Bug 288704 part 3 - Make nsBulletFrame use the built-in 'list-item' CSS counter and remove the old implementation. r=emilio 2019-03-24 23:13:53 +01:00
Miko Mynttinen
792d1b0f69 Bug 1536778 - Part 2: Optimize descending into lines r=mattwoodrow
Depends on D24166

Differential Revision: https://phabricator.services.mozilla.com/D24167
2019-03-20 19:03:13 +00:00
Miko Mynttinen
0722739e03 Bug 1536778 - Part 1: Use aLists instead of linesDisplayListCollection r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D24166
2019-03-20 18:45:11 +00:00
Ryan Hunt
a96492f0f6 Bug 1523969 part 14 - Move method definition inline comments to new line in 'layout/'. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D21115
2019-02-25 16:09:24 -06:00
Ting-Yu Lin
46b3078678 Bug 1527725 - Exclude ColumnSetWrapperFrame from the first letter style consistency check in nsBlockFrame. r=dbaron
If there's ::first-letter pseudo element on the multicol container,
ColumnSetWrapperFrame will have the first letter style, but it won't get
the NS_BLOCK_HAS_FIRST_LETTER_STYLE bit during frame construction. The
actual first-letter frame construction happens under -moz-column-content
anonymous block.

This patch excludes ColumnSetWrapperFrame from the debug check to meet
the expectation.

Add a reftest to make sure ::first-letter and ::first-line still work
after introducing ColumnSetWrapperFrame, and no assertion is fired.

Differential Revision: https://phabricator.services.mozilla.com/D20757
2019-02-22 01:14:45 +00:00
Ting-Yu Lin
aedfc303f7 Bug 1526097 - Remove nsIFrame::eBlockFrame flag. r=dholbert
Only nsBlockFrame and its subclasses recognize the nsIFrame::eBlockFrame
flag, so we can replace the usage of the flag with either
nsIFrame::IsBlockFrameOrSubclass() or a do_QueryFrame().

Differential Revision: https://phabricator.services.mozilla.com/D20542
2019-02-20 21:18:14 +00:00
Emilio Cobos Álvarez
e9ff37af55 Bug 1525955 - Include anon boxes in CSSPseudoElementType, to remove ComputedStyle::mPseudoTag. r=heycam
This is more consistent with what the Rust bits of the style system do, and
removes a pointer from ComputedStyle which is always nice.

This also aligns the Rust bits with the C++ bits re. not treating xul pseudos as
anonymous boxes. See the comment in nsTreeStyleCache.cpp regarding those.

Can't wait for XUL trees to die.

Depends on D19001

Differential Revision: https://phabricator.services.mozilla.com/D19002
2019-02-19 13:44:33 +00:00
Emilio Cobos Álvarez
35c9c16dab Bug 1526609 - When interrupting the reflow of abspos kids, still account for the old overflow areas. r=bzbarsky
Otherwise, if we're scrolled, the scroll frame will think that our scroll range
was reduced, which will in turn clamp the scroll position, which is not good.

Differential Revision: https://phabricator.services.mozilla.com/D19362
2019-02-15 21:08:43 +00:00
Razvan Maries
a0f464735e Merge mozilla-central to mozilla-inbound. a=merge on a CLOSED TREE 2019-02-15 11:59:08 +02:00
Emilio Cobos Álvarez
9f26fc9ab4 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
Ting-Yu Lin
5fc4ae9007 Bug 1527519 Part 3 - Replace remaining nsLayoutUtils::GetAsBlock() with do_QueryFrame(), and delete nsLayoutUtils::GetAsBlock(). r=mats
Depends on D19861

Differential Revision: https://phabricator.services.mozilla.com/D19863
2019-02-15 01:38:05 +00:00
Ting-Yu Lin
e7c211a933 Bug 1527519 Part 2 - Replace some nsLayoutUtils::GetAsBlock() with nsIFrame::IsBlockFrameOrSubclass(). r=mats
Depends on D19860

Differential Revision: https://phabricator.services.mozilla.com/D19861
2019-02-15 01:38:04 +00:00
Emilio Cobos Álvarez
ce3d5d43c1 Bug 1523071 - Use Rust lengths for margin / padding / inset. r=jwatt
Also for the intersection observer root margin, since it was easier to fix it
up and clean it up than not doing it.

This is the first big step to get rid of nscoord. It duplicates a bit of logic
in nsLayoutUtils since for now max/min-width/height are still represented with
nsStyleCoord, but I think I prefer to land this incrementally.

I didn't add helpers for the physical accessors of the style rect sides that
nsStyleSides has (top/bottom/left/right) since I think we generally should
encourage the logical versions, but let me know if you want me to do that.

Differential Revision: https://phabricator.services.mozilla.com/D17739
2019-02-10 04:11:58 +01:00
Emilio Cobos Álvarez
016c93db9b Bug 1523071 - Add bindings for LengthPercentage, and use it for text-indent. r=jwatt
Which is the only property that uses LengthPercentage alone.

Differential Revision: https://phabricator.services.mozilla.com/D17737
2019-02-10 04:10:24 +01:00
Emilio Cobos Álvarez
df05b5492b 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
Daniel Holbert
43dffe3513 Bug 1525133: Explicitly skip orthogonal-flow children when determining last-baseline of a block from its children. r=mats
Without the check that I'm adding in this patch, we'd violate the
"parallel writing mode" expectation of some baseline accessors
that we use in the now-guarded code. And we'd produce bogus layout
as a result.

The added assertions are just for good measure. The included testcase
causes us to fail both assertions, in a build that's missing the fix.

Differential Revision: https://phabricator.services.mozilla.com/D18715
2019-02-05 19:45:46 +00:00
Emilio Cobos Álvarez
8c394b0983 Bug 1524328 - Don't resolve counter styles in the style system. r=xidorn
Doing it during layout instead. This also has the nice side-effect of
no longer needing to do a full restyle when counter-style rules are inserted.

Differential Revision: https://phabricator.services.mozilla.com/D18343
2019-02-03 03:00:12 +01:00
Ting-Yu Lin
829894f44c Bug 1523061 Part 3 - Remove ListTag() that prints frame tag in a frame list. r=dholbert
We can replace it by a simple for-loop. If we want to print not only the
tag, but the detailed frame information, we can use nsFrameList::List().

Differential Revision: https://phabricator.services.mozilla.com/D17734
2019-01-29 21:30:11 +00:00
Ting-Yu Lin
91eaccc5e4 Bug 1523061 Part 2 - Remove static ListTag(FILE*, const nsIFrame*). r=dholbert
Many of the modifications are guarded by #ifdefs. I verify them locally
by manually define them in nsBlockDebugFlags.h and nsLinelayout.cpp.

Note that I replace "mFrame" with "frame" in lines guarded by
NOISY_BLOCK_DIR_MARGINS in nsBlockFrame.cpp because they were
incorrectly renamed in Bug 1277129 Part 6a.
https://hg.mozilla.org/mozilla-central/rev/a70b04f074fc

Differential Revision: https://phabricator.services.mozilla.com/D17733
2019-01-29 21:22:14 +00:00
Cameron McCormack
7f5c58af52 Bug 886716 - Fix sorting of text-overflow:ellipsis relative to positioned content. r=mats
Differential Revision: https://phabricator.services.mozilla.com/D15504
2019-01-18 04:50:02 +00:00
Ehsan Akhgari
498e2df734 Bug 1521000 - Part 2: Adjust our clang-format rules to include spaces after the hash for nested preprocessor directives r=sylvestre
# ignore-this-changeset
2019-01-18 10:16:18 +01:00
Ting-Yu Lin
8b74d2a54d Bug 1515192 - Replace handcrafted FrameChildListIDs class with EnumSet. r=mats
The following APIs are changed.
1. Contains() needs to become contains(). (EnumSet's methods have lowercase names.)
2. Use list constructor rather than "|" like a plain enum.
3. Use operator+= instead of operator|=.

Differential Revision: https://phabricator.services.mozilla.com/D14908
2018-12-19 00:50:09 +00:00
Ting-Yu Lin
6413b12f6c Bug 1507244 Part 1 - Add block formatting context bits for column-span in nsBlockFrame::Init(). r=dbaron
That's the common place where the bits are added.

Differential Revision: https://phabricator.services.mozilla.com/D13596
2018-12-17 18:41:01 +00:00
Cameron McCormack
638e13698f Bug 1512716 - Re-indent NS_QUERYFRAME macros after clang-format. r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D13995
2018-12-07 20:00:18 +00:00
Miko Mynttinen
d362fc5ee4 Bug 1512251 - Remove unused render only selection code r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D13829
2018-12-06 19:40:50 +00:00
Daniel Holbert
0d1b724969 Bug 1512112: Remove redundant includes from source files in layout. r=TYLin
All of the removed includes are redundant (i.e. they're #included elsewhere in
the same file).

In most cases, I'm removing the second (redundant) copy of the
#include, except when that copy makes more sense (i.e. if it's in better sorted
order, or if it's paired alongside a closely-associated header while the
earlier copy is not).

Here's the script that I used to generate candidates here -- I ran this in
every subdirectory of layout, on my linux machine (warning, this writes two
files to your /tmp directory):

for FILE in *.h *.cpp; do
  nonunique=$(grep \#include $FILE | grep -v List\.h | cut -f2 -d'"'  | cut -f2- -d'/'| cut -f2- -d'/' | sort | wc -l)
  unique=$(   grep \#include $FILE | grep -v List\.h | cut -f2 -d'"'  | cut -f2- -d'/'| cut -f2- -d'/' | sort | uniq | wc -l)
  if [[ "$unique" != "$nonunique" ]]; then
    echo "$FILE: $nonunique / $unique"
    grep \#include $FILE | cut -f2 -d'"'  | grep -v List\.h | cut -f2- -d'/'| cut -f2- -d'/' | sort  > /tmp/nonunique.txt
    grep \#include $FILE | cut -f2 -d'"'  | grep -v List\.h | cut -f2- -d'/'| cut -f2- -d'/' | sort | uniq  > /tmp/unique.txt
    diff /tmp/nonunique.txt /tmp/unique.txt
    echo
  fi
done

Depends on D13773

Differential Revision: https://phabricator.services.mozilla.com/D13774
2018-12-05 18:55:59 +00:00
Sylvestre Ledru
e5a134f73a Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset
2018-11-30 11:46:48 +01:00
Ting-Yu Lin
ff149eedd4 Bug 916972 - Eliminate nsIFrame::GetSplittableType() completely. r=mats,dholbert
Currently, GetSplittableType() is called only in
nsCSSFrameConstructor::CreateContinuingFrame(). The splittable concrete frames
should inherit from nsSplittableFrame, and must explicitly create continuing
frame in CreateContinuingFrame(). Thus, no need to maintain GetSplittableType().

Differential Revision: https://phabricator.services.mozilla.com/D10798
2018-11-05 19:11:12 +00:00
Manuel Rego Casasnovas
065887960f Bug 1491235: [css-contain] Make 'contain:layout' (not 'contain:size') suppress baseline measurements r=dholbert
The CSSWG has recently resolved that layout containment
suppress baseline alignment, while size containment does not:
https://github.com/w3c/csswg-drafts/issues/2995

Spec text (https://drafts.csswg.org/css-contain/#containment-layout):
  "7. For the purpose of the vertical-align property,
   or any other property whose effects need to relate
   the position of the containing element's baseline
   to something other than its descendants,
   the containing element is treated as having no baseline."

And a note in (https://drafts.csswg.org/css-contain/#containment-size):
  "Note: size containment does not suppress baseline alignment.
   See layout containment for that."

This patch does this change just switching IsContainSize()
by IsLayoutSize() in several places related to baseline alignment
in the source code.

With the patch several WPT tests start to pass. Apart from that,
some of the tests under vendor-imports are updated to follow
the new behavior.
2018-10-09 14:13:13 -07:00
Ting-Yu Lin
1ad540c6ce Bug 1486602 Part 3 - Create bullet frame for block frames in nsCSSFrameConstructor::ConstructBlock() instead of in their SetInitialSingleChild() r=mats
nsCSSFrameConstructor::FindDisplayData() guarantees a block with "display:
list-item" will be constructed by ConstructBlock() (either through
ConstructScrollableBlock() or ConstructNonScrollableBlock()).

This is also a preparation to fix bug 1491915 since we want to control
bullet frame creation under column hierarchy.

Depends on D6840

Differential Revision: https://phabricator.services.mozilla.com/D6841
2018-09-26 20:55:26 +00:00
Ting-Yu Lin
30c1f7b36a Bug 1486602 Part 2 - Replace RenumberLists with RenumberList in comments r=mats
The function was renamed in bug 1171419 Part 10.

Depends on D6839

Differential Revision: https://phabricator.services.mozilla.com/D6840
2018-09-26 01:22:24 +00:00
Ting-Yu Lin
3eb30ec034 Bug 1486602 Part 1 - Remove arguments of nsBlockFrame::CreateBulletFrameForListItem() r=mats
Those arguments were added in bug 591737 to create a triangle for the
summary frame, but <summary> has been re-implemented by using "list-item"
since then. Now the only caller is nsBlockFrame itself, so there's no need
to expose those arguments.

Differential Revision: https://phabricator.services.mozilla.com/D6839
2018-09-25 23:13:37 +00:00
Daniel Holbert
32ed142b3d Bug 1494426 part 2: Use ReflowInput::ComputedSize() convenience method in a few more places. r=TYLin
This patch isn't expected to change behavior; it's just some simplification.

Depends on D6976

Differential Revision: https://phabricator.services.mozilla.com/D6978
2018-09-26 21:44:18 +00:00
Mats Palmgren
22703ac6e5 Bug 1487221 - Add memory reporting for nsLineBox::mFrames. r=bz 2018-09-19 05:27:18 +02:00
Mats Palmgren
62d9aaeacf Bug 1491731 - [css-text-3] Resolve 'text-indent' using a zero percentage basis in intrinsic sizing. r=dholbert
Per CSSWG resolution:
https://github.com/w3c/csswg-drafts/issues/1597#issuecomment-406001183
2018-09-17 20:14:24 +02:00
Ting-Yu Lin
ff3aec10fb Bug 1490525 Part 1 - Remove nsReflowStatus::ToString() r=heycam
This does Bug 1464967 Part 2 in a different way by using mozilla::ToString()
to dump nsReflowStatus.

Differential Revision: https://phabricator.services.mozilla.com/D5634
2018-09-12 04:04:09 +00:00
Zhang Junzhi
53f2fa9f5a Bug 1490611 - physical to logical name refactor: DISPLAY_*_WIDTH to DISPLAY_*_INLINE_SIZE(as well as the relevant struct in the macro contents) r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D5657
2018-09-12 12:35:47 +00:00
Doug Thayer
79ac9aba8d Bug 1489588 - Allocate TextOverflows inline r=mattwoodrow
Summary:
Once the nsDisplayList difficulties are sorted out, this
becomes rather trivial.

Depends on D5293

Reviewers: mattwoodrow

Reviewed By: mattwoodrow

Bug #: 1489588

Differential Revision: https://phabricator.services.mozilla.com/D5294
2018-09-11 04:31:40 +03:00
Emilio Cobos Álvarez
42ec82f8a2 Bug 1486457 - Clear the float list if we weren't able to place a line. r=dbaron
We'll re-do the line anyway, and we'll forget about all the already-positioned
floats in the line DoReflowInlineFrames anyway.

Differential Revision: https://phabricator.services.mozilla.com/D4457
2018-08-28 18:13:20 +00:00
Xidorn Quan
eea389b1ef Bug 1484521 - Prepend bullet frame in line layout. r=jfkthame
Bug 1478178 regressed this case because bullet frame is the last frame
added to line layout, rather than the first, so when we try to apply
justification, we end up giving it the accumulated offset of the whole
line.

Bullet frame has to be added after other frames in the line have been
placed, because its presence may depend on whether the line is empty.
However, bullet frame is logically the first frame in a line and
appending it to the end is somewhat counter-intuitive.

Thus, this patch tries to fix the issue via prepending bullet frame in
line layout, so that the order of frames there can be more reliable.

Differential Revision: https://phabricator.services.mozilla.com/D3760
2018-08-24 10:44:04 +00:00
Cosmin Sabou
d6de4f5770 Merge mozilla-central to autoland. a=merge 2018-08-24 00:44:17 +03:00
Cosmin Sabou
793596386b Merge mozilla-inbound to mozilla-central. a=merge 2018-08-24 00:40:14 +03:00
Emilio Cobos Álvarez
4c34d703b9 Bug 1485430 - Simplify PlaceBelowCurrentFloats. r=dbaron,mats
No reason to pass our own member as an argument.

Differential Revision: https://phabricator.services.mozilla.com/D4000
2018-08-22 23:29:22 +00:00
Emilio Cobos Álvarez
d5fa724049 Bug 488725: Don't position floats in a nowrap context until hitting a break opportunity. r=dbaron
Differential Revision: https://phabricator.services.mozilla.com/D3900
2018-08-23 16:45:01 +02:00
Gerald Squelart
fc3e3c4010 Bug 1483946 - Fix CSS containment issue with scrollable elements - r=dholbert
Scrollable elements already trap all of their contents, nothing should spill
out, so there is no need for special handling of the `contain` CSS property.

Differential Revision: https://phabricator.services.mozilla.com/D3854
2018-08-23 15:55:54 +00:00
Cameron McCormack
e84b70ae83 Bug 1482782 - Part 5: Move CSS anonymous box atoms to nsGkAtoms. r=njn,emilio
Summary: Depends On D3283

Reviewers: njn!, emilio!

Tags: #secure-revision

Bug #: 1482782

Differential Revision: https://phabricator.services.mozilla.com/D3284
2018-08-15 15:46:39 +10:00
Cameron McCormack
eb1c77b263 Bug 1482782 - Part 4: Move CSS pseudo-element atoms to nsGkAtoms. r=njn,emilio
Summary: Depends On D3282

Reviewers: njn!, emilio!

Tags: #secure-revision

Bug #: 1482782

Differential Revision: https://phabricator.services.mozilla.com/D3283
2018-08-15 15:46:00 +10:00