542 Commits

Author SHA1 Message Date
Tom Tung
b34fac17ed Bug 1586761 - P7 - Revert a few incorrect changes on P2; r=tjr
P2 removed IsTimerPrecisionReductionEnabled and thus removed the check for RFP
pref. While most ReduceTimePrecision* functions are fine with that because
GetTimerPrecisionType checks that, the two ReduceTimePrecision*RFP functions
miss the check.

This patch mainly cover the check for that two functions and rename them to
*RFPOnly since they only use RFP when the pref is on.

Depends on D64324

Differential Revision: https://phabricator.services.mozilla.com/D66734

--HG--
extra : moz-landing-system : lando
2020-04-07 07:36:52 +00:00
Tom Tung
94183661ac Bug 1586761 - P2 - Introduce new TimerPrecisionTypes and a set of new Reduce methods to decide the TimerPrecisionType in the nsRFPService; r=tjr
To support checking CrossOriginIsolated in performance.now(), we need to:
- Add new types to TimerPrecisionType for nsRFPService
  - System, HighResAllowed are added
  - All is renamed to Normal
- Introduce a set of Reduce methods which require isSystemPrincipal and
CrossOriginIsolated to be passed and decide the TimerPrecisionType later
  - Original Reduce methods should only be called when callsites know the
  TimerPrecisionType. Otherwise, they should call the new methods.
- The following patches will use new methods

Differential Revision: https://phabricator.services.mozilla.com/D63293

--HG--
extra : moz-landing-system : lando
2020-03-25 14:09:55 +00:00
Emilio Cobos Álvarez
fcff6b1a69 Bug 1624829 - Use FunctionRef for various Enumerate* callbacks. r=edgar
This avoids a bunch of ugly casts and void pointers, without much overhead
(unlike std::function or such).

Differential Revision: https://phabricator.services.mozilla.com/D68182

--HG--
extra : moz-landing-system : lando
2020-03-26 12:44:47 +00:00
Olli Pettay
368bfc5bf2 Bug 1617111, reduce the time forced to be used outside animation frame callbacks, r=farre
Differential Revision: https://phabricator.services.mozilla.com/D67123

--HG--
extra : moz-landing-system : lando
2020-03-18 08:31:44 +00:00
Simon Giesecke
8aa47bcfb7 Bug 1613985 - Use default for equivalent-to-default constructors/destructors in layout. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D66016

--HG--
extra : moz-landing-system : lando
2020-03-17 09:38:32 +00:00
Kenny Levinsen
510af72a67 Bug 1614212 - Migrate global VsyncSource users correctly on frame rate change r=sotaro
CompositorVsyncDispatcher holds a reference to the VsyncSource, so it must be informed on change.

Differential Revision: https://phabricator.services.mozilla.com/D65878

--HG--
extra : moz-landing-system : lando
2020-03-16 23:24:39 +00:00
Coroiu Cristina
9cec9676e6 Backed out changeset ef75f461147c (bug 1614212) for GTest failures 2020-03-16 03:52:15 +02:00
Kenny Levinsen
a3358b92f4 Bug 1614212 - Migrate global VsyncSource users correctly on frame rate change r=sotaro
CompositorVsyncDispatcher holds a reference to the VsyncSource, so it must be informed on change.

Differential Revision: https://phabricator.services.mozilla.com/D65878

--HG--
extra : moz-landing-system : lando
2020-03-16 00:05:20 +00:00
Mihai Alexandru Michis
611150ca29 Backed out changeset 8bc3cd786136 (bug 1614212) for causing leaks.
CLOSED TREE
2020-03-13 19:21:34 +02:00
Kenny Levinsen
04165219d8 Bug 1614212 - Migrate global VsyncSource users correctly on frame rate change r=sotaro
CompositorVsyncDispatcher holds a reference to the VsyncSource, so it must be informed on change.

Differential Revision: https://phabricator.services.mozilla.com/D65878

--HG--
extra : moz-landing-system : lando
2020-03-13 16:04:36 +00:00
Boris Zbarsky
c6c4a83796 Bug 1535530. Fix can-run-script analysis to not mishandle on-stack refs to RefPtrs. r=andi,masayuki
The key here is to test the type of the variable declaration for being a
smartptr type, instead of testing the type of the variable _use_.

Differential Revision: https://phabricator.services.mozilla.com/D65581

