Commit Graph

2663 Commits

Author SHA1 Message Date
Emilio Cobos Álvarez
1d4859a89a 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
97286b35c8 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
1f5d8de5cc Bug 1447483: Merge nsStyleContext and ServoStyleContext, rename to ComputedStyle. r=jwatt
MozReview-Commit-ID: JPopq0LudD
2018-03-22 19:48:42 +01:00
Julian Seward
0e927f4eb0 Bug 1447405 - Valgrind cries at nsFrame::ComputeSize in stylo-only builds. r=emilio.
In nsFrame::ComputeSize and nsFrame::ComputeSizeWithIntrinsicDimensions, the
following expressions

  isFlexItem && usingFlexBasisForISize
  isFlexItem && !usingFlexBasisForISize

are sometimes compiled by recent gcc/clang in the opposite order, viz
[!]usingFlexBasisForISize && isFlexItem.  In this case the transformation is
correct as can be seen by analysing code earlier in these functions.
Unfortunately this causes Valgrind/Memcheck to report a branch on undefined
data which, in this case, is a false positive.

A simple fix is simply to initialise usingFlexBasisForISize to false at its
declaration point.
2018-03-13 07:37:25 +01:00
Boris Zbarsky
152cd3ba6e Bug 1447098 part 1. Rename FromContent on various DOM classes to FromNode. r=mystor
MozReview-Commit-ID: 202nkbmkwfR
2018-03-21 17:39:04 -04:00
arthur.iakab
6e006c34b4 Merge inbound to mozilla-central. a=merge 2018-03-21 21:13:11 +02:00
Miko Mynttinen
86800aa3f1 Bug 1445302 - Replace TArray.RemoveElementAt(TArray.Length() - 1) pattern with TArray.RemoveLastElement() or TArray.PopLastElement() r=froydnj
MozReview-Commit-ID: rGjabnP2iz
2018-03-13 14:51:33 +01:00
Emilio Cobos Álvarez
b1a35fbef7 Bug 1447358: Unifdef the old style system code. r=jwatt
Summary:
This has been automatically generated using:

  http://dotat.at/prog/unifdef/

And:

find $OBJDIR -type f -name '*.h' |
while read FILE; do
  echo "$FILE"
  unifdef -m -DMOZ_STYLO -UMOZ_OLD_STYLE "$FILE";
done

find $OBJDIR -type f -name '*.cpp' |
while read FILE; do
  echo "$FILE"
  unifdef -m -DMOZ_STYLO -UMOZ_OLD_STYLE "$FILE";
done

MozReview-Commit-ID: I4NdKqbMXzJ

Reviewers: jwatt

Bug #: 1447358

Differential Revision: https://phabricator.services.mozilla.com/D779
2018-03-21 10:20:34 +01:00
Miko Mynttinen
0a03b7a6d2 Bug 1441796 - Part 3: Reuse the results in nsIFrame::BuildDisplayListForStackingContext() for ChildrenHavePerspective(), IsTransformed(), and Combines3DTransformWithAncestors() r=mattwoodrow
MozReview-Commit-ID: J2PtZDMbHh2
2018-03-27 14:18:27 +02:00
Miko Mynttinen
b12e685556 Bug 1441796 - Part 2: Undo changes from bug 1416991 r=mattwoodrow
MozReview-Commit-ID: HwnAdk8sG1w
2018-03-27 12:21:38 +02:00
Miko Mynttinen
ae8f90a8b6 Bug 1441796 - Part 1: Optimize the (pseudo)-stacking context conditions r=mattwoodrow
MozReview-Commit-ID: JOFv9yK2zLD
2018-03-26 20:06:29 +02:00
Jeff Muizelaar
3370a80065 Bug 1439006. Allow multiple kinds of WebRenderUserData on a DisplayItem. r=mstange
Currently we can only have one type of WebRenderUserData on an Item. We already
have a hash table of WebRenderUserData so it's not hard to include type in the
hash to support one per type.

MozReview-Commit-ID: geJ0BeWv8b
2018-03-16 19:15:27 -04:00
Miko Mynttinen
ca5975e857 Bug 1443518 - Fix incorrect CompositorHitTestInfo ordering for inline lines r=mattwoodrow
MozReview-Commit-ID: D7yLNHQN3z0
2018-03-09 11:48:07 +01:00
Sylvestre Ledru
648d523abd Bug 1444852 - nsIFrame::BuildDisplayListForChild Remove the init step as the result is unused r=miko
MozReview-Commit-ID: G07Fwu1aw0M
2018-03-12 12:28:00 +01:00
Emilio Cobos Álvarez
367a73df8a Bug 1024082: Remove PresShell::FrameManager(), use PresShell::FrameConstructor instead. r=dholbert
Unfortunately this means that we need to export a couple more headers, but that
should be ok.

