Commit Graph

3105 Commits

Author SHA1 Message Date
Emilio Cobos Álvarez
8746f1a67e Bug 1427677: Get rid of nsContentUtils::HasDistributedChildren. r=bz
The whole function doesn't have much sense.

I killed its only DOM use in bug 1427511.

Now it only has two callers in nsCSSFrameConstructor, which basically only want
to know whether the children of the same node can have different flattened tree
parents.

So let's check that directly instead (checking whether the element has a binding
or a shadow root), and simplify a bit other surrounding code while at it.

Leave the XUL popup / menubar code doing the broken thing they were doing
beforehand, because it doesn't look to me like it's trivial to fix... They're
effectively assuming that the children of the menupopup end up in a single
insertion point, which is true, but doesn't need to be.

Maybe they should walk the DOM tree? Don't want to dig into that right now,
since XUL insertion points can be reordered and all that... Not fun.

MozReview-Commit-ID: L4lspkxKENr
2018-01-06 11:39:16 +01:00
Emilio Cobos Álvarez
fd2f0df512 Bug 1427908: Never reenter synchronously into frame construction. r=bz
We remove async from the DOM all the time now since bug 1389743.

We could, before this patch, recurse into frame construction in a sync way, due
to the way we handle the weird insertion cases for <fieldset>, <details>, and
<mathml>.

This patch makes those also async, making the IssueSingleInsertNotifications
condition unnecessary.

MozReview-Commit-ID: LujPaYPwA4G
2018-01-03 05:51:12 +01:00
Emilio Cobos Álvarez
4b667b388a Bug 1427824: Remove invalid assertion in presence of display: contents. r=bz
MozReview-Commit-ID: 4jFGHcD5wds
2018-01-05 19:12:42 +01:00
Andrea Marchesini
6034999d9d Bug 1425440 - Get rid of GetChildAt_Deprecated in nsCSSFrameConstructor, r=catalinb 2018-01-03 16:30:15 +01:00
Andrea Marchesini
98865c5324 Bug 1425321 - Renaming nsINode::GetChildAt to GetChildAt_Deprecated, r=catalinb
We want to deprecate nsINode::GetChildAt as the first step of removing DOM node
child array storage. See bug 651120.
2018-01-03 13:59:54 +01:00
Emilio Cobos Álvarez
ebc2e23e06 Bug 1427511: Make GetFlattenedTreeParent more straight-forward. r=smaug
Now that accessing nsIContent slots is not a blob of virtual function calls, we
should be able to unify logic here, and speed up the not-so-rare case for
chrome, while keeping the usual case fast.

MozReview-Commit-ID: 87iY5Cbhx4T
2018-01-02 18:00:25 +01:00
Emilio Cobos Álvarez
8a71d3197b Bug 1423990: Move the last few attribute-related methods outside of nsIContent. r=bz
MozReview-Commit-ID: 8JZuS6O8f8W
2017-12-25 17:50:10 +01:00
Emilio Cobos Álvarez
ecd202d763 Backout changeset e43f568b3e9a (bug 1423990) because some OSX-only code still doesn't build. r=me 2017-12-25 12:55:45 +01:00
Emilio Cobos Álvarez
b3956b6171 Bug 1423990: Move the last few attribute-related methods outside of nsIContent. r=bz
MozReview-Commit-ID: 8JZuS6O8f8W
2017-12-07 19:13:50 +01:00
Emilio Cobos Álvarez
42b8e68243 Bug 1420547: Fix removal of <area> elements from an image map. r=bz
This code was relying on nsImageFrame::ContentRemoved running before it.

MozReview-Commit-ID: Imjhd9exjQS
2017-12-13 01:58:48 +01:00
Emilio Cobos Álvarez
a12241bd7d Bug 1420547: Notify the pres shell specially, instead of via mutation observers. r=bz
This makes the pres shell be notified as the last observer unconditionally.

In practice this doesn't matter, and it may already be the case if an iframe
goes display: none and back. In practice, the only dependency that requires this
order is that the pres shell needs to be notified _after_ the content sink, so
we don't try to enter frame construction before beginning the shell update.

That may be worth looking into, but definitely not in the scope of this bug... :)

MozReview-Commit-ID: 9WeJ5kaUtBq
2017-12-06 05:26:32 +01:00
Emilio Cobos Álvarez
ba0cde9fc6 Bug 1426536: Remove nsContentUtils::IsContentInsertionPoint. r=smaug
We're not going to need it in Shadow DOM v1.

