Commit Graph

3586 Commits

Author SHA1 Message Date
Csoregi Natalia
4e859d7b1a Backed out 3 changesets (bug 1799343, bug 1799580) for causing failures on /browser_history_after_appMenu.js. CLOSED TREE
Backed out changeset 63c270ba91ad (bug 1799343)
Backed out changeset 713e6f0fbd20 (bug 1799580)
Backed out changeset 42d1b8742662 (bug 1799343)
2022-11-09 21:26:06 +02:00
Emilio Cobos Álvarez
80aaaacfe0 Bug 1799580 - Remove display: -moz-popup. r=TYLin
We already rely on it applying only to XULPopupElement's. Make it
explicit and remove the CSS value.

Differential Revision: https://phabricator.services.mozilla.com/D161552
2022-11-09 14:19:22 +00:00
Emilio Cobos Álvarez
64563d8526 Bug 1799343 - Simplify XUL popup handling. r=TYLin
* Make non-menulist popups just absolute positioned top-layer items.
 * Simplify menulist popups to just be static-positioned items under
   nsMenuFrame.

We need to keep kPopupList only for nsMenuFrame. In the future it can be
removed, see TODO in xul.css

Differential Revision: https://phabricator.services.mozilla.com/D161404
2022-11-09 14:19:22 +00:00
Cristian Tuns
0e3ee79a08 Backed out 2 changesets (bug 1799580, bug 1799343) for causing mochitest failures on win7 CLOSED TREE
Backed out changeset fb0df93a4719 (bug 1799580)
Backed out changeset 493c9ca00c91 (bug 1799343)
2022-11-09 07:15:51 -05:00
Emilio Cobos Álvarez
f496edbc02 Bug 1799580 - Remove display: -moz-popup. r=TYLin
We already rely on it applying only to XULPopupElement's. Make it
explicit and remove the CSS value.

Differential Revision: https://phabricator.services.mozilla.com/D161552
2022-11-09 09:17:22 +00:00
Emilio Cobos Álvarez
8394b73152 Bug 1799343 - Simplify XUL popup handling. r=TYLin
* Make non-menulist popups just absolute positioned top-layer items.
 * Simplify menulist popups to just be static-positioned items under
   nsMenuFrame.

We need to keep kPopupList only for nsMenuFrame. In the future it can be
removed, see TODO in xul.css

Differential Revision: https://phabricator.services.mozilla.com/D161404
2022-11-09 09:17:21 +00:00
Sandor Molnar
b533bf91d1 Backed out 4 changesets (bug 1799343) for causing multiple crashes. CLOSED TREE
Backed out changeset 3150074bccfd (bug 1799343)
Backed out changeset 7f6358a0b692 (bug 1799343)
Backed out changeset 34f040f379b1 (bug 1799343)
Backed out changeset a609c8c27ca8 (bug 1799343)
2022-11-08 05:54:37 +02:00
Emilio Cobos Álvarez
0c8f9259db Bug 1799343 - Simplify XUL popup handling. r=TYLin
* Make non-menulist popups just absolute positioned top-layer items.
 * Simplify menulist popups to just be static-positioned items under
   nsMenuFrame.

We need to keep kPopupList only for nsMenuFrame. In the future it can be
removed, see TODO in xul.css

Differential Revision: https://phabricator.services.mozilla.com/D161404
2022-11-08 00:18:00 +00:00
Timothy Nikkel
6e020ca451 Bug 1798571. Remove unused nsCSSFrameConstructor::mIsDestroyingFrameTree. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D160967
2022-11-01 22:41:13 +00:00
Ting-Yu Lin
778d5f0e8c Bug 1798373 Part 8 - Convert more frame list manipulation methods to take rvalue references of nsFrameList. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D160844
2022-11-01 21:15:55 +00:00
Ting-Yu Lin
2a8260149f Bug 1798373 Part 7 - Change nsContainerFrame::InsertFrames() to take rvalue reference of nsFrameList. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D160843
2022-11-01 21:15:55 +00:00
Ting-Yu Lin
0132fff981 Bug 1798373 Part 6 - Change nsContainerFrame::AppendFrames() to take rvalue reference of nsFrameList. r=emilio
Change nsBlockFrame::AppendFrames() helper, too.

