mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-07 13:24:12 +00:00
00d7367b44
This is similar to Services.tm.idleDispatchToMainThread, but provides an IdleDeadline argument to its callbacks, the same way that Window.requestIdleCallback does. The IdleDeadline argument was necessary for my first attempt at this bug. It's not necessary for the current version, but I suspect it will be useful in other areas, and it also avoids some XPConnect overhead, so it's probably worth keeping. MozReview-Commit-ID: FtrbNkE7Vz5 --HG-- extra : rebase_source : d28973641e914c8d180f66125669aabc29ab857f
61 lines
1.6 KiB
C++
61 lines
1.6 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim:set ts=2 sw=2 sts=2 et cindent: */
|
|
/* 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/. */
|
|
|
|
#ifndef mozilla_dom_IdleDeadline_h
|
|
#define mozilla_dom_IdleDeadline_h
|
|
|
|
#include "js/TypeDecls.h"
|
|
#include "mozilla/Attributes.h"
|
|
#include "mozilla/ErrorResult.h"
|
|
#include "mozilla/Maybe.h"
|
|
#include "mozilla/dom/BindingDeclarations.h"
|
|
#include "nsCOMPtr.h"
|
|
#include "nsCycleCollectionParticipant.h"
|
|
#include "nsDOMNavigationTiming.h"
|
|
#include "nsWrapperCache.h"
|
|
|
|
class nsIGlobalObject;
|
|
class nsPIDOMWindowInner;
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
|
|
class IdleDeadline final
|
|
: public nsISupports
|
|
, public nsWrapperCache
|
|
{
|
|
public:
|
|
IdleDeadline(nsPIDOMWindowInner* aWindow, bool aDidTimeout,
|
|
DOMHighResTimeStamp aDeadline);
|
|
|
|
IdleDeadline(nsIGlobalObject* aGlobal, bool aDidTimeout,
|
|
DOMHighResTimeStamp aDeadline);
|
|
|
|
nsIGlobalObject* GetParentObject() const { return mGlobal; }
|
|
|
|
virtual JSObject* WrapObject(JSContext* aCx,
|
|
JS::Handle<JSObject*> aGivenProto) override;
|
|
|
|
DOMHighResTimeStamp TimeRemaining();
|
|
bool DidTimeout() const;
|
|
|
|
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
|
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(IdleDeadline)
|
|
|
|
private:
|
|
~IdleDeadline();
|
|
|
|
nsCOMPtr<nsPIDOMWindowInner> mWindow;
|
|
nsCOMPtr<nsIGlobalObject> mGlobal;
|
|
const bool mDidTimeout;
|
|
const DOMHighResTimeStamp mDeadline;
|
|
};
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
#endif // mozilla_dom_IdleDeadline_h
|