Commit graph

478 commits

Author SHA1 Message Date
Sylvestre Ledru
a1dce6440a Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

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

--HG--
extra : moz-landing-system : lando
2019-04-22 16:35:03 +00:00
Kenny Levinsen
1bb0a93285 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

--HG--
extra : moz-landing-system : lando
2019-04-22 15:40:46 +00:00
Masayuki Nakano
f5737567dd 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

--HG--
extra : moz-landing-system : lando
2019-04-16 07:25:10 +00:00
Olli Pettay
b024b00b94 Bug 1515216, ensure IdleTaskRunners are added only once to RefreshDriver's idle runnable list, r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D27424

--HG--
extra : moz-landing-system : lando
2019-04-15 15:41:15 +00:00
Masayuki Nakano
414509fe00 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

--HG--
extra : moz-landing-system : lando
2019-04-13 12:43:57 +00:00
Daosheng Mu
0e6aee236e 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

--HG--
extra : moz-landing-system : lando
2019-04-12 04:42:28 +00:00
Dorel Luca
d285466535 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
10b30705e6 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

--HG--
extra : moz-landing-system : lando
2019-04-10 19:44:18 +00:00
Brian Birtles
7ecb9753b5 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

--HG--
extra : rebase_source : 696dde4f205f2d12a67a4e9649d629a0f4e7de27
2019-02-25 15:15:56 +09:00
Brian Birtles
80fb21495c 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

--HG--
extra : rebase_source : f014605ece1c8e3495b2927621fb9f72ff8e57d7
2019-02-25 15:02:12 +09:00
Masayuki Nakano
9165a150a1 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

--HG--
extra : moz-landing-system : lando
2019-04-03 12:40:26 +00:00
Sylvestre Ledru
ef0bfc3822 Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

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

--HG--
extra : moz-landing-system : lando
2019-03-31 15:12:55 +00:00
Olli Pettay
ac08265665 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

--HG--
extra : moz-landing-system : lando
2019-03-26 20:47:50 +00:00
Timothy Nikkel
7e07e94a56 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

--HG--
extra : moz-landing-system : lando
2019-03-07 14:24:23 +00:00
Ryan Hunt
b936c00a65 Bug 1523969 part 14 - Move method definition inline comments to new line in 'layout/'. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D21115

--HG--
extra : rebase_source : 4d65c07d8822f3a54ac881b5d0f55468ce884554
2019-02-25 16:09:24 -06:00
Andreea Pavel
b28887843f 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
0f89db0c64 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

--HG--
extra : rebase_source : ff3c69a82f0ef61f562edd1610017a17c8f26276
2019-02-25 15:15:56 +09:00
Brian Birtles
8bb88e9016 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

--HG--
extra : rebase_source : 4786ffedf33051298c9593a588a6e8ce70cabf04
2019-02-25 15:02:12 +09:00
Olli Pettay
7f7c5ac04f Bug 1527360 - Add a profiler marker for the case when RefreshDriver is still waiting for paint , r=mstange
--HG--
extra : rebase_source : c1b2cc4e0351bc79865388a7b26a56652997d6c0
2019-02-12 18:52:43 +02:00
Olli Pettay
a3dd58ad75 Bug 1521786 - Keep RefreshDriver ticking before first contentful paint, r=farre
--HG--
extra : rebase_source : 51e9d056b7ec7874e76a746740de5e2bb965f4e3
2019-01-29 23:57:26 +02:00
Olli Pettay
f658ec7c25 Bug 1506949, use idle queue for RefreshDriver tick betweek fcp and load, r=farre
--HG--
extra : rebase_source : c86d5c084a43fffb81f151352070551c85869d4f
2019-01-29 23:54:38 +02:00
Randell Jesup
76bd9e73cc 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
7ccc9d8b0b Merge mozilla-inbound to mozilla-central. a=merge 2019-01-19 11:57:49 +02:00
Greg Tatum
7042c8f1c3 Bug 1520526 - Add categories to all profiler markers; r=mstange
This commit adds categories to all markers. This way the profiler's
marker categories and frame label categories agree. There are a few
duplicate category properties on some of the marker payloads, but
this could be cleaned up in a follow-up if needed.

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

--HG--
extra : moz-landing-system : lando
2019-01-18 15:40:15 +00:00
Ehsan Akhgari
e5e885ae31 Bug 1521000 - Part 2: Adjust our clang-format rules to include spaces after the hash for nested preprocessor directives r=sylvestre
# ignore-this-changeset

--HG--
extra : amend_source : 7221c8d15a765df71171099468e7c7faa648f37c
extra : histedit_source : a0cce6015636202bff09e35a13f72e03257a7695
2019-01-18 10:16:18 +01:00
Ciure Andrei
7a748ae68f Merge mozilla-central to autoland. a=merge CLOSED TREE 2019-01-04 01:03:06 +02:00
Ciure Andrei
a8af06aea2 Merge inbound to mozilla-central. a=merge 2019-01-04 00:04:46 +02:00
Jan Henning
519ddfc7a4 Bug 1517103 - Keep the refresh driver ticking when there are pending visual viewport events. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D15559

