Commit Graph

44 Commits

Author SHA1 Message Date
Olli Pettay
8cc84c40fb bug 1468099, Add a way to check if all the tabs in a process can be throttled, r=farre 2018-06-16 22:49:41 +03:00
Coroiu Cristina
f3fc92b66f Backed out changeset 7fc2698f9e19 (bug 1468099) for gtest failures on a CLOSED TREE 2018-06-15 04:07:04 +03:00
Olli Pettay
d19e55aed1 Bug 1468099 - Add a way to check if all the tabs in a process can be throttled, r=farre 2018-06-15 00:56:48 +03:00
Peter Van der Beken
a01d8c7c3b Bug 888600 - Move ContentFrameMessageManager to WebIDL. Part 3: Add message manager concrete classes for WebIDL. r=bz. 2017-06-14 16:44:17 +02:00
Sebastian Hengst
500c4f7ad2 Backed out 6 changesets (bug 888600) for beta simulation failures: build bustage on Linux and Windows opt (bug 1442036) and devtools failure browser_net_view-source-debugger.js (bug 1441961). a=backout
Backed out changeset 83c87140dc3d (bug 888600)
Backed out changeset 2efb9b1753f6 (bug 888600)
Backed out changeset af5303781961 (bug 888600)
Backed out changeset 79ef59047e63 (bug 888600)
Backed out changeset 30d568d628dd (bug 888600)
Backed out changeset c7bd4c6c9741 (bug 888600)
2018-03-01 11:51:09 +02:00
Peter Van der Beken
2d21a2c039 Bug 888600 - Move ContentFrameMessageManager to WebIDL. Part 3: Add message manager concrete classes for WebIDL. r=bz. 2017-06-14 16:44:17 +02:00
Nika Layzell
d8c117bc28 Bug 1414974 - Part 2: Switch many consumers to nsGlobalWindow{Inner,Outer}, r=smaug
This is a large patch which tries to switch many of the external consumers of
nsGlobalWindow to instead use the new Inner or Outer variants.

MozReview-Commit-ID: 99648Lm46T5
2017-11-09 10:44:47 -05:00
Andreas Farre
b5d4b07b1b Bug 1385238 - Reset execution budget when background state changes. r=bkelly 2017-07-28 09:31:00 -04:00
Andreas Farre
90477bf60f Bug 1382254 - Only disallow budget throttling. r=ehsan
Don't consider WebSockets, IndexedDB, etc when considering background
tabs for ordinary throttling since that makes us throttle way less
than we used to.
2017-07-26 13:37:08 +02:00
Ben Kelly
d0441a47ea Bug 1378394 P1 Calculate next setInterval() time from start of previous callback. r=farre 2017-07-06 07:01:40 -07:00
Andreas Farre
e8e3c685ac Bug 1362322 - Throttle background timeouts using budget. r=bkelly
Deduct timeout execution time from a continuously regenerating
execution budget. Then throttle timeouts by using that budget in
TimeoutManager::MinSchedulingDelay to adjust the minimum value if
the budget is negative. The minimum value is adjusted to be a
value where the budget would have regenerated to be +0 ms.

The execution budget is clamped by values in ms defined in prefs:

* dom.timeout.background_throttling_max_budget: 50
* dom.timeout.foreground_throttling_max_budget: -1

A value equal or less than 0 means that the budget is infinite.

The regeneration rate can be controlled by the following prefs:

* dom.timeout.background_budget_regeneration_rate
* dom.timeout.foreground_budget_regeneration_rate

one each for foreground and background throttling.

To not starve timeouts indefinitely we clamp the minimum delay using
the pref:

* dom.timeout.budget_throttling_max_delay: 15000

The feature is behind the pref:

