Commit Graph

605 Commits

Author SHA1 Message Date
Tom Ritter
119a6d5ed0 Bug 1577642 - Move the timestamp rounding outside of the loop so it's only reduced once r=birtles
When we had it in the loop, we would continually reduce it, which held the
possibility of bumping it down an epoch due to double imprecision. Now
we only reduce it once, using all rAF callbacks get the same timestamp.

Differential Revision: https://phabricator.services.mozilla.com/D44526
2019-09-03 22:38:45 +00:00
Tom Ritter
92a4e564f5 Bug 1577243 - Unconditionally clamp the requestAnimationFrame timestamp (and clamp/jitter it in RFP mode) r=birtles
In Bug 1387894 we created a mode for Firefox where it unconditionally clamps all timestamps to 20 microseconds. This happens if you disable privacy.reduceTimerPrecision (which is on by default) and is so we don't inadvertently leak super-high-resolution (nanosec) timestamps.

As part of that patch, we started clamping animation timestamps - which are exempted from privacy.reduceTimerPrecision because it was too difficult to get them working at the time. (We should still fix that though.)

This caused new test failures, and one of those was a comparison between document timelines and the timestamp in requestAnimationFrame. we were not clamping the timestamp in requestAnimationFrame under the logic that it fires in predictable intervals.

However discussions about the WPT change we made to 'fix' the now-broken comparison https://github.com/web-platform-tests/wpt/pull/18172 and https://github.com/web-platform-tests/wpt/pull/18357 showed me that document.timeline is supposed to be slaved to the requestAnimationFrame timestamp (or vice versa.)

The correct fix is therefore to unconditionally clamp the requestAnimationFrame timestamp AND the document.timeline timestamp. In doing so we also start clamping/jittering the requestAnimationFrame timestamp in Resist Fingerprinting mode, so that might cause some new/unexpected behaviors for that mode we should watch out for.

Differential Revision: https://phabricator.services.mozilla.com/D43788
2019-08-28 23:44:07 +00:00
Randall E. Barker
58c4a048ad Bug 1575694 - Short circuiting the refresh driver in WebVR immersive mode on Android break the MediaRecorder r=mstange
Rather than short circuit the refresh driver, this instead only bypasses painting on
Android when WebVR is in immersive mode.

Differential Revision: https://phabricator.services.mozilla.com/D42973
2019-08-21 22:41:56 +00:00
Kristen Wright
959e5028e2 Bug 1572529 - Remove vsync.parentProcess.highPriority . r=smaug
Removes vsync.parentProcess.highPriority pref and stores BrowserTabsRemoteAutostart() directly into sHighPriorityEnabled.

Differential Revision: https://phabricator.services.mozilla.com/D42962
2019-08-21 21:54:58 +00:00
Dan Glastonbury
82f826a9d7 Bug 1571612 - P2: Collect flush req and flush telemetry. r=heycam
Collect telemetry for the number of pending style and layout flush requests per
flush and the number of style and layout flushes per nsRefreshDriver::Tick.  A
style flush reports only style requests, but a layout flush reports style and
layout requests since flushing layout implies a style flush also.

Differential Revision: https://phabricator.services.mozilla.com/D40756
2019-08-21 01:43:30 +00:00
Dan Glastonbury
501d41a22f Bug 1571612 - P1: Split FlushType::Style and FlushType::Frame. r=heycam
Differential Revision: https://phabricator.services.mozilla.com/D40755
2019-08-07 03:51:20 +00:00
Kristen Wright
cc515f0c37 Bug 1573268 - Convert two layout.idle-period.* prefs to static prefs. r=njn
Converts layout.idle_period.required_quiescent_frames and layout.idle_period.time_limit to static prefs. These are the last prefs in nsLayoutUtils::initialize(), but since the function still calls nsComputedDOMStyle::RegisterPrefChangeCallbacks() the commit retains it.

