/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* * Timeout struct that holds information about each script * timeout. Holds a strong reference to an nsITimeoutHandler, which * abstracts the language specific cruft.
*/ class Timeout final : protected LinkedListElement<RefPtr<Timeout>> { public:
Timeout();
// Override some LinkedListElement methods so that remove() // calls can call SetTimeoutContainer.
Timeout* getNext() { return LinkedListElement<RefPtr<Timeout>>::getNext(); }
private: // mWhen and mTimeRemaining can't be in a union, sadly, because they // have constructors. // Nominal time to run this timeout. Use only when timeouts are not // frozen.
TimeStamp mWhen;
// Remaining time to wait. Used only when timeouts are frozen.
TimeDuration mTimeRemaining;
// Time that the timeout started, restarted, or was frozen. Useful for // logging time from (virtual) start of a timer until the time it fires // (or is cancelled, etc)
TimeStamp mSubmitTime;
~Timeout() { SetTimeoutContainer(nullptr); }
public: // Public member variables in this section. Please don't add to this list // or mix methods with these. The interleaving public/private sections // is necessary as we migrate members to private while still trying to // keep decent binary packing.
// Global object for which this timeout fires
RefPtr<nsIGlobalObject> mGlobal;
// The language-specific information about the callback.
RefPtr<TimeoutHandler> mScriptHandler;
RefPtr<TimeoutSet> mTimeouts;
// Interval
TimeDuration mInterval;
UniquePtr<ProfileChunkedBuffer> mCause;
// Returned as value of setTimeout()
int32_t mTimeoutId;
// Identifies which firing level this Timeout is being processed in // when sync loops trigger nested firing.
uint32_t mFiringId;
#ifdef DEBUG
int64_t mFiringIndex; #endif
// The popup state at timeout creation time if not created from // another timeout
PopupBlocker::PopupControlState mPopupState;
// Used to allow several reasons for setting a timeout, where each // 'Reason' value is using a possibly overlapping set of id:s.
Reason mReason;
// Between 0 and DOM_CLAMP_TIMEOUT_NESTING_LEVEL. Currently we don't // care about nesting levels beyond that value.
uint8_t mNestingLevel;
// True if the timeout was cleared bool mCleared;
// True if this is one of the timeouts that are currently running bool mRunning;
// True if this is a repeating/interval timer bool mIsInterval;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.