Differential Revision: https://phabricator.services.mozilla.com/D160842
2022-11-01 21:15:54 +00:00
Ting-Yu Lin
782d64e3cf Bug 1798373 Part 5 - Change nsContainerFrame::SetInitialChildList() to take rvalue reference of nsFrameList. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D160841
2022-11-01 21:15:54 +00:00
Ting-Yu Lin
a118547d80 Bug 1798373 Part 4 - Remove nsFrameList::SetFrames() that takes nsFrameList. r=emilio
SetFrame() is equivalent to `operator=`, so external callers can use `operator=`
instead. For the two callers wanting to set `nsFrameList` to `AbsoluteFrameList`
in `nsCSSFrameConstructor`, removing SetFrame() disallows it. However, we can
easily change the declaration from `nsFrameList` to a `AbsoluteFrameList` to
resolve the problem.

Differential Revision: https://phabricator.services.mozilla.com/D160840
2022-11-01 21:15:53 +00:00
Ting-Yu Lin
4cb42a962c Bug 1798373 Part 2 - Change nsFrameList::AppendFrames to take rvalue reference of nsFrameList. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D160838
2022-11-01 21:15:52 +00:00
Ting-Yu Lin
b33681f10b Bug 1798373 Part 1 - Change nsFrameList::InsertFrames to take rvalue reference of nsFrameList. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D160837
2022-11-01 21:15:52 +00:00
Emilio Cobos Álvarez
e9cb10aca8 Bug 1797308 - Make <xul:spacer> use non-XUL layout. r=jwatt
Nothing overrides its display value so it would get -moz-box display by
default, like all other XUL elements.

Differential Revision: https://phabricator.services.mozilla.com/D160222
2022-10-29 21:51:29 +00:00
Emilio Cobos Álvarez
070ed626ea Bug 1797703 - Fix frame constructor save state restoration. r=emilio
Restore the old logic [1] prior to introducing Bug 1797011 Part 2.

[1] https://searchfox.org/mozilla-central/rev/85cbcecd24554c1fa88360412452ad0f7ed48630/layout/base/nsCSSFrameConstructor.cpp#1309-1335
[2] https://hg.mozilla.org/mozilla-central/rev/3f443cbb5bdd

The wpt test is written by Emilio Cobos Álvarez <emilio@crisal.io> in
https://phabricator.services.mozilla.com/D160523.

Differential Revision: https://phabricator.services.mozilla.com/D160600
2022-10-28 07:56:50 +00:00
Noemi Erli
0b4236c623 Backed out changeset 4dfea46f3cd0 (bug 1797703) for causing reftest failures 2022-10-28 01:40:58 +03:00
Emilio Cobos Álvarez
4094a217ba Bug 1797703 - Fix frame constructor save state restoration. r=TYLin,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D160523
2022-10-27 21:20:02 +00:00
Ting-Yu Lin
97ea6ca90b Bug 1797011 Part 4 - Rename AbsoluteFrameList::containingBlock to mContainingBlock to match coding style. r=emilio,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D160104
2022-10-26 04:22:25 +00:00
Ting-Yu Lin
ab31364a37 Bug 1797011 Part 3 - Delete nsFrameList's copy assigment operator. r=emilio
This patch doesn't change behavior.

Differential Revision: https://phabricator.services.mozilla.com/D160015
2022-10-26 04:22:25 +00:00
Ting-Yu Lin
934796e5ac Bug 1797011 Part 2 - Make AbsoluteFrameList a move-only class; improve nsFrameConstructorSaveState and PushAbsoluteContainingBlock(). r=emilio
This patch doesn't change behavior.

AbsoluteFrameList is a derived class of nsFrameList, so we change it a move-only
class in order to nsFrameList move-only in Part 3.

Some detail of this patch:

- Define move constructor and move assignment operator for AbsoluteFrameList.
  This effectively disables the auto generated copy constructor and copy
  assignement operator.

- Initialize nsFrameConstructorSaveState's member variables in class definition,
  and remove its constructor.

- Remove `mSavedFixedList` since we can rewire the logic in
  `~nsFrameConstructorSaveState` and `PushAbsoluteContainingBlock()` to make it
  redundant.

- Make self-assignment correct in nsFrameList's move assignment operator.

Differential Revision: https://phabricator.services.mozilla.com/D160014
2022-10-26 04:22:24 +00:00
Butkovits Atila
bb7e04cc5e Backed out 4 changesets (bug 1797011) for causing high frequency ThreadSanitizer failures. CLOSED TREE
Backed out changeset e55bef9aa488 (bug 1797011)
Backed out changeset 515757be2f7e (bug 1797011)
Backed out changeset 360739dfb6d1 (bug 1797011)
Backed out changeset 9a3f104b78c5 (bug 1797011)
2022-10-25 01:03:29 +03:00
Ting-Yu Lin
102fdd9e44 Bug 1797011 Part 4 - Rename AbsoluteFrameList::containingBlock to mContainingBlock to match coding style. r=emilio,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D160104
2022-10-24 19:14:33 +00:00
Ting-Yu Lin
5806248676 Bug 1797011 Part 3 - Delete nsFrameList's copy assigment operator. r=emilio
This patch doesn't change behavior.

