mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-06 21:05:37 +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
161 lines
6.4 KiB
C++
161 lines
6.4 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */
|
|
/* 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_ChromeUtils__
|
|
#define mozilla_dom_ChromeUtils__
|
|
|
|
#include "mozilla/AlreadyAddRefed.h"
|
|
#include "mozilla/dom/BindingDeclarations.h"
|
|
#include "mozilla/dom/ChromeUtilsBinding.h"
|
|
#include "mozilla/dom/ThreadSafeChromeUtilsBinding.h"
|
|
#include "mozilla/ErrorResult.h"
|
|
|
|
namespace mozilla {
|
|
|
|
namespace devtools {
|
|
class HeapSnapshot;
|
|
} // namespace devtools
|
|
|
|
namespace dom {
|
|
|
|
class ArrayBufferViewOrArrayBuffer;
|
|
class IdleRequestCallback;
|
|
struct IdleRequestOptions;
|
|
class PrecompiledScript;
|
|
class Promise;
|
|
|
|
class ThreadSafeChromeUtils
|
|
{
|
|
private:
|
|
// Implemented in devtools/shared/heapsnapshot/HeapSnapshot.cpp
|
|
static void SaveHeapSnapshotShared(GlobalObject& global,
|
|
const HeapSnapshotBoundaries& boundaries,
|
|
nsAString& filePath,
|
|
nsAString& snapshotId,
|
|
ErrorResult& rv);
|
|
|
|
public:
|
|
// Implemented in devtools/shared/heapsnapshot/HeapSnapshot.cpp
|
|
static void SaveHeapSnapshot(GlobalObject& global,
|
|
const HeapSnapshotBoundaries& boundaries,
|
|
nsAString& filePath,
|
|
ErrorResult& rv);
|
|
|
|
// Implemented in devtools/shared/heapsnapshot/HeapSnapshot.cpp
|
|
static void SaveHeapSnapshotGetId(GlobalObject& global,
|
|
const HeapSnapshotBoundaries& boundaries,
|
|
nsAString& snapshotId,
|
|
ErrorResult& rv);
|
|
|
|
// Implemented in devtools/shared/heapsnapshot/HeapSnapshot.cpp
|
|
static already_AddRefed<devtools::HeapSnapshot> ReadHeapSnapshot(GlobalObject& global,
|
|
const nsAString& filePath,
|
|
ErrorResult& rv);
|
|
|
|
static void NondeterministicGetWeakMapKeys(GlobalObject& aGlobal,
|
|
JS::Handle<JS::Value> aMap,
|
|
JS::MutableHandle<JS::Value> aRetval,
|
|
ErrorResult& aRv);
|
|
|
|
static void NondeterministicGetWeakSetKeys(GlobalObject& aGlobal,
|
|
JS::Handle<JS::Value> aSet,
|
|
JS::MutableHandle<JS::Value> aRetval,
|
|
ErrorResult& aRv);
|
|
|
|
static void Base64URLEncode(GlobalObject& aGlobal,
|
|
const ArrayBufferViewOrArrayBuffer& aSource,
|
|
const Base64URLEncodeOptions& aOptions,
|
|
nsACString& aResult,
|
|
ErrorResult& aRv);
|
|
|
|
static void Base64URLDecode(GlobalObject& aGlobal,
|
|
const nsACString& aString,
|
|
const Base64URLDecodeOptions& aOptions,
|
|
JS::MutableHandle<JSObject*> aRetval,
|
|
ErrorResult& aRv);
|
|
};
|
|
|
|
class ChromeUtils : public ThreadSafeChromeUtils
|
|
{
|
|
public:
|
|
static void
|
|
OriginAttributesToSuffix(GlobalObject& aGlobal,
|
|
const dom::OriginAttributesDictionary& aAttrs,
|
|
nsCString& aSuffix);
|
|
|
|
static bool
|
|
OriginAttributesMatchPattern(dom::GlobalObject& aGlobal,
|
|
const dom::OriginAttributesDictionary& aAttrs,
|
|
const dom::OriginAttributesPatternDictionary& aPattern);
|
|
|
|
static void
|
|
CreateOriginAttributesFromOrigin(dom::GlobalObject& aGlobal,
|
|
const nsAString& aOrigin,
|
|
dom::OriginAttributesDictionary& aAttrs,
|
|
ErrorResult& aRv);
|
|
|
|
static void
|
|
FillNonDefaultOriginAttributes(dom::GlobalObject& aGlobal,
|
|
const dom::OriginAttributesDictionary& aAttrs,
|
|
dom::OriginAttributesDictionary& aNewAttrs);
|
|
|
|
static bool
|
|
IsOriginAttributesEqual(dom::GlobalObject& aGlobal,
|
|
const dom::OriginAttributesDictionary& aA,
|
|
const dom::OriginAttributesDictionary& aB);
|
|
|
|
static bool
|
|
IsOriginAttributesEqual(const dom::OriginAttributesDictionary& aA,
|
|
const dom::OriginAttributesDictionary& aB);
|
|
|
|
static bool
|
|
IsOriginAttributesEqualIgnoringFPD(const dom::OriginAttributesDictionary& aA,
|
|
const dom::OriginAttributesDictionary& aB)
|
|
{
|
|
return aA.mAppId == aB.mAppId &&
|
|
aA.mInIsolatedMozBrowser == aB.mInIsolatedMozBrowser &&
|
|
aA.mUserContextId == aB.mUserContextId &&
|
|
aA.mPrivateBrowsingId == aB.mPrivateBrowsingId;
|
|
}
|
|
|
|
// Implemented in js/xpconnect/loader/ChromeScriptLoader.cpp
|
|
static already_AddRefed<Promise>
|
|
CompileScript(GlobalObject& aGlobal,
|
|
const nsAString& aUrl,
|
|
const dom::CompileScriptOptionsDictionary& aOptions,
|
|
ErrorResult& aRv);
|
|
|
|
static void WaiveXrays(GlobalObject& aGlobal,
|
|
JS::HandleValue aVal,
|
|
JS::MutableHandleValue aRetval,
|
|
ErrorResult& aRv);
|
|
|
|
static void UnwaiveXrays(GlobalObject& aGlobal,
|
|
JS::HandleValue aVal,
|
|
JS::MutableHandleValue aRetval,
|
|
ErrorResult& aRv);
|
|
|
|
static void GetClassName(GlobalObject& aGlobal,
|
|
JS::HandleObject aObj,
|
|
bool aUnwrap,
|
|
nsAString& aRetval);
|
|
|
|
static void ShallowClone(GlobalObject& aGlobal,
|
|
JS::HandleObject aObj,
|
|
JS::HandleObject aTarget,
|
|
JS::MutableHandleObject aRetval,
|
|
ErrorResult& aRv);
|
|
|
|
static void IdleDispatch(const GlobalObject& global,
|
|
IdleRequestCallback& callback,
|
|
const IdleRequestOptions& options,
|
|
ErrorResult& aRv);
|
|
};
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
#endif // mozilla_dom_ChromeUtils__
|