In particular, we have to export some headers that are #included by
nsCSSFrameConstructor.h, because nsCSSFrameConstructor.h itself will now be
included in more places outside of layout/, by .cpp files that don't necessarily
have the ability to indirectly #include its other headers, unless we export
them.

MozReview-Commit-ID: 2n9KHW6Yjrd
2018-03-07 10:17:52 +01:00
Emilio Cobos Álvarez
0f7c4f5d20 Bug 1024082: Remove most of the nsIPresShell::FrameManager calls. r=dholbert
Most of them just want GetRootFrame(), and there's no need to explicitly go
through the frame manager for that, we have a handy alias in the shell.

MozReview-Commit-ID: GriEqkasidY
2018-03-07 10:17:49 +01:00
Chris Peterson
20b28f1d54 Bug 1443402 - Fix some -Wmissing-prototypes warnings in layout. r=dholbert
-Wmissing-prototypes is a new optional warning available in clang ToT. It warns about global functions that have no previous function declaration (e.g. from an #included header file). These functions can probably be made static (allowing the compiler to better optimize them) or they may be unused.

Confusingly, clang's -Wmissing-prototypes is equivalent to gcc's -Wmissing-declarations, not gcc's -Wmissing-prototypes. A function prototype is a function declaration that specifies the function's argument types. C++ requires that all function declarations specify their argument types, but C does not. As such, gcc's -Wmissing-prototypes is a C-only warning about C functions that have no previous function *prototypes* (with argument types), even if a previous function *declaration* (without argument types) was seen.

MozReview-Commit-ID: FGKVLzeQ2oK
2018-02-22 21:03:45 -08:00
Hiroyuki Ikezoe
18371a6ec0 Bug 1428693 - Use GetOverflowAreasRelativeToSelf() instead of GetOverflowAreas() for scrollable parent. r=mattwoodrow
Because the scrollable parent might be transformed by its ancestors.

MozReview-Commit-ID: FuCPLg54z7h
2018-03-05 07:55:32 +09:00
Nathan Froyd
805f230b74 Bug 1442245 - remove some obviously dead code from nsFrame.cpp; r=dholbert
This code has been there for over a decade, almost two.  We have moved on.
2018-03-01 12:03:01 -05:00
Matt Woodrow
aefb380ec7 Bug 1436510 - Don't attempt partial display list building within perspective as we need to build all children to get consistent indices. r=miko 2018-03-01 16:53:58 +13:00
Emilio Cobos Álvarez
7a79ccba52 Bug 1441547: Make character data change notifications use a const reference for the info parameter. r=smaug
It's not intended to be mutated.

MozReview-Commit-ID: 5nkD1YkidlV
2018-02-27 15:30:27 +01:00
Matt Woodrow
6f1864699b Bug 1436904 - Part 1: Add a static constructor function for display items. r=Bas 2018-02-13 13:43:28 +13:00
Dorel Luca
3276af0faa Backed out 3 changesets (bug 1436904) for many crashes see bugs: 1440281, 1440302, 1440303, 1440313. a=backout
Backed out changeset 27f0762d4472 (bug 1436904)
Backed out changeset 27640f52e188 (bug 1436904)
Backed out changeset 2b4d117c27dc (bug 1436904)
2018-02-22 17:28:59 +02:00
Matt Woodrow
2bcbca93c9 Bug 1436904 - Part 1: Add a static constructor function for display items. r=Bas 2018-02-13 13:43:28 +13:00
Miko Mynttinen
64a79d5a49 Bug 1439375 - Always create a new nsDisplayCompositorHitTestInfo for stacking contexts r=mattwoodrow
MozReview-Commit-ID: 4yq6naptE0H
2018-02-19 19:17:01 +01:00
Bas Schouten
6045a3bb22 Bug 1437492 - Part 2: Based on profile data, use the simple-matrix optimized matrix class in some places. r=mattwoodrow
MozReview-Commit-ID: EBRrGXc2wEj
2018-02-17 00:43:38 +01:00
Narcis Beleuzu
6946cfa455 Merge inbound to mozilla-central. a=merge 2018-02-16 11:49:59 +02:00
Mats Palmgren
8cb516c704 Bug 1432853 - Disable 'page-break-inside:avoid' on abs.pos. frames for now. r=dholbert 2018-02-15 18:38:03 +01:00
Miko Mynttinen
a678c080ff Bug 1436415 - Part 2: Enable nsIFrame::BuildDisplayListForChild() fast-path when using simple event region items r=mattwoodrow
MozReview-Commit-ID: 77rwS0cDUnn
2018-02-13 01:55:27 +01:00
Miko Mynttinen
2284ed859b Bug 1436415 - Part 1: Reuse some local variables in nsIFrame::BuildDisplayListForChild() r=mattwoodrow
MozReview-Commit-ID: Cprpg6nMeY2
2018-02-12 23:59:32 +01:00
Daniel Holbert
1e1ae954dd Bug 1437623 part 1: (layout/generic) Add missing includes/namespaces to preemptively fix unified bustage. r=mats
MozReview-Commit-ID: GyFPLOsPWt3
2018-02-13 09:08:41 -08:00
Hiroyuki Ikezoe
af98d2cc14 Bug 1237454 - Throttle animations on visibility:hidden element. r=birtles,boris,emilio
This patch does basically throttle animations on visibility:hidden element
and unthrottle it once the animating element became visible or a child of the
animating element became visible.  But still there are some cases that we don't
throttle such animations perfectly.  For example;

  div.style.visibility = 'hidden'; // the 'div' has no children at this moment
  div.animate(..);
  // The animation is throttled

  div.appendChild(visibleChild);
  // The animation isn't throttled

  visibleChild.style.visibility = 'hidden';
  // Now the animation should be throttled again, but actually it's not.

To throttle this case properly, when the |visibleChild|'s visibility changed
to hidden, we would need to do either

 1) Check all siblings of the |visibleChild| have no visible children