--HG--
extra : moz-landing-system : lando
2019-01-03 13:16:20 +00:00
Matt Woodrow
54f9f12d39 Bug 1517355 - Add CONTENT_FRAME_TIME variant that records from the vsync time. data-review=rrayborn, r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D15603

--HG--
extra : moz-landing-system : lando
2019-01-03 19:43:04 +00:00
Emilio Cobos Álvarez
d2ed260822 Bug 1517241 - Rename nsIDocument to mozilla::dom::Document. r=smaug
Summary: Really sorry for the size of the patch. It's mostly automatic
s/nsIDocument/Document/ but I had to fix up in a bunch of places manually to
add the right namespacing and such.

Overall it's not a very interesting patch I think.

nsDocument.cpp turns into Document.cpp, nsIDocument.h into Document.h and
nsIDocumentInlines.h into DocumentInlines.h.

I also changed a bunch of nsCOMPtr usage to RefPtr, but not all of it.

While fixing up some of the bits I also removed some unneeded OwnerDoc() null
checks and such, but I didn't do anything riskier than that.
2019-01-03 17:48:33 +01:00
Sylvestre Ledru
cccdda3c2a Bug 1516555 - Reformat everything to the Google coding style r=Ehsan
# ignore-this-changeset

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

--HG--
extra : moz-landing-system : lando
2018-12-28 15:48:06 +00:00
Jan Henning
6011bbb22c Bug 1478776 - Part 6: Initial Visual Viewport event implementation. r=botond
The event rate throttling mechanism is modelled on the logic for "scroll" events
in nsGfxScrollFrame.cpp.

That is
1. When a request to fire an event is posted to the VisualViewport, we create a
   new runnable for this and register it with the RefreshDriver. If we already
   have a pending runnable, calling VisualViewport->Post...Event() becomes a
   no-op.
2. When the RefreshDriver is ready, it executes the runnable, which in turn
   fires the actual event and then cleans itself up.

To keep this patch manageable, we simply fire a scroll event every time the
stored visual viewport offset is changed. Because we are storing the absolute
offset of the viewport relative to the page, this behaviour doesn't match the
spec, which demands that scroll events are fired only when the relative offset
between visual and layout viewport changes. We'll fix this up in the next patch.

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

--HG--
extra : moz-landing-system : lando
2018-12-20 21:35:26 +00:00
Brian Hackett
490b175062 Bug 1044074 - Don't run resize or scroll events while documents have events suppressed, r=smaug.
--HG--
extra : rebase_source : 47b98b215d3131fa3e6e88948fdd67aaf41524a9
2018-12-18 15:38:45 -10:00
Matt Woodrow
011bd0697f Bug 1510853 - Make VsyncId available to compositor. r=jrmuizel
MozReview-Commit-ID: 8wBDg39R4nZ

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

--HG--
extra : moz-landing-system : lando
2018-12-07 23:28:03 +00:00
Matt Woodrow
e3453844bf Bug 1510853 - Introduce VsyncId and VsyncEvent for identifying vsyncs without timestamp comparisons. r=jrmuizel
MozReview-Commit-ID: 6TO6hYOdJYo

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

--HG--
extra : moz-landing-system : lando
2018-12-07 23:27:28 +00:00
Ciure Andrei
22c96f2cb4 Backed out 4 changesets (bug 1510853) for TelemetryHistogramEnums.h build bustages CLOSED TREE
Backed out changeset 80baa7b09930 (bug 1510853)
Backed out changeset d1ef6db7fc28 (bug 1510853)
Backed out changeset ae190948ad73 (bug 1510853)
Backed out changeset 0ade0aa77b2f (bug 1510853)
2018-12-07 19:38:47 +02:00
Matt Woodrow
e553ae49ac Bug 1510853 - Make VsyncId available to compositor. r=jrmuizel
MozReview-Commit-ID: 8wBDg39R4nZ

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

--HG--
extra : moz-landing-system : lando
2018-12-07 17:06:09 +00:00
Matt Woodrow
6c3cd9bd00 Bug 1510853 - Introduce VsyncId and VsyncEvent for identifying vsyncs without timestamp comparisons. r=jrmuizel
MozReview-Commit-ID: 6TO6hYOdJYo

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

--HG--
extra : moz-landing-system : lando
2018-12-07 17:06:11 +00:00
Sylvestre Ledru
265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Daniel Holbert
f7ce2706a7 Bug 1509972 part 1: Remove unnecessary nsAutoPtr includes from files in layout/base. r=TYLin
In each file touched by this commit, there were no mentions of nsAutoPtr
besides the #include.

I verified that the folder layout/base still builds successfully in
non-unified mode after this patch, too. So, none of these files are secretly
using nsAutoPtr and depending on some other .cpp file to provide the header.

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