* dom.timeout.enable_budget_timer_throttling
2017-07-02 18:02:38 +02:00
Andreas Farre
eb63589149 Bug 1373536 - Unify execution measurements. r=bkelly
Expose the utility framework for computing runnable execution time for
telemetry to be able to use it for managing budget times.
2017-05-30 13:08:11 +02:00
Sebastian Hengst
b879d28128 Backed out changeset 10676fd9e6ad (bug 1373536) for failing asan-fuzzing at dom/base/TimeoutHandler.h:26 with unknown type name 'NS_DECL_CYCLE_COLLECTION_CLASS' and more. r=backout 2017-06-20 17:47:54 +02:00
Andreas Farre
d7e4c73d5f Bug 1373536 - Unify execution measurements. r=bkelly
Expose the utility framework for computing runnable execution time for
telemetry to be able to use it for managing budget times.
2017-06-16 07:40:00 +02:00
Ben Kelly
13b51e0da8 Bug 1371787 P7 Make CalculateDelay() return a TimeDuration. r=ehsan 2017-06-15 17:30:48 -07:00
Ben Kelly
a3a0824f2a Bug 1371787 P6 Move the std::max() calculation into DOMMinTimeoutValue() and rename the method to CalculateDelay(). r=ehsan 2017-06-15 17:30:47 -07:00
Ben Kelly
0f8eebc74c Bug 1371787 P4 Pass Timeout to DOMMinTimeoutValue(). r=ehsan 2017-06-15 17:30:47 -07:00
Ben Kelly
7ad41638d7 Bug 1371664 P4 Remove old TimeoutManager code that adjusted Timeout::When() while in background. r=ehsan 2017-06-13 18:08:28 -07:00
Ben Kelly
b1f901e58b Bug 1371664 P3 Pass a minimum delay to TimeoutExecutor::MaybeSchedule() based on TimeoutManager::IsBackground(). r=ehsan 2017-06-13 18:08:27 -07:00
Ben Kelly
25f85897ab Bug 1371664 P2 Make nsGlobalWindow::SetIsBackground() call new TimeoutManager::UpdateBackgroundState(). r=ehsan 2017-06-13 18:08:27 -07:00
Ben Kelly
d487989fec Bug 1370025 P5 Remove the old TimeoutManager insertion point logic. r=ehsan 2017-06-05 12:42:33 -07:00
Ben Kelly
3352102a70 Bug 1370025 P3 Give the Timeouts structure a reference back to its owning TimeoutManager. r=ehsan 2017-06-05 12:42:33 -07:00
Ben Kelly
0e6aea45f3 Bug 1370025 P2 Add TimeoutManager::IsValidFiringId() helper routine. r=ehsan 2017-06-05 12:42:33 -07:00
Ben Kelly
69eee722dc Bug 1363829 P8 Remove TimeoutManager back pressure mechanism. r=smaug 2017-05-31 17:13:19 -07:00
Ben Kelly
0a97320c46 Bug 1363829 P6 Use the TimeoutExecutor in TimeoutManager. r=ehsan 2017-05-31 17:13:19 -07:00
Ben Kelly
322ac915e3 Bug 1363829 P5 Add an executor class to represent the single timer executing timers for a window. r=ehsan 2017-05-31 17:13:19 -07:00
Ben Kelly
f4e57f4b1f Bug 1363829 P3 Improve Timeout ref counting to avoide bare AddRef/Release calls. r=ehsan 2017-05-31 17:13:18 -07:00
Ben Kelly
45574d8865 Bug 1363829 P2 Removing the Timeout argument to TimeoutManager::RunTimeout(). r=ehsan 2017-05-31 17:13:18 -07:00
Ben Kelly
05ba4d929e Bug 1363829 P1 Remove some deadcode in TimeoutManager related to processing pending timers. r=ehsan 2017-05-31 17:13:18 -07:00
Ben Kelly
045d7d2e6d Bug 1343912 P2 Change TimeoutManager firing depth to a unique ID that can be expired to optimize cleanup. r=ehsan 2017-05-19 13:45:55 -07:00
Andreas Farre
3b2975055b Bug 1355480 - Add telemetry for measuring timeout execution. r=smaug, data-r=bsmedberg
Measure execution time by adding telemetry probes for tracking
foreground, tracking background, non-tracking foreground and
non-tracking background timeouts.
2017-05-02 07:23:00 -04:00
Sebastian Hengst
6502d52b40 Backed out changeset 69439c0cd3e6 (bug 1355480) on suspicion of triggering assertion CompositorThreadHolder::IsInCompositorThread() on Windows 8 x64 M-e10s. r=backout 2017-05-02 23:41:44 +02:00
Andreas Farre
72cb52644f Bug 1355480 - Add telemetry for measuring timeout execution. r=smaug, data-r=bsmedberg
Measure execution time by adding telemetry probes for tracking
foreground, tracking background, non-tracking foreground and
non-tracking background timeouts.
2017-05-02 07:23:00 -04:00
Andreas Farre
341eb7be49 Bug 1339909 - More eagarly clear throttle tracking timer. r=bkelly
Clear the throttle tracking timer in ClearAllTimeouts. Also clear it
in Suspend, and if mThrottleTrackingTimeouts isn't set restart the
timer if the document hasn't loaded.
2017-04-25 05:20:00 -04:00
Ehsan Akhgari
9c9abc4cb6 Bug 1338691 - Add a pref for delaying tracking timeout throttling after the page load finishes; r=bkelly 2017-02-14 10:57:47 -05:00
Ehsan Akhgari
98d2607b7c Bug 1332752 - Add some logging to TimeoutManager; r=bkelly 2017-01-23 16:04:26 -05:00
Ehsan Akhgari
ca34fb3289 Bug 1325467 - Part 2: Let TimeoutManager::DOMMinTimeoutValue know whethe the timeout being scheduled is tracking; r=bkelly 2017-01-17 21:01:16 -05:00
Bill McCloskey
d34d4e1c67 Bug 1320753 - Make TabGroup event target be a ThrottledEventQueue for timers, workers (r=bkelly)
MozReview-Commit-ID: FCfYz02r8yI
2016-12-23 11:48:13 -08:00
Ehsan Akhgari
cb0ab50626 Bug 1312514 - Part 3: Add a test to ensure that timeouts from tracking scripts end up in the tracking bucket; r=bkelly
For simplicity, this test is being added to test_classifier.html which
already has all of the infrastructure necessary for setting up a test
domain as a tracking domain.
2016-12-20 12:40:30 -05:00
Ehsan Akhgari
28b71db5ec Bug 1312514 - Part 1: Split tracking and non-tracking timeouts into two separate lists; r=bkelly
This will allow us to schedule these timers differently in the future.
This patch only performs the refactoring, and is not intended to change
any behavior.  Specifically, this patch doesn't change the order in
which timeouts are fired -- they should still all be fired according to
the mWhen field.

