1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
/* -*- 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/. */
#ifndef mozilla_dom_TestFunctions_h
#define mozilla_dom_TestFunctions_h
#include "mozilla/ErrorResult.h"
#include "mozilla/dom/BindingDeclarations.h"
#include "mozilla/dom/BufferSourceBindingFwd.h"
#include "mozilla/dom/NonRefcountedDOMObject.h"
#include "mozilla/dom/TestFunctionsBinding.h"
#include "nsString.h"
#include "nsWrapperCache.h"
namespace mozilla::dom {
class MaybeSharedInt8ArrayOrMaybeSharedInt16Array;
class Promise;
class PromiseReturner;
class WrapperCachedNonISupportsTestInterface;
class TestFunctions : public NonRefcountedDOMObject {
public:
static UniquePtr<TestFunctions> Constructor(GlobalObject& aGlobal);
static void ThrowUncatchableException(GlobalObject& aGlobal,
ErrorResult& aRv);
static Promise* PassThroughPromise(GlobalObject& aGlobal, Promise& aPromise);
MOZ_CAN_RUN_SCRIPT
static already_AddRefed<Promise> PassThroughCallbackPromise(
GlobalObject& aGlobal, PromiseReturner& aCallback, ErrorResult& aRv);
void SetStringData(const nsAString& aString);
void GetStringDataAsAString(nsAString& aString);
void GetStringDataAsAString(uint32_t aLength, nsAString& aString);
void GetStringDataAsDOMString(const Optional<uint32_t>& aLength,
DOMString& aString);
void GetShortLiteralString(nsAString& aString);
void GetMediumLiteralString(nsAString& aString);
void GetLongLiteralString(nsAString& aString);
void GetStringbufferString(const nsAString& aInput, nsAString& aRetval);
StringType GetStringType(const nsAString& aString);
bool StringbufferMatchesStored(const nsAString& aString);
void TestThrowNsresult(ErrorResult& aError);
void TestThrowNsresultFromNative(ErrorResult& aError);
static already_AddRefed<Promise> ThrowToRejectPromise(GlobalObject& aGlobal,
ErrorResult& aError);
int32_t One() const;
int32_t Two() const;
void SetClampedNullableOctet(const Nullable<uint8_t>& aOctet);
Nullable<uint8_t> GetClampedNullableOctet() const;
void SetEnforcedNullableOctet(const Nullable<uint8_t>& aOctet);
Nullable<uint8_t> GetEnforcedNullableOctet() const;
void SetArrayBufferView(const ArrayBufferView& aBuffer);
void GetArrayBufferView(JSContext* aCx, JS::Handle<JSObject*> aObj,
JS::MutableHandle<JSObject*> aRetval,
ErrorResult& aError);
void SetAllowSharedArrayBufferView(const ArrayBufferView& aBuffer);
void GetAllowSharedArrayBufferView(JSContext* aCx, JS::Handle<JSObject*> aObj,
JS::MutableHandle<JSObject*> aRetval,
ErrorResult& aError);
void SetSequenceOfArrayBufferView(const Sequence<ArrayBufferView>& aBuffers);
void GetSequenceOfArrayBufferView(JSContext* aCx, JS::Handle<JSObject*> aObj,
nsTArray<JSObject*>& aRetval,
ErrorResult& aError);
void SetSequenceOfAllowSharedArrayBufferView(
const Sequence<ArrayBufferView>& aBuffers);
void GetSequenceOfAllowSharedArrayBufferView(JSContext* aCx,
JS::Handle<JSObject*> aObj,
nsTArray<JSObject*>& aRetval,
ErrorResult& aError);
void SetArrayBuffer(const ArrayBuffer& aBuffer);
void GetArrayBuffer(JSContext* aCx, JS::Handle<JSObject*> aObj,
JS::MutableHandle<JSObject*> aRetval,
ErrorResult& aError);
void SetAllowSharedArrayBuffer(const ArrayBuffer& aBuffer);
void GetAllowSharedArrayBuffer(JSContext* aCx, JS::Handle<JSObject*> aObj,
JS::MutableHandle<JSObject*> aRetval,
ErrorResult& aError);
void SetSequenceOfArrayBuffer(const Sequence<ArrayBuffer>& aBuffers);
void GetSequenceOfArrayBuffer(JSContext* aCx, JS::Handle<JSObject*> aObj,
nsTArray<JSObject*>& aRetval,
ErrorResult& aError);
void SetSequenceOfAllowSharedArrayBuffer(
const Sequence<ArrayBuffer>& aBuffers);
void GetSequenceOfAllowSharedArrayBuffer(JSContext* aCx,
JS::Handle<JSObject*> aObj,
nsTArray<JSObject*>& aRetval,
ErrorResult& aError);
void TestNotAllowShared(const ArrayBufferView& aBuffer);
void TestNotAllowShared(const ArrayBuffer& aBuffer);
void TestNotAllowShared(const nsAString& aBuffer);
void TestAllowShared(const ArrayBufferView& aBuffer);
void TestAllowShared(const ArrayBuffer& aBuffer);
void TestDictWithAllowShared(const DictWithAllowSharedBufferSource& aDict);
void TestUnionOfBufferSource(
const ArrayBufferOrArrayBufferViewOrString& aUnion);
void TestUnionOfAllowSharedBufferSource(
const AllowSharedBufferSource& aUnion);
void TestUnionWithAllowShared(
const MaybeSharedInt8ArrayOrMaybeSharedInt16Array& aUnion);
bool StaticAndNonStaticOverload() { return false; }
static bool StaticAndNonStaticOverload(GlobalObject& aGlobal,
const Optional<uint32_t>& aLength) {
return true;
}
static already_AddRefed<TestChromeOnlyInterface>
CreateTestChromeOnlyInterface(GlobalObject& aGlobal);
static bool ObjectFromAboutBlank(JSContext* aCx, JSObject* aObj);
WrapperCachedNonISupportsTestInterface* WrapperCachedNonISupportsObject();
bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto,
JS::MutableHandle<JSObject*> aWrapper);
private:
nsString mStringData;
RefPtr<WrapperCachedNonISupportsTestInterface>
mWrapperCachedNonISupportsTestInterface;
Nullable<uint8_t> mClampedNullableOctet;
Nullable<uint8_t> mEnforcedNullableOctet;
};
class TestChromeOnlyInterface : public nsWrapperCache {
public:
explicit TestChromeOnlyInterface(nsISupports* aParent) : mParent(aParent) {}
NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(TestChromeOnlyInterface)
NS_DECL_CYCLE_COLLECTION_NATIVE_WRAPPERCACHE_CLASS(TestChromeOnlyInterface)
nsISupports* GetParentObject() const { return mParent; }
JSObject* WrapObject(JSContext* aCx,
JS::Handle<JSObject*> aGivenProto) override;
private:
virtual ~TestChromeOnlyInterface() = default;
nsCOMPtr<nsISupports> mParent;
};
} // namespace mozilla::dom
#endif // mozilla_dom_TestFunctions_h
|