Differential Revision: https://phabricator.services.mozilla.com/D160015
2022-10-24 19:14:33 +00:00
Ting-Yu Lin
810423461b Bug 1797011 Part 2 - Make AbsoluteFrameList a move-only class; improve nsFrameConstructorSaveState and PushAbsoluteContainingBlock(). r=emilio
This patch doesn't change behavior.

AbsoluteFrameList is a derived class of nsFrameList, so we change it a move-only
class in order to nsFrameList move-only in Part 3.

Some detail of this patch:

- Define move constructor and move assignment operator for AbsoluteFrameList.
  This effectively disables the auto generated copy constructor and copy
  assignement operator.

- Initialize nsFrameConstructorSaveState's member variables in class definition,
  and remove its constructor.

- Remove `mSavedFixedList` since we can rewire the logic in
  `~nsFrameConstructorSaveState` and `PushAbsoluteContainingBlock()` to make it
  redundant.

- Make self-assignment correct in nsFrameList's move assignment operator.

Differential Revision: https://phabricator.services.mozilla.com/D160014
2022-10-24 19:14:32 +00:00
Ting-Yu Lin
9ff6e4d1d3 Bug 1794035 Part 4 - Use range-based for loops to iterate nsFrameList. r=emilio
After this patch, we still need nsFrameList::Enumerator to iterate
nsFrameList::Slice. We might enhance nsFrameList::Iterator to support Slice, but
I'll leave this for another day.

Differential Revision: https://phabricator.services.mozilla.com/D158809
2022-10-07 01:41:41 +00:00
Ting-Yu Lin
03f14da806 Bug 1794035 Part 1 - Rename nsFrameList::ExtractHead to TakeFramesBefore. r=emilio
I feel it's hard to understand the purpose of ExtractHead(), especially where
aFrame is going after the call. Therefore, I rename it to TakeFramesBefore(),
and have it complement the existing RemoveFramesAfter(), which will be rename
later. No behavioral change intended.

Also, slightly reword the method's documentation to reflect the its new
name. (Remove the "sibling" wording from the comment since it's an
implementation details that frames are actually a doubly linked list.)

Differential Revision: https://phabricator.services.mozilla.com/D158806
2022-10-07 01:41:40 +00:00
Ting-Yu Lin
cb77f25153 Bug 1793826 Part 2 - Remove nsFrameList::FrameLinkEnumerator. r=emilio
Change the last caller of FrameLinkEnumerator to use Iterator instead, and we
are ready to remove it.

Differential Revision: https://phabricator.services.mozilla.com/D158701
2022-10-06 06:47:25 +00:00
Ting-Yu Lin
6656a45e40 Bug 1793826 Part 1 - Change nsFrameList::ExtractHead and ExtractTail to take nsIFrame* argument. r=emilio
This is a preparation to remove nsFrameList::FrameLinkEnumerator in the next
part.

Differential Revision: https://phabricator.services.mozilla.com/D158700
2022-10-06 06:47:25 +00:00
Csoregi Natalia
52af6a2134 Backed out 2 changesets (bug 1793826) for causing build bustages. CLOSED TREE
Backed out changeset 9e398426c46f (bug 1793826)
Backed out changeset 01820845ab62 (bug 1793826)
2022-10-06 03:41:00 +03:00
Ting-Yu Lin
1a94611c63 Bug 1793826 Part 2 - Remove nsFrameList::FrameLinkEnumerator. r=emilio
Change the last caller of FrameLinkEnumerator to use Iterator instead, and we
are ready to remove it.

Differential Revision: https://phabricator.services.mozilla.com/D158701
2022-10-06 00:19:42 +00:00
Ting-Yu Lin
c1ba6068b9 Bug 1793826 Part 1 - Change nsFrameList::ExtractHead and ExtractTail to take nsIFrame* argument. r=emilio
This is a preparation to remove nsFrameList::FrameLinkEnumerator in the next
part.

FrameLinkEnumerator::Find() can be replaced with std::find/std::find_if.

Differential Revision: https://phabricator.services.mozilla.com/D158700
2022-10-06 00:19:41 +00:00
Emily McDonough
68042c67af Bug 1782597 Part 2 - Use null to indicate page value equal to the auto value for CSS named pages r=dholbert
This applies both to the individual mStartPageValue and mEndPageValue fields
of the nsIFrame::PageValues struct, and for the nsIFrame::PageValuesProperty
being null to indicate both mStartPageValue and mEndPageValue are auto.

