Commit Graph

70 Commits

Author SHA1 Message Date
Nicholas Nethercote
7dbfdaf890 Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro.
(Path is actually r=froydnj.)

Bug 1400459 devirtualized nsIAtom so that it is no longer a subclass of
nsISupports. This means that nsAtom is now a better name for it than nsIAtom.

MozReview-Commit-ID: 91U22X2NydP
2017-10-03 09:05:19 +11:00
Wei-Cheng Pan
ed39aa0d16 Bug 1363805 - Part 3: Do lazy flushing if possible. r=heycam
Skips flushing current document if the target of getComputedDOMStyle cannot be
affected by any pending restyles.

MozReview-Commit-ID: C87HDIDvOth
2017-05-23 12:02:11 +08:00
Jonathan Watt
7428c44f4d Bug 1401356, part 1 - Rename nsSVGEffects.h/.cpp to SVGObserverUtils.h/.cpp. r=longsonr 2017-08-30 14:14:46 +01:00
Sebastian Hengst
1197f950f9 merge mozilla-inbound to mozilla-central. r=merge a=merge
MozReview-Commit-ID: JSRVc5yW6Kx
2017-09-07 12:39:12 +02:00
Bobby Holley
56f2a7aacc Bug 1397500 - Disable the ActiveElementUsesStyle optimization for stylo. r=emilio
MozReview-Commit-ID: 20aqaFv9fxE
2017-09-06 15:30:53 -07:00
Emilio Cobos Álvarez
e33ccef7b7 Bug 1396018: Don't pass aFlags all the way through RecreateFramesForContent. r=bz
We currently use the aFlags argument of ContentRemoved for two purposes:

 (1) To determine when a frame is being removed due to its element being removed
     from the DOM, so we reframe its now-possibly-no-longer-suppressed
     whitespace siblings as needed.

     In other cases, our ContentRemoved call will be followed by a
     ContentInserted call, which will end up doing AddTextItemIfNeeded() to
     generate the relevant textframes if they're necessary.

     Since we only need to tell apart the "DOM removal" and "anything else"
     cases, we don't need to thread the aFlags argument through all the ways
     ContentRemoved can call itself (on an ancestor).

     All those cases should just be treated as "not DOM removal". In particular,
     even if the original call _was_ for a DOM removal, if we convert it to an
     ancestor reframe, which will call ContentInserted on the ancestor as well,
     we don't need to do anything with text siblings of the ancestor.

 (2) To save the frame tree state from DestroyFramesFor, but the frame tree
     state is unconditionally captured on RecreateFramesForContent, so we only
     need to care about it in the original ContentRemoved call.

     Because of that, we can move that to the callsite, patch incoming for that.

MozReview-Commit-ID: Gy5IhUysBlz
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-09-06 20:30:26 +02:00
Boris Zbarsky
c62dc63d66 Bug 1395650. Make anonymous column groups into non-inheriting anon boxes, to better match the behavior of other browsers. r=heycam 2017-09-01 00:53:33 -04:00
Brad Werth
e2b3b127d6 Bug 1385789: Refactor RestyleManager::ContentStateChangedInternal to move nsRestyleHint calculation out to GeckoRestyleManager. r=bholley
MozReview-Commit-ID: 7GXkPcjfYe6
2017-08-29 15:50:50 -07:00
Emilio Cobos Álvarez
c4f39df3cf Bug 1389743: Only reconstruct frames synchronously from ContentRemoved when called from frame construction. r=mats
There's only one case of sync frame construction from ContentRemoved now, and
it's not on the element being removed, but on the whitespace siblings if needed,
and _only_ when they don't support lazy frame construction.

Basically, this switches all the RecreateFramesForContent calls to use
`aAsyncInsert` (which I changed to an enum class for readability), except when
we're already reframing.

Also, it switches ReframeTextIfNeeded to opt-in into lazy frame construction,
since it's used only when aFlags == CONTENT_REMOVED.

This allows to simplify the DestroyFramesFor API (which I'm happy to rename to
something more meaningful, since now it's something like
DestroyFramesForAndRecreateThemAsync), and do some other consistency cleanups.