--HG--
extra : moz-landing-system : lando
2020-03-06 09:57:45 +00:00
Steven MacLeod
e2d402b50d Bug 1597482 - Replace nsIDocShellTreeItem with BrowsingContext in GetProfileTimelineSubDocShells. r=mstange
`GetProfileTimelineSubDocShells` was using nsIDocShellTreeItem to walk the
DocShells that are visible and recording profile markers. This change switches
to using `BrowsingContext` for the walk, and ignores OOP iframes as they aren't
painting in the current process.

Differential Revision: https://phabricator.services.mozilla.com/D63960

--HG--
extra : moz-landing-system : lando
2020-02-27 19:26:40 +00:00
Sylvestre Ledru
ca6530131a Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan,kvark
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D63787

--HG--
extra : moz-landing-system : lando
2020-02-24 15:33:38 +00:00
Olli Pettay
62617da1ea Bug 1615607 - Consider to always treat high priority runnables as the highest priority runnables, r=farre
The patch removes the tad odd interleave behavior from the main thread and makes RefreshDriver to give
at least a tiny bit time for non-high priority tasks.
Given the recent change to have similar block-until behavior in child and parent process, this should work
consistently in all the processes.

Differential Revision: https://phabricator.services.mozilla.com/D63098

--HG--
extra : moz-landing-system : lando
2020-02-18 16:03:37 +00:00
Olli Pettay
24f52c566a Bug 1506376, make parent process vsync handling to be blocked the same way as in child process r=farre
Because the code becomes more generic, the following renames are done:
mLastChildTick is renamed to mLastTick
mLastProcessedTickInChildProcess is renamed to mLastProcessedTick

To clarify which member variables are used in parent process only
mRefreshTickLock is renamed to mParentProcessRefreshTickLock and
new variables mRecentParentProcessVsync and mPendingParentProcessVsync are
added. (mRecentVsync and mRecentVsyncId don't anymore have the different
behavior in parent and child processes)

The basic idea is to keep the vsync compression in parent process in
NotifyVsync.
(In child processes it is handled by IPDL/IPC compression).
The main functionality change is in ParentProcessVsyncNotifier::Run.
That method doesn't anymore call mObserver->TickRefreshDriver(...)
but mObserver->NotifyParentProcessVsync(...), which then calls
NotifyVsync(...) on the main thread. That way parent process gets the
same vsync block-until behavior as what child process has.

Depends on D62032

Differential Revision: https://phabricator.services.mozilla.com/D62033

--HG--
extra : moz-landing-system : lando
2020-02-14 16:28:22 +00:00
Bogdan Tara
74db09d838 Backed out 3 changesets (bug 1506376) for xpcshell failures CLOSED TREE
Backed out changeset fe7215eefa28 (bug 1506376)
Backed out changeset 621ec02db41c (bug 1506376)
Backed out changeset adbd602610a3 (bug 1506376)
2020-02-14 17:07:49 +02:00
Olli Pettay
1245edd3ba Bug 1506376, make parent process vsync handling to be blocked the same way as in child process r=farre
Because the code becomes more generic, the following renames are done:
mLastChildTick is renamed to mLastTick
mLastProcessedTickInChildProcess is renamed to mLastProcessedTick

To clarify which member variables are used in parent process only
mRefreshTickLock is renamed to mParentProcessRefreshTickLock and
new variables mRecentParentProcessVsync and mPendingParentProcessVsync are
added. (mRecentVsync and mRecentVsyncId don't anymore have the different
behavior in parent and child processes)

The basic idea is to keep the vsync compression in parent process in
NotifyVsync.
(In child processes it is handled by IPDL/IPC compression).
The main functionality change is in ParentProcessVsyncNotifier::Run.
That method doesn't anymore call mObserver->TickRefreshDriver(...)
but mObserver->NotifyParentProcessVsync(...), which then calls
NotifyVsync(...) on the main thread. That way parent process gets the
same vsync block-until behavior as what child process has.

Depends on D62032

Differential Revision: https://phabricator.services.mozilla.com/D62033

--HG--
extra : moz-landing-system : lando
2020-02-14 13:55:35 +00:00
Simon Giesecke
b50347f917 Bug 1611415 - Prefer using std::move over forget. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D60980

--HG--
extra : moz-landing-system : lando
2020-02-13 14:38:48 +00:00
shindli
91aa0518dd Backed out changeset 0c982bc69cb3 (bug 1611415) for causing build bustages in /builds/worker/workspace/build/src/obj-firefox/dist/include/nsCOMPtr CLOSED TREE 2020-02-12 20:13:29 +02:00
Simon Giesecke
f604a47fa5 Bug 1611415 - Applied FixItHints from mozilla-non-std-move. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D60980