Fetching this is handled by nsIFrame::GetStartPageValue and
nsIFrame::GetEndPageValue, which also ensure the use of first-in-flow frames.

Differential Revision: https://phabricator.services.mozilla.com/D157873
2022-10-05 22:07:47 +00:00
Emily McDonough
eb0252b850 Bug 1782597 Part 1 - Store auto page value on each frame when in a paginated context. r=dholbert,emilio
Differential Revision: https://phabricator.services.mozilla.com/D157872
2022-10-05 22:07:46 +00:00
Emilio Cobos Álvarez
3e1871e216 Bug 1792741 - Remove nsDocElementBoxFrame. r=TYLin
After bug 1665476, it's pretty much a regular XUL box with a couple
special-cases that we can use IsRootElementStyle for. Do that, and allow
using nsFlexContainerFrame when using flexbox emulation.

Differential Revision: https://phabricator.services.mozilla.com/D158288
2022-10-01 02:35:31 +00:00
Csoregi Natalia
fce6bd8d7a Backed out changeset 63fbc22d2223 (bug 1792741) for causing assertion failures on nsCSSFrameConstructor.cpp. CLOSED TREE 2022-10-01 04:22:22 +03:00
Emilio Cobos Álvarez
c581af533f Bug 1792741 - Remove nsDocElementBoxFrame. r=TYLin
After bug 1665476, it's pretty much a regular XUL box with a couple
special-cases that we can use IsRootElementStyle for. Do that, and allow
using nsFlexContainerFrame when using flexbox emulation.

Differential Revision: https://phabricator.services.mozilla.com/D158288
2022-10-01 00:28:13 +00:00
Butkovits Atila
6bc5a308b4 Backed out changeset 511ee0f8727c (bug 1792741) for causing failures at browser_aboutDialog_distribution. 2022-09-30 03:56:41 +03:00
Emilio Cobos Álvarez
2f2a2aaece Bug 1792741 - Remove nsDocElementBoxFrame. r=TYLin
After bug 1665476, it's pretty much a regular XUL box with a couple
special-cases that we can use IsRootElementStyle for. Do that, and allow
using nsFlexContainerFrame when using flexbox emulation.

Differential Revision: https://phabricator.services.mozilla.com/D158288
2022-09-29 23:34:41 +00:00
Emilio Cobos Álvarez
cf5db1fc05 Bug 1665476 - Remove nsRootBoxFrame to unify background propagation between XUL and non-XUL documents. r=layout-reviewers,mats
It's unused on mozilla-central, and Thunderbird can just use the canvas
frame as regular (X)HTML documents, so just use a canvas frame instead
of an nsRootBoxFrame for XUL as well.

nsRootBoxFrame was needed because of various XUL-specific things like
tooltips and so on lived there. But with the move away from XUL, that
functionality has been added to nsCanvasFrame already, behind a
principal check instead.

This also allows simplifying our background propagation setup, which was
only half-working for XUL documents (this bug is a consequence of that).

With this, most of the callers of nsCSSRendering::IsCanvasFrame can go.
They're only two of the frames that would return true for that that
actually paint backgrounds (nsCanvasFrame and nsRootBoxFrame), so the
codepaths in display list building and painting can just check
frame->IsCanvasFrame() instead.

The remaining caller to that function is
nsContainerFrame::SyncWindowProperties, and the change is also legit, in
the sense that the only thing SyncWindowProperties() really cares about
is propagating the max/min-width constraints from the root element's
style to the view/widget, and the only frame that would return true from
IsCanvasFrame and have a view is the viewport frame which is the root of
the frame tree.

Differential Revision: https://phabricator.services.mozilla.com/D90846
2022-09-28 02:56:41 +00:00
Butkovits Atila
16e79cfbe3 Backed out changeset 503c84054f68 (bug 1665476) for causing mochitest mass failures. CLOSED TREE 2022-09-27 13:04:54 +03:00
Emilio Cobos Álvarez
9a226c835b Bug 1665476 - Remove nsRootBoxFrame to unify background propagation between XUL and non-XUL documents. r=layout-reviewers,mats
It's unused on mozilla-central, and Thunderbird can just use the canvas
frame as regular (X)HTML documents, so just use a canvas frame instead
of an nsRootBoxFrame for XUL as well.

nsRootBoxFrame was needed because of various XUL-specific things like
tooltips and so on lived there. But with the move away from XUL, that
functionality has been added to nsCanvasFrame already, behind a
principal check instead.