A bunch of the ContentRemoved callsites were pretty random at passing
aAsyncInsert, and that was some kind of a mess. This patch ensures consistency,
and makes it impossible to do O(n^2) work when removing DOM nodes, which is
nice.

The underlying reason for this is explained in the description of bug 1377848,
and basically allows us to remove a bunch of Servo hacks on the longer term (a
few of them are going away already, yay!).

MozReview-Commit-ID: 2DrUTxGV8RX
2017-08-23 09:58:57 +02:00
Sebastian Hengst
a950bd84b0 Backed out changeset 27e08c76b767 (bug 1388692) for failing mochitest layout/style/test/test_animations_styles_on_event.html on Android. r=backout 2017-08-14 15:16:28 +02:00
Hiroyuki Ikezoe
5e02184d29 Bug 1388692 - When doing hit testing, only flush animations if there are throttled compositor animations. r=birtles
This patch changes UpdateAnimationOnlyStyles to only flush animation styles if
there are throttled animation styles that could affect hit-testing and renames
the function to UpdateAnimationStylesForHitTesting at the same time.

For GeckoRestyleManager, the original UpdateAnimationOnlyStyles which flushes
animation styles if there are any pending animation styles, is renamed to
UpdateAnimationStyles for consistency.

MozReview-Commit-ID: 89UleXjI2OE
2017-08-14 19:59:59 +09:00
Jonathan Watt
ab8c46e431 Bug 1388939, part 6 - Give clear names to the nsFrameManager methods for obtaining the linked list of undisplayed style contexts for a node. r=dholbert
MozReview-Commit-ID: 5EuaFzCW4Lh
2017-08-01 17:03:07 +01:00
Emilio Cobos Álvarez
6f73e079c3 Bug 1384542: Fix dynamic change handling of justify-items legacy values. r=heycam
MozReview-Commit-ID: NEPGlL4ri7
2017-07-31 14:33:10 +02:00
Emilio Cobos Álvarez
54f1c009a9 Bug 1384542: Move GetParent and IsLinkContext to GeckoStyleContext. r=heycam
MozReview-Commit-ID: C19yGcphixX
2017-07-31 14:32:59 +02:00
Sebastian Hengst
a1115605ac Backed out changeset 9a7b90cf8a63 (bug 1361618) for frequently failing accessible/tests/browser/states/browser_test_link.js (bug 1385498). r=backout a=backout
MozReview-Commit-ID: DK2CuaYBPbj
2017-07-29 11:42:39 +02:00
J. Ryan Stinnett
d36571b5e6 Bug 1361618 - Remove unnecessary calls to FlushPendingLinkUpdates. r=dbaron
This removes the two calls to `FlushPendingLinkUpdates` in nsCSSFrameConstructor
and GeckoRestyleManager, which appear to have no effect.

Looking through what the pending link code is attempting to do:

* When a new anchor is bound in `BindToTree` we do:
  1. Link::ResetLinkState(false, Link::ElementHasHref());
    * Set link's mLinkState to default (either unvisited or not link)
    * Set element's link mState bits to default (either unvisited or not link)
  2. doc->RegisterPendingLinkUpdate(this);
    * Schedules idle dispatch to run `FlushPendingLinkUpdates` within 1 sec
* In `FlushPendingLinkUpdates`:
  * For each pending link, call element->UpdateLinkState(link->LinkState());
    1. Register link for async history update to get potential future visited
       state
    2. mLinkState is still unvisited / not link until we hear from history, so
       element state is unchanged

Thus, there seems to be no need to call `FlushPendingLinkUpdates` outside of
`BindToTree`, since visited state is always applied async anyway (so it doesn't
work as an optimization to avoid restyling if visited, since that will trigger
later).

MozReview-Commit-ID: KbFuKve1KUi
2017-06-29 11:31:52 -07:00
Emilio Cobos Álvarez
4b6d7fc287 Bug 1381844: Be more explicit about the kind of style context we handle all the time. r=bholley
MozReview-Commit-ID: E0mdkhU3XBz
2017-07-22 18:02:57 +02:00
Emilio Cobos Álvarez
3b44eb8216 Bug 1378280: Assert we're not in a style refresh when attributes or state changes. r=heycam
MozReview-Commit-ID: CYaYWWfUY6d
2017-07-05 07:29:55 +02:00
Bobby Holley
b7f9b0d4cd Bug 1376655 - Move EnsureSameStructsCached to GeckoStyleContext. r=emilio 2017-06-28 10:08:37 -07:00
Nicholas Nethercote
a58025002f Bug 1375392 - Tweak the PROFILER_LABEL* macros. r=mstange.
This patch makes the following changes to the macros.