or

 2) The parent element stores visible children count somewhere and decrease it
    and check whether the count is zero

To achieve 1) we need to walk up ancestors and their siblings, actually it's
inefficient.

2) is somewhat similar to what we already do for animating images but it's hard
to reuse it for CSS animations since it does not take into account that
descendants' visibilities.

Another example that this patch does not optimize is the the case where
animating element has children whose visibility is inherited and the element
itself initially visible something like this;

  let child = document.createElement('div'); // child visibility is 'inherit'
  div.appendChild(child);

  div.animate(..); // the 'div' is visible
  // The animation isn't throttled since the animating element is visible

  div.style.visiblily = 'hidden';
  // Now the animation should be throttled, but it's not since this patch does
  // not descend down all descendants to check they are invisible or not when the
  // animating element visibility changed to hidden.

This patch adds a test case for this case introduced with todo_is().

Another test case added in this patch fails if we don't use
nsPlaceholderFrame::GetRealFrameFor() in HasNoVisibleDescendants().

MozReview-Commit-ID: BJwzQvP9Yc4
2018-02-09 10:43:10 +09:00
Daniel Holbert
c22c9be178 Bug 1437599: Remove unreachable 'return' statement from nsIFrame::GetShapeBoxBorderRadii. r=bradwerth
MozReview-Commit-ID: ARNoCSShQVf
2018-02-12 09:43:39 -08:00
Miko Mynttinen
e2c781b1a5 Bug 1434243 - Part 4: Do not create unnecessary nsDisplayCompositorHitTestInfo items r=kats,mattwoodrow
MozReview-Commit-ID: CNXMMCFFBmc
2018-02-05 18:39:52 +01:00
Daniel Holbert
f08bc65832 Bug 1267462 part 10: Fix flexbox code in nsFrame::ComputeSize[WithIntrinsicDimensions] to use logical axes & coords. r=mats
This patch makes a bunch of tests start passing, so it removes some 'fails' annotations.

MozReview-Commit-ID: DCxkXFnztLc
2018-02-08 15:17:24 -08:00
Narcis Beleuzu
48308c4297 Backed out 6 changesets (bug 1237454) for bc failures on /browser_toolbariconcolor_restyles.js. CLOSED TREE
Backed out changeset f8d771835fd2 (bug 1237454)
Backed out changeset 2dbbfc331bdf (bug 1237454)
Backed out changeset c481f409feaa (bug 1237454)
Backed out changeset 0b9872865f0e (bug 1237454)
Backed out changeset 43ca55e7c93b (bug 1237454)
Backed out changeset 027b0c65d944 (bug 1237454)
2018-02-06 11:19:56 +02:00
Hiroyuki Ikezoe
35ab3ac6b8 Bug 1237454 - Throttle animations on visibility:hidden element. r=birtles,boris,emilio
This patch does basically throttle animations on visibility:hidden element
and unthrottle it once the animating element became visible or a child of the
animating element became visible.  But still there are some cases that we don't
throttle such animations perfectly.  For example;

  div.style.visibility = 'hidden'; // the 'div' has no children at this moment
  div.animate(..);
  // The animation is throttled

  div.appendChild(visibleChild);
  // The animation isn't throttled

  visibleChild.style.visibility = 'hidden';
  // Now the animation should be throttled again, but actually it's not.