MozReview-Commit-ID: HOokTPlm2Wt
2017-12-20 22:45:19 +01:00
Mats Palmgren
b6257747b6 Bug 1425959 - Only allow ::first-letter/line children when the parent frame is a block frame. r=emilio
MozReview-Commit-ID: 4ARPMUCQKKV
2017-12-20 01:08:53 +01:00
Daniel Holbert
4e1b798cc9 Bug 1398963 part 7: Add an about:config flag to optionally emulate -moz-box with flexbox. r=mats
This feature is intended to help Firefox frontend developers experiment with
replacing XUL content with modern flexbox.  We might also eventually use
this emulation to *actually* render most or all of our legacy XUL UI.

MozReview-Commit-ID: 3g2W9o3t23H
2017-10-26 11:12:17 -07:00
Daniel Holbert
f608ba3a3d Bug 1398963 part 5: Treat XUL Popups like other OOF boxes when generating anon flex items, since they spawn placeholders. r=mats
XUL popups (i.e. FrameConstructionItem instances with mIsPopup==true) behave
like out-of-flow content -- in particular, they generate nsPlaceholderFrame
instances.  So, they need the same placeholder-wrapping behavior that we have
for other out-of-flow frames inside of an emulated legacy box, in order to
satisfy our existing invariants.

MozReview-Commit-ID: KnspN4kTPnx
2017-12-18 12:17:10 -06:00
Daniel Holbert
c230cb8658 Bug 1398963 part 4: Refactor logic in nsCSSFrameConstructor's IsXULDisplayType() function (idempotent patch). r=mats
This patch does not change behavior. This patch just refactors the logic in
IsXULDisplayType so that -moz-box and -moz-inline-box are handled via a
dedicated early-return.  This lets a later patch in this series make a more
understandable targeted tweak to add pref-controlled behavior for these display
values.

MozReview-Commit-ID: 6keGrxJcA5l
2017-12-18 12:17:10 -06:00
Daniel Holbert
3ceb8c2c7c Bug 1398963 part 3: Generalize "webkit-box" variable names and code-comments in nsCSSFrameConstructor.cpp (idempotent patch). r=mats
Now that (per previous patch) NS_STATE_FLEX_IS_EMULATING_LEGACY_BOX isn't just
a webkit-box-specific tag: this patch here generalizes the variable-names and
comments associated with that flag in nsCSSFrameConstructor.cpp.

This patch does not make any changes to behavior; it's simply renaming &
comment tweaks.

MozReview-Commit-ID: DcF5GirAQwD
2017-12-18 12:17:10 -06:00
Daniel Holbert
7d219d6c3a Bug 1398963 part 1: Rename frame-state bit from NS_STATE_FLEX_IS_LEGACY_WEBKIT_BOX to NS_STATE_FLEX_IS_EMULATING_LEGACY_BOX (idempotent patch). r=mats
This patch isn't changing semantics of this bit at all - it just renames it to
a more general name. In other words, this patch does not change behavior.

MozReview-Commit-ID: 4wb13X4YinJ
2017-12-18 12:17:10 -06:00
Mats Palmgren
f630476df9 Bug 1424524 part 2 - Use IsFlexOrGridContainer() in a few more places. r=dholbert
MozReview-Commit-ID: 3BwSheNfbrx
2017-12-14 16:21:49 +01:00
Mats Palmgren
ba292e12df Bug 1424524 part 1 - Use IsFlexContainerForLegacyBox() to avoid code duplication. r=dholbert
MozReview-Commit-ID: 6LY3iW4YnbY
2017-12-14 16:21:49 +01:00
Emilio Cobos Álvarez
e672b5c225 Bug 1424680: Fix appending in some situations to display: contents stuff. r=bz
I've verified that this asserts without the patch.

MozReview-Commit-ID: 8j6x4xswrCe
2017-12-11 06:44:44 +01:00
Emilio Cobos Álvarez
1328840715 Bug 1424094: Remove second argument for GetLastIBSplitSibling, and always append to the last continuation of an IB split. r=mats
The LastContinuation stuff behavior was what we did before the other patches, so
let's do that all the time to avoid surprises, though unfortunately I don't have
test-cases.

This effectively restores exactly the same behavior we had before all my frame
constructor patches, just with less code.

MozReview-Commit-ID: IkQ3H3rtlQM
2017-12-08 00:24:36 +01:00
Emilio Cobos Álvarez
0b0b1494f4 Bug 1419964: Remove AdjustParentFrameForAfterContent. r=mats
Instead, handle the display: contents case and the ::after case using
FindNextSibling.

The removal of line frames is moved up to not interfere with the insertion point
computation.

Also parentAfterFrame is renamed to nextSibling, which is more relevant to what
it was doing with display: contents.