- Removes PROFILER_LABEL_FUNC. It's only suitable for use in functions outside
  classes, due to PROFILER_FUNCTION_NAME not getting class names, and it was
  mostly misused.

- Removes PROFILER_FUNCTION_NAME. It's no longer used, and __func__ is
  universally available now anyway.

- Combines the first two string literal arguments of PROFILER_LABEL and
  PROFILER_LABEL_DYNAMIC into a single argument. There was no good reason for
  them to be separate, and it forced a '::' in the label, which isn't always
  appropriate. Also, the meaning of the "name_space" argument was interpreted
  in an interesting variety of ways.

- Adds an "AUTO_" prefix to PROFILER_LABEL and PROFILER_LABEL_DYNAMIC, to make
  it clearer they construct RAII objects rather than just being function calls.
  (I myself have screwed up the scoping because of this in the past.)

- Fills in the 'js::ProfileEntry::Category::' qualifier within the macro, so
  the caller doesn't need to. This makes a *lot* more of the uses fit onto a
  single line.

The patch also makes the following changes to the macro uses (beyond those
required by the changes described above).

- Fixes a bunch of labels that had gotten out of sync with the name of the
  class and/or function that encloses them.

- Removes a useless PROFILER_LABEL use within a trivial scope in
  EventStateManager::DispatchMouseOrPointerEvent(). It clearly wasn't serving
  any useful purpose. It also serves as extra evidence that the AUTO_ prefix is
  a good idea.

- Tweaks DecodePool::SyncRunIf{Preferred,Possible} so that the labelling is
  done within them, instead of at their callsites, because that's a more
  standard way of doing things.
2017-06-22 17:08:53 +10:00
Manish Goregaokar
18abf5ff15 Bug 1373018 - Part 11: stylo: Move cached style structs to GeckoStyleContext; r=bholley
MozReview-Commit-ID: 1LA8AJ3oNwF
2017-06-10 22:27:45 -07:00
Manish Goregaokar
95549e672c Bug 1373018 - Part 6: stylo: Move most Gecko-specific methods into GeckoStyleContext; r=bholley
MozReview-Commit-ID: KzMAbuY8nll
2017-06-10 22:27:45 -07:00
Manish Goregaokar
a198b0c59f Bug 1373018 - Part 5: stylo: Move child/sibling pointers to GeckoStyleContext; r=bholley
MozReview-Commit-ID: Gay6RwpkNcu
2017-06-10 22:27:45 -07:00
Alexis Beingessner
3117218f13 Bug 1088760 - Remove nsRenderingContext, replacing all of its uses with gfxContext. r=jwatt,jrmuizel
MozReview-Commit-ID: K1WUIOnvazF
2017-06-13 11:00:10 -04:00
Sebastian Hengst
1b1d14e565 Backed out changeset 3d1ce85e6348 (bug 1088760) for bustage, at least on Android at layout/generic/nsPluginFrame.cpp:1612. r=backout 2017-06-13 00:30:03 +02:00
Alexis Beingessner
c6fbc5e17e Bug 1088760 - Remove nsRenderingContext, replacing all of its uses with gfxContext. r=jwatt,jrmuizel
MozReview-Commit-ID: K1WUIOnvazF
2017-06-12 17:32:48 -04:00
Cameron McCormack
398fd84db6 Bug 1368113 - Part 3: Use closest non-NAC ancestor as originating element when restyling all NAC-implemented pseudo-elements. r=bz
MozReview-Commit-ID: 9RZBuv9X5OC
2017-06-10 11:19:52 +08:00
L. David Baron
03d37750a7 Bug 1369260 - Remove use of MOZ_ASSERT_IF in layout. r=heycam
As I've said before, as module owner I prefer that MOZ_ASSERT_IF not be
used in the module because I consider it to be unreadable.  However, a
few uses have crept in, and this patch removes them.