To throttle this case properly, when the |visibleChild|'s visibility changed
to hidden, we would need to do either

 1) Check all siblings of the |visibleChild| have no visible children

or

 2) The parent element stores visible children count somewhere and decrease it
    and check whether the count is zero

To achieve 1) we need to walk up ancestors and their siblings, actually it's
inefficient.

2) is somewhat similar to what we already do for animating images but it's hard
to reuse it for CSS animations since it does not take into account that
descendants' visibilities.

Another example that this patch does not optimize is the the case where
animating element has children whose visibility is inherited and the element
itself initially visible something like this;

  let child = document.createElement('div'); // child visibility is 'inherit'
  div.appendChild(child);

  div.animate(..); // the 'div' is visible
  // The animation isn't throttled since the animating element is visible

  div.style.visiblily = 'hidden';
  // Now the animation should be throttled, but it's not since this patch does
  // not descend down all descendants to check they are invisible or not when the
  // animating element visibility changed to hidden.

This patch adds a test case for this case introduced with todo_is().

Another test case added in this patch fails if we don't use
nsPlaceholderFrame::GetRealFrameFor() in HasNoVisibleDescendants().

MozReview-Commit-ID: BJwzQvP9Yc4
2018-02-06 08:43:53 +09:00
Emilio Cobos Álvarez
173945689b Bug 1423331: Prevent selection from leaking from blocks. r=mats
MozReview-Commit-ID: EFLXSQ8Zvze
2018-02-01 17:23:49 +01:00
Cameron McCormack
34288f7f48 Bug 1430014 - Part 5: Stop building old style system classes when MOZ_OLD_STYLE is not defined. r=xidorn
MozReview-Commit-ID: CIHyPdF7Exl
2018-02-01 15:04:04 +11:00
Cameron McCormack
02c617875f Bug 1430014 - Part 4: #ifdef out unnecessary code when the old style system is not built. r=xidorn
MozReview-Commit-ID: 1FZ9VzjcPzN
2018-02-01 15:04:04 +11:00
Daniel Holbert
288ea66169 Bug 958714 part 2: Simplify percent-margin/padding resolution code to pass around a single length as the percent basis. r=mats
MozReview-Commit-ID: J1EPYMQ5lP4
2018-01-30 22:24:55 -05:00
496e34da89 Bug 1413834 - part 1: Limit frame traversal and getting of next tabindex inside scope owned by document root, r=smaug 2018-01-26 17:47:44 +02:00
Timothy Nikkel
b643b723bd Bug 1417358. Make sure that the override dirty rect that we set when a displayport changes gets cleared even if we don't perform a partial display list update. r=mattwoodrow
We do this by tracking them as a property on the root frame the same way we do for modified frames.

We also set the property in ProcessFrame but that is okay because we are guaranteed to finish the partial update at that point.
2018-01-25 23:42:44 -06:00
Andrea Marchesini
8d41475807 Bug 1430997 - Rename nsINode::IndexOf to nsINode::ComputeIndexOf, r=catalinb 2018-01-23 14:30:18 +01:00
Emilio Cobos Álvarez
d6211e6535 Bug 1405087: Don't use -moz-user-input: disabled to decide event handling stuff. r=smaug
We only set it on disabled form controls anyway, so use the content state
directly.

MozReview-Commit-ID: 7jJ75dvszyC
2018-02-15 21:48:58 +01:00
Miko Mynttinen
69703caf70 Bug 1428993 - Part 2: Override dirty rect for stacking contexts between OOF frame placeholder and the containing block r=mattwoodrow
MozReview-Commit-ID: FoX9uyoiqj4
2018-01-12 18:02:14 +01:00
Andreea Pavel
f1cfc5824a Backed out 2 changesets (bug 1428993) for failing reftest ayout/reftests/display-list/1428993-1.html on Android
Backed out changeset 080c07796f4c (bug 1428993)
Backed out changeset 7f88ebf8d0d1 (bug 1428993)
2018-01-18 21:03:23 +02:00
Miko Mynttinen
ce44e29f67 Bug 1428993 - Part 2: Override dirty rect for stacking contexts between OOF frame placeholder and the containing block r=mattwoodrow
MozReview-Commit-ID: FoX9uyoiqj4
2018-01-12 18:02:14 +01:00
sotaro
2b387e1f94 Bug 1430610 - Change nsIFrame::InvalidateLayer() as to check WebRender's async update r=mtseng 2018-01-18 13:28:49 +09:00
Emilio Cobos Álvarez
7d01091273 Bug 1420722: Just use GetInFlowParent for now. r=mattwoodrow
display: contents is about to ship in other engines, let's prevent subtle bugs.

MozReview-Commit-ID: C8saQnRvRuI
2018-01-16 11:19:36 +01:00