--HG--
extra : moz-landing-system : lando
2020-02-12 17:24:41 +00:00
Emilio Cobos Álvarez
5ae32b1e36 Bug 1608931 - followup: fix subtle unintended behavior change.
This can fire in some tests that take over the refresh driver via script.

Differential Revision: https://phabricator.services.mozilla.com/D60620

--HG--
extra : moz-landing-system : lando
2020-01-22 01:13:15 +00:00
Emilio Cobos Álvarez
2261c719d0 Bug 1608931 - Ensure we tick the refresh driver at least once after calling IntersectionObserver.observe. r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D60015

--HG--
extra : moz-landing-system : lando
2020-01-21 23:21:32 +00:00
Nazım Can Altınova
d8afe0647a Bug 1609708 - Rename PROFILER_TRACING to PROFILER_TRACING_MARKER. r=gerald
Depends on D60229

Differential Revision: https://phabricator.services.mozilla.com/D60231

--HG--
extra : moz-landing-system : lando
2020-01-17 21:29:15 +00:00
Nazım Can Altınova
af295def24 Bug 1590700 - Rename "Scripts" marker to "requestAnimationFrame callbacks". r=gerald
"Scripts" wasn't making any sense for this marker and it was nearly imposssible
to understand. It should be "requestAnimationFrame callbacks" instead.

Differential Revision: https://phabricator.services.mozilla.com/D60229

--HG--
extra : moz-landing-system : lando
2020-01-17 21:26:55 +00:00
Eric Rahm
78ee6675cf Bug 1606187 - Part 2b: Update users of nsClassHashtable to handle UniquePtr differences r=KrisWright,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D59042

--HG--
extra : moz-landing-system : lando
2020-01-13 19:18:56 +00:00
Hiroyuki Ikezoe
04b4206ae2 Bug 1596317 - Use CallState for SubDocEnumFunc. r=smaug
`true` -> `CallState::Continue`
`false` -> `CallState::Stop`

Differential Revision: https://phabricator.services.mozilla.com/D57437

--HG--
extra : moz-landing-system : lando
2019-12-19 07:58:45 +00:00
Bogdan Tara
a96ffb25c5 Backed out 7 changesets (bug 1596317) for causing build bustages CLOSED TREE
Backed out changeset 0d3208fcb948 (bug 1596317)
Backed out changeset fe5554dc4115 (bug 1596317)
Backed out changeset 019de59cbc93 (bug 1596317)
Backed out changeset f4851472b087 (bug 1596317)
Backed out changeset a984cf515db8 (bug 1596317)
Backed out changeset d0da5bf9b4d4 (bug 1596317)
Backed out changeset abe5f2030dd9 (bug 1596317)
2019-12-19 06:49:39 +02:00
Hiroyuki Ikezoe
9e4bf031ae Bug 1596317 - Use CallState for SubDocEnumFunc. r=smaug
`true` -> `CallState::Continue`
`false` -> `CallState::Stop`

Differential Revision: https://phabricator.services.mozilla.com/D57437

--HG--
extra : moz-landing-system : lando
2019-12-19 04:16:10 +00:00
Emilio Cobos Álvarez
3ccc6c30ab Bug 1603313 - Subdocument enum callbacks should take a reference. r=bzbarsky
As they can never take null.

Differential Revision: https://phabricator.services.mozilla.com/D56843

--HG--
extra : moz-landing-system : lando
2019-12-14 05:08:39 +00:00
Masayuki Nakano
33564215e6 Bug 1543315 - part 18: Mark PresShell::FireResizeEvent() as MOZ_CAN_RUN_SCRIPT r=smaug
It dispatches a DOM event so that it should be marked as `MOZ_CAN_RUN_SCRIPT`.

Differential Revision: https://phabricator.services.mozilla.com/D55801

--HG--
extra : moz-landing-system : lando
2019-12-11 12:17:17 +00:00
Boris Zbarsky
75124bdd98 Bug 1517588. Use nsIPrincipal::IsSystemPrincipal instead of nsContentUtils::IsSystemPrincipal r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D53067