--HG--
extra : moz-landing-system : lando
2018-11-26 22:12:20 +00:00
Nazım Can Altınova
f967885c60 Bug 1417976 - Part 2: Include DocShell IDs to marker payloads r=mstange
MozReview-Commit-ID: AML1ESUnFlu

Depends on D4914

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

--HG--
extra : moz-landing-system : lando
2018-11-06 21:45:50 +00:00
Margareta Eliza Balazs
df311518fe Backed out 3 changesets (bug 1417976) for bustages in /builds/worker/workspace/build/src/obj-firefox/dist/include/GeckoProfiler.h CLOSED TREE
Backed out changeset 908f30faf4b6 (bug 1417976)
Backed out changeset 44ae0b8569b2 (bug 1417976)
Backed out changeset 801cdde1f597 (bug 1417976)
2018-11-02 18:42:21 +02:00
Nazım Can Altınova
8432e48060 Bug 1417976 - Part 2: Include DocShell IDs to marker payloads r=mstange
MozReview-Commit-ID: AML1ESUnFlu

Depends on D4914

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

--HG--
extra : moz-landing-system : lando
2018-11-02 16:17:54 +00:00
Andrea Marchesini
13bf7aa219 Bug 1432429 - Clean up a few random areas of code to accomodate Fuzzyfox: Performance and RefreshDriver. r=froydnj,baku
1: Correct the Performance API 'NowUnclamped' to obtain a non-Fuzzed Timestamp

2: Do not compare fuzzed and non-fuzzed timestamps in a Refresh Driver assert,
since this happens so early on that we will eventually compare them and
asserting would be bad.
2018-09-18 13:05:48 -05:00
Mats Palmgren
f29a7e848d Bug 1494745 part 3 - Make nsRefreshDriver::AddTimerAdjustmentObserver void since it's infallible. r=bz
mTimerAdjustmentObservers is a nsTObserverArray which is infallible,
so no need to check the return value from AppendElement
(which a later patch in this series will remove).
2018-10-14 18:12:23 +02:00
Mats Palmgren
83361ab4ba Bug 1494745 part 2 - Make nsRefreshDriver::AddRefreshObserver void since it's infallible. r=bz
nsRefreshDriver::ObserverArray is a nsTObserverArray which is
infallible, so no need to check the return value from AppendElement
(which a later patch in this series will remove).
2018-10-14 18:12:22 +02:00
Xidorn Quan
afd201db11 Bug 1489385 part 2 - Make the refresh driver event dispatching specific to fullscreen events. r=smaug
The mechanism was added in bug 1168705 for fullscreen, and is only used
for this since then. The spec now has a specific step for this in the
event loop, so specialize this mechanism to match the spec closer.

This patch also changes the caller type of the fullscreenchange event
from non-system to system (via using DispatchTrustedEvent rather than
EventTarget::DispatchEvent(Event&)).

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

--HG--
extra : source : 179f5fbd9db08518804b613f5e3fefa659c1e0a2
2018-09-08 08:53:33 +10:00
Mantaroh Yoshinaga
1deccd7ac1 Bug 1445570 - Remove EnsureEventualAfterPaint timer. r=tnikkel
MozReview-Commit-ID: C7WICJ5Q0ES

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

--HG--
extra : moz-landing-system : lando
2018-09-06 02:21:39 +00:00
Gerald Squelart
017ca214c1 Bug 1488684 - Made some layout methods 'final' or non-virtual - r=dbaron
Some methods were not overrides and were never overridden, so they could simply
be non-virtual.
Others were overrides but were not overridden, so they could benefit from being
final to hopefully lead to devirtualized calls.

Though some of these are not strictly necessary because they are inside 'final'
classes, I think they're worth adding anyway, because:
- The 'final' keyword becomes more obvious when looking at methods without the
  wider context in sight (e.g., in reviews or searchfox).
- If one day any of these classes becomes non-final, it would keep the final
  attribute on these methods by default, and force the programmer to explicitly
  reflect before removing 'final' from the methods that need to be overridden.

Depends on D5020

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

--HG--
extra : moz-landing-system : lando
2018-09-06 01:23:49 +00:00
Hiroyuki Ikezoe
9f85c749a3 Bug 1475769 - Bail out from nsRefreshDriver::Tick before updating mMostRecentRefresh when the refresh driver is waiting for paint. r=mattwoodrow
Before this patch, there is a race condition that the refresh driver updates
the most recent refresh time but animations corresponding to the refresh driver
don't update their internal state, that causes the inconsistency that such
animations are regarded as finished on the most recent time whereas their
internal states represent the animations are still in active.  This is the one
of the cause of bug 1466010, i.e. the display item corresponding to the
animation is going to be rebuilt without calling MarkNeedsDisplayItemRebuild.

MozReview-Commit-ID: 9adzDV9E3ka

--HG--
extra : rebase_source : 7120e9f462309d1c4efe995ef64aeead9e29ff8f
2018-07-15 20:19:29 +09:00