Bug 1842773 - Part 5: Add ArrayBuffer.prototype.{maxByteLength,resizable} getters...
[gecko.git] / dom / base / TimeoutBudgetManager.cpp
blob0fb9597df86fa259b3b2e4effc4d7273f991bf5d
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #include "TimeoutBudgetManager.h"
9 #include "mozilla/dom/Timeout.h"
11 namespace mozilla::dom {
13 /* static */ TimeoutBudgetManager& TimeoutBudgetManager::Get() {
14 static TimeoutBudgetManager gTimeoutBudgetManager;
15 return gTimeoutBudgetManager;
18 void TimeoutBudgetManager::StartRecording(const TimeStamp& aNow) {
19 mStart = aNow;
22 void TimeoutBudgetManager::StopRecording() { mStart = TimeStamp(); }
24 TimeDuration TimeoutBudgetManager::RecordExecution(const TimeStamp& aNow,
25 const Timeout* aTimeout) {
26 if (!mStart) {
27 // If we've started a sync operation mStart might be null, in
28 // which case we should not record this piece of execution.
29 return TimeDuration();
32 return aNow - mStart;
35 } // namespace mozilla::dom