This also allows simplifying our background propagation setup, which was
only half-working for XUL documents (this bug is a consequence of that).

With this, most of the callers of nsCSSRendering::IsCanvasFrame can go.
They're only two of the frames that would return true for that that
actually paint backgrounds (nsCanvasFrame and nsRootBoxFrame), so the
codepaths in display list building and painting can just check
frame->IsCanvasFrame() instead.

The remaining caller to that function is
nsContainerFrame::SyncWindowProperties, and the change is also legit, in
the sense that the only thing SyncWindowProperties() really cares about
is propagating the max/min-width constraints from the root element's
style to the view/widget, and the only frame that would return true from
IsCanvasFrame and have a view is the viewport frame which is the root of
the frame tree.

Differential Revision: https://phabricator.services.mozilla.com/D90846
2022-09-27 08:18:58 +00:00
Emilio Cobos Álvarez
4ab80589c9 Bug 1689816 - Implement <tabpanels> and <deck> without XUL layout. r=Gijs,Jamie,morgan,preferences-reviewers,mconley,TYLin
Gijs for front-end bits, layout for the new CSS properties and the
removal of nsDeckFrame / nsStackLayout, Jamie and Morgan for the a11y
changes.

As discussed in the bug, the main tricky part here is handling a11y
correctly. For <deck>, that's trivial (just use `visibility: hidden` to
hide the panels visually, while removing the unselected panels from the
a11y tree).

For <tabpanels> however we need to do something special. We do want to
hide stuff visually, but we want to preserve the contents in the a11y
tree.

For that, the easiest fix is introducing a new privileged CSS property
(-moz-subtree-hidden-only-visually), which takes care of not painting
the frame, but marks stuff offscreen in the accessibility tree. This is
not intended to be a property used widely.

Other than that, the changes are relatively straight-forward, though
some of the accessible/mac changes I could get a sanity-check on.

Differential Revision: https://phabricator.services.mozilla.com/D157875
2022-09-27 04:18:16 +00:00
Marian-Vasile Laza
338fc0a451 Backed out changeset 2f74f8f2ed19 (bug 1689816) for causing reftest failures on skip-ink-multiline-position.html. 2022-09-26 23:24:03 +03:00
Emilio Cobos Álvarez
ba878e30c1 Bug 1689816 - Implement <tabpanels> and <deck> without XUL layout. r=Gijs,Jamie,morgan,preferences-reviewers,mconley,TYLin
Gijs for front-end bits, layout for the new CSS properties and the
removal of nsDeckFrame / nsStackLayout, Jamie and Morgan for the a11y
changes.

As discussed in the bug, the main tricky part here is handling a11y
correctly. For <deck>, that's trivial (just use `visibility: hidden` to
hide the panels visually, while removing the unselected panels from the
a11y tree).

For <tabpanels> however we need to do something special. We do want to
hide stuff visually, but we want to preserve the contents in the a11y
tree.

For that, the easiest fix is introducing a new privileged CSS property
(-moz-subtree-hidden-only-visually), which takes care of not painting
the frame, but marks stuff offscreen in the accessibility tree. This is
not intended to be a property used widely.

Other than that, the changes are relatively straight-forward, though
some of the accessible/mac changes I could get a sanity-check on.

Differential Revision: https://phabricator.services.mozilla.com/D157875
2022-09-26 17:40:30 +00:00
Emily McDonough
5464ceedde Bug 1764437 - Check for prev/next sibling when propagating start/end page values for frames r=dholbert
This also properly handles placeholder frames, and ensures that when checking
next/prev sibling we ignore placeholder frames.

To properly test this for multiple levels of page value propagation, we also
need to use FirstInFlow to get page values when checking for breaks in block
frames.

Differential Revision: https://phabricator.services.mozilla.com/D157175
2022-09-20 21:42:34 +00:00
Emilio Cobos Álvarez
1d46b07024 Bug 1790920 - Remove nsButtonBoxFrame. r=smaug
Create XULButtonElement instead to do the event handling. Pretty much a
straight port, this allows these elements to respect CSS display
properly (and use modern flexbox rather than old XUL layout).

Differential Revision: https://phabricator.services.mozilla.com/D157509
2022-09-19 17:02:37 +00:00
Emilio Cobos Álvarez
bbb56ef32a Bug 1308080 - Make <details> use a shadow tree as per spec. r=TYLin,smaug
The behavior changes match WebKit and Blink. I can look into upstreaming
some of these to WPT.

Differential Revision: https://phabricator.services.mozilla.com/D34754
2022-09-16 14:54:12 +00:00