The implementation works by splitting timeout storage per window into
two Timeouts objects, mNormalTimeouts and mTrackingTimeouts.  The ForEach
helper methods are extended to deal with both of these objects, and as a
result, most of the algorithms operating on the list of timeouts work
correctly without any modification, with the notable exception of
RunTimeout.

In RunTimeout(), the order in which Timeout objects are processed does
matter, so for that case we use the OrderedTimeoutIterator class to
iterate over both linked lists simultaneously in the mWhen order.  Also,
inserting the dummy timeout when running the timeouts is only necessary
for the linked list where the last expired timeout is coming from, so we
only inject the dummy timer into the corresponding list, therefore we
remember which list we picked the last expired timeout from when
looking for it.
2016-12-20 12:40:26 -05:00
Ehsan Akhgari
559350961d Bug 1323337 - Refactor two methods looping over timeouts from TimeoutManager into Timeouts; r=bkelly
With this patch, all of the methods which loop over the timeouts
are refactored in preparation for splitting the list of timeouts
into a tracking and a normal list.
2016-12-14 16:02:22 -05:00
Ehsan Akhgari
2becb7ce02 Bug 1323326 - Refactor the normal loops over Timeouts inisde TimeoutManager to use ForEach helpers; r=bkelly
These generic loops need to run in the same way for both normal and
tracking timeouts.  This refactoring allows us to only change the
TimeoutManager ForEach helpers to loop over both linked lists when
splitting the timeouts into two separate lists without needing to
modify each call site separately.
2016-12-14 16:02:21 -05:00
Ehsan Akhgari
cfe0f8646d Bug 1323202 - Factor out the timeouts linked list into a separate data structure; r=bkelly
This is in preparation of splitting the timeouts list into normal and
tracking timeouts.
2016-12-13 19:09:19 -05:00
Ehsan Akhgari
ba45de7747 Bug 1321903 - Refactor the timeout/interval management code out of nsGlobalWindow; r=bkelly
This code now lives in TimeoutManager.  Note that this is a transition
state, the Timeout list management code also needs to be refactored out
later.

In order to simplify the lifetime management of the new class, its
lifetime is equal to the lifetime of its containing nsGlobalWindow.  In
a few places where we need to dispatch runnables to do asynchronous work
on this object, we hold the containing window alive to guarantee safety.

This patch also removes a bit of dead code that was left over from the
code removed in bug 1281793. See:
https://hg.mozilla.org/mozilla-central/rev/0ac748f4d677#l1.63
2016-12-13 14:08:47 -05:00