MozReview-Commit-ID: 1cqclsGQlaw
2017-12-08 00:02:00 +01:00
Emilio Cobos Álvarez
2480b400db Bug 1419762: Return the inline continuation of an IB split when appending. r=mats
The only reason not to do that is when there's after content in there. We know
that there isn't really any ::after content, since it would've been handled by
FindNextSibling, so we know we're performing a real append.

MozReview-Commit-ID: ExoPolZy4gG
2017-12-07 23:57:39 +01:00
Emilio Cobos Álvarez
c10ea9ea04 Bug 1423167: Move most attribute-related methods from nsIContent to Element. r=bz
MozReview-Commit-ID: 6WXqNiODttD
2017-12-06 16:05:59 +01:00
Emilio Cobos Álvarez
13332c287a Bug 1422654: stylo: Avoid restyling XBL-bound element if the binding doesn't have stylesheets. r=heycam
MozReview-Commit-ID: An2McUbpCLk
2017-12-04 02:47:54 +01:00
Emilio Cobos Álvarez
f6451b69ce Bug 1417661: Use the correct parent style for inheriting from first-letter if the container is an anonymous box. r=bz
MozReview-Commit-ID: 1B7DrAVa274
2017-11-28 19:29:46 +01:00
KuoE0
ed8ea5e117 Bug 1419337 - Remove aStyleContext parameter from nsFrameConstructorState::AddChild(). r=TYLin
We don't use aStyleContext inside nsFrameConstructorState::AddChild(), so I
think we should remove it.

MozReview-Commit-ID: JQUlEDyVcUj
2017-11-21 18:01:53 +08:00
Emilio Cobos Álvarez
1ceef98650 Bug 1418560: Don't build IsFlattenedTreeChild in release builds. r=bustage
MozReview-Commit-ID: GP7Qds5loBI
2017-11-20 18:07:06 +01:00
Emilio Cobos Álvarez
f7e7d95d27 Bug 1418560: Properly return null from GetFlattenedTreeParent if the node is XBL fallback content and the binding is active. r=heycam
Otherwise we may inappropriately style it or what not. This asserts with the
patches of bug 1414999 plus the cleanup of bug 1418456, since we no longer do
StyleNewChildren (which walks over the flattened tree children).

Too bad that GetXBLBinding is a virtual call in Gecko, probably can do just
MAY_BE_IN_BINDING_MGR...

MozReview-Commit-ID: CNU0YdKeaR0
2017-11-20 17:32:07 +01:00
Emilio Cobos Álvarez
a96e393970 Bug 1418456: Yet another followup: Always re-get the style context in the servo case after loading an XBL binding to avoid tripping otherwise useful assertions. r=me
Now we always restyle the whole subtree for Servo, so we may create another
style context for the bound element.

This trips assertions if we happen to create pseudo-element styles for them.

Since that assertion is pretty useful, just re-get the style context all the
time, which is a cheap operation otherwise.

The CLOSED TREE nightmare should end. This wasn't caught in my try run because
another assertion made the crashtests stop running, apparently.

MozReview-Commit-ID: 6U0phWFvvXO
2017-11-20 17:09:29 +01:00
Emilio Cobos Álvarez
061ab063bb Bug 1418456: followup: Re-add the HasServoData check because I was too optimistic addressing review comments. r=me
On a CLOSED TREE.

MozReview-Commit-ID: 8vpoqBv1E3
2017-11-20 14:49:45 +01:00
Emilio Cobos Álvarez
96999a49a2 Bug 1418456: Get rid of unstyled children only traversals. r=heycam
They're useless now, provided we remove the hack to not traverse XBL-bound
elements on initial styling.

This also allows us to get rid of the fallback case.

MozReview-Commit-ID: AvBVdyF1wb6
2017-11-20 13:05:35 +01:00
Emilio Cobos Álvarez
83f112b922 Bug 1418456: Clear subtree element data when applying an XBL binding. r=heycam
We not only need to care about children getting inserted in the flat tree, but
also about children moving _out_ of the flat tree.

In particular, as of right now we may leave stale data on elements when they
disappear from the flattened tree.

We're lucky enough that in 99% of the situations we enter in[1] and that clears
all the stuff, including servo data. But my assertions for bug 1414999 caught
the template / observes case.

Thus, just clear the whole bound element subtree data, and restyle it in the
end, no need for StyleNewChildren. This matches what we do for shadow DOM
(though in the shadow DOM case we do it async in DestroyFramesForAndRestyle).

[1]: https://searchfox.org/mozilla-central/rev/9bab9dc5a9472e3c163ab279847d2249322c206e/dom/xbl/nsXBLBinding.cpp#368

MozReview-Commit-ID: 69A0aR0AFfU
2017-11-20 13:02:24 +01:00
Emilio Cobos Álvarez
0003f8e546 Bug 1415843: Remove an unneeded call to AdjustAppendParentForAfterContent. r=bz
I don't know why GetInsertionPrevSibling would get the parent wrong.

