Commit Graph

698 Commits

Author SHA1 Message Date
Jonathan Watt
c61c6cf39f Bug 1452170 - Remove RestyleLogging.h, RestyleTrackerInlines.h and related RESTYLE_LOGGING cruft. r=heycam 2018-04-09 09:33:56 +01:00
Xidorn Quan
ea8b8b1e74 Bug 1449400 part 5 - Remove StyleSetHandle. r=emilio
This patch basically does:
* remove StyleSetHandle and its corresponding files
* revisit #includes of related header files and change correspondingly
* change nsIPresShell::mStyleSet to be UniquePtr<ServoStyleSet>
* change the creating path of ServoStyleSet to pass UniquePtr
* change other mentions of StyleSetHandle to ServoStyleSet*
* remove AsServo() calls on ServoStyleSet

Some unfortunate bits:
* some methods of (Servo)StyleSet only accepts ServoStyleSheet while
  many places call into the methods with StyleSheet, so there are many
  ->AsServo() added to sheets

MozReview-Commit-ID: K4zYnuhOurA
2018-03-29 22:15:46 +11:00
Xidorn Quan
d03cde8f6e Bug 1447828 part 8 - Remove remaining uses of StyleBackendType as well as the type itself. r=emilio
MozReview-Commit-ID: 6sh4eKvDpRF
2018-03-29 02:34:34 +11:00
shindli
1056e3decf Merge inbound to mozilla-central. a=merge 2018-03-15 12:15:17 +02:00
Emilio Cobos Álvarez
87fceee63a Bug 1369411: Use a runnable instead of a timer for pref changes in nsPresContext. r=bholley
This should hopefully make pushPrefEnv able to deal with it.

I optimistically enabled Android too, pending a CI run.

MozReview-Commit-ID: 47C4q0lzIek
2018-03-14 23:33:21 +01:00
Emilio Cobos Álvarez
cecd54c889 Bug 1443415: Move nsPresContext::NotifyFontFaceSetOnRefresh to nsIPresShell. r=bholley
The font face set is owned by the document now, and the shell knows about
refresh driver ticks. There's no reason for it to live in the pres context.

MozReview-Commit-ID: I8gtimok7VG
2018-03-06 09:01:35 +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
Jonathan Kew
8e4d415511 Bug 1439954 - Make gfxPlatform::ForceGlobalReflow when called in a content process trigger reflows only within that process; it should not try (and fail, with an assertion) to affect the parent or other content processes. r=jrmuizel 2018-02-22 20:55:36 +00:00
Sebastian Hengst
5d13b0cd19 merge mozilla-central to autoland. CLOSED TREE 2018-02-12 14:36:51 +02:00
Sebastian Hengst
3a2990f481 merge mozilla-central to autoland 2018-02-12 13:38:04 +02:00
arthur.iakab
6f0a4aadc1 Backed out 7 changesets (bug 1429932) for frequently failing layout/reftests/table-background/backgr_layers-opacity.html a=backout
Backed out changeset 24cf388d5d5b (bug 1429932)
Backed out changeset 8f7a4df5efcc (bug 1429932)
Backed out changeset c48601351975 (bug 1429932)
Backed out changeset c91a2b710a65 (bug 1429932)
Backed out changeset 5d146aec735e (bug 1429932)
Backed out changeset db244e692584 (bug 1429932)
Backed out changeset 39ffcc432d0c (bug 1429932)
2018-02-12 12:09:21 +02:00
Emilio Cobos Álvarez
43ab46bd02 Bug 1424878: Not having cached style data doesn't guarantee we don't need to update media query stuff. r=bz
In particular,  even when there are no frames, we may have used the rule
cascades / stylist data (for different stuff, like font-feature-values, thus the
regressing bug).

Using the old rule cascades / stylist data without knowing it has changed is
wrong, thus the bug.

Now that media query change stuff is async and has a well-defined processing
point, we should be able to just call it without too much worry.

Also note that at the point the extra hints are passed, if there's no root frame
/ elements are not styled / etc, we'll optimize away the change hint.