I consider it to be unreadable because the name looks like a name that
uses smalltalk-ish naming conventions, i.e., with a part of the name
corresponding to each parameter, in order.  However, the parameters are
in the order opposite the name.

This was written primarily with the vim commands:
:%s/MOZ_ASSERT_IF(\([^,]*\),/MOZ_ASSERT(!\1 ||/
:wn
followed by manual cleanup for indentation and removal of !!.

MozReview-Commit-ID: G6rLbOn7k8d
2017-06-06 22:27:17 -07:00
Emilio Cobos Álvarez
4d3cf46756 Bug 1347270: remove the nsIDOMWindowUtils::ElementsRestyled API. r=bholley
MozReview-Commit-ID: AKsEWc7Wpip
2017-05-30 11:38:53 +02:00
Ryan VanderMeulen
faca05b4d4 Backed out 2 changesets (bug 1347270) for browser_toolbariconcolor_restyles.js permafail on a CLOSED TREE.
Backed out changeset 445cb4d47d4f (bug 1347270)
Backed out changeset f2b7f1d599e3 (bug 1347270)
2017-05-30 18:11:02 -04:00
Emilio Cobos Álvarez
5b871805a8 Bug 1347270: remove the nsIDOMWindowUtils::ElementsRestyled API. r=bholley
MozReview-Commit-ID: AKsEWc7Wpip
2017-05-30 11:38:53 +02:00
Jonathan Kew
4dcf0fe444 Bug 1365982 - Attach frame properties to each frame instead of looking them up in a hashtable on the prescontext. r=mats 2017-05-27 12:36:00 +01:00
Mats Palmgren
bd90393cc1 Bug 1365614 part 3 - Backout bug 1333482 part 1-9. Removes support for [-webkit-]appearance for now b/c web compat issues. r=bz
MozReview-Commit-ID: IbwWM0FL6HF
2017-05-21 17:15:00 +08:00
Carsten "Tomcat" Book
1aa86b3e0e Backed out changeset bbb688fe1ba3 (bug 1365614) 2017-05-22 15:45:31 +02:00
Mats Palmgren
473a358067 Bug 1365614 part 3 - Backout bug 1333482 part 1-9. Removes support for [-webkit-]appearance for now b/c web compat issues. r=bz 2017-05-21 17:15:00 +08:00
Bobby Holley
cd110a0991 Bug 1329876 - Don't maintain a TreeMatchContext for Servo. r=bz 2017-05-20 22:00:01 +02:00
Boris Chiou
647a46ae04 Bug 1334036 - Part 8: Add AddLayerChangesForAnimation in ServoRestyleManager. r=birtles
Some changes to animations don't affect the computed style and yet still
require the layer to be updated. Therefore, we also need to call
AddLayerChangesForAnimation in ServoRestyleManager. In this patch, we
factor out this function from GeckoRestyleManager, so we can reuse it.

MozReview-Commit-ID: LL7D1oGS65l
2017-05-02 14:03:16 +08:00
Emilio Cobos Álvarez
8d15928c16 Bug 1361766: Move MathML content state changes outside of reflow. r=xidorn
This also adds assertions to ensure attributes and state don't change during
layout or frame construction.

MozReview-Commit-ID: BANcpxnRsYS
2017-05-02 22:42:26 +02:00
Emilio Cobos Álvarez
643f3f8618 Bug 1361051: rename mozilla::FrameType to mozilla::LayoutFrameType. r=xidorn
This avoids conflicts with mozilla::dom::FrameType.

MozReview-Commit-ID: 7aEMbHRaTFk
2017-05-01 19:32:52 +02:00
Emilio Cobos Álvarez
3731858edf Bug 1360241: Devirtualize nsIFrame::GetType. r=heycam
MozReview-Commit-ID: 5Nzhyta5Hle
2017-04-30 17:30:08 +02:00
Emilio Cobos Álvarez
7e1330401f Bug 1355351: Simplify nsLayoutUtils callers, and make child iterators notice display: contents pseudos. r=heycam
This also happens to fix other bugs, like making display: contents pseudos
animatable, which weren't before.

MozReview-Commit-ID: LhwTPNbFvSZ
2017-04-19 12:53:57 +02:00
Cameron McCormack
b5d9d72ff7 Bug 1357869 - Don't assert when we restyle a child provider frame when an ancestor already handled nsChangeHint_ReconstructFrame. r=dbaron
MozReview-Commit-ID: D6mQeyo9zNl
2017-04-20 17:51:41 +10:00
Boris Chiou
68f83f15a6 Bug 1343753 - Part 6: Move mAnimationGeneration into RestyleManager. r=birtles
So stylo can also use mAnimationGeneration.

MozReview-Commit-ID: KTc8vs2RKMm
2017-03-09 17:15:08 +08:00
Markus Stange
cf70bfa073 Bug 1354255 - Remove ElementRestyler::ComputeStyleChangeFor profiler instrumentation due to overhead. r=Ehsan
This only has overhead if the profiler is running, but it means that it has
the potential to skew restyle times in profiles.
We haven't measured the overhead of this, but it's probably non-zero, and at
the moment our profiling efforts are more focused on getting accurate times
than on getting useful information about restyling cost sources.

MozReview-Commit-ID: 3KmiiyGrxZH
2017-04-06 17:20:40 -04:00
Emilio Cobos Álvarez
8e43bfcdc9 Bug 1351791: Simplify PostRestyleEventForLazyConstruction. r=bholley
MozReview-Commit-ID: 2jsrojLzYeo
2017-03-31 11:56:29 +02:00
Emilio Cobos Álvarez
529ee020ee Bug 1351791: Move PostRestyleEventForLazyConstruction and PostRestyleEventInternal to GeckoRestyleManager. r=bholley
MozReview-Commit-ID: 5lrNlkbrnZb
2017-03-31 11:56:29 +02:00
Mats Palmgren
4729a520a5 Bug 1333482 part 2 - [css-ui] Change all consumers of StyleDisplay::mAppearance to use the accessor UsedAppearance() instead, and make mAppearance/mMozAppearance private. r=dholbert
MozReview-Commit-ID: 8JwLsY1CLDJ
2017-03-23 22:11:18 -07:00
Markus Stange
7dc30cc736 Bug 1339897 - Rename PROFILER_LABEL_PRINTF to PROFILER_LABEL_DYNAMIC and make it really cheap. r=Ehsan,njn
Instead of copying and concatenating strings into an mDest buffer in
SamplerStackFramePrintfRAII, require callers to keep the string buffer alive
for the duration of the current scope, and store the pointer to the annotation
string in the ProfileEntry. During stackwalking, concatenate the label and the
annotation (separated by a space) and store the resulting string in the
profile buffer.

MozReview-Commit-ID: GEjcLrhhdvb
2017-03-22 19:37:33 -04:00
Cameron McCormack
757b14f5d7 Bug 1302054 - Part 2: Remove no longer useful nsStyleContext::CalcDifference optimization that handles the same-rule-node case. r=dbaron
nsStyleContext::CalcDifference had an optimization where, when we knew
that the old and new style context have the same rule node, we knew that
the only change hints that would need to be handled are those in the
"not handled for descendants" category, generated due to explicit
'inherit' values on reset properties.  This was because any changes due
to differences in inherited properties should only have generated
"handled for descendants" change hints (and thus would already have been
handled on an ancestor).

Before bug 931668, this let us avoid calling CalcDifference on structs
that only would have generated hints that we knew we already would have
handled.  However, after bug 931668, we compare all structs anyway so
that we can set the aEqualStructs outparam, so we don't gain anything
from this optimization.  We can still return these change hints we know
will not need to be handled, and rely on ElementRestyler::CaptureChange
to filter them out.

MozReview-Commit-ID: Ld1s2Js0i6r
2017-03-21 16:33:05 +08:00
Cameron McCormack
61828f2975 Bug 1302054 - Part 1: Avoid computing style differences when we just want to ensure structs are cached on the new context. r=dbaron
MozReview-Commit-ID: DLhHcCD4GQS
2017-03-21 16:33:05 +08:00