moebius#73: DOM - window.requestIdleCallback - improvements (basic)

https://github.com/MoonchildProductions/moebius/pull/73
This commit is contained in:
janekptacijarabaci 2018-04-18 15:15:49 +02:00 • committed by Roy Tam
commit da2320b2ef
11 changed files with 558 additions and 200 deletions

View file

@ -102,6 +102,8 @@ struct nsRect;
class nsWindowSizes;
class IdleRequestExecutor;
namespace mozilla {
class DOMEventTargetHelper;
class ThrottledEventQueue;
@ -118,6 +120,7 @@ class Gamepad;
enum class ImageBitmapFormat : uint32_t;
class IdleRequest;
class IdleRequestCallback;
class IncrementalRunnable;
class Location;
class MediaQueryList;
class MozSelfSupport;
@ -1097,7 +1100,6 @@ public:
mozilla::ErrorResult& aError);
void CancelIdleCallback(uint32_t aHandle);
#ifdef MOZ_WEBSPEECH
mozilla::dom::SpeechSynthesis*
GetSpeechSynthesis(mozilla::ErrorResult& aError);
@ -1762,6 +1764,21 @@ private:
mozilla::dom::TabGroup* TabGroupInner();
mozilla::dom::TabGroup* TabGroupOuter();
public:
void DisableIdleCallbackRequests();
uint32_t IdleRequestHandle() const { return mIdleRequestCallbackCounter; }
nsresult RunIdleRequest(mozilla::dom::IdleRequest* aRequest,
DOMHighResTimeStamp aDeadline, bool aDidTimeout);
nsresult ExecuteIdleRequest(TimeStamp aDeadline);
void ScheduleIdleRequestDispatch();
void SuspendIdleRequests();
void ResumeIdleRequests();
typedef mozilla::LinkedList<mozilla::dom::IdleRequest> IdleRequests;
void InsertIdleCallback(mozilla::dom::IdleRequest* aRequest);
void RemoveIdleCallback(mozilla::dom::IdleRequest* aRequest);
protected:
// These members are only used on outer window objects. Make sure
// you never set any of these on an inner object!
@ -1912,21 +1929,12 @@ protected:
uint32_t mSerial;
void DisableIdleCallbackRequests();
void UnthrottleIdleCallbackRequests();
void PostThrottledIdleCallback();
typedef mozilla::LinkedList<mozilla::dom::IdleRequest> IdleRequests;
static void InsertIdleCallbackIntoList(mozilla::dom::IdleRequest* aRequest,
IdleRequests& aList);
// The current idle request callback timeout handle
uint32_t mIdleCallbackTimeoutCounter;
// The current idle request callback handle
uint32_t mIdleRequestCallbackCounter;
IdleRequests mIdleRequestCallbacks;
IdleRequests mThrottledIdleRequestCallbacks;
RefPtr<IdleRequestExecutor> mIdleRequestExecutor;
#ifdef DEBUG
bool mSetOpenerWindowCalled;
@ -2002,6 +2010,7 @@ protected:
friend class nsDOMWindowUtils;
friend class mozilla::dom::PostMessageEvent;
friend class DesktopNotification;
friend class IdleRequestExecutor;
static WindowByIdTable* sWindowsById;
static bool sWarnedAboutWindowInternal;