Differential Revision: https://phabricator.services.mozilla.com/D41856
2019-08-14 19:36:46 +00:00
Olli Pettay
1dc86f5564 Bug 1570797, Add a pref to control the time when certain tasks are deprioritized during page load, r=farre
Differential Revision: https://phabricator.services.mozilla.com/D40330
2019-08-02 08:52:42 +00:00
Nicholas Nethercote
c4aacd8403 Bug 1563139 - Remove StaticPrefs.h. r=glandium
This requires replacing inclusions of it with inclusions of more specific prefs
files.

The exception is that StaticPrefsAll.h, which is equivalent to StaticPrefs.h,
and is used in `Codegen.py` because doing something smarter is tricky and
suitable for a follow-up. As a result, any change to StaticPrefList.yaml will
still trigger recompilation of all the generated DOM bindings files, but that's
still a big improvement over trigger recompilation of every file that uses
static prefs.

Most of the changes in this commit are very boring. The only changes that are
not boring are modules/libpref/*, Codegen.py, and ServoBindings.toml.

Differential Revision: https://phabricator.services.mozilla.com/D39138
2019-07-26 01:10:23 +00:00
Dan Glastonbury
6620ea125c Bug 1568107 - Collect nsRefreshDriver::Tick phase weighted telemetry. r=mattwoodrow,heycam
For a slow tick, where the processing time takes longer than 1/60th sec, record
telemetry for the percentage of that time spent in each sub-system processing
Events, Style), Reflow, Display and Paint.

Differential Revision: https://phabricator.services.mozilla.com/D38962
2019-07-25 01:31:41 +00:00
Nicholas Nethercote
840e8cfa27 Bug 1561491 - Make gfx.* static prefs follow the naming convention. r=KrisWright
Differential Revision: https://phabricator.services.mozilla.com/D35975
2019-06-26 10:38:09 +10:00
Nicholas Nethercote
5559444385 Bug 1560837 - Make APZ static prefs follow the naming convention. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D35633
2019-06-24 13:57:06 +10:00
Logan Smyth
77108e65d7 Bug 1529345 - Part 2: Add Gecko infrastructure for receiving notifications about debugger-related events. r=jimb,smaug
Differential Revision: https://phabricator.services.mozilla.com/D30565
2019-06-17 04:36:29 +00:00
Dorel Luca
8ea7c83178 Backed out 2 changesets (bug 1529345) for Windows 2012 build bustages
Backed out changeset 87aa4894b4a1 (bug 1529345)
Backed out changeset cf6f6281cb44 (bug 1529345)
2019-06-14 23:34:36 +03:00
Logan Smyth
ef7344be30 Bug 1529345 - Part 2: Add Gecko infrastructure for receiving notifications about debugger-related events. r=jimb,smaug
Differential Revision: https://phabricator.services.mozilla.com/D30565
2019-06-14 18:25:47 +00:00
Dorel Luca
ce83744053 Backed out 2 changesets (bug 1529345) for Build Bustage. CLOSED TREE
Backed out changeset 63f80a49839e (bug 1529345)
Backed out changeset 15bac42cc73a (bug 1529345)
2019-06-14 20:55:52 +03:00
Logan Smyth
3add68b91c Bug 1529345 - Part 2: Add Gecko infrastructure for receiving notifications about debugger-related events. r=jimb,smaug
Differential Revision: https://phabricator.services.mozilla.com/D30565
2019-06-14 17:14:13 +00:00
Jean-Yves Avenard
8243c6f5ef Bug 1550422 - P23. Remove now unused gfxPrefs. r=jrmuizel
And with some tidying some comments and removing stray #include "gfxPrefs.h"

Differential Revision: https://phabricator.services.mozilla.com/D31468
2019-05-26 14:31:53 +00:00
Jean-Yves Avenard
b66b1a5a50 Bug 1550422 - P12. Convert Live gfxPrefs into StaticPrefs. r=jrmuizel
gfxPrefs Live preferences are almost identical to StaticPrefs.

We leave aside for now those that set a custom change callback as this feature isn't yet supported in StaticPrefs.

Differential Revision: https://phabricator.services.mozilla.com/D31256
2019-05-26 14:29:42 +00:00
Gurzau Raul
938877e121 Backed out 31 changesets (bug 1552643, bug 1550422) for xpcshell crash on a CLOSED TREE.
Backed out changeset e30c1aa75529 (bug 1552643)
Backed out changeset caadcd7e02d3 (bug 1552643)
Backed out changeset aa7086ab09be (bug 1552643)
Backed out changeset 0b4029671710 (bug 1550422)
Backed out changeset a16295296035 (bug 1550422)
Backed out changeset 3b70307c0db5 (bug 1550422)
Backed out changeset 69df7818d4a3 (bug 1550422)
Backed out changeset d98dfc565927 (bug 1550422)
Backed out changeset 6f0997976944 (bug 1550422)
Backed out changeset 0edd264464c2 (bug 1550422)
Backed out changeset 9ea6da7a74ec (bug 1550422)
Backed out changeset f855f9309c8b (bug 1550422)
Backed out changeset 1033546224a7 (bug 1550422)
Backed out changeset ade7384c6186 (bug 1550422)
Backed out changeset 75b04de7e99c (bug 1550422)
Backed out changeset 91c3acdb2454 (bug 1550422)
Backed out changeset 77d2f80257d1 (bug 1550422)
Backed out changeset e0cd10d35327 (bug 1550422)
Backed out changeset 097091082423 (bug 1550422)
Backed out changeset 2f328853c1ab (bug 1550422)
Backed out changeset f92f2cc29cb1 (bug 1550422)
Backed out changeset 6dc82f88333d (bug 1550422)
Backed out changeset c20f66494d69 (bug 1550422)
Backed out changeset 2ba22cddeb6f (bug 1550422)
Backed out changeset 3aa72f89e295 (bug 1550422)
Backed out changeset ab4c4e806977 (bug 1550422)
Backed out changeset 72e5de040dda (bug 1550422)
Backed out changeset 7d3c2d486706 (bug 1550422)
Backed out changeset 132e0b8d8468 (bug 1550422)
Backed out changeset 54c85ac75dd0 (bug 1550422)
Backed out changeset d7ba4a18dd54 (bug 1550422)
2019-05-25 09:07:49 +03:00
Jean-Yves Avenard
fc3febfda2 Bug 1550422 - P23. Remove now unused gfxPrefs. r=jrmuizel
And with some tidying some comments and removing stray #include "gfxPrefs.h"

Differential Revision: https://phabricator.services.mozilla.com/D31468
2019-05-24 11:37:50 +00:00
Jean-Yves Avenard
3816a05854 Bug 1550422 - P12. Convert Live gfxPrefs into StaticPrefs. r=jrmuizel
gfxPrefs Live preferences are almost identical to StaticPrefs.

We leave aside for now those that set a custom change callback as this feature isn't yet supported in StaticPrefs.

Differential Revision: https://phabricator.services.mozilla.com/D31256
2019-05-25 00:03:32 +00:00
Gurzau Raul
8d7b43d90a Backed out 28 changesets (bug 1550422) for marionette AssertionError and failing browser_policy_hardware_acceleration.js on a CLOSED TREE.
Backed out changeset 5dd10a365ba9 (bug 1550422)
Backed out changeset 529f5be01ab9 (bug 1550422)
Backed out changeset b6861d3badf8 (bug 1550422)
Backed out changeset 059cff1a3dde (bug 1550422)
Backed out changeset 6ada1116b241 (bug 1550422)
Backed out changeset ca67e8e45262 (bug 1550422)
Backed out changeset a1961a51ae44 (bug 1550422)
Backed out changeset 1c90b9cb3ad4 (bug 1550422)
Backed out changeset 285fa46e4f26 (bug 1550422)
Backed out changeset e2938a444234 (bug 1550422)
Backed out changeset 7a930fc51125 (bug 1550422)
Backed out changeset 898ed02804fe (bug 1550422)
Backed out changeset e1b7abc99ae9 (bug 1550422)
Backed out changeset f781d415cef6 (bug 1550422)
Backed out changeset 2fef10a7cce5 (bug 1550422)
Backed out changeset ea64b4d8d4ff (bug 1550422)
Backed out changeset 86a8ba1b755c (bug 1550422)
Backed out changeset 9c0c9e80f309 (bug 1550422)
Backed out changeset 10c153ddbaea (bug 1550422)
Backed out changeset 60fe635ec2c9 (bug 1550422)
Backed out changeset a38796266b28 (bug 1550422)
Backed out changeset 2db647dcdf1c (bug 1550422)
Backed out changeset 952ddac02972 (bug 1550422)
Backed out changeset ba46b53643ec (bug 1550422)
Backed out changeset ca47ef6c59f7 (bug 1550422)
Backed out changeset f45f471a1a40 (bug 1550422)
Backed out changeset 371b4da5b771 (bug 1550422)
Backed out changeset 02fc78890032 (bug 1550422)
2019-05-23 05:59:44 +03:00
Jean-Yves Avenard
846a72c649 Bug 1550422 - P23. Remove now unused gfxPrefs. r=jrmuizel
And with some tidying some comments and removing stray #include "gfxPrefs.h"

Differential Revision: https://phabricator.services.mozilla.com/D31468
2019-05-22 12:46:30 +00:00
Jean-Yves Avenard
935940dd3f Bug 1550422 - P12. Convert Live gfxPrefs into StaticPrefs. r=jrmuizel
gfxPrefs Live preferences are almost identical to StaticPrefs.

We leave aside for now those that set a custom change callback as this feature isn't yet supported in StaticPrefs.

Differential Revision: https://phabricator.services.mozilla.com/D31256
2019-05-22 12:43:42 +00:00
Brian Birtles
caef0cb453 Bug 1253476 - Add remove events; r=boris,bzbarsky
This patch introduces the machinery for dispatching remove events but does not
actually cause removing to do anything to the output of the animation beyond
updating its replaceState member.

The expected behavior is defined in:

  https://drafts.csswg.org/web-animations-1/#removing-replaced-animations

And the corresponding IDL members are defined in:

  https://drafts.csswg.org/web-animations-1/#animation
  https://drafts.csswg.org/web-animations-1/#enumdef-animationreplacestate

Tests for these events are added in the next patch in this series.

Differential Revision: https://phabricator.services.mozilla.com/D30322
2019-05-20 05:48:29 +00:00
Brian Birtles
0a01ee0e64 Bug 1253476 - Run microtask checkpoint for updating timing after updating all timelines; r=hiro
According to the procedure to update animations and send events[1] the UA should
update all timelines first and _then_ run a microtask checkpoint.

As a result, when we run callbacks for the finished promise on an Animation they
should see the fully up-to-date state of all animations, regardless of which
timeline they are attached to.

However, that is currently not the case since we run a microtask checkpoint
after updating each individual timeline.

This difference will become more significant later in this patch series when we
introduce another step--removing replaced animations--that _also_ should happen
before we run the microtask checkpoint (so that the promise callbacks always see
a fully-up-to-date state).

This patch makes our handling a little more in line with the spec. It's not
quite the same because it's possible there may be other refresh driver observers
that trigger a microtask checkpoint in between ticking the different timelines
but that case is expected to be rare and fixing it would require maintaining
a separate queue for timeline observers that we run after all other observers--
so it is probably not necessary to fix that case at this stage.

The test added in this patch fails without the code changes in this patch.

[1] https://drafts.csswg.org/web-animations-1/#update-animations-and-send-events

Differential Revision: https://phabricator.services.mozilla.com/D30319
2019-05-20 05:22:03 +00:00
Sylvestre Ledru
893cfb7019 Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D28329
2019-04-22 16:35:03 +00:00
Kenny Levinsen
d578916224 Bug 1546098 - Ensure that nsRefreshDriver is always stopped when not needed. r=emilio
nsRefreshDrivers belonging to fully-loaded documents in content processes
now correctly stop their timer when no observers are present.

Differential Revision: https://phabricator.services.mozilla.com/D28339
2019-04-22 15:40:46 +00:00
Masayuki Nakano
394fc8aa9f Bug 1544343 - part 3: Make layout use mozilla::PresShell instead of nsIPresShell as far as possible r=emilio
This patch changes remaining things under `layout/`.  However, there are some
places which still need to use `nsIPresShell`.  That will be fixed in a
follow up bug.

Differential Revision: https://phabricator.services.mozilla.com/D27477
2019-04-16 07:25:10 +00:00
Olli Pettay
94d8b89f5c Bug 1515216, ensure IdleTaskRunners are added only once to RefreshDriver's idle runnable list, r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D27424
2019-04-15 15:41:15 +00:00
Masayuki Nakano
ad34e89b46 Bug 1543315 - part 9: Mark nsIPresShell::FlushPendingNotifications() as MOZ_CAN_RUN_SCRIPT r=smaug
So, this patch makes all caller of it safe including its arguments unless
they come from other methods.

Differential Revision: https://phabricator.services.mozilla.com/D27225
2019-04-13 12:43:57 +00:00
Daosheng Mu
44923e9247 Bug 1537967 - Skipping running refresh driver and compositing in VR mode. r=mstange,kip
MozReview-Commit-ID: 4L3PygFSFCB

Differential Revision: https://phabricator.services.mozilla.com/D26834
2019-04-12 04:42:28 +00:00
Dorel Luca
28396470b0 Backed out changeset 553d7f3d8eed (bug 1537967) for Marionette failures in testing/firefox-ui/tests/functional/security/test_mixed_content_page.py 2019-04-11 06:31:36 +03:00
Daosheng Mu
2fc454285f Bug 1537967 - Skipping running refresh driver and compositing in VR mode. r=mstange,kip
MozReview-Commit-ID: 4L3PygFSFCB

Differential Revision: https://phabricator.services.mozilla.com/D26834
2019-04-10 19:44:18 +00:00
Brian Birtles
c3f95c950c Bug 1509466 - Make cancelAnimationFrame cancel a pending request frame callback scheduled in the same frame; r=farre
As per the following change to the HTML spec:

  86b05f8a07

when running a requestAnimationFrame callback it should be possible to cancel
another requestAnimationFrame callback scheduled to run in the same frame by
using cancelAnimationFrame.

See issue:

  https://github.com/whatwg/html/issues/4359

Differential Revision: https://phabricator.services.mozilla.com/D20974
2019-02-25 15:15:56 +09:00
Brian Birtles
4525851418 Bug 1509466 - Pass frame request callbacks along with their handles to nsRefreshDriver; r=farre
In the next patch in this series we want to compare the handle of frame
callbacks we are about to run,  with a set of canceled handles stored on the
document. This patch makes us pass the handles along with the callbacks so we
can do that.

Incidentally doing this allows us to just swap array elements when building up
the refresh driver's set of callbacks to run. That is hopefully a little more
efficient than running the implicit conversion operator on each item and then
appending to an array.

Differential Revision: https://phabricator.services.mozilla.com/D20973
2019-02-25 15:02:12 +09:00
Masayuki Nakano
edcab6281e Bug 1540930 - Make nsPresContext use mozilla::PresShell directly rather than via nsIPresShell r=emilio
`nsPresContext` should use `mozilla::PresShell` directly instead of
`nsIPresShell`.  This patch makes it.

Unfortunately, `nsPresContext` and `nsIFrame` have `PresShell()`.  Therefore,
we cannot use `PresShell*` in its methods so that this patch uses `mozilla::`
namespace prefix.

It might be better to rename them as `PresShellPtr()` in another bug.

Differential Revision: https://phabricator.services.mozilla.com/D25721
2019-04-03 12:40:26 +00:00
Sylvestre Ledru
d42e742a3e Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D24168
2019-03-31 15:12:55 +00:00
Olli Pettay
000561a78a Bug 1538517, use higher frame rate right after first contentful paint, r=farre
fcp is often almost blank paint, but the next couple paints have more content.
But in order to not regress page load time, reduce frame rate later during the page load.

Differential Revision: https://phabricator.services.mozilla.com/D24636
2019-03-26 20:47:50 +00:00
Timothy Nikkel
77f898b5af Bug 1306896. Disable assert on 32-bit Windows. r=kats
The Timestamp implementation on Windows seems to be based off of two system APIs: GetTickCount64 and QueryPerformanceCounter. QPC seems to be preferred over GTC, unless a "failure" in QPC is detected.

There is code in the Timestamp implementation to detect if QPC "fails" be comparing elapsed time of QPC to elapsed time of GTC.

Through logging on try server I observed the following in different failures:

1) the QPC failure detection kicks in a lot and disables use of QPC
2) the QPC of the vsync timestamp was in the future compared to the QPC of TimeStamp::Now().
3) the QPC of TimeStamp::Now() was missing (presumably because it was disabled) and the GTC of the vsync timestamp was in the future compared to the GTC of TimeStamp::Now()
4) the vsync timestamp printf of raw GTC and QPC values matched at the source (SoftwareDisplay::NotifyVsync) and in the refresh driver, so the vsync timestamp wasn't getting messed up.

I guess we could spend more time on the error detection in our Windows TimeStamp code, but this failure is only happening on 32-bit machines.

Here's a patch to disable the assertions on 32-bit Windows. Depends how important we think this assertion is relative to the work to investigate more.

Differential Revision: https://phabricator.services.mozilla.com/D22453
2019-03-07 14:24:23 +00:00
Ryan Hunt
a96492f0f6 Bug 1523969 part 14 - Move method definition inline comments to new line in 'layout/'. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D21115
2019-02-25 16:09:24 -06:00
Andreea Pavel
b8756f94af Backed out 2 changesets (bug 1509466) for win build bustages
Backed out changeset da0f977287bd (bug 1509466)
Backed out changeset de1481b9b6fa (bug 1509466)
2019-02-28 06:08:46 +02:00
Brian Birtles
8bbe1771d2 Bug 1509466 - Make cancelAnimationFrame cancel a pending request frame callback scheduled in the same frame; r=farre
As per the following change to the HTML spec:

  86b05f8a07

when running a requestAnimationFrame callback it should be possible to cancel
another requestAnimationFrame callback scheduled to run in the same frame by
using cancelAnimationFrame.

See issue:

  https://github.com/whatwg/html/issues/4359

Differential Revision: https://phabricator.services.mozilla.com/D20974
2019-02-25 15:15:56 +09:00
Brian Birtles
b7884525b2 Bug 1509466 - Pass frame request callbacks along with their handles to nsRefreshDriver; r=farre
In the next patch in this series we want to compare the handle of frame
callbacks we are about to run,  with a set of canceled handles stored on the
document. This patch makes us pass the handles along with the callbacks so we
can do that.

Incidentally doing this allows us to just swap array elements when building up
the refresh driver's set of callbacks to run. That is hopefully a little more
efficient than running the implicit conversion operator on each item and then
appending to an array.

Differential Revision: https://phabricator.services.mozilla.com/D20973
2019-02-25 15:02:12 +09:00
Olli Pettay
9a34c74300 Bug 1527360 - Add a profiler marker for the case when RefreshDriver is still waiting for paint , r=mstange 2019-02-12 18:52:43 +02:00
Olli Pettay
681004b045 Bug 1521786 - Keep RefreshDriver ticking before first contentful paint, r=farre 2019-01-29 23:57:26 +02:00
Olli Pettay
e64d9535e8 Bug 1506949, use idle queue for RefreshDriver tick betweek fcp and load, r=farre 2019-01-29 23:54:38 +02:00
Randell Jesup
682721b83e Bug 1522150: Add a DeferredTimers queue ahead of the normal Idle EventQueue r=froyd
* * *
Bug 1522150: Rename NS_IdleDispatch* functions since they take queue identifiers r=froyd
2019-01-26 12:18:05 -05:00
Cosmin Sabou
57bb107987 Merge mozilla-inbound to mozilla-central. a=merge 2019-01-19 11:57:49 +02:00