IsValidSibling handles the frameset case and a lot of the table caption cases.

The table caption cases IsValidSibling can't handle are due to elements which
create frames based on something other than display.

For those cases, while IsValidSibling will return incorrect results, we will end
up seeing that the parent frame is the wrong type after creating the frame
construction items for the new stuff and reframe under WipeContainingBlock.

MozReview-Commit-ID: 5b3L4CB6Oxl
2017-11-08 15:38:09 +01:00
Xidorn Quan
c3a97dac83 Bug 1417220 - Force re-resolve style for doc element when binding requires so. r=emilio
MozReview-Commit-ID: DdbpZnk7tCZ
2017-11-15 15:39:29 -08:00
Chris Peterson
c5d0841695 Bug 1416164 - Replace NS_POSTCONDITION with MOZ_ASSERT. r=froydnj
MozReview-Commit-ID: 9K3Ksf36uxr
2017-11-04 22:48:48 -07:00
Emilio Cobos Álvarez
c5e6b1e66c Bug 1415538: Remove dead frame construction code (InsertFirstLineFrames). r=mats
InsertFirstLineFrames has been dead for a long time, and I don't think it's
worth to keep it around. It's in the VCS history anyway.

MozReview-Commit-ID: FetYB6nf38D
2017-11-08 11:57:39 +01:00
Emilio Cobos Álvarez
8e80489f3a Bug 1415149: Simplify nsCSSFrameConstructor::GetRangeInsertionPoint. r=bz
MozReview-Commit-ID: HsICs5TvhGU
2017-11-06 19:08:08 +01:00
Emilio Cobos Álvarez
856d499357 Bug 1415152: No need for AdjustAppendForAfter, since ::after is handled in FindNextSibling. r=mats
MozReview-Commit-ID: 5jfJul3cJj3
2017-11-06 18:56:00 +01:00
Mats Palmgren
26c8be1e23 Bug 1400618 part 2 - Remove the nsIFrame::GenConProperty property and make aPostDestroyData deal with unbinding it. r=bz
MozReview-Commit-ID: HJ5OTJ4v4Y1
2017-11-07 01:20:34 +01:00
Emilio Cobos Álvarez
a289950f9f Bug 1413619: Fix insertion point computation when display: contents pseudos are involved. r=mats,bz
This is a significant rework of how do we compute the insertion point of a
node.

We handle pseudos in the same function instead of out of band, and also recurse
up when the parent has display: contents, which simplifies the code IMO.

MozReview-Commit-ID: 1rSfv1Tq5gO
2017-11-04 11:58:16 +01:00
Ryan VanderMeulen
6735413a2e Backed out changeset ee243422ed36 (bug 1413619) for test failures. 2017-11-01 17:29:10 -04:00
Emilio Cobos Álvarez
04fb712a4c Bug 1413619: Fix insertion point computation when display: contents pseudos are involved. r=mats
This actually fixes bug 1251799, and bug 1359656. Turns out the bug it was
hiding was this one! :)

MozReview-Commit-ID: KCSsu4T0PER
2017-11-01 18:56:13 +01:00
Emilio Cobos Álvarez
8a66e27965 Bug 1413361: EnsureFrameForTextNode shouldn't reconstruct synchronously without up-to-date styles. r=bz
MozReview-Commit-ID: IzpcdCdcPjr
2017-11-01 20:06:28 +01:00
Emilio Cobos Álvarez
1ead7999d9 Bug 979782: Enable lazy frame construction for display: contents direct descendants. r=mats
There's no reason I can think of this wouldn't work, and try is totally green
without it.

MozReview-Commit-ID: K9QXbAOFu3A
2017-10-31 09:21:59 +01:00
Emilio Cobos Álvarez
e894349700 Bug 979782: Fixup FindFrameForContentSibling to don't duplicate work and trigger assertions for display: contents. r=mats
MozReview-Commit-ID: HAZh0RYY76x
2017-11-01 16:40:09 +01:00
Daniel Holbert
8fea3c215f 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
2017-10-27 10:33:53 -07:00
Kris Maglione
0951de1842 Bug 1411817: Add do_AddRef overloads for nsCOMPtr<T> and nsRevocableEventPtr<T>. r=froydnj
MozReview-Commit-ID: gEU7whtNHc
2017-10-25 19:46:50 -07:00
Xidorn Quan
162531ffac Bug 1408293 - Eagerly style new children inserted in XUL listbox. r=bz
MozReview-Commit-ID: HLATTkLd1X8
2017-10-25 18:00:54 +11:00