The test-case intermittently fails without this patch, but I didn't manage to
make a better one, unfortunately :(

MozReview-Commit-ID: LY2HRIlAKHX
2018-02-11 20:07:21 +01:00
Matt Woodrow
7567f86c99 Bug 1429932 - Part 1: Remove mFireAfterPaintEvents and use mTransactions instead. r=tnikkel
This fixes a bug where EnsureEventualDidPaintEvent needs to be called separately for each transaction id, but we skip it since mFireAfterPaintEvents is still true from the previous paint.
We now track the equivalent state by checking for the presence of mTransactions[aTransactionId], and correctly schedule an eventual didpaint for each id.

MozReview-Commit-ID: JnRTycGEyom
2018-01-12 11:41:16 +13:00
Ciure Andrei
687e46aa3e Backed out changeset d6e7f810f7d3 (bug 1424878)for failing reftests related to usercss/usercss-uppercase.html a=backout on a CLOSED TREE 2018-02-10 16:42:18 +02:00
Emilio Cobos Álvarez
0b86d648ba Bug 1424878: Not having cached style data doesn't guarantee we don't need to update media query stuff. r=bz
In particular,  even when there are no frames, we may have used the rule
cascades / stylist data (for different stuff, like font-feature-values, thus the
regressing bug).

Using the old rule cascades / stylist data without knowing it has changed is
wrong, thus the bug.

Now that media query change stuff is async and has a well-defined processing
point, we should be able to just call it without too much worry.

Also note that at the point the extra hints are passed, if there's no root frame
/ elements are not styled / etc, we'll optimize away the change hint.

The test-case intermittently fails without this patch, but I didn't manage to
make a better one, unfortunately :(

MozReview-Commit-ID: LY2HRIlAKHX
2018-02-10 00:45:18 +01:00
Matt Woodrow
253c187682 Bug 1429932 - Part 1: Remove mFireAfterPaintEvents and use mTransactions instead. r=tnikkel
This fixes a bug where EnsureEventualDidPaintEvent needs to be called separately for each transaction id, but we skip it since mFireAfterPaintEvents is still true from the previous paint.
We now track the equivalent state by checking for the presence of mTransactions[aTransactionId], and correctly schedule an eventual didpaint for each id.

MozReview-Commit-ID: JnRTycGEyom
2018-01-12 11:41:16 +13:00
Emilio Cobos Álvarez
8fef759837 Bug 1435939: Make media feature changes always async. r=bz
Much in the spirit of bug 1434474.

We right now call MediaFeatureChanges sync or async pretty randomly. This has
caused bugs in the past like bug 1413143.

Unify media feature changes, and only post them async, and flush them from
FlushPendingNotifications.

This also fixes a pre-existing problem where style wasn't flushed correctly from
getComputedStyle when there were pending media feature values.

MozReview-Commit-ID: H9S1M8fk5H4
2018-02-07 15:27:30 +01:00
Emilio Cobos Álvarez
2e4f689d2b Bug 1435214: Optimize @keyframes rule insertions. r=xidorn,hiro
Also add some missing test for the tag name invalidations (bug 1407522) and an
empty stylesheet just for sanity.

MozReview-Commit-ID: AHwhZynLBv
2018-02-05 20:01:32 +01:00
Emilio Cobos Álvarez
de5d26b942 Bug 1434474: There's no need to rebuild font / counter styles / font feature values off a runnable. r=bholley
Everything that needs them up-to-date will call flush appropriately, there
should be no need to do it manually.

This way we coalesce all the stylist updates until the next style flush in the
best case, or until one of the consumers actually needs them.

MozReview-Commit-ID: BVsxXxhtcKL
2018-01-31 11:12:36 +01:00
Hiroyuki Ikezoe
5d807148ef Bug 1415780 - Let AnimationEventDispatcher observe nsRefreshDriver. r=birtles
So that we can now ensure nsRefreshDriver ticks (i.e. nsRefreshDriver doesn't
stop its timer) for all queued events.
Before this patch, dispatching CSS animation/transition events relied on the
fact that DocumentTimeline observes nsRefreshDriver.  For this fact,
animationcancel or transitioncancel event did not dispatch properly in some
cases, i.e. the case where the animation was dropped from the DocumentTimeline.

MozReview-Commit-ID: 7JYro0MY2U2
2018-01-27 21:17:27 +09:00
Hiroyuki Ikezoe
d2a02a7a1b Bug 1415780 - Let nsPresContext have AnimationEventDispatcher. r=birtles
Now we sort CSS animation/transition events by scheduled event time prior
to compositor order.

SortEvents() will be a private method in the next patch in this patch
series.

MozReview-Commit-ID: ICkOayquN0f
2018-01-27 21:17:27 +09:00
Cosmin Sabou
f642a7b9c4 Backed out 12 changesets (bug 1415780) for build bustages nsRefreshDriver.cpp:1606:1 and AnimationCommon.h:168:51 on a CLOSED TREE
Backed out changeset 1fa2f138319e (bug 1415780)
Backed out changeset 6bad89a17566 (bug 1415780)
Backed out changeset a88250ad7a3e (bug 1415780)
Backed out changeset 43d42ca7308f (bug 1415780)
Backed out changeset 79e980195ee8 (bug 1415780)
Backed out changeset f0cc29e7ccd7 (bug 1415780)
Backed out changeset c6567e4196f6 (bug 1415780)
Backed out changeset ae7be65f3c88 (bug 1415780)
Backed out changeset 621b9aaf4a8f (bug 1415780)
Backed out changeset e298f242ce7c (bug 1415780)
Backed out changeset 027a7ed3c948 (bug 1415780)
Backed out changeset 433a6f0d0ac3 (bug 1415780)
2018-01-27 12:47:29 +02:00
Hiroyuki Ikezoe
747fb446e6 Bug 1415780 - Let AnimationEventDispatcher observe nsRefreshDriver. r=birtles
So that we can now ensure nsRefreshDriver ticks (i.e. nsRefreshDriver doesn't
stop its timer) for all queued events.
Before this patch, dispatching CSS animation/transition events relied on the
fact that DocumentTimeline observes nsRefreshDriver.  For this fact,
animationcancel or transitioncancel event did not dispatch properly in some
cases, i.e. the case where the animation was dropped from the DocumentTimeline.

MozReview-Commit-ID: 7JYro0MY2U2
2018-01-27 16:55:45 +09:00
Hiroyuki Ikezoe
a154be0ff5 Bug 1415780 - Let nsPresContext have AnimationEventDispatcher. r=birtles
Now we sort CSS animation/transition events by scheduled event time prior
to compositor order.

SortEvents() will be a private method in the next patch in this patch
series.

MozReview-Commit-ID: ICkOayquN0f
2018-01-27 16:55:45 +09:00
Emilio Cobos Álvarez
c617825580 Bug 1426649: Stop tracking DOM changes from painting. r=dbaron
I'm pretty sure this is not a problem now, since we don't mutate the DOM from
painting, and we don't have legacy extensions anymore.

Just to confirm, I did a try run with a RELEASE_ASSERT(!CheckDOMModified()), and
it passed.

MozReview-Commit-ID: HTekD8tsz9v
2017-12-21 14:09:32 +01:00
Emilio Cobos Álvarez
8c03fee402 Bug 1430608: Make nsMediaFeatures work with a document, not a pres context. r=heycam
Returning a zero-sized viewport in the case there's no shell / pres context.

For now, no other change yet. After this we can start tweaking the ShadowRoot
Stylist setup, and even try to return computed styles without a document \o/.

MozReview-Commit-ID: 3cT2PKQISri
2018-01-17 21:51:47 +01:00
Emilio Cobos Álvarez
b89797c4e1 Bug 1430844: Add assertions that would've caught this. r=bz
MozReview-Commit-ID: 1UfhIRn2We2
2018-01-17 19:12:34 +01:00
Sebastian Hengst
0bab7a4734 Backed out 3 changesets (bug 1419226) for frequently for frequently timing out in Web reftests in webvtt, e.g. enable_controls_reposition.html. r=backout
Backed out changeset 5a2460c34657 (bug 1419226)
Backed out changeset 8cda3fb3ce1a (bug 1419226)
Backed out changeset 21d9bedcf411 (bug 1419226)
2017-11-27 17:27:27 +02:00
Mantaroh Yoshinaga
62eeb660bf Bug 1419226 - Part 2. Remove notify did paint timer. r=mattwoodrow
This EnsureEventualDidPaintEvent() creates software timer. But this timer will
bring several intermittent tests fail. For example, if we want to check the
compositor animation property. If test receives MozAfterPaint of the timer,
there doesn't have animation property on compositor, as result of this, a test
will fail.

I think we don't need to create this timer each time since current painting is
happening synchronously under the refresh driver.

[1] https://searchfox.org/mozilla-central/rev/919dce54f43356c22d6ff6b81c07ef412b1bf933/layout/base/nsPresContext.cpp#189

MozReview-Commit-ID: Hb7UEITer5t
2017-11-27 09:33:54 +09:00
Emilio Cobos Álvarez
c4bd75ce44 Bug 1416564: Remove mozmm CSS unit. r=heycam
MozReview-Commit-ID: AU4CUq09tw4
2017-11-14 16:14:17 +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
angelsl
b48fe1965f Bug 1393116 - Only fire resize event if size actually changed r=dbaron
MozReview-Commit-ID: 1GssEpmUQNz
2017-09-09 00:49:43 +08:00
Xidorn Quan
833c3ca456 Bug 1363088 - Remove text-shadow handling from HasAuthorSpecifiedRules. r=heycam
After bug 1401825, we no longer need the code for text-shadow anymore,
so we can just remove it.

MozReview-Commit-ID: B2zpzetwW91
2017-10-12 11:13:07 +11:00
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
Brad Werth
8449663d7f Bug 1376931 Part 2: Extend ContentViewer to allow reporting of effective full zoom level as determined by the device context. r=bz,heycam
MozReview-Commit-ID: EoVp1DwAl0j
2017-09-27 14:06:37 -07:00
Sebastian Hengst
4411388d7a Backed out changeset 3adba9da5967 (bug 1376931) for bustage at layout/style/nsMediaFeatures.cpp:296: 'class nsPresContext' has no member named 'GetEffectiveFullZoom'; did you mean 'GetDeviceFullZoom'. r=backout on a CLOSED TREE 2017-10-05 00:15:51 +02:00
Brad Werth
272e1d58a9 Bug 1376931 Part 2: Extend ContentViewer to allow reporting of effective full zoom level as determined by the device context. r=bz,heycam
MozReview-Commit-ID: EoVp1DwAl0j
2017-09-27 14:06:37 -07:00
Nicholas Nethercote
9fda5528d2 Bug 1400459 (part 2) - Devirtualize nsIAtom. r=heycam.
This patch merges nsAtom into nsIAtom. For the moment, both names can be used
interchangeably due to a typedef. The patch also devirtualizes nsIAtom, by
making it not inherit from nsISupports, removing NS_DECL_NSIATOM, and dropping
the use of NS_IMETHOD_. It also removes nsIAtom's IIDs.

These changes trigger knock-on changes throughout the codebase, changing the
types of lots of things as follows.

- nsCOMPtr<nsIAtom> --> RefPtr<nsIAtom>

- nsCOMArray<nsIAtom> --> nsTArray<RefPtr<nsIAtom>>
  - Count() --> Length()
  - ObjectAt() --> ElementAt()
  - AppendObject() --> AppendElement()
  - RemoveObjectAt() --> RemoveElementAt()

- ns*Hashtable<nsISupportsHashKey, ...> -->
  ns*Hashtable<nsRefPtrHashKey<nsIAtom>, ...>

- nsInterfaceHashtable<T, nsIAtom> --> nsRefPtrHashtable<T, nsIAtom>
  - This requires adding a Get() method to nsRefPtrHashtable that it lacks but
    nsInterfaceHashtable has.

- nsCOMPtr<nsIMutableArray> --> nsTArray<RefPtr<nsIAtom>>
  - nsArrayBase::Create() --> nsTArray()
  - GetLength() --> Length()
  - do_QueryElementAt() --> operator[]

The patch also has some changes to Rust code that manipulates nsIAtom.

MozReview-Commit-ID: DykOl8aEnUJ
2017-09-26 08:33:21 +10:00
Timothy Nikkel
cd721c7016 Bug 1402203 - Add a new layout phase for displaylist building. r=mstange 2017-09-26 15:57:57 +13:00
Sebastian Hengst
027dab5938 merge mozilla-inbound to mozilla-central. r=merge a=merge
MozReview-Commit-ID: 1Wa3jV6n7Wj
2017-09-16 11:35:02 +02:00
Boris Zbarsky
c60153e7f7 Bug 1398500 part 1. Switch the viewport scrollbar override stuff to use Element, not nsIContent. r=dholbert
MozReview-Commit-ID: FU0Afemj4XD
2017-09-15 23:45:05 -04:00
Masatoshi Kimura
a4c148bf75 Bug 1400207 - Remove nsIDocument::AddCharSetObserver. r=hsivonen
MozReview-Commit-ID: 7uWDQvyz4yC
2017-09-14 23:19:22 +09:00
Daniel Holbert
5590031f7b Bug 1398376 part 3: Collapse formerly-MOZILLA_INTERNAL_API-guarded Foo()/FooInternal() functions together in nsIPresShell and nsPresContext. r=mats
This is just simplifying things by eliminating a layer of now-unnecessary
abstraction.

MozReview-Commit-ID: 1MBagjYXbCD
2017-09-08 16:25:03 -07:00
Daniel Holbert
9b4c18de30 Bug 1398376 part 2: Remove formerly-MOZILLA_INTERNAL_API-guarded FooExternal() functions from nsIPresShell and nsPresContext. r=mats
These functions are now dead code.  And really, they were already dead code
even before this patch-stack -- they were only called in never-evaluated
(and now-deleted) #else clauses.

MozReview-Commit-ID: AeY6Z3ybmsv
2017-09-08 16:25:01 -07:00
Daniel Holbert
32cdf9e38d Bug 1398376 part 1: Remove MOZILLA_INTERNAL_API guards from nsIPresShell.h and nsPresContext.h, since these headers are only used in libxul. r=mats
This patch drops all MOZILLA_INTERNAL_API checks (and the bodies of any
associated "#else" clauses) from these files.  The basic assumption here is
that MOZILLA_INTERNAL_API is #defined in all (supported) compilation units that
#include these files, so the checks are superfluous and the #else clauses are
dead code.

(If this assumption is mistaken and there is some .cpp file in our codebase
that #includes this header and yet does not have MOZILLA_INTERNAL_API, we will
find out via bustage on treeherder.)

MozReview-Commit-ID: 8dHJFBDVHwT
2017-09-08 16:24:59 -07:00
Bobby Holley
d41978678e Bug 1394987 - Remove dead codepath into PresShell::ReconstructFrames. r=emilio
MozReview-Commit-ID: 5ZqvGc2eTmJ
2017-08-29 17:40:56 -07:00
Nazım Can Altınova
5e5b68d3c7 Bug 1355721 - stylo: Implement font feature values lookup r=emilio,xidorn
MozReview-Commit-ID: 7wgQ1NCn7vL
2017-08-23 18:05:53 -07:00
Gregory Szorc
336b6b8347 Backed out changesets b749fc196a50, 2791eac8d760 (bug 1355721) for build bustage
CLOSED TREE
2017-08-24 20:30:17 -07:00
Nazım Can Altınova
639d0c6171 Bug 1355721 - stylo: Implement font feature values lookup r=emilio,xidorn
MozReview-Commit-ID: 7wgQ1NCn7vL
2017-08-23 18:05:53 -07:00
Eric Rahm
bf94c13168 Bug 1391803 - Use nsStringFwd.h for forward declaring string classes. r=froydnj
We should not be declaring forward declarations for nsString classes directly,
instead we should use nsStringFwd.h. This will make changing the underlying
types easier.
2017-08-16 16:48:52 -07:00