--HG--
extra : moz-landing-system : lando
2019-12-05 04:44:32 +00:00
Kenny Levinsen
1c5650fe48 Bug 1542808 - Implement widget-local VsyncSource for Wayland windows. r=stransky,lsalzman
Lets Wayland sessions run vsync off wayland surface frame callbacks by creating
an interface for widgets to return a local VsyncSource, if applicable.

This interface is currently used for the compositor, and for refresh drivers
in the parent process. It is not yet used for vsync in content processes.

Differential Revision: https://phabricator.services.mozilla.com/D28430

--HG--
extra : moz-landing-system : lando
2019-11-27 00:21:33 +00:00
Sylvestre Ledru
8d2f0d1b1f Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D54686

--HG--
extra : moz-landing-system : lando
2019-11-26 14:35:02 +00:00
Ehsan Akhgari
dc998c5c5a Bug 1592599 - Switch nsIDocShell.getDocShellEnumerator() away from using nsISimpleEnumerator; r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D51100

--HG--
extra : moz-landing-system : lando
2019-11-18 20:11:58 +00:00
Dan Glastonbury
196b08c653 Bug 1578319: Telemetry for total time spent in layout per Refresh Driver tick. r=heycam
Differential Revision: https://phabricator.services.mozilla.com/D44427

--HG--
extra : moz-landing-system : lando
2019-11-01 04:33:48 +00:00
Daosheng Mu
c7cf0a9e13 Bug 1578851 - Using VRManagerChild to check isPresenting to skip painting in nsRefreshDriver. r=rbarker,imanol,mstange
VRManager only be accessible in the parent or GPU process. So, in the tab process, isPresenting() will always return false. In WebVR immersive mode, we need to skip layer painting and don't need to wait for painting because the compositing is already done in WebGL.

Differential Revision: https://phabricator.services.mozilla.com/D48119

--HG--
extra : moz-landing-system : lando
2019-10-24 19:58:15 +00:00
Tom Ritter
7dc1b366fc Bug 1585589 - Do not reduce the precision of the requestAnimationFrame timestamp if we are in the System Principal Context r=birtles
Differential Revision: https://phabricator.services.mozilla.com/D48118

--HG--
extra : moz-landing-system : lando
2019-10-03 22:53:28 +00:00
Tom Ritter
0aa6e0e7e7 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

--HG--
extra : moz-landing-system : lando
2019-09-03 22:38:45 +00:00
Tom Ritter
7f0055c7a2 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

--HG--
extra : moz-landing-system : lando
2019-08-28 23:44:07 +00:00
Randall E. Barker
f906c88052 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

--HG--
extra : moz-landing-system : lando
2019-08-21 22:41:56 +00:00
Kristen Wright
b94d261b88 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

--HG--
extra : moz-landing-system : lando
2019-08-21 21:54:58 +00:00
Dan Glastonbury
41fff20f69 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

--HG--
extra : moz-landing-system : lando
2019-08-21 01:43:30 +00:00
Dan Glastonbury
d87e8fd612 Bug 1571612 - P1: Split FlushType::Style and FlushType::Frame. r=heycam
Differential Revision: https://phabricator.services.mozilla.com/D40755

--HG--
extra : moz-landing-system : lando
2019-08-07 03:51:20 +00:00
Kristen Wright
6bfb2c7c85 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

--HG--
extra : moz-landing-system : lando
2019-08-14 19:36:46 +00:00
Olli Pettay
cb7e7c1dd1 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

--HG--
extra : moz-landing-system : lando
2019-08-02 08:52:42 +00:00
Nicholas Nethercote
18fae65f38 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

--HG--
extra : moz-landing-system : lando
2019-07-26 01:10:23 +00:00
Dan Glastonbury
7041df5d0b 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

--HG--
extra : moz-landing-system : lando
2019-07-25 01:31:41 +00:00
Nicholas Nethercote
ca8e78069d Bug 1561491 - Make gfx.* static prefs follow the naming convention. r=KrisWright
Differential Revision: https://phabricator.services.mozilla.com/D35975

--HG--
extra : rebase_source : 9090ac828f1da9582510975047d5ad59a228dda5
2019-06-26 10:38:09 +10:00
Nicholas Nethercote
9f0b35cc2a Bug 1560837 - Make APZ static prefs follow the naming convention. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D35633

--HG--
extra : rebase_source : e71193756486b148d479e90b324f73dc35756429
2019-06-24 13:57:06 +10:00
Logan Smyth
a1de03c27b 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

--HG--
extra : moz-landing-system : lando
2019-06-17 04:36:29 +00:00