Remove, fix and clean up automated tests.
This commit is contained in:
parent
d00cbd1471
commit
1b4a31b5d9
|
@ -62,8 +62,6 @@ support-files = ../file_bug357450.js
|
||||||
[test_bug1139964.xul]
|
[test_bug1139964.xul]
|
||||||
[test_bug1209621.xul]
|
[test_bug1209621.xul]
|
||||||
[test_cpows.xul]
|
[test_cpows.xul]
|
||||||
[test_custom_element_content.xul]
|
|
||||||
[test_custom_element_ep.xul]
|
|
||||||
[test_domparsing.xul]
|
[test_domparsing.xul]
|
||||||
[test_fileconstructor.xul]
|
[test_fileconstructor.xul]
|
||||||
[test_fileconstructor_tempfile.xul]
|
[test_fileconstructor_tempfile.xul]
|
||||||
|
|
|
@ -630,7 +630,6 @@ skip-if = toolkit == 'android' #bug 904183
|
||||||
[test_document.all_unqualified.html]
|
[test_document.all_unqualified.html]
|
||||||
[test_document_constructor.html]
|
[test_document_constructor.html]
|
||||||
[test_document_importNode_document.html]
|
[test_document_importNode_document.html]
|
||||||
[test_custom_element.html]
|
|
||||||
[test_domcursor.html]
|
[test_domcursor.html]
|
||||||
[test_domparser_null_char.html]
|
[test_domparser_null_char.html]
|
||||||
[test_domparsing.html]
|
[test_domparsing.html]
|
||||||
|
@ -698,7 +697,6 @@ skip-if = (os != 'android') # meta-viewport tag support is mobile-only
|
||||||
skip-if = toolkit == 'android' #TIMED_OUT
|
skip-if = toolkit == 'android' #TIMED_OUT
|
||||||
[test_mozMatchesSelector.html]
|
[test_mozMatchesSelector.html]
|
||||||
[test_mutationobserver_anonymous.html]
|
[test_mutationobserver_anonymous.html]
|
||||||
[test_mutationobservers.html]
|
|
||||||
[test_named_frames.html]
|
[test_named_frames.html]
|
||||||
[test_navigator_hardwareConcurrency.html]
|
[test_navigator_hardwareConcurrency.html]
|
||||||
[test_navigator_language.html]
|
[test_navigator_language.html]
|
||||||
|
|
|
@ -4,8 +4,6 @@
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
# 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/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
TEST_DIRS += ['test']
|
|
||||||
|
|
||||||
XPIDL_SOURCES += [
|
XPIDL_SOURCES += [
|
||||||
'nsIScriptError.idl'
|
'nsIScriptError.idl'
|
||||||
]
|
]
|
||||||
|
@ -104,33 +102,6 @@ SOURCES += [
|
||||||
'WebIDLGlobalNameHash.cpp',
|
'WebIDLGlobalNameHash.cpp',
|
||||||
]
|
]
|
||||||
|
|
||||||
# Tests for maplike and setlike require bindings to be built, which means they
|
|
||||||
# must be included in libxul. This breaks the "no test classes are exported"
|
|
||||||
# rule stated in the test/ directory, but it's the only way this will work.
|
|
||||||
# Test classes are only built in debug mode, and all tests requiring use of
|
|
||||||
# them are only run in debug mode.
|
|
||||||
if CONFIG['MOZ_DEBUG']:
|
|
||||||
EXPORTS.mozilla.dom += [
|
|
||||||
"test/TestFunctions.h",
|
|
||||||
"test/TestInterfaceIterableDouble.h",
|
|
||||||
"test/TestInterfaceIterableDoubleUnion.h",
|
|
||||||
"test/TestInterfaceIterableSingle.h",
|
|
||||||
"test/TestInterfaceMaplike.h",
|
|
||||||
"test/TestInterfaceMaplikeObject.h",
|
|
||||||
"test/TestInterfaceSetlike.h",
|
|
||||||
"test/TestInterfaceSetlikeNode.h"
|
|
||||||
]
|
|
||||||
UNIFIED_SOURCES += [
|
|
||||||
"test/TestFunctions.cpp",
|
|
||||||
"test/TestInterfaceIterableDouble.cpp",
|
|
||||||
"test/TestInterfaceIterableDoubleUnion.cpp",
|
|
||||||
"test/TestInterfaceIterableSingle.cpp",
|
|
||||||
"test/TestInterfaceMaplike.cpp",
|
|
||||||
"test/TestInterfaceMaplikeObject.cpp",
|
|
||||||
"test/TestInterfaceSetlike.cpp",
|
|
||||||
"test/TestInterfaceSetlikeNode.cpp",
|
|
||||||
]
|
|
||||||
|
|
||||||
include('/ipc/chromium/chromium-config.mozbuild')
|
include('/ipc/chromium/chromium-config.mozbuild')
|
||||||
|
|
||||||
if CONFIG['MOZ_AUDIO_CHANNEL_MANAGER']:
|
if CONFIG['MOZ_AUDIO_CHANNEL_MANAGER']:
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
# 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/.
|
|
||||||
|
|
||||||
ifdef COMPILE_ENVIRONMENT
|
|
||||||
|
|
||||||
include ../webidlsrcs.mk
|
|
||||||
|
|
||||||
# $(test_sources) comes from webidlsrcs.mk.
|
|
||||||
# TODO Update this variable in backend.mk.
|
|
||||||
CPPSRCS += $(addprefix ../,$(test_sources))
|
|
||||||
|
|
||||||
# Include rules.mk before any of our targets so our first target is coming from
|
|
||||||
# rules.mk and running make with no target in this dir does the right thing.
|
|
||||||
include $(topsrcdir)/config/rules.mk
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
check::
|
|
||||||
PYTHONDONTWRITEBYTECODE=1 $(PYTHON) $(topsrcdir)/config/pythonpath.py \
|
|
||||||
$(PLY_INCLUDE) $(srcdir)/../parser/runtests.py
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,43 +0,0 @@
|
||||||
/* -*- 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 TestCImplementedInterface_h
|
|
||||||
#define TestCImplementedInterface_h
|
|
||||||
|
|
||||||
#include "../TestJSImplGenBinding.h"
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
class TestCImplementedInterface : public TestJSImplInterface
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
TestCImplementedInterface(JS::Handle<JSObject*> aJSImpl,
|
|
||||||
nsIGlobalObject* aParent)
|
|
||||||
: TestJSImplInterface(aJSImpl, aParent)
|
|
||||||
{}
|
|
||||||
};
|
|
||||||
|
|
||||||
class TestCImplementedInterface2 : public nsISupports,
|
|
||||||
public nsWrapperCache
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
explicit TestCImplementedInterface2(nsIGlobalObject* aParent)
|
|
||||||
{}
|
|
||||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
|
||||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestCImplementedInterface2)
|
|
||||||
|
|
||||||
// We need a GetParentObject to make binding codegen happy
|
|
||||||
nsISupports* GetParentObject();
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
||||||
|
|
||||||
#endif // TestCImplementedInterface_h
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,9 +0,0 @@
|
||||||
/* -*- Mode: IDL; 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/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
dictionary GrandparentDict {
|
|
||||||
double someNum;
|
|
||||||
};
|
|
|
@ -1,815 +0,0 @@
|
||||||
/* -*- Mode: IDL; 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/.
|
|
||||||
*/
|
|
||||||
[Constructor,
|
|
||||||
Constructor(DOMString str),
|
|
||||||
Constructor(unsigned long num, boolean? boolArg),
|
|
||||||
Constructor(TestInterface? iface),
|
|
||||||
Constructor(long arg1, IndirectlyImplementedInterface iface),
|
|
||||||
Constructor(Date arg1),
|
|
||||||
Constructor(ArrayBuffer arrayBuf),
|
|
||||||
Constructor(Uint8Array typedArr),
|
|
||||||
// Constructor(long arg1, long arg2, (TestInterface or OnlyForUseInConstructor) arg3),
|
|
||||||
NamedConstructor=Example,
|
|
||||||
NamedConstructor=Example(DOMString str),
|
|
||||||
NamedConstructor=Example2(DictForConstructor dict, any any1, object obj1,
|
|
||||||
object? obj2, sequence<Dict> seq, optional any any2,
|
|
||||||
optional object obj3, optional object? obj4),
|
|
||||||
NamedConstructor=Example2((long or MozMap<any>) arg1)
|
|
||||||
]
|
|
||||||
interface TestExampleInterface {
|
|
||||||
// Integer types
|
|
||||||
// XXXbz add tests for throwing versions of all the integer stuff
|
|
||||||
readonly attribute byte readonlyByte;
|
|
||||||
attribute byte writableByte;
|
|
||||||
void passByte(byte arg);
|
|
||||||
byte receiveByte();
|
|
||||||
void passOptionalByte(optional byte arg);
|
|
||||||
void passOptionalByteBeforeRequired(optional byte arg1, byte arg2);
|
|
||||||
void passOptionalByteWithDefault(optional byte arg = 0);
|
|
||||||
void passOptionalByteWithDefaultBeforeRequired(optional byte arg1 = 0, byte arg2);
|
|
||||||
void passNullableByte(byte? arg);
|
|
||||||
void passOptionalNullableByte(optional byte? arg);
|
|
||||||
void passVariadicByte(byte... arg);
|
|
||||||
[Cached, Pure]
|
|
||||||
readonly attribute byte cachedByte;
|
|
||||||
[StoreInSlot, Constant]
|
|
||||||
readonly attribute byte cachedConstantByte;
|
|
||||||
[Cached, Pure]
|
|
||||||
attribute byte cachedWritableByte;
|
|
||||||
[Affects=Nothing]
|
|
||||||
attribute byte sideEffectFreeByte;
|
|
||||||
[Affects=Nothing, DependsOn=DOMState]
|
|
||||||
attribute byte domDependentByte;
|
|
||||||
[Affects=Nothing, DependsOn=Nothing]
|
|
||||||
readonly attribute byte constantByte;
|
|
||||||
[DependsOn=DeviceState, Affects=Nothing]
|
|
||||||
readonly attribute byte deviceStateDependentByte;
|
|
||||||
[Affects=Nothing]
|
|
||||||
byte returnByteSideEffectFree();
|
|
||||||
[Affects=Nothing, DependsOn=DOMState]
|
|
||||||
byte returnDOMDependentByte();
|
|
||||||
[Affects=Nothing, DependsOn=Nothing]
|
|
||||||
byte returnConstantByte();
|
|
||||||
[DependsOn=DeviceState, Affects=Nothing]
|
|
||||||
byte returnDeviceStateDependentByte();
|
|
||||||
|
|
||||||
readonly attribute short readonlyShort;
|
|
||||||
attribute short writableShort;
|
|
||||||
void passShort(short arg);
|
|
||||||
short receiveShort();
|
|
||||||
void passOptionalShort(optional short arg);
|
|
||||||
void passOptionalShortWithDefault(optional short arg = 5);
|
|
||||||
|
|
||||||
readonly attribute long readonlyLong;
|
|
||||||
attribute long writableLong;
|
|
||||||
void passLong(long arg);
|
|
||||||
long receiveLong();
|
|
||||||
void passOptionalLong(optional long arg);
|
|
||||||
void passOptionalLongWithDefault(optional long arg = 7);
|
|
||||||
|
|
||||||
readonly attribute long long readonlyLongLong;
|
|
||||||
attribute long long writableLongLong;
|
|
||||||
void passLongLong(long long arg);
|
|
||||||
long long receiveLongLong();
|
|
||||||
void passOptionalLongLong(optional long long arg);
|
|
||||||
void passOptionalLongLongWithDefault(optional long long arg = -12);
|
|
||||||
|
|
||||||
readonly attribute octet readonlyOctet;
|
|
||||||
attribute octet writableOctet;
|
|
||||||
void passOctet(octet arg);
|
|
||||||
octet receiveOctet();
|
|
||||||
void passOptionalOctet(optional octet arg);
|
|
||||||
void passOptionalOctetWithDefault(optional octet arg = 19);
|
|
||||||
|
|
||||||
readonly attribute unsigned short readonlyUnsignedShort;
|
|
||||||
attribute unsigned short writableUnsignedShort;
|
|
||||||
void passUnsignedShort(unsigned short arg);
|
|
||||||
unsigned short receiveUnsignedShort();
|
|
||||||
void passOptionalUnsignedShort(optional unsigned short arg);
|
|
||||||
void passOptionalUnsignedShortWithDefault(optional unsigned short arg = 2);
|
|
||||||
|
|
||||||
readonly attribute unsigned long readonlyUnsignedLong;
|
|
||||||
attribute unsigned long writableUnsignedLong;
|
|
||||||
void passUnsignedLong(unsigned long arg);
|
|
||||||
unsigned long receiveUnsignedLong();
|
|
||||||
void passOptionalUnsignedLong(optional unsigned long arg);
|
|
||||||
void passOptionalUnsignedLongWithDefault(optional unsigned long arg = 6);
|
|
||||||
|
|
||||||
readonly attribute unsigned long long readonlyUnsignedLongLong;
|
|
||||||
attribute unsigned long long writableUnsignedLongLong;
|
|
||||||
void passUnsignedLongLong(unsigned long long arg);
|
|
||||||
unsigned long long receiveUnsignedLongLong();
|
|
||||||
void passOptionalUnsignedLongLong(optional unsigned long long arg);
|
|
||||||
void passOptionalUnsignedLongLongWithDefault(optional unsigned long long arg = 17);
|
|
||||||
|
|
||||||
attribute float writableFloat;
|
|
||||||
attribute unrestricted float writableUnrestrictedFloat;
|
|
||||||
attribute float? writableNullableFloat;
|
|
||||||
attribute unrestricted float? writableNullableUnrestrictedFloat;
|
|
||||||
attribute double writableDouble;
|
|
||||||
attribute unrestricted double writableUnrestrictedDouble;
|
|
||||||
attribute double? writableNullableDouble;
|
|
||||||
attribute unrestricted double? writableNullableUnrestrictedDouble;
|
|
||||||
void passFloat(float arg1, unrestricted float arg2,
|
|
||||||
float? arg3, unrestricted float? arg4,
|
|
||||||
double arg5, unrestricted double arg6,
|
|
||||||
double? arg7, unrestricted double? arg8,
|
|
||||||
sequence<float> arg9, sequence<unrestricted float> arg10,
|
|
||||||
sequence<float?> arg11, sequence<unrestricted float?> arg12,
|
|
||||||
sequence<double> arg13, sequence<unrestricted double> arg14,
|
|
||||||
sequence<double?> arg15, sequence<unrestricted double?> arg16);
|
|
||||||
[LenientFloat]
|
|
||||||
void passLenientFloat(float arg1, unrestricted float arg2,
|
|
||||||
float? arg3, unrestricted float? arg4,
|
|
||||||
double arg5, unrestricted double arg6,
|
|
||||||
double? arg7, unrestricted double? arg8,
|
|
||||||
sequence<float> arg9,
|
|
||||||
sequence<unrestricted float> arg10,
|
|
||||||
sequence<float?> arg11,
|
|
||||||
sequence<unrestricted float?> arg12,
|
|
||||||
sequence<double> arg13,
|
|
||||||
sequence<unrestricted double> arg14,
|
|
||||||
sequence<double?> arg15,
|
|
||||||
sequence<unrestricted double?> arg16);
|
|
||||||
[LenientFloat]
|
|
||||||
attribute float lenientFloatAttr;
|
|
||||||
[LenientFloat]
|
|
||||||
attribute double lenientDoubleAttr;
|
|
||||||
|
|
||||||
// Castable interface types
|
|
||||||
// XXXbz add tests for throwing versions of all the castable interface stuff
|
|
||||||
TestInterface receiveSelf();
|
|
||||||
TestInterface? receiveNullableSelf();
|
|
||||||
TestInterface receiveWeakSelf();
|
|
||||||
TestInterface? receiveWeakNullableSelf();
|
|
||||||
void passSelf(TestInterface arg);
|
|
||||||
void passNullableSelf(TestInterface? arg);
|
|
||||||
attribute TestInterface nonNullSelf;
|
|
||||||
attribute TestInterface? nullableSelf;
|
|
||||||
[Cached, Pure]
|
|
||||||
readonly attribute TestInterface cachedSelf;
|
|
||||||
// Optional arguments
|
|
||||||
void passOptionalSelf(optional TestInterface? arg);
|
|
||||||
void passOptionalNonNullSelf(optional TestInterface arg);
|
|
||||||
void passOptionalSelfWithDefault(optional TestInterface? arg = null);
|
|
||||||
|
|
||||||
// Non-wrapper-cache interface types
|
|
||||||
[NewObject]
|
|
||||||
TestNonWrapperCacheInterface receiveNonWrapperCacheInterface();
|
|
||||||
[NewObject]
|
|
||||||
TestNonWrapperCacheInterface? receiveNullableNonWrapperCacheInterface();
|
|
||||||
[NewObject]
|
|
||||||
sequence<TestNonWrapperCacheInterface> receiveNonWrapperCacheInterfaceSequence();
|
|
||||||
[NewObject]
|
|
||||||
sequence<TestNonWrapperCacheInterface?> receiveNullableNonWrapperCacheInterfaceSequence();
|
|
||||||
[NewObject]
|
|
||||||
sequence<TestNonWrapperCacheInterface>? receiveNonWrapperCacheInterfaceNullableSequence();
|
|
||||||
[NewObject]
|
|
||||||
sequence<TestNonWrapperCacheInterface?>? receiveNullableNonWrapperCacheInterfaceNullableSequence();
|
|
||||||
|
|
||||||
// Non-castable interface types
|
|
||||||
IndirectlyImplementedInterface receiveOther();
|
|
||||||
IndirectlyImplementedInterface? receiveNullableOther();
|
|
||||||
IndirectlyImplementedInterface receiveWeakOther();
|
|
||||||
IndirectlyImplementedInterface? receiveWeakNullableOther();
|
|
||||||
void passOther(IndirectlyImplementedInterface arg);
|
|
||||||
void passNullableOther(IndirectlyImplementedInterface? arg);
|
|
||||||
attribute IndirectlyImplementedInterface nonNullOther;
|
|
||||||
attribute IndirectlyImplementedInterface? nullableOther;
|
|
||||||
// Optional arguments
|
|
||||||
void passOptionalOther(optional IndirectlyImplementedInterface? arg);
|
|
||||||
void passOptionalNonNullOther(optional IndirectlyImplementedInterface arg);
|
|
||||||
void passOptionalOtherWithDefault(optional IndirectlyImplementedInterface? arg = null);
|
|
||||||
|
|
||||||
// External interface types
|
|
||||||
TestExternalInterface receiveExternal();
|
|
||||||
TestExternalInterface? receiveNullableExternal();
|
|
||||||
TestExternalInterface receiveWeakExternal();
|
|
||||||
TestExternalInterface? receiveWeakNullableExternal();
|
|
||||||
void passExternal(TestExternalInterface arg);
|
|
||||||
void passNullableExternal(TestExternalInterface? arg);
|
|
||||||
attribute TestExternalInterface nonNullExternal;
|
|
||||||
attribute TestExternalInterface? nullableExternal;
|
|
||||||
// Optional arguments
|
|
||||||
void passOptionalExternal(optional TestExternalInterface? arg);
|
|
||||||
void passOptionalNonNullExternal(optional TestExternalInterface arg);
|
|
||||||
void passOptionalExternalWithDefault(optional TestExternalInterface? arg = null);
|
|
||||||
|
|
||||||
// Callback interface types
|
|
||||||
TestCallbackInterface receiveCallbackInterface();
|
|
||||||
TestCallbackInterface? receiveNullableCallbackInterface();
|
|
||||||
TestCallbackInterface receiveWeakCallbackInterface();
|
|
||||||
TestCallbackInterface? receiveWeakNullableCallbackInterface();
|
|
||||||
void passCallbackInterface(TestCallbackInterface arg);
|
|
||||||
void passNullableCallbackInterface(TestCallbackInterface? arg);
|
|
||||||
attribute TestCallbackInterface nonNullCallbackInterface;
|
|
||||||
attribute TestCallbackInterface? nullableCallbackInterface;
|
|
||||||
// Optional arguments
|
|
||||||
void passOptionalCallbackInterface(optional TestCallbackInterface? arg);
|
|
||||||
void passOptionalNonNullCallbackInterface(optional TestCallbackInterface arg);
|
|
||||||
void passOptionalCallbackInterfaceWithDefault(optional TestCallbackInterface? arg = null);
|
|
||||||
|
|
||||||
// Miscellaneous interface tests
|
|
||||||
IndirectlyImplementedInterface receiveConsequentialInterface();
|
|
||||||
void passConsequentialInterface(IndirectlyImplementedInterface arg);
|
|
||||||
|
|
||||||
// Sequence types
|
|
||||||
[Cached, Pure]
|
|
||||||
readonly attribute sequence<long> readonlySequence;
|
|
||||||
[Cached, Pure]
|
|
||||||
readonly attribute sequence<Dict> readonlySequenceOfDictionaries;
|
|
||||||
[Cached, Pure]
|
|
||||||
readonly attribute sequence<Dict>? readonlyNullableSequenceOfDictionaries;
|
|
||||||
[Cached, Pure, Frozen]
|
|
||||||
readonly attribute sequence<long> readonlyFrozenSequence;
|
|
||||||
[Cached, Pure, Frozen]
|
|
||||||
readonly attribute sequence<long>? readonlyFrozenNullableSequence;
|
|
||||||
sequence<long> receiveSequence();
|
|
||||||
sequence<long>? receiveNullableSequence();
|
|
||||||
sequence<long?> receiveSequenceOfNullableInts();
|
|
||||||
sequence<long?>? receiveNullableSequenceOfNullableInts();
|
|
||||||
void passSequence(sequence<long> arg);
|
|
||||||
void passNullableSequence(sequence<long>? arg);
|
|
||||||
void passSequenceOfNullableInts(sequence<long?> arg);
|
|
||||||
void passOptionalSequenceOfNullableInts(optional sequence<long?> arg);
|
|
||||||
void passOptionalNullableSequenceOfNullableInts(optional sequence<long?>? arg);
|
|
||||||
sequence<TestInterface> receiveCastableObjectSequence();
|
|
||||||
sequence<TestCallbackInterface> receiveCallbackObjectSequence();
|
|
||||||
sequence<TestInterface?> receiveNullableCastableObjectSequence();
|
|
||||||
sequence<TestCallbackInterface?> receiveNullableCallbackObjectSequence();
|
|
||||||
sequence<TestInterface>? receiveCastableObjectNullableSequence();
|
|
||||||
sequence<TestInterface?>? receiveNullableCastableObjectNullableSequence();
|
|
||||||
sequence<TestInterface> receiveWeakCastableObjectSequence();
|
|
||||||
sequence<TestInterface?> receiveWeakNullableCastableObjectSequence();
|
|
||||||
sequence<TestInterface>? receiveWeakCastableObjectNullableSequence();
|
|
||||||
sequence<TestInterface?>? receiveWeakNullableCastableObjectNullableSequence();
|
|
||||||
void passCastableObjectSequence(sequence<TestInterface> arg);
|
|
||||||
void passNullableCastableObjectSequence(sequence<TestInterface?> arg);
|
|
||||||
void passCastableObjectNullableSequence(sequence<TestInterface>? arg);
|
|
||||||
void passNullableCastableObjectNullableSequence(sequence<TestInterface?>? arg);
|
|
||||||
void passOptionalSequence(optional sequence<long> arg);
|
|
||||||
void passOptionalSequenceWithDefaultValue(optional sequence<long> arg = []);
|
|
||||||
void passOptionalNullableSequence(optional sequence<long>? arg);
|
|
||||||
void passOptionalNullableSequenceWithDefaultValue(optional sequence<long>? arg = null);
|
|
||||||
void passOptionalNullableSequenceWithDefaultValue2(optional sequence<long>? arg = []);
|
|
||||||
void passOptionalObjectSequence(optional sequence<TestInterface> arg);
|
|
||||||
void passExternalInterfaceSequence(sequence<TestExternalInterface> arg);
|
|
||||||
void passNullableExternalInterfaceSequence(sequence<TestExternalInterface?> arg);
|
|
||||||
|
|
||||||
sequence<DOMString> receiveStringSequence();
|
|
||||||
void passStringSequence(sequence<DOMString> arg);
|
|
||||||
|
|
||||||
sequence<ByteString> receiveByteStringSequence();
|
|
||||||
void passByteStringSequence(sequence<ByteString> arg);
|
|
||||||
|
|
||||||
sequence<any> receiveAnySequence();
|
|
||||||
sequence<any>? receiveNullableAnySequence();
|
|
||||||
//XXXbz No support for sequence of sequence return values yet.
|
|
||||||
//sequence<sequence<any>> receiveAnySequenceSequence();
|
|
||||||
|
|
||||||
sequence<object> receiveObjectSequence();
|
|
||||||
sequence<object?> receiveNullableObjectSequence();
|
|
||||||
|
|
||||||
void passSequenceOfSequences(sequence<sequence<long>> arg);
|
|
||||||
void passSequenceOfSequencesOfSequences(sequence<sequence<sequence<long>>> arg);
|
|
||||||
//XXXbz No support for sequence of sequence return values yet.
|
|
||||||
//sequence<sequence<long>> receiveSequenceOfSequences();
|
|
||||||
|
|
||||||
// MozMap types
|
|
||||||
void passMozMap(MozMap<long> arg);
|
|
||||||
void passNullableMozMap(MozMap<long>? arg);
|
|
||||||
void passMozMapOfNullableInts(MozMap<long?> arg);
|
|
||||||
void passOptionalMozMapOfNullableInts(optional MozMap<long?> arg);
|
|
||||||
void passOptionalNullableMozMapOfNullableInts(optional MozMap<long?>? arg);
|
|
||||||
void passCastableObjectMozMap(MozMap<TestInterface> arg);
|
|
||||||
void passNullableCastableObjectMozMap(MozMap<TestInterface?> arg);
|
|
||||||
void passCastableObjectNullableMozMap(MozMap<TestInterface>? arg);
|
|
||||||
void passNullableCastableObjectNullableMozMap(MozMap<TestInterface?>? arg);
|
|
||||||
void passOptionalMozMap(optional MozMap<long> arg);
|
|
||||||
void passOptionalNullableMozMap(optional MozMap<long>? arg);
|
|
||||||
void passOptionalNullableMozMapWithDefaultValue(optional MozMap<long>? arg = null);
|
|
||||||
void passOptionalObjectMozMap(optional MozMap<TestInterface> arg);
|
|
||||||
void passExternalInterfaceMozMap(MozMap<TestExternalInterface> arg);
|
|
||||||
void passNullableExternalInterfaceMozMap(MozMap<TestExternalInterface?> arg);
|
|
||||||
void passStringMozMap(MozMap<DOMString> arg);
|
|
||||||
void passByteStringMozMap(MozMap<ByteString> arg);
|
|
||||||
void passMozMapOfMozMaps(MozMap<MozMap<long>> arg);
|
|
||||||
MozMap<long> receiveMozMap();
|
|
||||||
MozMap<long>? receiveNullableMozMap();
|
|
||||||
MozMap<long?> receiveMozMapOfNullableInts();
|
|
||||||
MozMap<long?>? receiveNullableMozMapOfNullableInts();
|
|
||||||
//XXXbz No support for MozMap of MozMaps return values yet.
|
|
||||||
//MozMap<MozMap<long>> receiveMozMapOfMozMaps();
|
|
||||||
MozMap<any> receiveAnyMozMap();
|
|
||||||
|
|
||||||
// Typed array types
|
|
||||||
void passArrayBuffer(ArrayBuffer arg);
|
|
||||||
void passNullableArrayBuffer(ArrayBuffer? arg);
|
|
||||||
void passOptionalArrayBuffer(optional ArrayBuffer arg);
|
|
||||||
void passOptionalNullableArrayBuffer(optional ArrayBuffer? arg);
|
|
||||||
void passOptionalNullableArrayBufferWithDefaultValue(optional ArrayBuffer? arg= null);
|
|
||||||
void passArrayBufferView(ArrayBufferView arg);
|
|
||||||
void passInt8Array(Int8Array arg);
|
|
||||||
void passInt16Array(Int16Array arg);
|
|
||||||
void passInt32Array(Int32Array arg);
|
|
||||||
void passUint8Array(Uint8Array arg);
|
|
||||||
void passUint16Array(Uint16Array arg);
|
|
||||||
void passUint32Array(Uint32Array arg);
|
|
||||||
void passUint8ClampedArray(Uint8ClampedArray arg);
|
|
||||||
void passFloat32Array(Float32Array arg);
|
|
||||||
void passFloat64Array(Float64Array arg);
|
|
||||||
void passSequenceOfArrayBuffers(sequence<ArrayBuffer> arg);
|
|
||||||
void passSequenceOfNullableArrayBuffers(sequence<ArrayBuffer?> arg);
|
|
||||||
void passMozMapOfArrayBuffers(MozMap<ArrayBuffer> arg);
|
|
||||||
void passMozMapOfNullableArrayBuffers(MozMap<ArrayBuffer?> arg);
|
|
||||||
void passVariadicTypedArray(Float32Array... arg);
|
|
||||||
void passVariadicNullableTypedArray(Float32Array?... arg);
|
|
||||||
Uint8Array receiveUint8Array();
|
|
||||||
attribute Uint8Array uint8ArrayAttr;
|
|
||||||
|
|
||||||
// DOMString types
|
|
||||||
void passString(DOMString arg);
|
|
||||||
void passNullableString(DOMString? arg);
|
|
||||||
void passOptionalString(optional DOMString arg);
|
|
||||||
void passOptionalStringWithDefaultValue(optional DOMString arg = "abc");
|
|
||||||
void passOptionalNullableString(optional DOMString? arg);
|
|
||||||
void passOptionalNullableStringWithDefaultValue(optional DOMString? arg = null);
|
|
||||||
void passVariadicString(DOMString... arg);
|
|
||||||
|
|
||||||
// ByteString types
|
|
||||||
void passByteString(ByteString arg);
|
|
||||||
void passNullableByteString(ByteString? arg);
|
|
||||||
void passOptionalByteString(optional ByteString arg);
|
|
||||||
void passOptionalByteStringWithDefaultValue(optional ByteString arg = "abc");
|
|
||||||
void passOptionalNullableByteString(optional ByteString? arg);
|
|
||||||
void passOptionalNullableByteStringWithDefaultValue(optional ByteString? arg = null);
|
|
||||||
void passVariadicByteString(ByteString... arg);
|
|
||||||
void passUnionByteString((ByteString or long) arg);
|
|
||||||
void passOptionalUnionByteString(optional (ByteString or long) arg);
|
|
||||||
void passOptionalUnionByteStringWithDefaultValue(optional (ByteString or long) arg = "abc");
|
|
||||||
|
|
||||||
// USVString types
|
|
||||||
void passSVS(USVString arg);
|
|
||||||
void passNullableSVS(USVString? arg);
|
|
||||||
void passOptionalSVS(optional USVString arg);
|
|
||||||
void passOptionalSVSWithDefaultValue(optional USVString arg = "abc");
|
|
||||||
void passOptionalNullableSVS(optional USVString? arg);
|
|
||||||
void passOptionalNullableSVSWithDefaultValue(optional USVString? arg = null);
|
|
||||||
void passVariadicSVS(USVString... arg);
|
|
||||||
USVString receiveSVS();
|
|
||||||
|
|
||||||
// Enumerated types
|
|
||||||
void passEnum(TestEnum arg);
|
|
||||||
void passNullableEnum(TestEnum? arg);
|
|
||||||
void passOptionalEnum(optional TestEnum arg);
|
|
||||||
void passEnumWithDefault(optional TestEnum arg = "a");
|
|
||||||
void passOptionalNullableEnum(optional TestEnum? arg);
|
|
||||||
void passOptionalNullableEnumWithDefaultValue(optional TestEnum? arg = null);
|
|
||||||
void passOptionalNullableEnumWithDefaultValue2(optional TestEnum? arg = "a");
|
|
||||||
TestEnum receiveEnum();
|
|
||||||
TestEnum? receiveNullableEnum();
|
|
||||||
attribute TestEnum enumAttribute;
|
|
||||||
readonly attribute TestEnum readonlyEnumAttribute;
|
|
||||||
|
|
||||||
// Callback types
|
|
||||||
void passCallback(TestCallback arg);
|
|
||||||
void passNullableCallback(TestCallback? arg);
|
|
||||||
void passOptionalCallback(optional TestCallback arg);
|
|
||||||
void passOptionalNullableCallback(optional TestCallback? arg);
|
|
||||||
void passOptionalNullableCallbackWithDefaultValue(optional TestCallback? arg = null);
|
|
||||||
TestCallback receiveCallback();
|
|
||||||
TestCallback? receiveNullableCallback();
|
|
||||||
void passNullableTreatAsNullCallback(TestTreatAsNullCallback? arg);
|
|
||||||
void passOptionalNullableTreatAsNullCallback(optional TestTreatAsNullCallback? arg);
|
|
||||||
void passOptionalNullableTreatAsNullCallbackWithDefaultValue(optional TestTreatAsNullCallback? arg = null);
|
|
||||||
|
|
||||||
// Any types
|
|
||||||
void passAny(any arg);
|
|
||||||
void passVariadicAny(any... arg);
|
|
||||||
void passOptionalAny(optional any arg);
|
|
||||||
void passAnyDefaultNull(optional any arg = null);
|
|
||||||
void passSequenceOfAny(sequence<any> arg);
|
|
||||||
void passNullableSequenceOfAny(sequence<any>? arg);
|
|
||||||
void passOptionalSequenceOfAny(optional sequence<any> arg);
|
|
||||||
void passOptionalNullableSequenceOfAny(optional sequence<any>? arg);
|
|
||||||
void passOptionalSequenceOfAnyWithDefaultValue(optional sequence<any>? arg = null);
|
|
||||||
void passSequenceOfSequenceOfAny(sequence<sequence<any>> arg);
|
|
||||||
void passSequenceOfNullableSequenceOfAny(sequence<sequence<any>?> arg);
|
|
||||||
void passNullableSequenceOfNullableSequenceOfAny(sequence<sequence<any>?>? arg);
|
|
||||||
void passOptionalNullableSequenceOfNullableSequenceOfAny(optional sequence<sequence<any>?>? arg);
|
|
||||||
void passMozMapOfAny(MozMap<any> arg);
|
|
||||||
void passNullableMozMapOfAny(MozMap<any>? arg);
|
|
||||||
void passOptionalMozMapOfAny(optional MozMap<any> arg);
|
|
||||||
void passOptionalNullableMozMapOfAny(optional MozMap<any>? arg);
|
|
||||||
void passOptionalMozMapOfAnyWithDefaultValue(optional MozMap<any>? arg = null);
|
|
||||||
void passMozMapOfMozMapOfAny(MozMap<MozMap<any>> arg);
|
|
||||||
void passMozMapOfNullableMozMapOfAny(MozMap<MozMap<any>?> arg);
|
|
||||||
void passNullableMozMapOfNullableMozMapOfAny(MozMap<MozMap<any>?>? arg);
|
|
||||||
void passOptionalNullableMozMapOfNullableMozMapOfAny(optional MozMap<MozMap<any>?>? arg);
|
|
||||||
void passOptionalNullableMozMapOfNullableSequenceOfAny(optional MozMap<sequence<any>?>? arg);
|
|
||||||
void passOptionalNullableSequenceOfNullableMozMapOfAny(optional sequence<MozMap<any>?>? arg);
|
|
||||||
any receiveAny();
|
|
||||||
|
|
||||||
// object types
|
|
||||||
void passObject(object arg);
|
|
||||||
void passVariadicObject(object... arg);
|
|
||||||
void passNullableObject(object? arg);
|
|
||||||
void passVariadicNullableObject(object... arg);
|
|
||||||
void passOptionalObject(optional object arg);
|
|
||||||
void passOptionalNullableObject(optional object? arg);
|
|
||||||
void passOptionalNullableObjectWithDefaultValue(optional object? arg = null);
|
|
||||||
void passSequenceOfObject(sequence<object> arg);
|
|
||||||
void passSequenceOfNullableObject(sequence<object?> arg);
|
|
||||||
void passNullableSequenceOfObject(sequence<object>? arg);
|
|
||||||
void passOptionalNullableSequenceOfNullableSequenceOfObject(optional sequence<sequence<object>?>? arg);
|
|
||||||
void passOptionalNullableSequenceOfNullableSequenceOfNullableObject(optional sequence<sequence<object?>?>? arg);
|
|
||||||
void passMozMapOfObject(MozMap<object> arg);
|
|
||||||
object receiveObject();
|
|
||||||
object? receiveNullableObject();
|
|
||||||
|
|
||||||
// Union types
|
|
||||||
void passUnion((object or long) arg);
|
|
||||||
// Some union tests are debug-only to avoid creating all those
|
|
||||||
// unused union types in opt builds.
|
|
||||||
#ifdef DEBUG
|
|
||||||
void passUnion2((long or boolean) arg);
|
|
||||||
void passUnion3((object or long or boolean) arg);
|
|
||||||
void passUnion4((Node or long or boolean) arg);
|
|
||||||
void passUnion5((object or boolean) arg);
|
|
||||||
void passUnion6((object or DOMString) arg);
|
|
||||||
void passUnion7((object or DOMString or long) arg);
|
|
||||||
void passUnion8((object or DOMString or boolean) arg);
|
|
||||||
void passUnion9((object or DOMString or long or boolean) arg);
|
|
||||||
void passUnion10(optional (EventInit or long) arg);
|
|
||||||
void passUnion11(optional (CustomEventInit or long) arg);
|
|
||||||
void passUnion12(optional (EventInit or long) arg = 5);
|
|
||||||
void passUnion13(optional (object or long?) arg = null);
|
|
||||||
void passUnion14(optional (object or long?) arg = 5);
|
|
||||||
void passUnion15((sequence<long> or long) arg);
|
|
||||||
void passUnion16(optional (sequence<long> or long) arg);
|
|
||||||
void passUnion17(optional (sequence<long>? or long) arg = 5);
|
|
||||||
void passUnion18((sequence<object> or long) arg);
|
|
||||||
void passUnion19(optional (sequence<object> or long) arg);
|
|
||||||
void passUnion20(optional (sequence<object> or long) arg = []);
|
|
||||||
void passUnion21((MozMap<long> or long) arg);
|
|
||||||
void passUnion22((MozMap<object> or long) arg);
|
|
||||||
void passUnion23((sequence<ImageData> or long) arg);
|
|
||||||
void passUnion24((sequence<ImageData?> or long) arg);
|
|
||||||
void passUnion25((sequence<sequence<ImageData>> or long) arg);
|
|
||||||
void passUnion26((sequence<sequence<ImageData?>> or long) arg);
|
|
||||||
void passUnion27(optional (sequence<DOMString> or EventInit) arg);
|
|
||||||
void passUnion28(optional (EventInit or sequence<DOMString>) arg);
|
|
||||||
void passUnionWithCallback((EventHandler or long) arg);
|
|
||||||
void passUnionWithByteString((ByteString or long) arg);
|
|
||||||
void passUnionWithMozMap((MozMap<DOMString> or DOMString) arg);
|
|
||||||
void passUnionWithMozMapAndSequence((MozMap<DOMString> or sequence<DOMString>) arg);
|
|
||||||
void passUnionWithSequenceAndMozMap((sequence<DOMString> or MozMap<DOMString>) arg);
|
|
||||||
void passUnionWithSVS((USVString or long) arg);
|
|
||||||
#endif
|
|
||||||
void passUnionWithNullable((object? or long) arg);
|
|
||||||
void passNullableUnion((object or long)? arg);
|
|
||||||
void passOptionalUnion(optional (object or long) arg);
|
|
||||||
void passOptionalNullableUnion(optional (object or long)? arg);
|
|
||||||
void passOptionalNullableUnionWithDefaultValue(optional (object or long)? arg = null);
|
|
||||||
//void passUnionWithInterfaces((TestInterface or TestExternalInterface) arg);
|
|
||||||
//void passUnionWithInterfacesAndNullable((TestInterface? or TestExternalInterface) arg);
|
|
||||||
//void passUnionWithSequence((sequence<object> or long) arg);
|
|
||||||
void passUnionWithArrayBuffer((ArrayBuffer or long) arg);
|
|
||||||
void passUnionWithString((DOMString or object) arg);
|
|
||||||
// Using an enum in a union. Note that we use some enum not declared in our
|
|
||||||
// binding file, because UnionTypes.h will need to include the binding header
|
|
||||||
// for this enum. Pick an enum from an interface that won't drag in too much
|
|
||||||
// stuff.
|
|
||||||
void passUnionWithEnum((SupportedType or object) arg);
|
|
||||||
|
|
||||||
// Trying to use a callback in a union won't include the test
|
|
||||||
// headers, unfortunately, so won't compile.
|
|
||||||
// void passUnionWithCallback((TestCallback or long) arg);
|
|
||||||
void passUnionWithObject((object or long) arg);
|
|
||||||
//void passUnionWithDict((Dict or long) arg);
|
|
||||||
|
|
||||||
void passUnionWithDefaultValue1(optional (double or DOMString) arg = "");
|
|
||||||
void passUnionWithDefaultValue2(optional (double or DOMString) arg = 1);
|
|
||||||
void passUnionWithDefaultValue3(optional (double or DOMString) arg = 1.5);
|
|
||||||
void passUnionWithDefaultValue4(optional (float or DOMString) arg = "");
|
|
||||||
void passUnionWithDefaultValue5(optional (float or DOMString) arg = 1);
|
|
||||||
void passUnionWithDefaultValue6(optional (float or DOMString) arg = 1.5);
|
|
||||||
void passUnionWithDefaultValue7(optional (unrestricted double or DOMString) arg = "");
|
|
||||||
void passUnionWithDefaultValue8(optional (unrestricted double or DOMString) arg = 1);
|
|
||||||
void passUnionWithDefaultValue9(optional (unrestricted double or DOMString) arg = 1.5);
|
|
||||||
void passUnionWithDefaultValue10(optional (unrestricted double or DOMString) arg = Infinity);
|
|
||||||
void passUnionWithDefaultValue11(optional (unrestricted float or DOMString) arg = "");
|
|
||||||
void passUnionWithDefaultValue12(optional (unrestricted float or DOMString) arg = 1);
|
|
||||||
void passUnionWithDefaultValue13(optional (unrestricted float or DOMString) arg = Infinity);
|
|
||||||
void passUnionWithDefaultValue14(optional (double or ByteString) arg = "");
|
|
||||||
void passUnionWithDefaultValue15(optional (double or ByteString) arg = 1);
|
|
||||||
void passUnionWithDefaultValue16(optional (double or ByteString) arg = 1.5);
|
|
||||||
void passUnionWithDefaultValue17(optional (double or SupportedType) arg = "text/html");
|
|
||||||
void passUnionWithDefaultValue18(optional (double or SupportedType) arg = 1);
|
|
||||||
void passUnionWithDefaultValue19(optional (double or SupportedType) arg = 1.5);
|
|
||||||
|
|
||||||
void passNullableUnionWithDefaultValue1(optional (double or DOMString)? arg = "");
|
|
||||||
void passNullableUnionWithDefaultValue2(optional (double or DOMString)? arg = 1);
|
|
||||||
void passNullableUnionWithDefaultValue3(optional (double or DOMString)? arg = null);
|
|
||||||
void passNullableUnionWithDefaultValue4(optional (float or DOMString)? arg = "");
|
|
||||||
void passNullableUnionWithDefaultValue5(optional (float or DOMString)? arg = 1);
|
|
||||||
void passNullableUnionWithDefaultValue6(optional (float or DOMString)? arg = null);
|
|
||||||
void passNullableUnionWithDefaultValue7(optional (unrestricted double or DOMString)? arg = "");
|
|
||||||
void passNullableUnionWithDefaultValue8(optional (unrestricted double or DOMString)? arg = 1);
|
|
||||||
void passNullableUnionWithDefaultValue9(optional (unrestricted double or DOMString)? arg = null);
|
|
||||||
void passNullableUnionWithDefaultValue10(optional (unrestricted float or DOMString)? arg = "");
|
|
||||||
void passNullableUnionWithDefaultValue11(optional (unrestricted float or DOMString)? arg = 1);
|
|
||||||
void passNullableUnionWithDefaultValue12(optional (unrestricted float or DOMString)? arg = null);
|
|
||||||
void passNullableUnionWithDefaultValue13(optional (double or ByteString)? arg = "");
|
|
||||||
void passNullableUnionWithDefaultValue14(optional (double or ByteString)? arg = 1);
|
|
||||||
void passNullableUnionWithDefaultValue15(optional (double or ByteString)? arg = 1.5);
|
|
||||||
void passNullableUnionWithDefaultValue16(optional (double or ByteString)? arg = null);
|
|
||||||
void passNullableUnionWithDefaultValue17(optional (double or SupportedType)? arg = "text/html");
|
|
||||||
void passNullableUnionWithDefaultValue18(optional (double or SupportedType)? arg = 1);
|
|
||||||
void passNullableUnionWithDefaultValue19(optional (double or SupportedType)? arg = 1.5);
|
|
||||||
void passNullableUnionWithDefaultValue20(optional (double or SupportedType)? arg = null);
|
|
||||||
|
|
||||||
void passSequenceOfUnions(sequence<(CanvasPattern or CanvasGradient)> arg);
|
|
||||||
void passSequenceOfUnions2(sequence<(object or long)> arg);
|
|
||||||
void passVariadicUnion((CanvasPattern or CanvasGradient)... arg);
|
|
||||||
|
|
||||||
void passSequenceOfNullableUnions(sequence<(CanvasPattern or CanvasGradient)?> arg);
|
|
||||||
void passVariadicNullableUnion((CanvasPattern or CanvasGradient)?... arg);
|
|
||||||
void passMozMapOfUnions(MozMap<(CanvasPattern or CanvasGradient)> arg);
|
|
||||||
// XXXbz no move constructor on some unions
|
|
||||||
// void passMozMapOfUnions2(MozMap<(object or long)> arg);
|
|
||||||
|
|
||||||
(CanvasPattern or CanvasGradient) receiveUnion();
|
|
||||||
(object or long) receiveUnion2();
|
|
||||||
(CanvasPattern? or CanvasGradient) receiveUnionContainingNull();
|
|
||||||
(CanvasPattern or CanvasGradient)? receiveNullableUnion();
|
|
||||||
(object or long)? receiveNullableUnion2();
|
|
||||||
|
|
||||||
attribute (CanvasPattern or CanvasGradient) writableUnion;
|
|
||||||
attribute (CanvasPattern? or CanvasGradient) writableUnionContainingNull;
|
|
||||||
attribute (CanvasPattern or CanvasGradient)? writableNullableUnion;
|
|
||||||
|
|
||||||
// Date types
|
|
||||||
void passDate(Date arg);
|
|
||||||
void passNullableDate(Date? arg);
|
|
||||||
void passOptionalDate(optional Date arg);
|
|
||||||
void passOptionalNullableDate(optional Date? arg);
|
|
||||||
void passOptionalNullableDateWithDefaultValue(optional Date? arg = null);
|
|
||||||
void passDateSequence(sequence<Date> arg);
|
|
||||||
void passNullableDateSequence(sequence<Date?> arg);
|
|
||||||
void passDateMozMap(MozMap<Date> arg);
|
|
||||||
Date receiveDate();
|
|
||||||
Date? receiveNullableDate();
|
|
||||||
|
|
||||||
// Promise types
|
|
||||||
void passPromise(Promise<any> arg);
|
|
||||||
void passNullablePromise(Promise<any>? arg);
|
|
||||||
void passOptionalPromise(optional Promise<any> arg);
|
|
||||||
void passOptionalNullablePromise(optional Promise<any>? arg);
|
|
||||||
void passOptionalNullablePromiseWithDefaultValue(optional Promise<any>? arg = null);
|
|
||||||
void passPromiseSequence(sequence<Promise<any>> arg);
|
|
||||||
void passNullablePromiseSequence(sequence<Promise<any>?> arg);
|
|
||||||
Promise<any> receivePromise();
|
|
||||||
Promise<any> receiveAddrefedPromise();
|
|
||||||
|
|
||||||
// binaryNames tests
|
|
||||||
void methodRenamedFrom();
|
|
||||||
[BinaryName="otherMethodRenamedTo"]
|
|
||||||
void otherMethodRenamedFrom();
|
|
||||||
void methodRenamedFrom(byte argument);
|
|
||||||
readonly attribute byte attributeGetterRenamedFrom;
|
|
||||||
attribute byte attributeRenamedFrom;
|
|
||||||
[BinaryName="otherAttributeRenamedTo"]
|
|
||||||
attribute byte otherAttributeRenamedFrom;
|
|
||||||
|
|
||||||
void passDictionary(optional Dict x);
|
|
||||||
void passDictionary2(Dict x);
|
|
||||||
[Cached, Pure]
|
|
||||||
readonly attribute Dict readonlyDictionary;
|
|
||||||
[Cached, Pure]
|
|
||||||
readonly attribute Dict? readonlyNullableDictionary;
|
|
||||||
[Cached, Pure]
|
|
||||||
attribute Dict writableDictionary;
|
|
||||||
[Cached, Pure, Frozen]
|
|
||||||
readonly attribute Dict readonlyFrozenDictionary;
|
|
||||||
[Cached, Pure, Frozen]
|
|
||||||
readonly attribute Dict? readonlyFrozenNullableDictionary;
|
|
||||||
[Cached, Pure, Frozen]
|
|
||||||
attribute Dict writableFrozenDictionary;
|
|
||||||
Dict receiveDictionary();
|
|
||||||
Dict? receiveNullableDictionary();
|
|
||||||
void passOtherDictionary(optional GrandparentDict x);
|
|
||||||
void passSequenceOfDictionaries(sequence<Dict> x);
|
|
||||||
void passMozMapOfDictionaries(MozMap<GrandparentDict> x);
|
|
||||||
// No support for nullable dictionaries inside a sequence (nor should there be)
|
|
||||||
// void passSequenceOfNullableDictionaries(sequence<Dict?> x);
|
|
||||||
void passDictionaryOrLong(optional Dict x);
|
|
||||||
void passDictionaryOrLong(long x);
|
|
||||||
|
|
||||||
void passDictContainingDict(optional DictContainingDict arg);
|
|
||||||
void passDictContainingSequence(optional DictContainingSequence arg);
|
|
||||||
DictContainingSequence receiveDictContainingSequence();
|
|
||||||
void passVariadicDictionary(Dict... arg);
|
|
||||||
|
|
||||||
// EnforceRange/Clamp tests
|
|
||||||
void dontEnforceRangeOrClamp(byte arg);
|
|
||||||
void doEnforceRange([EnforceRange] byte arg);
|
|
||||||
void doClamp([Clamp] byte arg);
|
|
||||||
[EnforceRange] attribute byte enforcedByte;
|
|
||||||
[Clamp] attribute byte clampedByte;
|
|
||||||
|
|
||||||
// Typedefs
|
|
||||||
const myLong myLongConstant = 5;
|
|
||||||
void exerciseTypedefInterfaces1(AnotherNameForTestInterface arg);
|
|
||||||
AnotherNameForTestInterface exerciseTypedefInterfaces2(NullableTestInterface arg);
|
|
||||||
void exerciseTypedefInterfaces3(YetAnotherNameForTestInterface arg);
|
|
||||||
|
|
||||||
// Deprecated methods and attributes
|
|
||||||
[Deprecated="GetAttributeNode"]
|
|
||||||
attribute boolean deprecatedAttribute;
|
|
||||||
[Deprecated="GetAttributeNode"]
|
|
||||||
void deprecatedMethod(boolean arg);
|
|
||||||
[Deprecated="GetAttributeNode"]
|
|
||||||
void deprecatedMethodWithContext(any arg);
|
|
||||||
|
|
||||||
// Static methods and attributes
|
|
||||||
static attribute boolean staticAttribute;
|
|
||||||
static void staticMethod(boolean arg);
|
|
||||||
static void staticMethodWithContext(any arg);
|
|
||||||
|
|
||||||
// Deprecated methods and attributes;
|
|
||||||
[Deprecated="GetAttributeNode"]
|
|
||||||
static attribute boolean staticDeprecatedAttribute;
|
|
||||||
[Deprecated="GetAttributeNode"]
|
|
||||||
static void staticDeprecatedMethod(boolean arg);
|
|
||||||
[Deprecated="GetAttributeNode"]
|
|
||||||
static void staticDeprecatedMethodWithContext(any arg);
|
|
||||||
|
|
||||||
// Overload resolution tests
|
|
||||||
//void overload1(DOMString... strs);
|
|
||||||
boolean overload1(TestInterface arg);
|
|
||||||
TestInterface overload1(DOMString strs, TestInterface arg);
|
|
||||||
void overload2(TestInterface arg);
|
|
||||||
void overload2(optional Dict arg);
|
|
||||||
void overload2(boolean arg);
|
|
||||||
void overload2(DOMString arg);
|
|
||||||
void overload2(Date arg);
|
|
||||||
void overload3(TestInterface arg);
|
|
||||||
void overload3(TestCallback arg);
|
|
||||||
void overload3(boolean arg);
|
|
||||||
void overload4(TestInterface arg);
|
|
||||||
void overload4(TestCallbackInterface arg);
|
|
||||||
void overload4(DOMString arg);
|
|
||||||
void overload5(long arg);
|
|
||||||
void overload5(TestEnum arg);
|
|
||||||
void overload6(long arg);
|
|
||||||
void overload6(boolean arg);
|
|
||||||
void overload7(long arg);
|
|
||||||
void overload7(boolean arg);
|
|
||||||
void overload7(ByteString arg);
|
|
||||||
void overload8(long arg);
|
|
||||||
void overload8(TestInterface arg);
|
|
||||||
void overload9(long? arg);
|
|
||||||
void overload9(DOMString arg);
|
|
||||||
void overload10(long? arg);
|
|
||||||
void overload10(object arg);
|
|
||||||
void overload11(long arg);
|
|
||||||
void overload11(DOMString? arg);
|
|
||||||
void overload12(long arg);
|
|
||||||
void overload12(boolean? arg);
|
|
||||||
void overload13(long? arg);
|
|
||||||
void overload13(boolean arg);
|
|
||||||
void overload14(optional long arg);
|
|
||||||
void overload14(TestInterface arg);
|
|
||||||
void overload15(long arg);
|
|
||||||
void overload15(optional TestInterface arg);
|
|
||||||
void overload16(long arg);
|
|
||||||
void overload16(optional TestInterface? arg);
|
|
||||||
void overload17(sequence<long> arg);
|
|
||||||
void overload17(MozMap<long> arg);
|
|
||||||
void overload18(MozMap<DOMString> arg);
|
|
||||||
void overload18(sequence<DOMString> arg);
|
|
||||||
void overload19(sequence<long> arg);
|
|
||||||
void overload19(optional Dict arg);
|
|
||||||
void overload20(optional Dict arg);
|
|
||||||
void overload20(sequence<long> arg);
|
|
||||||
|
|
||||||
// Variadic handling
|
|
||||||
void passVariadicThirdArg(DOMString arg1, long arg2, TestInterface... arg3);
|
|
||||||
|
|
||||||
// Conditionally exposed methods/attributes
|
|
||||||
[Pref="abc.def"]
|
|
||||||
readonly attribute boolean prefable1;
|
|
||||||
[Pref="abc.def"]
|
|
||||||
readonly attribute boolean prefable2;
|
|
||||||
[Pref="ghi.jkl"]
|
|
||||||
readonly attribute boolean prefable3;
|
|
||||||
[Pref="ghi.jkl"]
|
|
||||||
readonly attribute boolean prefable4;
|
|
||||||
[Pref="abc.def"]
|
|
||||||
readonly attribute boolean prefable5;
|
|
||||||
[Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
readonly attribute boolean prefable6;
|
|
||||||
[Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
readonly attribute boolean prefable7;
|
|
||||||
[Pref="ghi.jkl", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
readonly attribute boolean prefable8;
|
|
||||||
[Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
readonly attribute boolean prefable9;
|
|
||||||
[Pref="abc.def"]
|
|
||||||
void prefable10();
|
|
||||||
[Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
void prefable11();
|
|
||||||
[Pref="abc.def", Func="TestFuncControlledMember"]
|
|
||||||
readonly attribute boolean prefable12;
|
|
||||||
[Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
void prefable13();
|
|
||||||
[Pref="abc.def", Func="TestFuncControlledMember"]
|
|
||||||
readonly attribute boolean prefable14;
|
|
||||||
[Func="TestFuncControlledMember"]
|
|
||||||
readonly attribute boolean prefable15;
|
|
||||||
[Func="TestFuncControlledMember"]
|
|
||||||
readonly attribute boolean prefable16;
|
|
||||||
[Pref="abc.def", Func="TestFuncControlledMember"]
|
|
||||||
void prefable17();
|
|
||||||
[Func="TestFuncControlledMember"]
|
|
||||||
void prefable18();
|
|
||||||
[Func="TestFuncControlledMember"]
|
|
||||||
void prefable19();
|
|
||||||
|
|
||||||
// Conditionally exposed methods/attributes involving [SecureContext]
|
|
||||||
[SecureContext]
|
|
||||||
readonly attribute boolean conditionalOnSecureContext1;
|
|
||||||
[SecureContext, Pref="abc.def"]
|
|
||||||
readonly attribute boolean conditionalOnSecureContext2;
|
|
||||||
[SecureContext, Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
readonly attribute boolean conditionalOnSecureContext3;
|
|
||||||
[SecureContext, Pref="abc.def", Func="TestFuncControlledMember"]
|
|
||||||
readonly attribute boolean conditionalOnSecureContext4;
|
|
||||||
[SecureContext]
|
|
||||||
void conditionalOnSecureContext5();
|
|
||||||
[SecureContext, Pref="abc.def"]
|
|
||||||
void conditionalOnSecureContext6();
|
|
||||||
[SecureContext, Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
void conditionalOnSecureContext7();
|
|
||||||
[SecureContext, Pref="abc.def", Func="TestFuncControlledMember"]
|
|
||||||
void conditionalOnSecureContext8();
|
|
||||||
|
|
||||||
// Miscellania
|
|
||||||
[LenientThis] attribute long attrWithLenientThis;
|
|
||||||
[Unforgeable] readonly attribute long unforgeableAttr;
|
|
||||||
[Unforgeable, ChromeOnly] readonly attribute long unforgeableAttr2;
|
|
||||||
[Unforgeable] long unforgeableMethod();
|
|
||||||
[Unforgeable, ChromeOnly] long unforgeableMethod2();
|
|
||||||
stringifier;
|
|
||||||
void passRenamedInterface(TestRenamedInterface arg);
|
|
||||||
[PutForwards=writableByte] readonly attribute TestExampleInterface putForwardsAttr;
|
|
||||||
[PutForwards=writableByte, LenientThis] readonly attribute TestExampleInterface putForwardsAttr2;
|
|
||||||
[PutForwards=writableByte, ChromeOnly] readonly attribute TestExampleInterface putForwardsAttr3;
|
|
||||||
[Throws] void throwingMethod();
|
|
||||||
[Throws] attribute boolean throwingAttr;
|
|
||||||
[GetterThrows] attribute boolean throwingGetterAttr;
|
|
||||||
[SetterThrows] attribute boolean throwingSetterAttr;
|
|
||||||
[NeedsSubjectPrincipal] void needsSubjectPrincipalMethod();
|
|
||||||
[NeedsSubjectPrincipal] attribute boolean needsSubjectPrincipalAttr;
|
|
||||||
[NeedsCallerType] void needsCallerTypeMethod();
|
|
||||||
[NeedsCallerType] attribute boolean needsCallerTypeAttr;
|
|
||||||
[CEReactions] void ceReactionsMethod();
|
|
||||||
[CEReactions] void ceReactionsMethodOverload();
|
|
||||||
[CEReactions] void ceReactionsMethodOverload(DOMString bar);
|
|
||||||
[CEReactions] attribute boolean ceReactionsAttr;
|
|
||||||
legacycaller short(unsigned long arg1, TestInterface arg2);
|
|
||||||
void passArgsWithDefaults(optional long arg1,
|
|
||||||
optional TestInterface? arg2 = null,
|
|
||||||
optional Dict arg3, optional double arg4 = 5.0,
|
|
||||||
optional float arg5);
|
|
||||||
attribute any jsonifierShouldSkipThis;
|
|
||||||
attribute TestParentInterface jsonifierShouldSkipThis2;
|
|
||||||
attribute TestCallbackInterface jsonifierShouldSkipThis3;
|
|
||||||
jsonifier;
|
|
||||||
|
|
||||||
attribute byte dashed-attribute;
|
|
||||||
void dashed-method();
|
|
||||||
|
|
||||||
// If you add things here, add them to TestCodeGen and TestJSImplGen as well
|
|
||||||
};
|
|
||||||
|
|
||||||
interface TestExampleProxyInterface {
|
|
||||||
getter long longIndexedGetter(unsigned long ix);
|
|
||||||
setter creator void longIndexedSetter(unsigned long y, long z);
|
|
||||||
stringifier DOMString myStringifier();
|
|
||||||
getter short shortNameGetter(DOMString nom);
|
|
||||||
deleter void (DOMString nomnom);
|
|
||||||
setter creator void shortNamedSetter(DOMString me, short value);
|
|
||||||
};
|
|
||||||
|
|
||||||
[Exposed=(Window,Worker)]
|
|
||||||
interface TestExampleWorkerInterface {
|
|
||||||
[NeedsSubjectPrincipal] void needsSubjectPrincipalMethod();
|
|
||||||
[NeedsSubjectPrincipal] attribute boolean needsSubjectPrincipalAttr;
|
|
||||||
[NeedsCallerType] void needsCallerTypeMethod();
|
|
||||||
[NeedsCallerType] attribute boolean needsCallerTypeAttr;
|
|
||||||
};
|
|
|
@ -1,94 +0,0 @@
|
||||||
/* -*- 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/. */
|
|
||||||
|
|
||||||
#include "mozilla/dom/TestFunctions.h"
|
|
||||||
#include "mozilla/dom/TestFunctionsBinding.h"
|
|
||||||
#include "nsStringBuffer.h"
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
/* static */ TestFunctions*
|
|
||||||
TestFunctions::Constructor(GlobalObject& aGlobal, ErrorResult& aRv)
|
|
||||||
{
|
|
||||||
return new TestFunctions;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* static */ void
|
|
||||||
TestFunctions::ThrowUncatchableException(GlobalObject& aGlobal,
|
|
||||||
ErrorResult& aRv)
|
|
||||||
{
|
|
||||||
aRv.ThrowUncatchableException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* static */ Promise*
|
|
||||||
TestFunctions::PassThroughPromise(GlobalObject& aGlobal, Promise& aPromise)
|
|
||||||
{
|
|
||||||
return &aPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* static */ already_AddRefed<Promise>
|
|
||||||
TestFunctions::PassThroughCallbackPromise(GlobalObject& aGlobal,
|
|
||||||
PromiseReturner& aCallback,
|
|
||||||
ErrorResult& aRv)
|
|
||||||
{
|
|
||||||
return aCallback.Call(aRv);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TestFunctions::SetStringData(const nsAString& aString)
|
|
||||||
{
|
|
||||||
mStringData = aString;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TestFunctions::GetStringDataAsAString(nsAString& aString)
|
|
||||||
{
|
|
||||||
aString = mStringData;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TestFunctions::GetStringDataAsAString(uint32_t aLength, nsAString& aString)
|
|
||||||
{
|
|
||||||
MOZ_RELEASE_ASSERT(aLength <= mStringData.Length(),
|
|
||||||
"Bogus test passing in a too-big length");
|
|
||||||
aString.Assign(mStringData.BeginReading(), aLength);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TestFunctions::GetStringDataAsDOMString(const Optional<uint32_t>& aLength,
|
|
||||||
DOMString& aString)
|
|
||||||
{
|
|
||||||
uint32_t length;
|
|
||||||
if (aLength.WasPassed()) {
|
|
||||||
length = aLength.Value();
|
|
||||||
MOZ_RELEASE_ASSERT(length <= mStringData.Length(),
|
|
||||||
"Bogus test passing in a too-big length");
|
|
||||||
} else {
|
|
||||||
length = mStringData.Length();
|
|
||||||
}
|
|
||||||
|
|
||||||
nsStringBuffer* buf = nsStringBuffer::FromString(mStringData);
|
|
||||||
if (buf) {
|
|
||||||
aString.SetStringBuffer(buf, length);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We better have an empty mStringData; otherwise why did we not have a string
|
|
||||||
// buffer?
|
|
||||||
MOZ_RELEASE_ASSERT(length == 0, "Why no stringbuffer?");
|
|
||||||
// No need to do anything here; aString is already empty.
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
|
||||||
TestFunctions::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto,
|
|
||||||
JS::MutableHandle<JSObject*> aWrapper)
|
|
||||||
{
|
|
||||||
return TestFunctionsBinding::Wrap(aCx, this, aGivenProto, aWrapper);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
/* -*- 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/NonRefcountedDOMObject.h"
|
|
||||||
#include "nsString.h"
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
class Promise;
|
|
||||||
class PromiseReturner;
|
|
||||||
|
|
||||||
class TestFunctions : public NonRefcountedDOMObject {
|
|
||||||
public:
|
|
||||||
static TestFunctions* Constructor(GlobalObject& aGlobal, ErrorResult& aRv);
|
|
||||||
|
|
||||||
static void
|
|
||||||
ThrowUncatchableException(GlobalObject& aGlobal, ErrorResult& aRv);
|
|
||||||
|
|
||||||
static Promise*
|
|
||||||
PassThroughPromise(GlobalObject& aGlobal, Promise& aPromise);
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto,
|
|
||||||
JS::MutableHandle<JSObject*> aWrapper);
|
|
||||||
private:
|
|
||||||
nsString mStringData;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
||||||
|
|
||||||
#endif // mozilla_dom_TestFunctions_h
|
|
|
@ -1,82 +0,0 @@
|
||||||
/* 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/. */
|
|
||||||
|
|
||||||
#include "mozilla/dom/TestInterfaceIterableDouble.h"
|
|
||||||
#include "mozilla/dom/TestInterfaceJSMaplikeSetlikeIterableBinding.h"
|
|
||||||
#include "nsPIDOMWindow.h"
|
|
||||||
#include "mozilla/dom/BindingUtils.h"
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TestInterfaceIterableDouble, mParent)
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(TestInterfaceIterableDouble)
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(TestInterfaceIterableDouble)
|
|
||||||
|
|
||||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TestInterfaceIterableDouble)
|
|
||||||
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
|
|
||||||
NS_INTERFACE_MAP_ENTRY(nsISupports)
|
|
||||||
NS_INTERFACE_MAP_END
|
|
||||||
|
|
||||||
TestInterfaceIterableDouble::TestInterfaceIterableDouble(nsPIDOMWindowInner* aParent)
|
|
||||||
: mParent(aParent)
|
|
||||||
{
|
|
||||||
mValues.AppendElement(std::pair<nsString, nsString>(NS_LITERAL_STRING("a"),
|
|
||||||
NS_LITERAL_STRING("b")));
|
|
||||||
mValues.AppendElement(std::pair<nsString, nsString>(NS_LITERAL_STRING("c"),
|
|
||||||
NS_LITERAL_STRING("d")));
|
|
||||||
mValues.AppendElement(std::pair<nsString, nsString>(NS_LITERAL_STRING("e"),
|
|
||||||
NS_LITERAL_STRING("f")));
|
|
||||||
}
|
|
||||||
|
|
||||||
//static
|
|
||||||
already_AddRefed<TestInterfaceIterableDouble>
|
|
||||||
TestInterfaceIterableDouble::Constructor(const GlobalObject& aGlobal,
|
|
||||||
ErrorResult& aRv)
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports());
|
|
||||||
if (!window) {
|
|
||||||
aRv.Throw(NS_ERROR_FAILURE);
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
RefPtr<TestInterfaceIterableDouble> r = new TestInterfaceIterableDouble(window);
|
|
||||||
return r.forget();
|
|
||||||
}
|
|
||||||
|
|
||||||
JSObject*
|
|
||||||
TestInterfaceIterableDouble::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
|
|
||||||
{
|
|
||||||
return TestInterfaceIterableDoubleBinding::Wrap(aCx, this, aGivenProto);
|
|
||||||
}
|
|
||||||
|
|
||||||
nsPIDOMWindowInner*
|
|
||||||
TestInterfaceIterableDouble::GetParentObject() const
|
|
||||||
{
|
|
||||||
return mParent;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t
|
|
||||||
TestInterfaceIterableDouble::GetIterableLength()
|
|
||||||
{
|
|
||||||
return mValues.Length();
|
|
||||||
}
|
|
||||||
|
|
||||||
nsAString&
|
|
||||||
TestInterfaceIterableDouble::GetKeyAtIndex(uint32_t aIndex)
|
|
||||||
{
|
|
||||||
MOZ_ASSERT(aIndex < mValues.Length());
|
|
||||||
return mValues.ElementAt(aIndex).first;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsAString&
|
|
||||||
TestInterfaceIterableDouble::GetValueAtIndex(uint32_t aIndex)
|
|
||||||
{
|
|
||||||
MOZ_ASSERT(aIndex < mValues.Length());
|
|
||||||
return mValues.ElementAt(aIndex).second;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
|
@ -1,51 +0,0 @@
|
||||||
/* -*- 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_TestInterfaceIterableDouble_h
|
|
||||||
#define mozilla_dom_TestInterfaceIterableDouble_h
|
|
||||||
|
|
||||||
#include "nsWrapperCache.h"
|
|
||||||
#include "nsCOMPtr.h"
|
|
||||||
|
|
||||||
class nsPIDOMWindowInner;
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
|
|
||||||
class ErrorResult;
|
|
||||||
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
class GlobalObject;
|
|
||||||
|
|
||||||
// Implementation of test binding for webidl iterable interfaces, using
|
|
||||||
// primitives for value type
|
|
||||||
class TestInterfaceIterableDouble final : public nsISupports,
|
|
||||||
public nsWrapperCache
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
|
||||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestInterfaceIterableDouble)
|
|
||||||
|
|
||||||
explicit TestInterfaceIterableDouble(nsPIDOMWindowInner* aParent);
|
|
||||||
nsPIDOMWindowInner* GetParentObject() const;
|
|
||||||
virtual JSObject* WrapObject(JSContext* aCx,
|
|
||||||
JS::Handle<JSObject*> aGivenProto) override;
|
|
||||||
static already_AddRefed<TestInterfaceIterableDouble>
|
|
||||||
Constructor(const GlobalObject& aGlobal, ErrorResult& rv);
|
|
||||||
|
|
||||||
size_t GetIterableLength();
|
|
||||||
nsAString& GetKeyAtIndex(uint32_t aIndex);
|
|
||||||
nsAString& GetValueAtIndex(uint32_t aIndex);
|
|
||||||
private:
|
|
||||||
virtual ~TestInterfaceIterableDouble() {}
|
|
||||||
nsCOMPtr<nsPIDOMWindowInner> mParent;
|
|
||||||
nsTArray<std::pair<nsString, nsString>> mValues;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
||||||
|
|
||||||
#endif // mozilla_dom_TestInterfaceIterableDouble_h
|
|
|
@ -1,83 +0,0 @@
|
||||||
/* 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/. */
|
|
||||||
|
|
||||||
#include "mozilla/dom/TestInterfaceIterableDoubleUnion.h"
|
|
||||||
#include "mozilla/dom/TestInterfaceJSMaplikeSetlikeIterableBinding.h"
|
|
||||||
#include "nsPIDOMWindow.h"
|
|
||||||
#include "mozilla/dom/BindingUtils.h"
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TestInterfaceIterableDoubleUnion, mParent)
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(TestInterfaceIterableDoubleUnion)
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(TestInterfaceIterableDoubleUnion)
|
|
||||||
|
|
||||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TestInterfaceIterableDoubleUnion)
|
|
||||||
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
|
|
||||||
NS_INTERFACE_MAP_ENTRY(nsISupports)
|
|
||||||
NS_INTERFACE_MAP_END
|
|
||||||
|
|
||||||
TestInterfaceIterableDoubleUnion::TestInterfaceIterableDoubleUnion(nsPIDOMWindowInner* aParent)
|
|
||||||
: mParent(aParent)
|
|
||||||
{
|
|
||||||
OwningStringOrLong a;
|
|
||||||
a.SetAsLong() = 1;
|
|
||||||
mValues.AppendElement(std::pair<nsString, OwningStringOrLong>(NS_LITERAL_STRING("long"),
|
|
||||||
a));
|
|
||||||
a.SetAsString() = NS_LITERAL_STRING("a");
|
|
||||||
mValues.AppendElement(std::pair<nsString, OwningStringOrLong>(NS_LITERAL_STRING("string"),
|
|
||||||
a));
|
|
||||||
}
|
|
||||||
|
|
||||||
//static
|
|
||||||
already_AddRefed<TestInterfaceIterableDoubleUnion>
|
|
||||||
TestInterfaceIterableDoubleUnion::Constructor(const GlobalObject& aGlobal,
|
|
||||||
ErrorResult& aRv)
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports());
|
|
||||||
if (!window) {
|
|
||||||
aRv.Throw(NS_ERROR_FAILURE);
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
RefPtr<TestInterfaceIterableDoubleUnion> r = new TestInterfaceIterableDoubleUnion(window);
|
|
||||||
return r.forget();
|
|
||||||
}
|
|
||||||
|
|
||||||
JSObject*
|
|
||||||
TestInterfaceIterableDoubleUnion::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
|
|
||||||
{
|
|
||||||
return TestInterfaceIterableDoubleUnionBinding::Wrap(aCx, this, aGivenProto);
|
|
||||||
}
|
|
||||||
|
|
||||||
nsPIDOMWindowInner*
|
|
||||||
TestInterfaceIterableDoubleUnion::GetParentObject() const
|
|
||||||
{
|
|
||||||
return mParent;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t
|
|
||||||
TestInterfaceIterableDoubleUnion::GetIterableLength()
|
|
||||||
{
|
|
||||||
return mValues.Length();
|
|
||||||
}
|
|
||||||
|
|
||||||
nsAString&
|
|
||||||
TestInterfaceIterableDoubleUnion::GetKeyAtIndex(uint32_t aIndex)
|
|
||||||
{
|
|
||||||
MOZ_ASSERT(aIndex < mValues.Length());
|
|
||||||
return mValues.ElementAt(aIndex).first;
|
|
||||||
}
|
|
||||||
|
|
||||||
OwningStringOrLong&
|
|
||||||
TestInterfaceIterableDoubleUnion::GetValueAtIndex(uint32_t aIndex)
|
|
||||||
{
|
|
||||||
MOZ_ASSERT(aIndex < mValues.Length());
|
|
||||||
return mValues.ElementAt(aIndex).second;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
|
@ -1,51 +0,0 @@
|
||||||
/* -*- 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_TestInterfaceIterableDoubleUnion_h
|
|
||||||
#define mozilla_dom_TestInterfaceIterableDoubleUnion_h
|
|
||||||
|
|
||||||
#include "nsWrapperCache.h"
|
|
||||||
#include "nsCOMPtr.h"
|
|
||||||
|
|
||||||
class nsPIDOMWindowInner;
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
|
|
||||||
class ErrorResult;
|
|
||||||
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
class GlobalObject;
|
|
||||||
|
|
||||||
// Implementation of test binding for webidl iterable interfaces, using
|
|
||||||
// primitives for value type
|
|
||||||
class TestInterfaceIterableDoubleUnion final : public nsISupports,
|
|
||||||
public nsWrapperCache
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
|
||||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestInterfaceIterableDoubleUnion)
|
|
||||||
|
|
||||||
explicit TestInterfaceIterableDoubleUnion(nsPIDOMWindowInner* aParent);
|
|
||||||
nsPIDOMWindowInner* GetParentObject() const;
|
|
||||||
virtual JSObject* WrapObject(JSContext* aCx,
|
|
||||||
JS::Handle<JSObject*> aGivenProto) override;
|
|
||||||
static already_AddRefed<TestInterfaceIterableDoubleUnion>
|
|
||||||
Constructor(const GlobalObject& aGlobal, ErrorResult& rv);
|
|
||||||
|
|
||||||
size_t GetIterableLength();
|
|
||||||
nsAString& GetKeyAtIndex(uint32_t aIndex);
|
|
||||||
OwningStringOrLong& GetValueAtIndex(uint32_t aIndex);
|
|
||||||
private:
|
|
||||||
virtual ~TestInterfaceIterableDoubleUnion() {}
|
|
||||||
nsCOMPtr<nsPIDOMWindowInner> mParent;
|
|
||||||
nsTArray<std::pair<nsString, OwningStringOrLong>> mValues;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
||||||
|
|
||||||
#endif // mozilla_dom_TestInterfaceIterableDoubleUnion_h
|
|
|
@ -1,77 +0,0 @@
|
||||||
/* 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/. */
|
|
||||||
|
|
||||||
#include "mozilla/dom/TestInterfaceIterableSingle.h"
|
|
||||||
#include "mozilla/dom/TestInterfaceJSMaplikeSetlikeIterableBinding.h"
|
|
||||||
#include "nsPIDOMWindow.h"
|
|
||||||
#include "mozilla/dom/BindingUtils.h"
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TestInterfaceIterableSingle, mParent)
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(TestInterfaceIterableSingle)
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(TestInterfaceIterableSingle)
|
|
||||||
|
|
||||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TestInterfaceIterableSingle)
|
|
||||||
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
|
|
||||||
NS_INTERFACE_MAP_ENTRY(nsISupports)
|
|
||||||
NS_INTERFACE_MAP_END
|
|
||||||
|
|
||||||
TestInterfaceIterableSingle::TestInterfaceIterableSingle(nsPIDOMWindowInner* aParent)
|
|
||||||
: mParent(aParent)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 3; ++i) {
|
|
||||||
mValues.AppendElement(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//static
|
|
||||||
already_AddRefed<TestInterfaceIterableSingle>
|
|
||||||
TestInterfaceIterableSingle::Constructor(const GlobalObject& aGlobal,
|
|
||||||
ErrorResult& aRv)
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports());
|
|
||||||
if (!window) {
|
|
||||||
aRv.Throw(NS_ERROR_FAILURE);
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
RefPtr<TestInterfaceIterableSingle> r = new TestInterfaceIterableSingle(window);
|
|
||||||
return r.forget();
|
|
||||||
}
|
|
||||||
|
|
||||||
JSObject*
|
|
||||||
TestInterfaceIterableSingle::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
|
|
||||||
{
|
|
||||||
return TestInterfaceIterableSingleBinding::Wrap(aCx, this, aGivenProto);
|
|
||||||
}
|
|
||||||
|
|
||||||
nsPIDOMWindowInner*
|
|
||||||
TestInterfaceIterableSingle::GetParentObject() const
|
|
||||||
{
|
|
||||||
return mParent;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t
|
|
||||||
TestInterfaceIterableSingle::Length() const
|
|
||||||
{
|
|
||||||
return mValues.Length();
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t
|
|
||||||
TestInterfaceIterableSingle::IndexedGetter(uint32_t aIndex, bool& aFound) const
|
|
||||||
{
|
|
||||||
if (aIndex >= mValues.Length()) {
|
|
||||||
aFound = false;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
aFound = true;
|
|
||||||
return mValues[aIndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
|
@ -1,51 +0,0 @@
|
||||||
/* -*- 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_TestInterfaceIterableSingle_h
|
|
||||||
#define mozilla_dom_TestInterfaceIterableSingle_h
|
|
||||||
|
|
||||||
#include "nsWrapperCache.h"
|
|
||||||
#include "nsCOMPtr.h"
|
|
||||||
|
|
||||||
class nsPIDOMWindowInner;
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
|
|
||||||
class ErrorResult;
|
|
||||||
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
class GlobalObject;
|
|
||||||
|
|
||||||
// Implementation of test binding for webidl iterable interfaces, using
|
|
||||||
// primitives for value type
|
|
||||||
class TestInterfaceIterableSingle final : public nsISupports,
|
|
||||||
public nsWrapperCache
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
|
||||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestInterfaceIterableSingle)
|
|
||||||
|
|
||||||
explicit TestInterfaceIterableSingle(nsPIDOMWindowInner* aParent);
|
|
||||||
nsPIDOMWindowInner* GetParentObject() const;
|
|
||||||
virtual JSObject* WrapObject(JSContext* aCx,
|
|
||||||
JS::Handle<JSObject*> aGivenProto) override;
|
|
||||||
static already_AddRefed<TestInterfaceIterableSingle>
|
|
||||||
Constructor(const GlobalObject& aGlobal, ErrorResult& rv);
|
|
||||||
|
|
||||||
uint32_t Length() const;
|
|
||||||
int32_t IndexedGetter(uint32_t aIndex, bool& aFound) const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
virtual ~TestInterfaceIterableSingle() {}
|
|
||||||
nsCOMPtr<nsPIDOMWindowInner> mParent;
|
|
||||||
nsTArray<int32_t> mValues;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
||||||
|
|
||||||
#endif // mozilla_dom_TestInterfaceIterableSingle_h
|
|
|
@ -1,166 +0,0 @@
|
||||||
/* -*- Mode: JavaScript; 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/. */
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
const Cu = Components.utils;
|
|
||||||
const Ci = Components.interfaces;
|
|
||||||
|
|
||||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
|
||||||
Cu.import("resource://gre/modules/Services.jsm");
|
|
||||||
|
|
||||||
function TestInterfaceJS(anyArg, objectArg) {}
|
|
||||||
|
|
||||||
TestInterfaceJS.prototype = {
|
|
||||||
classID: Components.ID("{2ac4e026-cf25-47d5-b067-78d553c3cad8}"),
|
|
||||||
contractID: "@mozilla.org/dom/test-interface-js;1",
|
|
||||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports,
|
|
||||||
Ci.nsIDOMGlobalPropertyInitializer]),
|
|
||||||
|
|
||||||
init: function(win) { this._win = win; },
|
|
||||||
|
|
||||||
__init: function (anyArg, objectArg, dictionaryArg) {
|
|
||||||
this._anyAttr = undefined;
|
|
||||||
this._objectAttr = null;
|
|
||||||
this._anyArg = anyArg;
|
|
||||||
this._objectArg = objectArg;
|
|
||||||
this._dictionaryArg = dictionaryArg;
|
|
||||||
this._cachedAttr = 15;
|
|
||||||
},
|
|
||||||
|
|
||||||
get anyArg() { return this._anyArg; },
|
|
||||||
get objectArg() { return this._objectArg; },
|
|
||||||
get dictionaryArg() { return this._dictionaryArg; },
|
|
||||||
get anyAttr() { return this._anyAttr; },
|
|
||||||
set anyAttr(val) { this._anyAttr = val; },
|
|
||||||
get objectAttr() { return this._objectAttr; },
|
|
||||||
set objectAttr(val) { this._objectAttr = val; },
|
|
||||||
get dictionaryAttr() { return this._dictionaryAttr; },
|
|
||||||
set dictionaryAttr(val) { this._dictionaryAttr = val; },
|
|
||||||
pingPongAny: function(any) { return any; },
|
|
||||||
pingPongObject: function(obj) { return obj; },
|
|
||||||
pingPongObjectOrString: function(objectOrString) { return objectOrString; },
|
|
||||||
pingPongDictionary: function(dict) { return dict; },
|
|
||||||
pingPongDictionaryOrLong: function(dictOrLong) { return dictOrLong.anyMember || dictOrLong; },
|
|
||||||
pingPongMap: function(map) { return JSON.stringify(map); },
|
|
||||||
objectSequenceLength: function(seq) { return seq.length; },
|
|
||||||
anySequenceLength: function(seq) { return seq.length; },
|
|
||||||
|
|
||||||
|
|
||||||
getCallerPrincipal: function() { return Cu.getWebIDLCallerPrincipal().origin; },
|
|
||||||
|
|
||||||
convertSVS: function(svs) { return svs; },
|
|
||||||
|
|
||||||
pingPongUnion: function(x) { return x; },
|
|
||||||
pingPongUnionContainingNull: function(x) { return x; },
|
|
||||||
pingPongNullableUnion: function(x) { return x; },
|
|
||||||
returnBadUnion: function(x) { return 3; },
|
|
||||||
|
|
||||||
get cachedAttr() { return this._cachedAttr; },
|
|
||||||
setCachedAttr: function(n) { this._cachedAttr = n; },
|
|
||||||
clearCachedAttrCache: function () { this.__DOM_IMPL__._clearCachedCachedAttrValue(); },
|
|
||||||
|
|
||||||
testSequenceOverload: function(arg) {},
|
|
||||||
testSequenceUnion: function(arg) {},
|
|
||||||
|
|
||||||
testThrowError: function() {
|
|
||||||
throw new this._win.Error("We are an Error");
|
|
||||||
},
|
|
||||||
|
|
||||||
testThrowDOMException: function() {
|
|
||||||
throw new this._win.DOMException("We are a DOMException",
|
|
||||||
"NotSupportedError");
|
|
||||||
},
|
|
||||||
|
|
||||||
testThrowTypeError: function() {
|
|
||||||
throw new this._win.TypeError("We are a TypeError");
|
|
||||||
},
|
|
||||||
|
|
||||||
testThrowCallbackError: function(callback) {
|
|
||||||
callback();
|
|
||||||
},
|
|
||||||
|
|
||||||
testThrowXraySelfHosted: function() {
|
|
||||||
this._win.Array.indexOf();
|
|
||||||
},
|
|
||||||
|
|
||||||
testThrowSelfHosted: function() {
|
|
||||||
Array.indexOf();
|
|
||||||
},
|
|
||||||
|
|
||||||
testPromiseWithThrowingChromePromiseInit: function() {
|
|
||||||
return new this._win.Promise(function() {
|
|
||||||
noSuchMethodExistsYo1();
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
testPromiseWithThrowingContentPromiseInit: function(func) {
|
|
||||||
return new this._win.Promise(func);
|
|
||||||
},
|
|
||||||
|
|
||||||
testPromiseWithDOMExceptionThrowingPromiseInit: function() {
|
|
||||||
return new this._win.Promise(() => {
|
|
||||||
throw new this._win.DOMException("We are a second DOMException",
|
|
||||||
"NotFoundError");
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
testPromiseWithThrowingChromeThenFunction: function() {
|
|
||||||
return this._win.Promise.resolve(5).then(function() {
|
|
||||||
noSuchMethodExistsYo2();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
testPromiseWithThrowingContentThenFunction: function(func) {
|
|
||||||
return this._win.Promise.resolve(10).then(func);
|
|
||||||
},
|
|
||||||
|
|
||||||
testPromiseWithDOMExceptionThrowingThenFunction: function() {
|
|
||||||
return this._win.Promise.resolve(5).then(() => {
|
|
||||||
throw new this._win.DOMException("We are a third DOMException",
|
|
||||||
"NetworkError");
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
testPromiseWithThrowingChromeThenable: function() {
|
|
||||||
var thenable = {
|
|
||||||
then: function() {
|
|
||||||
noSuchMethodExistsYo3()
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return new this._win.Promise(function(resolve) {
|
|
||||||
resolve(thenable)
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
testPromiseWithThrowingContentThenable: function(thenable) {
|
|
||||||
// Waive Xrays on the thenable, because we're calling resolve() in the
|
|
||||||
// chrome compartment, so that's the compartment the "then" property get
|
|
||||||
// will happen in, and if we leave the Xray in place the function-valued
|
|
||||||
// property won't return the function.
|
|
||||||
return this._win.Promise.resolve(Cu.waiveXrays(thenable));
|
|
||||||
},
|
|
||||||
|
|
||||||
testPromiseWithDOMExceptionThrowingThenable: function() {
|
|
||||||
var thenable = {
|
|
||||||
then: () => {
|
|
||||||
throw new this._win.DOMException("We are a fourth DOMException",
|
|
||||||
"TypeMismatchError");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return new this._win.Promise(function(resolve) {
|
|
||||||
resolve(thenable)
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
get onsomething() {
|
|
||||||
return this.__DOM_IMPL__.getEventHandler("onsomething");
|
|
||||||
},
|
|
||||||
|
|
||||||
set onsomething(val) {
|
|
||||||
this.__DOM_IMPL__.setEventHandler("onsomething", val);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.NSGetFactory = XPCOMUtils.generateNSGetFactory([TestInterfaceJS])
|
|
|
@ -1,4 +0,0 @@
|
||||||
component {2ac4e026-cf25-47d5-b067-78d553c3cad8} TestInterfaceJS.js
|
|
||||||
contract @mozilla.org/dom/test-interface-js;1 {2ac4e026-cf25-47d5-b067-78d553c3cad8}
|
|
||||||
component {4bc6f6f3-e005-4f0a-b42d-4d1663a9013a} TestInterfaceJSMaplike.js
|
|
||||||
contract @mozilla.org/dom/test-interface-js-maplike;1 {4bc6f6f3-e005-4f0a-b42d-4d1663a9013a}
|
|
|
@ -1,38 +0,0 @@
|
||||||
/* -*- Mode: JavaScript; 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/. */
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
const Cu = Components.utils;
|
|
||||||
const Ci = Components.interfaces;
|
|
||||||
|
|
||||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
|
||||||
Cu.import("resource://gre/modules/Services.jsm");
|
|
||||||
|
|
||||||
function TestInterfaceJSMaplike() {}
|
|
||||||
|
|
||||||
TestInterfaceJSMaplike.prototype = {
|
|
||||||
classID: Components.ID("{4bc6f6f3-e005-4f0a-b42d-4d1663a9013a}"),
|
|
||||||
contractID: "@mozilla.org/dom/test-interface-js-maplike;1",
|
|
||||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports,
|
|
||||||
Ci.nsIDOMGlobalPropertyInitializer]),
|
|
||||||
|
|
||||||
init: function(win) { this._win = win; },
|
|
||||||
|
|
||||||
__init: function () {},
|
|
||||||
|
|
||||||
setInternal: function(aKey, aValue) {
|
|
||||||
return this.__DOM_IMPL__.__set(aKey, aValue);
|
|
||||||
},
|
|
||||||
|
|
||||||
deleteInternal: function(aKey) {
|
|
||||||
return this.__DOM_IMPL__.__delete(aKey);
|
|
||||||
},
|
|
||||||
|
|
||||||
clearInternal: function() {
|
|
||||||
return this.__DOM_IMPL__.__clear();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.NSGetFactory = XPCOMUtils.generateNSGetFactory([TestInterfaceJSMaplike])
|
|
|
@ -1,84 +0,0 @@
|
||||||
/* 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/. */
|
|
||||||
|
|
||||||
#include "mozilla/dom/TestInterfaceMaplike.h"
|
|
||||||
#include "mozilla/dom/TestInterfaceJSMaplikeSetlikeIterableBinding.h"
|
|
||||||
#include "nsPIDOMWindow.h"
|
|
||||||
#include "mozilla/dom/BindingUtils.h"
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TestInterfaceMaplike, mParent)
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(TestInterfaceMaplike)
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(TestInterfaceMaplike)
|
|
||||||
|
|
||||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TestInterfaceMaplike)
|
|
||||||
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
|
|
||||||
NS_INTERFACE_MAP_ENTRY(nsISupports)
|
|
||||||
NS_INTERFACE_MAP_END
|
|
||||||
|
|
||||||
TestInterfaceMaplike::TestInterfaceMaplike(nsPIDOMWindowInner* aParent)
|
|
||||||
: mParent(aParent)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//static
|
|
||||||
already_AddRefed<TestInterfaceMaplike>
|
|
||||||
TestInterfaceMaplike::Constructor(const GlobalObject& aGlobal,
|
|
||||||
ErrorResult& aRv)
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports());
|
|
||||||
if (!window) {
|
|
||||||
aRv.Throw(NS_ERROR_FAILURE);
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
RefPtr<TestInterfaceMaplike> r = new TestInterfaceMaplike(window);
|
|
||||||
return r.forget();
|
|
||||||
}
|
|
||||||
|
|
||||||
JSObject*
|
|
||||||
TestInterfaceMaplike::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
|
|
||||||
{
|
|
||||||
return TestInterfaceMaplikeBinding::Wrap(aCx, this, aGivenProto);
|
|
||||||
}
|
|
||||||
|
|
||||||
nsPIDOMWindowInner*
|
|
||||||
TestInterfaceMaplike::GetParentObject() const
|
|
||||||
{
|
|
||||||
return mParent;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TestInterfaceMaplike::SetInternal(const nsAString& aKey, int32_t aValue)
|
|
||||||
{
|
|
||||||
ErrorResult rv;
|
|
||||||
TestInterfaceMaplikeBinding::MaplikeHelpers::Set(this, aKey, aValue, rv);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TestInterfaceMaplike::ClearInternal()
|
|
||||||
{
|
|
||||||
ErrorResult rv;
|
|
||||||
TestInterfaceMaplikeBinding::MaplikeHelpers::Clear(this, rv);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
|
||||||
TestInterfaceMaplike::DeleteInternal(const nsAString& aKey)
|
|
||||||
{
|
|
||||||
ErrorResult rv;
|
|
||||||
return TestInterfaceMaplikeBinding::MaplikeHelpers::Delete(this, aKey, rv);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
|
||||||
TestInterfaceMaplike::HasInternal(const nsAString& aKey)
|
|
||||||
{
|
|
||||||
ErrorResult rv;
|
|
||||||
return TestInterfaceMaplikeBinding::MaplikeHelpers::Has(this, aKey, rv);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
|
@ -1,52 +0,0 @@
|
||||||
/* -*- 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_TestInterfaceMaplike_h
|
|
||||||
#define mozilla_dom_TestInterfaceMaplike_h
|
|
||||||
|
|
||||||
#include "nsWrapperCache.h"
|
|
||||||
#include "nsCOMPtr.h"
|
|
||||||
|
|
||||||
class nsPIDOMWindowInner;
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
|
|
||||||
class ErrorResult;
|
|
||||||
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
class GlobalObject;
|
|
||||||
|
|
||||||
// Implementation of test binding for webidl maplike interfaces, using
|
|
||||||
// primitives for key and value types.
|
|
||||||
class TestInterfaceMaplike final : public nsISupports,
|
|
||||||
public nsWrapperCache
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
|
||||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestInterfaceMaplike)
|
|
||||||
|
|
||||||
explicit TestInterfaceMaplike(nsPIDOMWindowInner* aParent);
|
|
||||||
nsPIDOMWindowInner* GetParentObject() const;
|
|
||||||
virtual JSObject* WrapObject(JSContext* aCx,
|
|
||||||
JS::Handle<JSObject*> aGivenProto) override;
|
|
||||||
static already_AddRefed<TestInterfaceMaplike>
|
|
||||||
Constructor(const GlobalObject& aGlobal, ErrorResult& rv);
|
|
||||||
|
|
||||||
// External access for testing internal convenience functions.
|
|
||||||
void SetInternal(const nsAString& aKey, int32_t aValue);
|
|
||||||
void ClearInternal();
|
|
||||||
bool DeleteInternal(const nsAString& aKey);
|
|
||||||
bool HasInternal(const nsAString& aKey);
|
|
||||||
private:
|
|
||||||
virtual ~TestInterfaceMaplike() {}
|
|
||||||
nsCOMPtr<nsPIDOMWindowInner> mParent;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
||||||
|
|
||||||
#endif // mozilla_dom_TestInterfaceMaplike_h
|
|
|
@ -1,88 +0,0 @@
|
||||||
/* 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/. */
|
|
||||||
|
|
||||||
#include "mozilla/dom/TestInterfaceMaplikeObject.h"
|
|
||||||
#include "mozilla/dom/TestInterfaceMaplike.h"
|
|
||||||
#include "mozilla/dom/TestInterfaceJSMaplikeSetlikeIterableBinding.h"
|
|
||||||
#include "nsPIDOMWindow.h"
|
|
||||||
#include "mozilla/dom/BindingUtils.h"
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TestInterfaceMaplikeObject, mParent)
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(TestInterfaceMaplikeObject)
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(TestInterfaceMaplikeObject)
|
|
||||||
|
|
||||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TestInterfaceMaplikeObject)
|
|
||||||
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
|
|
||||||
NS_INTERFACE_MAP_ENTRY(nsISupports)
|
|
||||||
NS_INTERFACE_MAP_END
|
|
||||||
|
|
||||||
TestInterfaceMaplikeObject::TestInterfaceMaplikeObject(nsPIDOMWindowInner* aParent)
|
|
||||||
: mParent(aParent)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//static
|
|
||||||
already_AddRefed<TestInterfaceMaplikeObject>
|
|
||||||
TestInterfaceMaplikeObject::Constructor(const GlobalObject& aGlobal,
|
|
||||||
ErrorResult& aRv)
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports());
|
|
||||||
if (!window) {
|
|
||||||
aRv.Throw(NS_ERROR_FAILURE);
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
RefPtr<TestInterfaceMaplikeObject> r =
|
|
||||||
new TestInterfaceMaplikeObject(window);
|
|
||||||
return r.forget();
|
|
||||||
}
|
|
||||||
|
|
||||||
JSObject*
|
|
||||||
TestInterfaceMaplikeObject::WrapObject(JSContext* aCx,
|
|
||||||
JS::Handle<JSObject*> aGivenProto)
|
|
||||||
{
|
|
||||||
return TestInterfaceMaplikeObjectBinding::Wrap(aCx, this, aGivenProto);
|
|
||||||
}
|
|
||||||
|
|
||||||
nsPIDOMWindowInner*
|
|
||||||
TestInterfaceMaplikeObject::GetParentObject() const
|
|
||||||
{
|
|
||||||
return mParent;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TestInterfaceMaplikeObject::SetInternal(const nsAString& aKey)
|
|
||||||
{
|
|
||||||
RefPtr<TestInterfaceMaplike> p(new TestInterfaceMaplike(mParent));
|
|
||||||
ErrorResult rv;
|
|
||||||
TestInterfaceMaplikeObjectBinding::MaplikeHelpers::Set(this, aKey, *p, rv);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TestInterfaceMaplikeObject::ClearInternal()
|
|
||||||
{
|
|
||||||
ErrorResult rv;
|
|
||||||
TestInterfaceMaplikeObjectBinding::MaplikeHelpers::Clear(this, rv);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
|
||||||
TestInterfaceMaplikeObject::DeleteInternal(const nsAString& aKey)
|
|
||||||
{
|
|
||||||
ErrorResult rv;
|
|
||||||
return TestInterfaceMaplikeObjectBinding::MaplikeHelpers::Delete(this, aKey, rv);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
|
||||||
TestInterfaceMaplikeObject::HasInternal(const nsAString& aKey)
|
|
||||||
{
|
|
||||||
ErrorResult rv;
|
|
||||||
return TestInterfaceMaplikeObjectBinding::MaplikeHelpers::Has(this, aKey, rv);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
|
@ -1,52 +0,0 @@
|
||||||
/* -*- 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_TestInterfaceMaplikeObject_h
|
|
||||||
#define mozilla_dom_TestInterfaceMaplikeObject_h
|
|
||||||
|
|
||||||
#include "nsWrapperCache.h"
|
|
||||||
#include "nsCOMPtr.h"
|
|
||||||
|
|
||||||
class nsPIDOMWindowInner;
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
|
|
||||||
class ErrorResult;
|
|
||||||
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
class GlobalObject;
|
|
||||||
|
|
||||||
// Implementation of test binding for webidl maplike interfaces, using
|
|
||||||
// primitives for key types and objects for value types.
|
|
||||||
class TestInterfaceMaplikeObject final : public nsISupports,
|
|
||||||
public nsWrapperCache
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
|
||||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestInterfaceMaplikeObject)
|
|
||||||
|
|
||||||
explicit TestInterfaceMaplikeObject(nsPIDOMWindowInner* aParent);
|
|
||||||
nsPIDOMWindowInner* GetParentObject() const;
|
|
||||||
virtual JSObject* WrapObject(JSContext* aCx,
|
|
||||||
JS::Handle<JSObject*> aGivenProto) override;
|
|
||||||
static already_AddRefed<TestInterfaceMaplikeObject>
|
|
||||||
Constructor(const GlobalObject& aGlobal,ErrorResult& rv);
|
|
||||||
|
|
||||||
// External access for testing internal convenience functions.
|
|
||||||
void SetInternal(const nsAString& aKey);
|
|
||||||
void ClearInternal();
|
|
||||||
bool DeleteInternal(const nsAString& aKey);
|
|
||||||
bool HasInternal(const nsAString& aKey);
|
|
||||||
private:
|
|
||||||
virtual ~TestInterfaceMaplikeObject() {}
|
|
||||||
nsCOMPtr<nsPIDOMWindowInner> mParent;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
||||||
|
|
||||||
#endif // mozilla_dom_TestInterfaceMaplikeObject_h
|
|
|
@ -1,58 +0,0 @@
|
||||||
/* 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/. */
|
|
||||||
|
|
||||||
#include "mozilla/dom/TestInterfaceSetlike.h"
|
|
||||||
#include "mozilla/dom/TestInterfaceJSMaplikeSetlikeIterableBinding.h"
|
|
||||||
#include "nsPIDOMWindow.h"
|
|
||||||
#include "mozilla/dom/BindingUtils.h"
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TestInterfaceSetlike, mParent)
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(TestInterfaceSetlike)
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(TestInterfaceSetlike)
|
|
||||||
|
|
||||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TestInterfaceSetlike)
|
|
||||||
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
|
|
||||||
NS_INTERFACE_MAP_ENTRY(nsISupports)
|
|
||||||
NS_INTERFACE_MAP_END
|
|
||||||
|
|
||||||
TestInterfaceSetlike::TestInterfaceSetlike(JSContext* aCx,
|
|
||||||
nsPIDOMWindowInner* aParent)
|
|
||||||
: mParent(aParent)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//static
|
|
||||||
already_AddRefed<TestInterfaceSetlike>
|
|
||||||
TestInterfaceSetlike::Constructor(const GlobalObject& aGlobal,
|
|
||||||
ErrorResult& aRv)
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports());
|
|
||||||
if (!window) {
|
|
||||||
aRv.Throw(NS_ERROR_FAILURE);
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
RefPtr<TestInterfaceSetlike> r = new TestInterfaceSetlike(nullptr, window);
|
|
||||||
return r.forget();
|
|
||||||
}
|
|
||||||
|
|
||||||
JSObject*
|
|
||||||
TestInterfaceSetlike::WrapObject(JSContext* aCx,
|
|
||||||
JS::Handle<JSObject*> aGivenProto)
|
|
||||||
{
|
|
||||||
return TestInterfaceSetlikeBinding::Wrap(aCx, this, aGivenProto);
|
|
||||||
}
|
|
||||||
|
|
||||||
nsPIDOMWindowInner*
|
|
||||||
TestInterfaceSetlike::GetParentObject() const
|
|
||||||
{
|
|
||||||
return mParent;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
|
@ -1,46 +0,0 @@
|
||||||
/* -*- 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_TestInterfaceSetlike_h
|
|
||||||
#define mozilla_dom_TestInterfaceSetlike_h
|
|
||||||
|
|
||||||
#include "nsWrapperCache.h"
|
|
||||||
#include "nsCOMPtr.h"
|
|
||||||
|
|
||||||
class nsPIDOMWindowInner;
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
|
|
||||||
class ErrorResult;
|
|
||||||
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
class GlobalObject;
|
|
||||||
|
|
||||||
// Implementation of test binding for webidl setlike interfaces, using
|
|
||||||
// primitives for key type.
|
|
||||||
class TestInterfaceSetlike final : public nsISupports,
|
|
||||||
public nsWrapperCache
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
|
||||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestInterfaceSetlike)
|
|
||||||
explicit TestInterfaceSetlike(JSContext* aCx,
|
|
||||||
nsPIDOMWindowInner* aParent);
|
|
||||||
nsPIDOMWindowInner* GetParentObject() const;
|
|
||||||
virtual JSObject* WrapObject(JSContext* aCx,
|
|
||||||
JS::Handle<JSObject*> aGivenProto) override;
|
|
||||||
static already_AddRefed<TestInterfaceSetlike>
|
|
||||||
Constructor(const GlobalObject& aGlobal, ErrorResult& rv);
|
|
||||||
private:
|
|
||||||
virtual ~TestInterfaceSetlike() {}
|
|
||||||
nsCOMPtr<nsPIDOMWindowInner> mParent;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
||||||
|
|
||||||
#endif // mozilla_dom_TestInterfaceSetlike_h
|
|
|
@ -1,58 +0,0 @@
|
||||||
/* 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/. */
|
|
||||||
|
|
||||||
#include "mozilla/dom/TestInterfaceSetlikeNode.h"
|
|
||||||
#include "mozilla/dom/TestInterfaceJSMaplikeSetlikeIterableBinding.h"
|
|
||||||
#include "nsPIDOMWindow.h"
|
|
||||||
#include "mozilla/dom/BindingUtils.h"
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TestInterfaceSetlikeNode, mParent)
|
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(TestInterfaceSetlikeNode)
|
|
||||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(TestInterfaceSetlikeNode)
|
|
||||||
|
|
||||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TestInterfaceSetlikeNode)
|
|
||||||
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
|
|
||||||
NS_INTERFACE_MAP_ENTRY(nsISupports)
|
|
||||||
NS_INTERFACE_MAP_END
|
|
||||||
|
|
||||||
TestInterfaceSetlikeNode::TestInterfaceSetlikeNode(JSContext* aCx,
|
|
||||||
nsPIDOMWindowInner* aParent)
|
|
||||||
: mParent(aParent)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//static
|
|
||||||
already_AddRefed<TestInterfaceSetlikeNode>
|
|
||||||
TestInterfaceSetlikeNode::Constructor(const GlobalObject& aGlobal,
|
|
||||||
ErrorResult& aRv)
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports());
|
|
||||||
if (!window) {
|
|
||||||
aRv.Throw(NS_ERROR_FAILURE);
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
RefPtr<TestInterfaceSetlikeNode> r = new TestInterfaceSetlikeNode(nullptr, window);
|
|
||||||
return r.forget();
|
|
||||||
}
|
|
||||||
|
|
||||||
JSObject*
|
|
||||||
TestInterfaceSetlikeNode::WrapObject(JSContext* aCx,
|
|
||||||
JS::Handle<JSObject*> aGivenProto)
|
|
||||||
{
|
|
||||||
return TestInterfaceSetlikeNodeBinding::Wrap(aCx, this, aGivenProto);
|
|
||||||
}
|
|
||||||
|
|
||||||
nsPIDOMWindowInner*
|
|
||||||
TestInterfaceSetlikeNode::GetParentObject() const
|
|
||||||
{
|
|
||||||
return mParent;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
|
@ -1,46 +0,0 @@
|
||||||
/* -*- 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_TestInterfaceSetlikeNode_h
|
|
||||||
#define mozilla_dom_TestInterfaceSetlikeNode_h
|
|
||||||
|
|
||||||
#include "nsWrapperCache.h"
|
|
||||||
#include "nsCOMPtr.h"
|
|
||||||
|
|
||||||
class nsPIDOMWindowInner;
|
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
|
|
||||||
class ErrorResult;
|
|
||||||
|
|
||||||
namespace dom {
|
|
||||||
|
|
||||||
class GlobalObject;
|
|
||||||
|
|
||||||
// Implementation of test binding for webidl setlike interfaces, using
|
|
||||||
// primitives for key type.
|
|
||||||
class TestInterfaceSetlikeNode final : public nsISupports,
|
|
||||||
public nsWrapperCache
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
|
||||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestInterfaceSetlikeNode)
|
|
||||||
explicit TestInterfaceSetlikeNode(JSContext* aCx,
|
|
||||||
nsPIDOMWindowInner* aParent);
|
|
||||||
nsPIDOMWindowInner* GetParentObject() const;
|
|
||||||
virtual JSObject* WrapObject(JSContext* aCx,
|
|
||||||
JS::Handle<JSObject*> aGivenProto) override;
|
|
||||||
static already_AddRefed<TestInterfaceSetlikeNode>
|
|
||||||
Constructor(const GlobalObject& aGlobal, ErrorResult& rv);
|
|
||||||
private:
|
|
||||||
virtual ~TestInterfaceSetlikeNode() {}
|
|
||||||
nsCOMPtr<nsPIDOMWindowInner> mParent;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace dom
|
|
||||||
} // namespace mozilla
|
|
||||||
|
|
||||||
#endif // mozilla_dom_TestInterfaceSetlikeNode_h
|
|
|
@ -1,840 +0,0 @@
|
||||||
/* -*- Mode: IDL; 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/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef TestJSImplInterface AnotherNameForTestJSImplInterface;
|
|
||||||
typedef TestJSImplInterface YetAnotherNameForTestJSImplInterface;
|
|
||||||
typedef TestJSImplInterface? NullableTestJSImplInterface;
|
|
||||||
|
|
||||||
callback MyTestCallback = void();
|
|
||||||
|
|
||||||
enum MyTestEnum {
|
|
||||||
"a",
|
|
||||||
"b"
|
|
||||||
};
|
|
||||||
|
|
||||||
// We don't support multiple constructors (bug 869268) or named constructors
|
|
||||||
// for JS-implemented WebIDL.
|
|
||||||
[Constructor(DOMString str, unsigned long num, boolean? boolArg,
|
|
||||||
TestInterface? iface, long arg1,
|
|
||||||
DictForConstructor dict, any any1,
|
|
||||||
object obj1,
|
|
||||||
object? obj2, sequence<Dict> seq, optional any any2,
|
|
||||||
optional object obj3,
|
|
||||||
optional object? obj4,
|
|
||||||
Uint8Array typedArr,
|
|
||||||
ArrayBuffer arrayBuf),
|
|
||||||
JSImplementation="@mozilla.org/test-js-impl-interface;1"]
|
|
||||||
interface TestJSImplInterface {
|
|
||||||
// Integer types
|
|
||||||
// XXXbz add tests for throwing versions of all the integer stuff
|
|
||||||
readonly attribute byte readonlyByte;
|
|
||||||
attribute byte writableByte;
|
|
||||||
void passByte(byte arg);
|
|
||||||
byte receiveByte();
|
|
||||||
void passOptionalByte(optional byte arg);
|
|
||||||
void passOptionalByteBeforeRequired(optional byte arg1, byte arg2);
|
|
||||||
void passOptionalByteWithDefault(optional byte arg = 0);
|
|
||||||
void passOptionalByteWithDefaultBeforeRequired(optional byte arg1 = 0, byte arg2);
|
|
||||||
void passNullableByte(byte? arg);
|
|
||||||
void passOptionalNullableByte(optional byte? arg);
|
|
||||||
void passVariadicByte(byte... arg);
|
|
||||||
[Cached, Pure]
|
|
||||||
readonly attribute byte cachedByte;
|
|
||||||
[Cached, Constant]
|
|
||||||
readonly attribute byte cachedConstantByte;
|
|
||||||
[Cached, Pure]
|
|
||||||
attribute byte cachedWritableByte;
|
|
||||||
[Affects=Nothing]
|
|
||||||
attribute byte sideEffectFreeByte;
|
|
||||||
[Affects=Nothing, DependsOn=DOMState]
|
|
||||||
attribute byte domDependentByte;
|
|
||||||
[Affects=Nothing, DependsOn=Nothing]
|
|
||||||
readonly attribute byte constantByte;
|
|
||||||
[DependsOn=DeviceState, Affects=Nothing]
|
|
||||||
readonly attribute byte deviceStateDependentByte;
|
|
||||||
[Affects=Nothing]
|
|
||||||
byte returnByteSideEffectFree();
|
|
||||||
[Affects=Nothing, DependsOn=DOMState]
|
|
||||||
byte returnDOMDependentByte();
|
|
||||||
[Affects=Nothing, DependsOn=Nothing]
|
|
||||||
byte returnConstantByte();
|
|
||||||
[DependsOn=DeviceState, Affects=Nothing]
|
|
||||||
byte returnDeviceStateDependentByte();
|
|
||||||
|
|
||||||
readonly attribute short readonlyShort;
|
|
||||||
attribute short writableShort;
|
|
||||||
void passShort(short arg);
|
|
||||||
short receiveShort();
|
|
||||||
void passOptionalShort(optional short arg);
|
|
||||||
void passOptionalShortWithDefault(optional short arg = 5);
|
|
||||||
|
|
||||||
readonly attribute long readonlyLong;
|
|
||||||
attribute long writableLong;
|
|
||||||
void passLong(long arg);
|
|
||||||
long receiveLong();
|
|
||||||
void passOptionalLong(optional long arg);
|
|
||||||
void passOptionalLongWithDefault(optional long arg = 7);
|
|
||||||
|
|
||||||
readonly attribute long long readonlyLongLong;
|
|
||||||
attribute long long writableLongLong;
|
|
||||||
void passLongLong(long long arg);
|
|
||||||
long long receiveLongLong();
|
|
||||||
void passOptionalLongLong(optional long long arg);
|
|
||||||
void passOptionalLongLongWithDefault(optional long long arg = -12);
|
|
||||||
|
|
||||||
readonly attribute octet readonlyOctet;
|
|
||||||
attribute octet writableOctet;
|
|
||||||
void passOctet(octet arg);
|
|
||||||
octet receiveOctet();
|
|
||||||
void passOptionalOctet(optional octet arg);
|
|
||||||
void passOptionalOctetWithDefault(optional octet arg = 19);
|
|
||||||
|
|
||||||
readonly attribute unsigned short readonlyUnsignedShort;
|
|
||||||
attribute unsigned short writableUnsignedShort;
|
|
||||||
void passUnsignedShort(unsigned short arg);
|
|
||||||
unsigned short receiveUnsignedShort();
|
|
||||||
void passOptionalUnsignedShort(optional unsigned short arg);
|
|
||||||
void passOptionalUnsignedShortWithDefault(optional unsigned short arg = 2);
|
|
||||||
|
|
||||||
readonly attribute unsigned long readonlyUnsignedLong;
|
|
||||||
attribute unsigned long writableUnsignedLong;
|
|
||||||
void passUnsignedLong(unsigned long arg);
|
|
||||||
unsigned long receiveUnsignedLong();
|
|
||||||
void passOptionalUnsignedLong(optional unsigned long arg);
|
|
||||||
void passOptionalUnsignedLongWithDefault(optional unsigned long arg = 6);
|
|
||||||
|
|
||||||
readonly attribute unsigned long long readonlyUnsignedLongLong;
|
|
||||||
attribute unsigned long long writableUnsignedLongLong;
|
|
||||||
void passUnsignedLongLong(unsigned long long arg);
|
|
||||||
unsigned long long receiveUnsignedLongLong();
|
|
||||||
void passOptionalUnsignedLongLong(optional unsigned long long arg);
|
|
||||||
void passOptionalUnsignedLongLongWithDefault(optional unsigned long long arg = 17);
|
|
||||||
|
|
||||||
attribute float writableFloat;
|
|
||||||
attribute unrestricted float writableUnrestrictedFloat;
|
|
||||||
attribute float? writableNullableFloat;
|
|
||||||
attribute unrestricted float? writableNullableUnrestrictedFloat;
|
|
||||||
attribute double writableDouble;
|
|
||||||
attribute unrestricted double writableUnrestrictedDouble;
|
|
||||||
attribute double? writableNullableDouble;
|
|
||||||
attribute unrestricted double? writableNullableUnrestrictedDouble;
|
|
||||||
void passFloat(float arg1, unrestricted float arg2,
|
|
||||||
float? arg3, unrestricted float? arg4,
|
|
||||||
double arg5, unrestricted double arg6,
|
|
||||||
double? arg7, unrestricted double? arg8,
|
|
||||||
sequence<float> arg9, sequence<unrestricted float> arg10,
|
|
||||||
sequence<float?> arg11, sequence<unrestricted float?> arg12,
|
|
||||||
sequence<double> arg13, sequence<unrestricted double> arg14,
|
|
||||||
sequence<double?> arg15, sequence<unrestricted double?> arg16);
|
|
||||||
[LenientFloat]
|
|
||||||
void passLenientFloat(float arg1, unrestricted float arg2,
|
|
||||||
float? arg3, unrestricted float? arg4,
|
|
||||||
double arg5, unrestricted double arg6,
|
|
||||||
double? arg7, unrestricted double? arg8,
|
|
||||||
sequence<float> arg9,
|
|
||||||
sequence<unrestricted float> arg10,
|
|
||||||
sequence<float?> arg11,
|
|
||||||
sequence<unrestricted float?> arg12,
|
|
||||||
sequence<double> arg13,
|
|
||||||
sequence<unrestricted double> arg14,
|
|
||||||
sequence<double?> arg15,
|
|
||||||
sequence<unrestricted double?> arg16);
|
|
||||||
[LenientFloat]
|
|
||||||
attribute float lenientFloatAttr;
|
|
||||||
[LenientFloat]
|
|
||||||
attribute double lenientDoubleAttr;
|
|
||||||
|
|
||||||
// Castable interface types
|
|
||||||
// XXXbz add tests for throwing versions of all the castable interface stuff
|
|
||||||
TestJSImplInterface receiveSelf();
|
|
||||||
TestJSImplInterface? receiveNullableSelf();
|
|
||||||
|
|
||||||
TestJSImplInterface receiveWeakSelf();
|
|
||||||
TestJSImplInterface? receiveWeakNullableSelf();
|
|
||||||
|
|
||||||
// A version to test for casting to TestJSImplInterface&
|
|
||||||
void passSelf(TestJSImplInterface arg);
|
|
||||||
void passNullableSelf(TestJSImplInterface? arg);
|
|
||||||
attribute TestJSImplInterface nonNullSelf;
|
|
||||||
attribute TestJSImplInterface? nullableSelf;
|
|
||||||
[Cached, Pure]
|
|
||||||
readonly attribute TestJSImplInterface cachedSelf;
|
|
||||||
// Optional arguments
|
|
||||||
void passOptionalSelf(optional TestJSImplInterface? arg);
|
|
||||||
void passOptionalNonNullSelf(optional TestJSImplInterface arg);
|
|
||||||
void passOptionalSelfWithDefault(optional TestJSImplInterface? arg = null);
|
|
||||||
|
|
||||||
// Non-wrapper-cache interface types
|
|
||||||
[NewObject]
|
|
||||||
TestNonWrapperCacheInterface receiveNonWrapperCacheInterface();
|
|
||||||
[NewObject]
|
|
||||||
TestNonWrapperCacheInterface? receiveNullableNonWrapperCacheInterface();
|
|
||||||
|
|
||||||
[NewObject]
|
|
||||||
sequence<TestNonWrapperCacheInterface> receiveNonWrapperCacheInterfaceSequence();
|
|
||||||
[NewObject]
|
|
||||||
sequence<TestNonWrapperCacheInterface?> receiveNullableNonWrapperCacheInterfaceSequence();
|
|
||||||
[NewObject]
|
|
||||||
sequence<TestNonWrapperCacheInterface>? receiveNonWrapperCacheInterfaceNullableSequence();
|
|
||||||
[NewObject]
|
|
||||||
sequence<TestNonWrapperCacheInterface?>? receiveNullableNonWrapperCacheInterfaceNullableSequence();
|
|
||||||
|
|
||||||
// Non-castable interface types
|
|
||||||
IndirectlyImplementedInterface receiveOther();
|
|
||||||
IndirectlyImplementedInterface? receiveNullableOther();
|
|
||||||
IndirectlyImplementedInterface receiveWeakOther();
|
|
||||||
IndirectlyImplementedInterface? receiveWeakNullableOther();
|
|
||||||
|
|
||||||
void passOther(IndirectlyImplementedInterface arg);
|
|
||||||
void passNullableOther(IndirectlyImplementedInterface? arg);
|
|
||||||
attribute IndirectlyImplementedInterface nonNullOther;
|
|
||||||
attribute IndirectlyImplementedInterface? nullableOther;
|
|
||||||
// Optional arguments
|
|
||||||
void passOptionalOther(optional IndirectlyImplementedInterface? arg);
|
|
||||||
void passOptionalNonNullOther(optional IndirectlyImplementedInterface arg);
|
|
||||||
void passOptionalOtherWithDefault(optional IndirectlyImplementedInterface? arg = null);
|
|
||||||
|
|
||||||
// External interface types
|
|
||||||
TestExternalInterface receiveExternal();
|
|
||||||
TestExternalInterface? receiveNullableExternal();
|
|
||||||
TestExternalInterface receiveWeakExternal();
|
|
||||||
TestExternalInterface? receiveWeakNullableExternal();
|
|
||||||
void passExternal(TestExternalInterface arg);
|
|
||||||
void passNullableExternal(TestExternalInterface? arg);
|
|
||||||
attribute TestExternalInterface nonNullExternal;
|
|
||||||
attribute TestExternalInterface? nullableExternal;
|
|
||||||
// Optional arguments
|
|
||||||
void passOptionalExternal(optional TestExternalInterface? arg);
|
|
||||||
void passOptionalNonNullExternal(optional TestExternalInterface arg);
|
|
||||||
void passOptionalExternalWithDefault(optional TestExternalInterface? arg = null);
|
|
||||||
|
|
||||||
// Callback interface types
|
|
||||||
TestCallbackInterface receiveCallbackInterface();
|
|
||||||
TestCallbackInterface? receiveNullableCallbackInterface();
|
|
||||||
TestCallbackInterface receiveWeakCallbackInterface();
|
|
||||||
TestCallbackInterface? receiveWeakNullableCallbackInterface();
|
|
||||||
void passCallbackInterface(TestCallbackInterface arg);
|
|
||||||
void passNullableCallbackInterface(TestCallbackInterface? arg);
|
|
||||||
attribute TestCallbackInterface nonNullCallbackInterface;
|
|
||||||
attribute TestCallbackInterface? nullableCallbackInterface;
|
|
||||||
// Optional arguments
|
|
||||||
void passOptionalCallbackInterface(optional TestCallbackInterface? arg);
|
|
||||||
void passOptionalNonNullCallbackInterface(optional TestCallbackInterface arg);
|
|
||||||
void passOptionalCallbackInterfaceWithDefault(optional TestCallbackInterface? arg = null);
|
|
||||||
|
|
||||||
// Miscellaneous interface tests
|
|
||||||
IndirectlyImplementedInterface receiveConsequentialInterface();
|
|
||||||
void passConsequentialInterface(IndirectlyImplementedInterface arg);
|
|
||||||
|
|
||||||
// Sequence types
|
|
||||||
[Cached, Pure]
|
|
||||||
readonly attribute sequence<long> readonlySequence;
|
|
||||||
[Cached, Pure]
|
|
||||||
readonly attribute sequence<Dict> readonlySequenceOfDictionaries;
|
|
||||||
[Cached, Pure]
|
|
||||||
readonly attribute sequence<Dict>? readonlyNullableSequenceOfDictionaries;
|
|
||||||
[Cached, Pure, Frozen]
|
|
||||||
readonly attribute sequence<long> readonlyFrozenSequence;
|
|
||||||
[Cached, Pure, Frozen]
|
|
||||||
readonly attribute sequence<long>? readonlyFrozenNullableSequence;
|
|
||||||
sequence<long> receiveSequence();
|
|
||||||
sequence<long>? receiveNullableSequence();
|
|
||||||
sequence<long?> receiveSequenceOfNullableInts();
|
|
||||||
sequence<long?>? receiveNullableSequenceOfNullableInts();
|
|
||||||
void passSequence(sequence<long> arg);
|
|
||||||
void passNullableSequence(sequence<long>? arg);
|
|
||||||
void passSequenceOfNullableInts(sequence<long?> arg);
|
|
||||||
void passOptionalSequenceOfNullableInts(optional sequence<long?> arg);
|
|
||||||
void passOptionalNullableSequenceOfNullableInts(optional sequence<long?>? arg);
|
|
||||||
sequence<TestJSImplInterface> receiveCastableObjectSequence();
|
|
||||||
sequence<TestCallbackInterface> receiveCallbackObjectSequence();
|
|
||||||
sequence<TestJSImplInterface?> receiveNullableCastableObjectSequence();
|
|
||||||
sequence<TestCallbackInterface?> receiveNullableCallbackObjectSequence();
|
|
||||||
sequence<TestJSImplInterface>? receiveCastableObjectNullableSequence();
|
|
||||||
sequence<TestJSImplInterface?>? receiveNullableCastableObjectNullableSequence();
|
|
||||||
sequence<TestJSImplInterface> receiveWeakCastableObjectSequence();
|
|
||||||
sequence<TestJSImplInterface?> receiveWeakNullableCastableObjectSequence();
|
|
||||||
sequence<TestJSImplInterface>? receiveWeakCastableObjectNullableSequence();
|
|
||||||
sequence<TestJSImplInterface?>? receiveWeakNullableCastableObjectNullableSequence();
|
|
||||||
void passCastableObjectSequence(sequence<TestJSImplInterface> arg);
|
|
||||||
void passNullableCastableObjectSequence(sequence<TestJSImplInterface?> arg);
|
|
||||||
void passCastableObjectNullableSequence(sequence<TestJSImplInterface>? arg);
|
|
||||||
void passNullableCastableObjectNullableSequence(sequence<TestJSImplInterface?>? arg);
|
|
||||||
void passOptionalSequence(optional sequence<long> arg);
|
|
||||||
void passOptionalSequenceWithDefaultValue(optional sequence<long> arg = []);
|
|
||||||
void passOptionalNullableSequence(optional sequence<long>? arg);
|
|
||||||
void passOptionalNullableSequenceWithDefaultValue(optional sequence<long>? arg = null);
|
|
||||||
void passOptionalNullableSequenceWithDefaultValue2(optional sequence<long>? arg = []);
|
|
||||||
void passOptionalObjectSequence(optional sequence<TestJSImplInterface> arg);
|
|
||||||
void passExternalInterfaceSequence(sequence<TestExternalInterface> arg);
|
|
||||||
void passNullableExternalInterfaceSequence(sequence<TestExternalInterface?> arg);
|
|
||||||
|
|
||||||
sequence<DOMString> receiveStringSequence();
|
|
||||||
sequence<ByteString> receiveByteStringSequence();
|
|
||||||
// Callback interface problem. See bug 843261.
|
|
||||||
//void passStringSequence(sequence<DOMString> arg);
|
|
||||||
sequence<any> receiveAnySequence();
|
|
||||||
sequence<any>? receiveNullableAnySequence();
|
|
||||||
//XXXbz No support for sequence of sequence return values yet.
|
|
||||||
//sequence<sequence<any>> receiveAnySequenceSequence();
|
|
||||||
|
|
||||||
sequence<object> receiveObjectSequence();
|
|
||||||
sequence<object?> receiveNullableObjectSequence();
|
|
||||||
|
|
||||||
void passSequenceOfSequences(sequence<sequence<long>> arg);
|
|
||||||
void passSequenceOfSequencesOfSequences(sequence<sequence<sequence<long>>> arg);
|
|
||||||
//XXXbz No support for sequence of sequence return values yet.
|
|
||||||
//sequence<sequence<long>> receiveSequenceOfSequences();
|
|
||||||
|
|
||||||
// MozMap types
|
|
||||||
void passMozMap(MozMap<long> arg);
|
|
||||||
void passNullableMozMap(MozMap<long>? arg);
|
|
||||||
void passMozMapOfNullableInts(MozMap<long?> arg);
|
|
||||||
void passOptionalMozMapOfNullableInts(optional MozMap<long?> arg);
|
|
||||||
void passOptionalNullableMozMapOfNullableInts(optional MozMap<long?>? arg);
|
|
||||||
void passCastableObjectMozMap(MozMap<TestJSImplInterface> arg);
|
|
||||||
void passNullableCastableObjectMozMap(MozMap<TestJSImplInterface?> arg);
|
|
||||||
void passCastableObjectNullableMozMap(MozMap<TestJSImplInterface>? arg);
|
|
||||||
void passNullableCastableObjectNullableMozMap(MozMap<TestJSImplInterface?>? arg);
|
|
||||||
void passOptionalMozMap(optional MozMap<long> arg);
|
|
||||||
void passOptionalNullableMozMap(optional MozMap<long>? arg);
|
|
||||||
void passOptionalNullableMozMapWithDefaultValue(optional MozMap<long>? arg = null);
|
|
||||||
void passOptionalObjectMozMap(optional MozMap<TestJSImplInterface> arg);
|
|
||||||
void passExternalInterfaceMozMap(MozMap<TestExternalInterface> arg);
|
|
||||||
void passNullableExternalInterfaceMozMap(MozMap<TestExternalInterface?> arg);
|
|
||||||
void passStringMozMap(MozMap<DOMString> arg);
|
|
||||||
void passByteStringMozMap(MozMap<ByteString> arg);
|
|
||||||
void passMozMapOfMozMaps(MozMap<MozMap<long>> arg);
|
|
||||||
MozMap<long> receiveMozMap();
|
|
||||||
MozMap<long>? receiveNullableMozMap();
|
|
||||||
MozMap<long?> receiveMozMapOfNullableInts();
|
|
||||||
MozMap<long?>? receiveNullableMozMapOfNullableInts();
|
|
||||||
//XXXbz No support for MozMap of MozMaps return values yet.
|
|
||||||
//MozMap<MozMap<long>> receiveMozMapOfMozMaps();
|
|
||||||
MozMap<any> receiveAnyMozMap();
|
|
||||||
|
|
||||||
// Typed array types
|
|
||||||
void passArrayBuffer(ArrayBuffer arg);
|
|
||||||
void passNullableArrayBuffer(ArrayBuffer? arg);
|
|
||||||
void passOptionalArrayBuffer(optional ArrayBuffer arg);
|
|
||||||
void passOptionalNullableArrayBuffer(optional ArrayBuffer? arg);
|
|
||||||
void passOptionalNullableArrayBufferWithDefaultValue(optional ArrayBuffer? arg= null);
|
|
||||||
void passArrayBufferView(ArrayBufferView arg);
|
|
||||||
void passInt8Array(Int8Array arg);
|
|
||||||
void passInt16Array(Int16Array arg);
|
|
||||||
void passInt32Array(Int32Array arg);
|
|
||||||
void passUint8Array(Uint8Array arg);
|
|
||||||
void passUint16Array(Uint16Array arg);
|
|
||||||
void passUint32Array(Uint32Array arg);
|
|
||||||
void passUint8ClampedArray(Uint8ClampedArray arg);
|
|
||||||
void passFloat32Array(Float32Array arg);
|
|
||||||
void passFloat64Array(Float64Array arg);
|
|
||||||
void passSequenceOfArrayBuffers(sequence<ArrayBuffer> arg);
|
|
||||||
void passSequenceOfNullableArrayBuffers(sequence<ArrayBuffer?> arg);
|
|
||||||
void passMozMapOfArrayBuffers(MozMap<ArrayBuffer> arg);
|
|
||||||
void passMozMapOfNullableArrayBuffers(MozMap<ArrayBuffer?> arg);
|
|
||||||
void passVariadicTypedArray(Float32Array... arg);
|
|
||||||
void passVariadicNullableTypedArray(Float32Array?... arg);
|
|
||||||
Uint8Array receiveUint8Array();
|
|
||||||
attribute Uint8Array uint8ArrayAttr;
|
|
||||||
|
|
||||||
// DOMString types
|
|
||||||
void passString(DOMString arg);
|
|
||||||
void passNullableString(DOMString? arg);
|
|
||||||
void passOptionalString(optional DOMString arg);
|
|
||||||
void passOptionalStringWithDefaultValue(optional DOMString arg = "abc");
|
|
||||||
void passOptionalNullableString(optional DOMString? arg);
|
|
||||||
void passOptionalNullableStringWithDefaultValue(optional DOMString? arg = null);
|
|
||||||
void passVariadicString(DOMString... arg);
|
|
||||||
|
|
||||||
// ByteString types
|
|
||||||
void passByteString(ByteString arg);
|
|
||||||
void passNullableByteString(ByteString? arg);
|
|
||||||
void passOptionalByteString(optional ByteString arg);
|
|
||||||
void passOptionalByteStringWithDefaultValue(optional ByteString arg = "abc");
|
|
||||||
void passOptionalNullableByteString(optional ByteString? arg);
|
|
||||||
void passOptionalNullableByteStringWithDefaultValue(optional ByteString? arg = null);
|
|
||||||
void passVariadicByteString(ByteString... arg);
|
|
||||||
void passUnionByteString((ByteString or long) arg);
|
|
||||||
void passOptionalUnionByteString(optional (ByteString or long) arg);
|
|
||||||
void passOptionalUnionByteStringWithDefaultValue(optional (ByteString or long) arg = "abc");
|
|
||||||
|
|
||||||
// USVString types
|
|
||||||
void passSVS(USVString arg);
|
|
||||||
void passNullableSVS(USVString? arg);
|
|
||||||
void passOptionalSVS(optional USVString arg);
|
|
||||||
void passOptionalSVSWithDefaultValue(optional USVString arg = "abc");
|
|
||||||
void passOptionalNullableSVS(optional USVString? arg);
|
|
||||||
void passOptionalNullableSVSWithDefaultValue(optional USVString? arg = null);
|
|
||||||
void passVariadicSVS(USVString... arg);
|
|
||||||
USVString receiveSVS();
|
|
||||||
|
|
||||||
// Enumerated types
|
|
||||||
void passEnum(MyTestEnum arg);
|
|
||||||
void passNullableEnum(MyTestEnum? arg);
|
|
||||||
void passOptionalEnum(optional MyTestEnum arg);
|
|
||||||
void passEnumWithDefault(optional MyTestEnum arg = "a");
|
|
||||||
void passOptionalNullableEnum(optional MyTestEnum? arg);
|
|
||||||
void passOptionalNullableEnumWithDefaultValue(optional MyTestEnum? arg = null);
|
|
||||||
void passOptionalNullableEnumWithDefaultValue2(optional MyTestEnum? arg = "a");
|
|
||||||
MyTestEnum receiveEnum();
|
|
||||||
MyTestEnum? receiveNullableEnum();
|
|
||||||
attribute MyTestEnum enumAttribute;
|
|
||||||
readonly attribute MyTestEnum readonlyEnumAttribute;
|
|
||||||
|
|
||||||
// Callback types
|
|
||||||
void passCallback(MyTestCallback arg);
|
|
||||||
void passNullableCallback(MyTestCallback? arg);
|
|
||||||
void passOptionalCallback(optional MyTestCallback arg);
|
|
||||||
void passOptionalNullableCallback(optional MyTestCallback? arg);
|
|
||||||
void passOptionalNullableCallbackWithDefaultValue(optional MyTestCallback? arg = null);
|
|
||||||
MyTestCallback receiveCallback();
|
|
||||||
MyTestCallback? receiveNullableCallback();
|
|
||||||
// Hmm. These two don't work, I think because I need a locally modified version of TestTreatAsNullCallback.
|
|
||||||
//void passNullableTreatAsNullCallback(TestTreatAsNullCallback? arg);
|
|
||||||
//void passOptionalNullableTreatAsNullCallback(optional TestTreatAsNullCallback? arg);
|
|
||||||
void passOptionalNullableTreatAsNullCallbackWithDefaultValue(optional TestTreatAsNullCallback? arg = null);
|
|
||||||
|
|
||||||
// Any types
|
|
||||||
void passAny(any arg);
|
|
||||||
void passVariadicAny(any... arg);
|
|
||||||
void passOptionalAny(optional any arg);
|
|
||||||
void passAnyDefaultNull(optional any arg = null);
|
|
||||||
void passSequenceOfAny(sequence<any> arg);
|
|
||||||
void passNullableSequenceOfAny(sequence<any>? arg);
|
|
||||||
void passOptionalSequenceOfAny(optional sequence<any> arg);
|
|
||||||
void passOptionalNullableSequenceOfAny(optional sequence<any>? arg);
|
|
||||||
void passOptionalSequenceOfAnyWithDefaultValue(optional sequence<any>? arg = null);
|
|
||||||
void passSequenceOfSequenceOfAny(sequence<sequence<any>> arg);
|
|
||||||
void passSequenceOfNullableSequenceOfAny(sequence<sequence<any>?> arg);
|
|
||||||
void passNullableSequenceOfNullableSequenceOfAny(sequence<sequence<any>?>? arg);
|
|
||||||
void passOptionalNullableSequenceOfNullableSequenceOfAny(optional sequence<sequence<any>?>? arg);
|
|
||||||
void passMozMapOfAny(MozMap<any> arg);
|
|
||||||
void passNullableMozMapOfAny(MozMap<any>? arg);
|
|
||||||
void passOptionalMozMapOfAny(optional MozMap<any> arg);
|
|
||||||
void passOptionalNullableMozMapOfAny(optional MozMap<any>? arg);
|
|
||||||
void passOptionalMozMapOfAnyWithDefaultValue(optional MozMap<any>? arg = null);
|
|
||||||
void passMozMapOfMozMapOfAny(MozMap<MozMap<any>> arg);
|
|
||||||
void passMozMapOfNullableMozMapOfAny(MozMap<MozMap<any>?> arg);
|
|
||||||
void passNullableMozMapOfNullableMozMapOfAny(MozMap<MozMap<any>?>? arg);
|
|
||||||
void passOptionalNullableMozMapOfNullableMozMapOfAny(optional MozMap<MozMap<any>?>? arg);
|
|
||||||
void passOptionalNullableMozMapOfNullableSequenceOfAny(optional MozMap<sequence<any>?>? arg);
|
|
||||||
void passOptionalNullableSequenceOfNullableMozMapOfAny(optional sequence<MozMap<any>?>? arg);
|
|
||||||
any receiveAny();
|
|
||||||
|
|
||||||
// object types
|
|
||||||
void passObject(object arg);
|
|
||||||
void passVariadicObject(object... arg);
|
|
||||||
void passNullableObject(object? arg);
|
|
||||||
void passVariadicNullableObject(object... arg);
|
|
||||||
void passOptionalObject(optional object arg);
|
|
||||||
void passOptionalNullableObject(optional object? arg);
|
|
||||||
void passOptionalNullableObjectWithDefaultValue(optional object? arg = null);
|
|
||||||
void passSequenceOfObject(sequence<object> arg);
|
|
||||||
void passSequenceOfNullableObject(sequence<object?> arg);
|
|
||||||
void passNullableSequenceOfObject(sequence<object>? arg);
|
|
||||||
void passOptionalNullableSequenceOfNullableSequenceOfObject(optional sequence<sequence<object>?>? arg);
|
|
||||||
void passOptionalNullableSequenceOfNullableSequenceOfNullableObject(optional sequence<sequence<object?>?>? arg);
|
|
||||||
void passMozMapOfObject(MozMap<object> arg);
|
|
||||||
object receiveObject();
|
|
||||||
object? receiveNullableObject();
|
|
||||||
|
|
||||||
// Union types
|
|
||||||
void passUnion((object or long) arg);
|
|
||||||
// Some union tests are debug-only to avoid creating all those
|
|
||||||
// unused union types in opt builds.
|
|
||||||
#ifdef DEBUG
|
|
||||||
void passUnion2((long or boolean) arg);
|
|
||||||
void passUnion3((object or long or boolean) arg);
|
|
||||||
void passUnion4((Node or long or boolean) arg);
|
|
||||||
void passUnion5((object or boolean) arg);
|
|
||||||
void passUnion6((object or DOMString) arg);
|
|
||||||
void passUnion7((object or DOMString or long) arg);
|
|
||||||
void passUnion8((object or DOMString or boolean) arg);
|
|
||||||
void passUnion9((object or DOMString or long or boolean) arg);
|
|
||||||
void passUnion10(optional (EventInit or long) arg);
|
|
||||||
void passUnion11(optional (CustomEventInit or long) arg);
|
|
||||||
void passUnion12(optional (EventInit or long) arg = 5);
|
|
||||||
void passUnion13(optional (object or long?) arg = null);
|
|
||||||
void passUnion14(optional (object or long?) arg = 5);
|
|
||||||
void passUnion15((sequence<long> or long) arg);
|
|
||||||
void passUnion16(optional (sequence<long> or long) arg);
|
|
||||||
void passUnion17(optional (sequence<long>? or long) arg = 5);
|
|
||||||
void passUnion18((sequence<object> or long) arg);
|
|
||||||
void passUnion19(optional (sequence<object> or long) arg);
|
|
||||||
void passUnion20(optional (sequence<object> or long) arg = []);
|
|
||||||
void passUnion21((MozMap<long> or long) arg);
|
|
||||||
void passUnion22((MozMap<object> or long) arg);
|
|
||||||
void passUnion23((sequence<ImageData> or long) arg);
|
|
||||||
void passUnion24((sequence<ImageData?> or long) arg);
|
|
||||||
void passUnion25((sequence<sequence<ImageData>> or long) arg);
|
|
||||||
void passUnion26((sequence<sequence<ImageData?>> or long) arg);
|
|
||||||
void passUnion27(optional (sequence<DOMString> or EventInit) arg);
|
|
||||||
void passUnion28(optional (EventInit or sequence<DOMString>) arg);
|
|
||||||
void passUnionWithCallback((EventHandler or long) arg);
|
|
||||||
void passUnionWithByteString((ByteString or long) arg);
|
|
||||||
void passUnionWithMozMap((MozMap<DOMString> or DOMString) arg);
|
|
||||||
void passUnionWithMozMapAndSequence((MozMap<DOMString> or sequence<DOMString>) arg);
|
|
||||||
void passUnionWithSequenceAndMozMap((sequence<DOMString> or MozMap<DOMString>) arg);
|
|
||||||
void passUnionWithSVS((USVString or long) arg);
|
|
||||||
#endif
|
|
||||||
void passUnionWithNullable((object? or long) arg);
|
|
||||||
void passNullableUnion((object or long)? arg);
|
|
||||||
void passOptionalUnion(optional (object or long) arg);
|
|
||||||
void passOptionalNullableUnion(optional (object or long)? arg);
|
|
||||||
void passOptionalNullableUnionWithDefaultValue(optional (object or long)? arg = null);
|
|
||||||
//void passUnionWithInterfaces((TestJSImplInterface or TestExternalInterface) arg);
|
|
||||||
//void passUnionWithInterfacesAndNullable((TestJSImplInterface? or TestExternalInterface) arg);
|
|
||||||
//void passUnionWithSequence((sequence<object> or long) arg);
|
|
||||||
void passUnionWithArrayBuffer((ArrayBuffer or long) arg);
|
|
||||||
void passUnionWithString((DOMString or object) arg);
|
|
||||||
// Using an enum in a union. Note that we use some enum not declared in our
|
|
||||||
// binding file, because UnionTypes.h will need to include the binding header
|
|
||||||
// for this enum. Pick an enum from an interface that won't drag in too much
|
|
||||||
// stuff.
|
|
||||||
void passUnionWithEnum((SupportedType or object) arg);
|
|
||||||
|
|
||||||
// Trying to use a callback in a union won't include the test
|
|
||||||
// headers, unfortunately, so won't compile.
|
|
||||||
// void passUnionWithCallback((MyTestCallback or long) arg);
|
|
||||||
void passUnionWithObject((object or long) arg);
|
|
||||||
//void passUnionWithDict((Dict or long) arg);
|
|
||||||
|
|
||||||
void passUnionWithDefaultValue1(optional (double or DOMString) arg = "");
|
|
||||||
void passUnionWithDefaultValue2(optional (double or DOMString) arg = 1);
|
|
||||||
void passUnionWithDefaultValue3(optional (double or DOMString) arg = 1.5);
|
|
||||||
void passUnionWithDefaultValue4(optional (float or DOMString) arg = "");
|
|
||||||
void passUnionWithDefaultValue5(optional (float or DOMString) arg = 1);
|
|
||||||
void passUnionWithDefaultValue6(optional (float or DOMString) arg = 1.5);
|
|
||||||
void passUnionWithDefaultValue7(optional (unrestricted double or DOMString) arg = "");
|
|
||||||
void passUnionWithDefaultValue8(optional (unrestricted double or DOMString) arg = 1);
|
|
||||||
void passUnionWithDefaultValue9(optional (unrestricted double or DOMString) arg = 1.5);
|
|
||||||
void passUnionWithDefaultValue10(optional (unrestricted double or DOMString) arg = Infinity);
|
|
||||||
void passUnionWithDefaultValue11(optional (unrestricted float or DOMString) arg = "");
|
|
||||||
void passUnionWithDefaultValue12(optional (unrestricted float or DOMString) arg = 1);
|
|
||||||
void passUnionWithDefaultValue13(optional (unrestricted float or DOMString) arg = Infinity);
|
|
||||||
void passUnionWithDefaultValue14(optional (double or ByteString) arg = "");
|
|
||||||
void passUnionWithDefaultValue15(optional (double or ByteString) arg = 1);
|
|
||||||
void passUnionWithDefaultValue16(optional (double or ByteString) arg = 1.5);
|
|
||||||
void passUnionWithDefaultValue17(optional (double or SupportedType) arg = "text/html");
|
|
||||||
void passUnionWithDefaultValue18(optional (double or SupportedType) arg = 1);
|
|
||||||
void passUnionWithDefaultValue19(optional (double or SupportedType) arg = 1.5);
|
|
||||||
|
|
||||||
void passNullableUnionWithDefaultValue1(optional (double or DOMString)? arg = "");
|
|
||||||
void passNullableUnionWithDefaultValue2(optional (double or DOMString)? arg = 1);
|
|
||||||
void passNullableUnionWithDefaultValue3(optional (double or DOMString)? arg = null);
|
|
||||||
void passNullableUnionWithDefaultValue4(optional (float or DOMString)? arg = "");
|
|
||||||
void passNullableUnionWithDefaultValue5(optional (float or DOMString)? arg = 1);
|
|
||||||
void passNullableUnionWithDefaultValue6(optional (float or DOMString)? arg = null);
|
|
||||||
void passNullableUnionWithDefaultValue7(optional (unrestricted double or DOMString)? arg = "");
|
|
||||||
void passNullableUnionWithDefaultValue8(optional (unrestricted double or DOMString)? arg = 1);
|
|
||||||
void passNullableUnionWithDefaultValue9(optional (unrestricted double or DOMString)? arg = null);
|
|
||||||
void passNullableUnionWithDefaultValue10(optional (unrestricted float or DOMString)? arg = "");
|
|
||||||
void passNullableUnionWithDefaultValue11(optional (unrestricted float or DOMString)? arg = 1);
|
|
||||||
void passNullableUnionWithDefaultValue12(optional (unrestricted float or DOMString)? arg = null);
|
|
||||||
void passNullableUnionWithDefaultValue13(optional (double or ByteString)? arg = "");
|
|
||||||
void passNullableUnionWithDefaultValue14(optional (double or ByteString)? arg = 1);
|
|
||||||
void passNullableUnionWithDefaultValue15(optional (double or ByteString)? arg = 1.5);
|
|
||||||
void passNullableUnionWithDefaultValue16(optional (double or ByteString)? arg = null);
|
|
||||||
void passNullableUnionWithDefaultValue17(optional (double or SupportedType)? arg = "text/html");
|
|
||||||
void passNullableUnionWithDefaultValue18(optional (double or SupportedType)? arg = 1);
|
|
||||||
void passNullableUnionWithDefaultValue19(optional (double or SupportedType)? arg = 1.5);
|
|
||||||
void passNullableUnionWithDefaultValue20(optional (double or SupportedType)? arg = null);
|
|
||||||
|
|
||||||
void passSequenceOfUnions(sequence<(CanvasPattern or CanvasGradient)> arg);
|
|
||||||
void passSequenceOfUnions2(sequence<(object or long)> arg);
|
|
||||||
void passVariadicUnion((CanvasPattern or CanvasGradient)... arg);
|
|
||||||
|
|
||||||
void passSequenceOfNullableUnions(sequence<(CanvasPattern or CanvasGradient)?> arg);
|
|
||||||
void passVariadicNullableUnion((CanvasPattern or CanvasGradient)?... arg);
|
|
||||||
void passMozMapOfUnions(MozMap<(CanvasPattern or CanvasGradient)> arg);
|
|
||||||
// XXXbz no move constructor on some unions
|
|
||||||
// void passMozMapOfUnions2(MozMap<(object or long)> arg);
|
|
||||||
|
|
||||||
(CanvasPattern or CanvasGradient) receiveUnion();
|
|
||||||
(object or long) receiveUnion2();
|
|
||||||
(CanvasPattern? or CanvasGradient) receiveUnionContainingNull();
|
|
||||||
(CanvasPattern or CanvasGradient)? receiveNullableUnion();
|
|
||||||
(object or long)? receiveNullableUnion2();
|
|
||||||
|
|
||||||
attribute (CanvasPattern or CanvasGradient) writableUnion;
|
|
||||||
attribute (CanvasPattern? or CanvasGradient) writableUnionContainingNull;
|
|
||||||
attribute (CanvasPattern or CanvasGradient)? writableNullableUnion;
|
|
||||||
|
|
||||||
// Date types
|
|
||||||
void passDate(Date arg);
|
|
||||||
void passNullableDate(Date? arg);
|
|
||||||
void passOptionalDate(optional Date arg);
|
|
||||||
void passOptionalNullableDate(optional Date? arg);
|
|
||||||
void passOptionalNullableDateWithDefaultValue(optional Date? arg = null);
|
|
||||||
void passDateSequence(sequence<Date> arg);
|
|
||||||
void passNullableDateSequence(sequence<Date?> arg);
|
|
||||||
void passDateMozMap(MozMap<Date> arg);
|
|
||||||
Date receiveDate();
|
|
||||||
Date? receiveNullableDate();
|
|
||||||
|
|
||||||
// Promise types
|
|
||||||
void passPromise(Promise<any> arg);
|
|
||||||
void passNullablePromise(Promise<any>? arg);
|
|
||||||
void passOptionalPromise(optional Promise<any> arg);
|
|
||||||
void passOptionalNullablePromise(optional Promise<any>? arg);
|
|
||||||
void passOptionalNullablePromiseWithDefaultValue(optional Promise<any>? arg = null);
|
|
||||||
void passPromiseSequence(sequence<Promise<any>> arg);
|
|
||||||
void passNullablePromiseSequence(sequence<Promise<any>?> arg);
|
|
||||||
Promise<any> receivePromise();
|
|
||||||
Promise<any> receiveAddrefedPromise();
|
|
||||||
|
|
||||||
// binaryNames tests
|
|
||||||
void methodRenamedFrom();
|
|
||||||
[BinaryName="otherMethodRenamedTo"]
|
|
||||||
void otherMethodRenamedFrom();
|
|
||||||
void methodRenamedFrom(byte argument);
|
|
||||||
readonly attribute byte attributeGetterRenamedFrom;
|
|
||||||
attribute byte attributeRenamedFrom;
|
|
||||||
[BinaryName="otherAttributeRenamedTo"]
|
|
||||||
attribute byte otherAttributeRenamedFrom;
|
|
||||||
|
|
||||||
void passDictionary(optional Dict x);
|
|
||||||
void passDictionary2(Dict x);
|
|
||||||
[Cached, Pure]
|
|
||||||
readonly attribute Dict readonlyDictionary;
|
|
||||||
[Cached, Pure]
|
|
||||||
readonly attribute Dict? readonlyNullableDictionary;
|
|
||||||
[Cached, Pure]
|
|
||||||
attribute Dict writableDictionary;
|
|
||||||
[Cached, Pure, Frozen]
|
|
||||||
readonly attribute Dict readonlyFrozenDictionary;
|
|
||||||
[Cached, Pure, Frozen]
|
|
||||||
readonly attribute Dict? readonlyFrozenNullableDictionary;
|
|
||||||
[Cached, Pure, Frozen]
|
|
||||||
attribute Dict writableFrozenDictionary;
|
|
||||||
Dict receiveDictionary();
|
|
||||||
Dict? receiveNullableDictionary();
|
|
||||||
void passOtherDictionary(optional GrandparentDict x);
|
|
||||||
void passSequenceOfDictionaries(sequence<Dict> x);
|
|
||||||
void passMozMapOfDictionaries(MozMap<GrandparentDict> x);
|
|
||||||
// No support for nullable dictionaries inside a sequence (nor should there be)
|
|
||||||
// void passSequenceOfNullableDictionaries(sequence<Dict?> x);
|
|
||||||
void passDictionaryOrLong(optional Dict x);
|
|
||||||
void passDictionaryOrLong(long x);
|
|
||||||
|
|
||||||
void passDictContainingDict(optional DictContainingDict arg);
|
|
||||||
void passDictContainingSequence(optional DictContainingSequence arg);
|
|
||||||
DictContainingSequence receiveDictContainingSequence();
|
|
||||||
void passVariadicDictionary(Dict... arg);
|
|
||||||
|
|
||||||
// EnforceRange/Clamp tests
|
|
||||||
void dontEnforceRangeOrClamp(byte arg);
|
|
||||||
void doEnforceRange([EnforceRange] byte arg);
|
|
||||||
void doClamp([Clamp] byte arg);
|
|
||||||
[EnforceRange] attribute byte enforcedByte;
|
|
||||||
[Clamp] attribute byte clampedByte;
|
|
||||||
|
|
||||||
// Typedefs
|
|
||||||
const myLong myLongConstant = 5;
|
|
||||||
void exerciseTypedefInterfaces1(AnotherNameForTestJSImplInterface arg);
|
|
||||||
AnotherNameForTestJSImplInterface exerciseTypedefInterfaces2(NullableTestJSImplInterface arg);
|
|
||||||
void exerciseTypedefInterfaces3(YetAnotherNameForTestJSImplInterface arg);
|
|
||||||
|
|
||||||
// Deprecated methods and attributes
|
|
||||||
[Deprecated="GetAttributeNode"]
|
|
||||||
attribute byte deprecatedAttribute;
|
|
||||||
[Deprecated="GetAttributeNode"]
|
|
||||||
byte deprecatedMethod();
|
|
||||||
[Deprecated="GetAttributeNode"]
|
|
||||||
void deprecatedMethodWithContext(any arg);
|
|
||||||
|
|
||||||
// Static methods and attributes
|
|
||||||
// FIXME: Bug 863952 Static things are not supported yet
|
|
||||||
/*
|
|
||||||
static attribute boolean staticAttribute;
|
|
||||||
static void staticMethod(boolean arg);
|
|
||||||
static void staticMethodWithContext(any arg);
|
|
||||||
|
|
||||||
// Deprecated static methods and attributes
|
|
||||||
[Deprecated="GetAttributeNode"]
|
|
||||||
static attribute byte staticDeprecatedAttribute;
|
|
||||||
[Deprecated="GetAttributeNode"]
|
|
||||||
static byte staticDeprecatedMethod();
|
|
||||||
[Deprecated="GetAttributeNode"]
|
|
||||||
static byte staticDeprecatedMethodWithContext();
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Overload resolution tests
|
|
||||||
//void overload1(DOMString... strs);
|
|
||||||
boolean overload1(TestJSImplInterface arg);
|
|
||||||
TestJSImplInterface overload1(DOMString strs, TestJSImplInterface arg);
|
|
||||||
void overload2(TestJSImplInterface arg);
|
|
||||||
void overload2(optional Dict arg);
|
|
||||||
void overload2(boolean arg);
|
|
||||||
void overload2(DOMString arg);
|
|
||||||
void overload2(Date arg);
|
|
||||||
void overload3(TestJSImplInterface arg);
|
|
||||||
void overload3(MyTestCallback arg);
|
|
||||||
void overload3(boolean arg);
|
|
||||||
void overload4(TestJSImplInterface arg);
|
|
||||||
void overload4(TestCallbackInterface arg);
|
|
||||||
void overload4(DOMString arg);
|
|
||||||
void overload5(long arg);
|
|
||||||
void overload5(MyTestEnum arg);
|
|
||||||
void overload6(long arg);
|
|
||||||
void overload6(boolean arg);
|
|
||||||
void overload7(long arg);
|
|
||||||
void overload7(boolean arg);
|
|
||||||
void overload7(ByteString arg);
|
|
||||||
void overload8(long arg);
|
|
||||||
void overload8(TestJSImplInterface arg);
|
|
||||||
void overload9(long? arg);
|
|
||||||
void overload9(DOMString arg);
|
|
||||||
void overload10(long? arg);
|
|
||||||
void overload10(object arg);
|
|
||||||
void overload11(long arg);
|
|
||||||
void overload11(DOMString? arg);
|
|
||||||
void overload12(long arg);
|
|
||||||
void overload12(boolean? arg);
|
|
||||||
void overload13(long? arg);
|
|
||||||
void overload13(boolean arg);
|
|
||||||
void overload14(optional long arg);
|
|
||||||
void overload14(TestInterface arg);
|
|
||||||
void overload15(long arg);
|
|
||||||
void overload15(optional TestInterface arg);
|
|
||||||
void overload16(long arg);
|
|
||||||
void overload16(optional TestInterface? arg);
|
|
||||||
void overload17(sequence<long> arg);
|
|
||||||
void overload17(MozMap<long> arg);
|
|
||||||
void overload18(MozMap<DOMString> arg);
|
|
||||||
void overload18(sequence<DOMString> arg);
|
|
||||||
void overload19(sequence<long> arg);
|
|
||||||
void overload19(optional Dict arg);
|
|
||||||
void overload20(optional Dict arg);
|
|
||||||
void overload20(sequence<long> arg);
|
|
||||||
|
|
||||||
// Variadic handling
|
|
||||||
void passVariadicThirdArg(DOMString arg1, long arg2, TestJSImplInterface... arg3);
|
|
||||||
|
|
||||||
// Conditionally exposed methods/attributes
|
|
||||||
[Pref="abc.def"]
|
|
||||||
readonly attribute boolean prefable1;
|
|
||||||
[Pref="abc.def"]
|
|
||||||
readonly attribute boolean prefable2;
|
|
||||||
[Pref="ghi.jkl"]
|
|
||||||
readonly attribute boolean prefable3;
|
|
||||||
[Pref="ghi.jkl"]
|
|
||||||
readonly attribute boolean prefable4;
|
|
||||||
[Pref="abc.def"]
|
|
||||||
readonly attribute boolean prefable5;
|
|
||||||
[Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
readonly attribute boolean prefable6;
|
|
||||||
[Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
readonly attribute boolean prefable7;
|
|
||||||
[Pref="ghi.jkl", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
readonly attribute boolean prefable8;
|
|
||||||
[Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
readonly attribute boolean prefable9;
|
|
||||||
[Pref="abc.def"]
|
|
||||||
void prefable10();
|
|
||||||
[Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
void prefable11();
|
|
||||||
[Pref="abc.def", Func="TestFuncControlledMember"]
|
|
||||||
readonly attribute boolean prefable12;
|
|
||||||
[Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
void prefable13();
|
|
||||||
[Pref="abc.def", Func="TestFuncControlledMember"]
|
|
||||||
readonly attribute boolean prefable14;
|
|
||||||
[Func="TestFuncControlledMember"]
|
|
||||||
readonly attribute boolean prefable15;
|
|
||||||
[Func="TestFuncControlledMember"]
|
|
||||||
readonly attribute boolean prefable16;
|
|
||||||
[Pref="abc.def", Func="TestFuncControlledMember"]
|
|
||||||
void prefable17();
|
|
||||||
[Func="TestFuncControlledMember"]
|
|
||||||
void prefable18();
|
|
||||||
[Func="TestFuncControlledMember"]
|
|
||||||
void prefable19();
|
|
||||||
[Pref="abc.def", Func="TestFuncControlledMember", ChromeOnly]
|
|
||||||
void prefable20();
|
|
||||||
|
|
||||||
// Conditionally exposed methods/attributes involving [SecureContext]
|
|
||||||
[SecureContext]
|
|
||||||
readonly attribute boolean conditionalOnSecureContext1;
|
|
||||||
[SecureContext, Pref="abc.def"]
|
|
||||||
readonly attribute boolean conditionalOnSecureContext2;
|
|
||||||
[SecureContext, Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
readonly attribute boolean conditionalOnSecureContext3;
|
|
||||||
[SecureContext, Pref="abc.def", Func="TestFuncControlledMember"]
|
|
||||||
readonly attribute boolean conditionalOnSecureContext4;
|
|
||||||
[SecureContext]
|
|
||||||
void conditionalOnSecureContext5();
|
|
||||||
[SecureContext, Pref="abc.def"]
|
|
||||||
void conditionalOnSecureContext6();
|
|
||||||
[SecureContext, Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
|
|
||||||
void conditionalOnSecureContext7();
|
|
||||||
[SecureContext, Pref="abc.def", Func="TestFuncControlledMember"]
|
|
||||||
void conditionalOnSecureContext8();
|
|
||||||
|
|
||||||
// Miscellania
|
|
||||||
[LenientThis] attribute long attrWithLenientThis;
|
|
||||||
// FIXME: Bug 863954 Unforgeable things get all confused when
|
|
||||||
// non-JS-implemented interfaces inherit from JS-implemented ones or vice
|
|
||||||
// versa.
|
|
||||||
// [Unforgeable] readonly attribute long unforgeableAttr;
|
|
||||||
// [Unforgeable, ChromeOnly] readonly attribute long unforgeableAttr2;
|
|
||||||
// [Unforgeable] long unforgeableMethod();
|
|
||||||
// [Unforgeable, ChromeOnly] long unforgeableMethod2();
|
|
||||||
// FIXME: Bug 863955 No stringifiers yet
|
|
||||||
// stringifier;
|
|
||||||
void passRenamedInterface(TestRenamedInterface arg);
|
|
||||||
[PutForwards=writableByte] readonly attribute TestJSImplInterface putForwardsAttr;
|
|
||||||
[PutForwards=writableByte, LenientThis] readonly attribute TestJSImplInterface putForwardsAttr2;
|
|
||||||
[PutForwards=writableByte, ChromeOnly] readonly attribute TestJSImplInterface putForwardsAttr3;
|
|
||||||
[Throws] void throwingMethod();
|
|
||||||
[Throws] attribute boolean throwingAttr;
|
|
||||||
[GetterThrows] attribute boolean throwingGetterAttr;
|
|
||||||
[SetterThrows] attribute boolean throwingSetterAttr;
|
|
||||||
[CEReactions] void ceReactionsMethod();
|
|
||||||
[CEReactions] void ceReactionsMethodOverload();
|
|
||||||
[CEReactions] void ceReactionsMethodOverload(DOMString bar);
|
|
||||||
[CEReactions] attribute boolean ceReactionsAttr;
|
|
||||||
// NeedsSubjectPrincipal not supported on JS-implemented things for
|
|
||||||
// now, because we always pass in the caller principal anyway.
|
|
||||||
// [NeedsSubjectPrincipal] void needsSubjectPrincipalMethod();
|
|
||||||
// [NeedsSubjectPrincipal] attribute boolean needsSubjectPrincipalAttr;
|
|
||||||
// legacycaller short(unsigned long arg1, TestInterface arg2);
|
|
||||||
void passArgsWithDefaults(optional long arg1,
|
|
||||||
optional TestInterface? arg2 = null,
|
|
||||||
optional Dict arg3, optional double arg4 = 5.0,
|
|
||||||
optional float arg5);
|
|
||||||
attribute any jsonifierShouldSkipThis;
|
|
||||||
attribute TestParentInterface jsonifierShouldSkipThis2;
|
|
||||||
attribute TestCallbackInterface jsonifierShouldSkipThis3;
|
|
||||||
jsonifier;
|
|
||||||
|
|
||||||
attribute byte dashed-attribute;
|
|
||||||
void dashed-method();
|
|
||||||
|
|
||||||
// If you add things here, add them to TestCodeGen as well
|
|
||||||
};
|
|
||||||
|
|
||||||
[NavigatorProperty="TestNavigator", JSImplementation="@mozilla.org/test;1"]
|
|
||||||
interface TestNavigator {
|
|
||||||
};
|
|
||||||
|
|
||||||
[Constructor, NavigatorProperty="TestNavigatorWithConstructor", JSImplementation="@mozilla.org/test;1"]
|
|
||||||
interface TestNavigatorWithConstructor {
|
|
||||||
};
|
|
||||||
|
|
||||||
interface TestCImplementedInterface : TestJSImplInterface {
|
|
||||||
};
|
|
||||||
|
|
||||||
interface TestCImplementedInterface2 {
|
|
||||||
};
|
|
||||||
|
|
||||||
[NoInterfaceObject,
|
|
||||||
JSImplementation="@mozilla.org/test-js-impl-interface;2"]
|
|
||||||
interface TestJSImplNoInterfaceObject {
|
|
||||||
[Cached, Pure]
|
|
||||||
readonly attribute byte cachedByte;
|
|
||||||
};
|
|
|
@ -1,29 +0,0 @@
|
||||||
/* -*- Mode: IDL; 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/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
[Constructor, JSImplementation="@mozilla.org/test-js-impl-interface2;1"]
|
|
||||||
interface TestJSImplInterface2 : TestCImplementedInterface {
|
|
||||||
};
|
|
||||||
|
|
||||||
[Constructor, JSImplementation="@mozilla.org/test-js-impl-interface3;1"]
|
|
||||||
interface TestJSImplInterface3 : TestCImplementedInterface2 {
|
|
||||||
};
|
|
||||||
|
|
||||||
// Important: TestJSImplInterface5 needs to come before TestJSImplInterface6 in
|
|
||||||
// this file to test what it's trying to test.
|
|
||||||
[Constructor, JSImplementation="@mozilla.org/test-js-impl-interface5;1"]
|
|
||||||
interface TestJSImplInterface5 : TestJSImplInterface6 {
|
|
||||||
};
|
|
||||||
|
|
||||||
// Important: TestJSImplInterface6 needs to come after TestJSImplInterface3 in
|
|
||||||
// this file to test what it's trying to test.
|
|
||||||
[Constructor, JSImplementation="@mozilla.org/test-js-impl-interface6;1"]
|
|
||||||
interface TestJSImplInterface6 : TestJSImplInterface3 {
|
|
||||||
};
|
|
||||||
|
|
||||||
[Constructor, JSImplementation="@mozilla.org/test-js-impl-interface4;1"]
|
|
||||||
interface TestJSImplInterface4 : EventTarget {
|
|
||||||
};
|
|
|
@ -1,7 +0,0 @@
|
||||||
/* -*- Mode: IDL; 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/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef TestInterface YetAnotherNameForTestInterface;
|
|
|
@ -1,22 +0,0 @@
|
||||||
[DEFAULT]
|
|
||||||
support-files =
|
|
||||||
!/dom/bindings/test/file_bug775543.html
|
|
||||||
!/dom/bindings/test/file_document_location_set_via_xray.html
|
|
||||||
!/dom/bindings/test/file_dom_xrays.html
|
|
||||||
!/dom/bindings/test/file_proxies_via_xray.html
|
|
||||||
|
|
||||||
[test_bug775543.html]
|
|
||||||
[test_document_location_set_via_xray.html]
|
|
||||||
[test_dom_xrays.html]
|
|
||||||
[test_proxies_via_xray.html]
|
|
||||||
[test_document_location_via_xray_cached.html]
|
|
||||||
[test_blacklisted_prerendering_function.xul]
|
|
||||||
support-files =
|
|
||||||
file_focuser.html
|
|
||||||
file_fullScreenPropertyAccessor.html
|
|
||||||
skip-if = e10s # prerendering doesn't work in e10s yet
|
|
||||||
[test_kill_longrunning_prerendered_content.xul]
|
|
||||||
skip-if = e10s # prerendering doesn't work in e10s yet
|
|
||||||
[test_bug1123516_maplikesetlikechrome.xul]
|
|
||||||
skip-if = debug == false
|
|
||||||
[test_bug1287912.html]
|
|
|
@ -1,12 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<body>
|
|
||||||
<script type="application/javascript">
|
|
||||||
function runTest()
|
|
||||||
{
|
|
||||||
return [ parent.HTMLElement.prototype instanceof Element,
|
|
||||||
parent.HTMLElement.prototype instanceof parent.Element ];
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,5 +0,0 @@
|
||||||
<body>
|
|
||||||
<script>
|
|
||||||
worker = new Worker("a");
|
|
||||||
</script>
|
|
||||||
</body>
|
|
|
@ -1,5 +0,0 @@
|
||||||
<body>
|
|
||||||
<script>
|
|
||||||
document.x = 5;
|
|
||||||
</script>
|
|
||||||
</body>
|
|
|
@ -1,24 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<script>
|
|
||||||
window.expando = 42;
|
|
||||||
window.shadowedIframe = 42;
|
|
||||||
Object.setPrototypeOf(window, Object.create(Window.prototype,
|
|
||||||
{
|
|
||||||
shadowedIframe: { value: 42 },
|
|
||||||
iframe: { value: 42 },
|
|
||||||
document: { value: 42 },
|
|
||||||
addEventListener: { value: 42 },
|
|
||||||
toString: { value: 42 }
|
|
||||||
}));
|
|
||||||
window.documentElement.expando = 42;
|
|
||||||
Object.defineProperty(window.documentElement, "version", { value: 42 });
|
|
||||||
</script>
|
|
||||||
<iframe name="shadowedIframe" id="shadowedIframe"></iframe>
|
|
||||||
<iframe name="iframe" id="iframe"></iframe>
|
|
||||||
<iframe name="document" id="document"></iframe>
|
|
||||||
<iframe name="self" id="self"></iframe>
|
|
||||||
<iframe name="addEventListener" id="addEventListener"></iframe>
|
|
||||||
<iframe name="toString" id="toString"></iframe>
|
|
||||||
<iframe name="item" id="item"></iframe>
|
|
||||||
</html>
|
|
|
@ -1,24 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<div id="stage"></div>
|
|
||||||
<script>
|
|
||||||
function stage(str) {
|
|
||||||
var s = document.getElementById("stage");
|
|
||||||
s.textContent = str;
|
|
||||||
}
|
|
||||||
stage("before");
|
|
||||||
setTimeout(function() {
|
|
||||||
stage("in timeout");
|
|
||||||
});
|
|
||||||
setInterval(function() {
|
|
||||||
stage("in interval");
|
|
||||||
});
|
|
||||||
addEventListener("keydown", function() {
|
|
||||||
stage("keydown");
|
|
||||||
}, false);
|
|
||||||
try {
|
|
||||||
focus();
|
|
||||||
stage("after");
|
|
||||||
} catch(e) {
|
|
||||||
stage("exception raised");
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -1,24 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<div id="stage"></div>
|
|
||||||
<script>
|
|
||||||
function stage(str) {
|
|
||||||
var s = document.getElementById("stage");
|
|
||||||
s.textContent = str;
|
|
||||||
}
|
|
||||||
stage("before");
|
|
||||||
setTimeout(function() {
|
|
||||||
stage("in timeout");
|
|
||||||
});
|
|
||||||
setInterval(function() {
|
|
||||||
stage("in interval");
|
|
||||||
});
|
|
||||||
addEventListener("keydown", function() {
|
|
||||||
stage("keydown");
|
|
||||||
}, false);
|
|
||||||
try {
|
|
||||||
window.fullScreen;
|
|
||||||
stage("after");
|
|
||||||
} catch(e) {
|
|
||||||
stage("exception raised");
|
|
||||||
}
|
|
||||||
</script>
|
|
|
@ -1,8 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<script>
|
|
||||||
document.x = 5
|
|
||||||
</script>
|
|
||||||
<img id="y" name="y"></div>
|
|
||||||
<img id="z" name="z"></div>
|
|
||||||
</html>
|
|
|
@ -1,13 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>iframe content for test_forOf_iframe.html</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="basket">
|
|
||||||
<span id="egg0"></span>
|
|
||||||
<span id="egg1"><span id="duckling1"></span></span>
|
|
||||||
<span id="egg2"></span>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,79 +0,0 @@
|
||||||
[DEFAULT]
|
|
||||||
support-files =
|
|
||||||
file_InstanceOf.html
|
|
||||||
file_bug775543.html
|
|
||||||
file_document_location_set_via_xray.html
|
|
||||||
file_dom_xrays.html
|
|
||||||
file_proxies_via_xray.html
|
|
||||||
forOf_iframe.html
|
|
||||||
!/js/xpconnect/tests/mochitest/file_empty.html
|
|
||||||
|
|
||||||
[test_async_stacks.html]
|
|
||||||
[test_ByteString.html]
|
|
||||||
[test_InstanceOf.html]
|
|
||||||
[test_bug560072.html]
|
|
||||||
[test_bug742191.html]
|
|
||||||
[test_bug759621.html]
|
|
||||||
[test_bug773326.html]
|
|
||||||
[test_bug788369.html]
|
|
||||||
[test_bug852846.html]
|
|
||||||
[test_bug862092.html]
|
|
||||||
[test_bug1036214.html]
|
|
||||||
skip-if = debug == false
|
|
||||||
[test_bug963382.html]
|
|
||||||
skip-if = debug == false
|
|
||||||
[test_bug1041646.html]
|
|
||||||
[test_bug1123875.html]
|
|
||||||
[test_barewordGetsWindow.html]
|
|
||||||
[test_callback_across_document_open.html]
|
|
||||||
[test_callback_default_thisval.html]
|
|
||||||
[test_cloneAndImportNode.html]
|
|
||||||
[test_defineProperty.html]
|
|
||||||
[test_enums.html]
|
|
||||||
[test_exceptionThrowing.html]
|
|
||||||
[test_exception_messages.html]
|
|
||||||
[test_forOf.html]
|
|
||||||
[test_integers.html]
|
|
||||||
[test_interfaceName.html]
|
|
||||||
[test_interfaceToString.html]
|
|
||||||
[test_exceptions_from_jsimplemented.html]
|
|
||||||
tags = webrtc
|
|
||||||
[test_lenientThis.html]
|
|
||||||
[test_lookupGetter.html]
|
|
||||||
[test_namedNoIndexed.html]
|
|
||||||
[test_named_getter_enumerability.html]
|
|
||||||
[test_Object.prototype_props.html]
|
|
||||||
[test_queryInterface.html]
|
|
||||||
[test_returnUnion.html]
|
|
||||||
skip-if = debug == false
|
|
||||||
[test_usvstring.html]
|
|
||||||
skip-if = debug == false
|
|
||||||
[test_sequence_wrapping.html]
|
|
||||||
subsuite = gpu
|
|
||||||
[test_setWithNamedGetterNoNamedSetter.html]
|
|
||||||
[test_throwing_method_noDCE.html]
|
|
||||||
[test_treat_non_object_as_null.html]
|
|
||||||
[test_traceProtos.html]
|
|
||||||
[test_sequence_detection.html]
|
|
||||||
skip-if = debug == false
|
|
||||||
[test_exception_options_from_jsimplemented.html]
|
|
||||||
skip-if = debug == false
|
|
||||||
[test_promise_rejections_from_jsimplemented.html]
|
|
||||||
skip-if = debug == false
|
|
||||||
[test_worker_UnwrapArg.html]
|
|
||||||
[test_unforgeablesonexpando.html]
|
|
||||||
[test_crossOriginWindowSymbolAccess.html]
|
|
||||||
[test_primitive_this.html]
|
|
||||||
[test_callback_exceptions.html]
|
|
||||||
[test_bug1123516_maplikesetlike.html]
|
|
||||||
skip-if = debug == false
|
|
||||||
[test_jsimplemented_eventhandler.html]
|
|
||||||
skip-if = debug == false
|
|
||||||
[test_iterable.html]
|
|
||||||
skip-if = debug == false
|
|
||||||
[test_oom_reporting.html]
|
|
||||||
[test_domProxyArrayLengthGetter.html]
|
|
||||||
[test_exceptionSanitization.html]
|
|
||||||
skip-if = os == "android"
|
|
||||||
[test_stringBindings.html]
|
|
||||||
skip-if = debug == false
|
|
|
@ -1,58 +0,0 @@
|
||||||
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
|
||||||
# vim: set filetype=python:
|
|
||||||
# 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/.
|
|
||||||
|
|
||||||
DEFINES.update({
|
|
||||||
'IMPL_LIBXUL': True,
|
|
||||||
'MOZILLA_INTERNAL_API': True,
|
|
||||||
})
|
|
||||||
|
|
||||||
# Do NOT export this library. We don't actually want our test code
|
|
||||||
# being added to libxul or anything.
|
|
||||||
|
|
||||||
Library('dombindings_test_s')
|
|
||||||
|
|
||||||
EXTRA_COMPONENTS += [
|
|
||||||
'TestInterfaceJS.js',
|
|
||||||
'TestInterfaceJS.manifest',
|
|
||||||
'TestInterfaceJSMaplike.js'
|
|
||||||
]
|
|
||||||
|
|
||||||
MOCHITEST_MANIFESTS += ['mochitest.ini']
|
|
||||||
|
|
||||||
MOCHITEST_CHROME_MANIFESTS += ['chrome.ini']
|
|
||||||
|
|
||||||
TEST_WEBIDL_FILES += [
|
|
||||||
'TestDictionary.webidl',
|
|
||||||
'TestJSImplInheritanceGen.webidl',
|
|
||||||
'TestTypedef.webidl',
|
|
||||||
]
|
|
||||||
|
|
||||||
PREPROCESSED_TEST_WEBIDL_FILES += [
|
|
||||||
'TestCodeGen.webidl',
|
|
||||||
'TestExampleGen.webidl',
|
|
||||||
'TestJSImplGen.webidl',
|
|
||||||
]
|
|
||||||
|
|
||||||
WEBIDL_EXAMPLE_INTERFACES += [
|
|
||||||
'TestExampleInterface',
|
|
||||||
'TestExampleProxyInterface',
|
|
||||||
'TestExampleWorkerInterface',
|
|
||||||
]
|
|
||||||
|
|
||||||
# Bug 932082 tracks having bindings use namespaced includes.
|
|
||||||
LOCAL_INCLUDES += [
|
|
||||||
'!/dist/include/mozilla/dom',
|
|
||||||
]
|
|
||||||
|
|
||||||
LOCAL_INCLUDES += [
|
|
||||||
'!..',
|
|
||||||
'/dom/bindings',
|
|
||||||
'/js/xpconnect/src',
|
|
||||||
'/js/xpconnect/wrappers',
|
|
||||||
]
|
|
||||||
|
|
||||||
if CONFIG['GNU_CXX']:
|
|
||||||
CXXFLAGS += ['-Wno-error=shadow']
|
|
|
@ -1,32 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=796850
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for ByteString support</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=796850">Mozilla Bug 796850</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 796850 **/
|
|
||||||
var xhr = new XMLHttpRequest();
|
|
||||||
caught = false;
|
|
||||||
try {
|
|
||||||
xhr.open("\u5427", "about:mozilla", true);
|
|
||||||
}
|
|
||||||
catch (TypeError) {
|
|
||||||
caught = true;
|
|
||||||
}
|
|
||||||
ok(caught, "Character values > 255 not rejected for ByteString");
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,54 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=748983
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 748983</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=748983">Mozilla Bug 748983</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 748983 **/
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
|
|
||||||
function runTest()
|
|
||||||
{
|
|
||||||
ok(document instanceof EventTarget, "document is an event target")
|
|
||||||
ok(new XMLHttpRequest() instanceof XMLHttpRequest, "instanceof should work on XHR");
|
|
||||||
ok(HTMLElement.prototype instanceof Node, "instanceof needs to walk the prototype chain")
|
|
||||||
|
|
||||||
var otherWin = document.getElementById("testFrame").contentWindow;
|
|
||||||
|
|
||||||
ok(otherWin.HTMLElement.prototype instanceof otherWin.Node, "Same-origin instanceof of a interface prototype object should work, even if called cross-origin");
|
|
||||||
ok(!(otherWin.HTMLElement.prototype instanceof Node), "Cross-origin instanceof of a interface prototype object shouldn't work");
|
|
||||||
|
|
||||||
// We need to reset HTMLElement.prototype.__proto__ to the original value
|
|
||||||
// before using anything from the harness, otherwise the harness code breaks
|
|
||||||
// in weird ways.
|
|
||||||
HTMLElement.prototype.__proto__ = otherWin.Element.prototype;
|
|
||||||
var [ shouldSucceed, shouldFail ] = otherWin.runTest();
|
|
||||||
shouldSucceed = shouldSucceed && HTMLElement.prototype instanceof otherWin.Element;
|
|
||||||
shouldFail = shouldFail && HTMLElement.prototype instanceof Element;
|
|
||||||
HTMLElement.prototype.__proto__ = Element.prototype;
|
|
||||||
|
|
||||||
ok(shouldSucceed, "If an interface prototype object is on the protochain then instanceof with the interface object should succeed");
|
|
||||||
ok(!shouldFail, "If an interface prototype object is not on the protochain then instanceof with the interface object should succeed");
|
|
||||||
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
<iframe id="testFrame" src="file_InstanceOf.html" onload="runTest()"></iframe>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,20 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<meta charset=utf-8>
|
|
||||||
<title>Test for bug 987110</title>
|
|
||||||
<script src="/resources/testharness.js"></script>
|
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
|
||||||
<div id="log"></div>
|
|
||||||
<script>
|
|
||||||
test(function() {
|
|
||||||
var props = Object.getOwnPropertyNames(Object.prototype);
|
|
||||||
// If you change this list, make sure it continues to match the list in
|
|
||||||
// Codegen.py's CGDictionary.getMemberDefinition method.
|
|
||||||
var expected = [
|
|
||||||
"constructor", "toSource", "toString", "toLocaleString", "valueOf",
|
|
||||||
"hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable",
|
|
||||||
"__defineGetter__", "__defineSetter__", "__lookupGetter__",
|
|
||||||
"__lookupSetter__", "__proto__"
|
|
||||||
];
|
|
||||||
assert_array_equals(props.sort(), expected.sort());
|
|
||||||
}, "Own properties of Object.prototype");
|
|
||||||
</script>
|
|
|
@ -1,108 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1148593
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1148593</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 1148593 **/
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
|
|
||||||
var TESTS;
|
|
||||||
|
|
||||||
function nextTest() {
|
|
||||||
var t = TESTS.pop();
|
|
||||||
if (t) {
|
|
||||||
t();
|
|
||||||
} else {
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function checkStack(functionName) {
|
|
||||||
try {
|
|
||||||
noSuchFunction();
|
|
||||||
} catch (e) {
|
|
||||||
ok(e.stack.indexOf(functionName) >= 0, "stack includes " + functionName);
|
|
||||||
}
|
|
||||||
nextTest();
|
|
||||||
}
|
|
||||||
|
|
||||||
function eventListener() {
|
|
||||||
checkStack("registerEventListener");
|
|
||||||
}
|
|
||||||
function registerEventListener(link) {
|
|
||||||
link.onload = eventListener;
|
|
||||||
}
|
|
||||||
function eventTest() {
|
|
||||||
var link = document.createElement("link");
|
|
||||||
link.rel = "stylesheet";
|
|
||||||
link.href = "data:text/css,";
|
|
||||||
registerEventListener(link);
|
|
||||||
document.body.appendChild(link);
|
|
||||||
}
|
|
||||||
|
|
||||||
function xhrListener() {
|
|
||||||
checkStack("xhrTest");
|
|
||||||
}
|
|
||||||
function xhrTest() {
|
|
||||||
var ourFile = location.href;
|
|
||||||
var x = new XMLHttpRequest();
|
|
||||||
x.onload = xhrListener;
|
|
||||||
x.open("get", ourFile, true);
|
|
||||||
x.send();
|
|
||||||
}
|
|
||||||
|
|
||||||
function rafListener() {
|
|
||||||
checkStack("rafTest");
|
|
||||||
}
|
|
||||||
function rafTest() {
|
|
||||||
requestAnimationFrame(rafListener);
|
|
||||||
}
|
|
||||||
|
|
||||||
var intervalId;
|
|
||||||
function intervalHandler() {
|
|
||||||
clearInterval(intervalId);
|
|
||||||
checkStack("intervalTest");
|
|
||||||
}
|
|
||||||
function intervalTest() {
|
|
||||||
intervalId = setInterval(intervalHandler, 5);
|
|
||||||
}
|
|
||||||
|
|
||||||
function postMessageHandler(ev) {
|
|
||||||
ev.stopPropagation();
|
|
||||||
checkStack("postMessageTest");
|
|
||||||
}
|
|
||||||
function postMessageTest() {
|
|
||||||
window.addEventListener("message", postMessageHandler, true);
|
|
||||||
window.postMessage("whatever", "*");
|
|
||||||
}
|
|
||||||
|
|
||||||
function runTests() {
|
|
||||||
TESTS = [postMessageTest, intervalTest, rafTest, xhrTest, eventTest];
|
|
||||||
nextTest();
|
|
||||||
}
|
|
||||||
|
|
||||||
addLoadEvent(function() {
|
|
||||||
SpecialPowers.pushPrefEnv(
|
|
||||||
{"set": [['javascript.options.asyncstack', true]]},
|
|
||||||
runTests);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1148593">Mozilla Bug 1148593</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,60 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=936056
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 936056</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 936056 **/
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
window.onload = function() {
|
|
||||||
var desc = Object.getOwnPropertyDescriptor(frames[0], "document");
|
|
||||||
if (!desc || !desc.get) {
|
|
||||||
todo(false, "This test does nothing so far, but will once Window is on WebIDL bindings");
|
|
||||||
SimpleTest.finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
get = desc.get;
|
|
||||||
ok(get, "Couldn't find document getter");
|
|
||||||
Object.defineProperty(frames[0], "foo", { get: get, configurable: true });
|
|
||||||
|
|
||||||
var barewordFunc = frames[0].eval("(function (count) { var doc; for (var i = 0; i < count; ++i) doc = foo; return doc.documentElement; })");
|
|
||||||
var qualifiedFunc = frames[0].eval("(function (count) { var doc; for (var i = 0; i < count; ++i) doc = window.document; return doc.documentElement; })");
|
|
||||||
document.querySelector("iframe").onload = function () {
|
|
||||||
// interp
|
|
||||||
is(barewordFunc(1).textContent, "OLD", "Bareword should see own inner 1");
|
|
||||||
is(qualifiedFunc(1).textContent, "NEW",
|
|
||||||
"Qualified should see current inner 1");
|
|
||||||
// baseline
|
|
||||||
is(barewordFunc(100).textContent, "OLD", "Bareword should see own inner 2");
|
|
||||||
is(qualifiedFunc(100).textContent, "NEW",
|
|
||||||
"Qualified should see current inner 2");
|
|
||||||
// ion
|
|
||||||
is(barewordFunc(10000).textContent, "OLD", "Bareword should see own inner 3");
|
|
||||||
is(qualifiedFunc(10000).textContent, "NEW",
|
|
||||||
"Qualified should see current inner 2");
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
frames[0].location = "data:text/plain,NEW";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=936056">Mozilla Bug 936056</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
<iframe src="data:text/plain,OLD"></iframe>
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,124 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
|
|
||||||
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
|
|
||||||
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
|
||||||
xmlns:html="http://www.w3.org/1999/xhtml"
|
|
||||||
onload="runTest();">
|
|
||||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
|
|
||||||
|
|
||||||
<script class="testbody" type="application/javascript">
|
|
||||||
<![CDATA[
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
|
|
||||||
function Listener(aBrowser, aPrerendered, aCallback) {
|
|
||||||
this.init(aBrowser, aPrerendered, aCallback);
|
|
||||||
}
|
|
||||||
|
|
||||||
Listener.prototype = {
|
|
||||||
init: function(aBrowser, aPrerendered, aCallback) {
|
|
||||||
this.mBrowser = aBrowser;
|
|
||||||
this.mPrerendered = aPrerendered;
|
|
||||||
this.mCallback = aCallback;
|
|
||||||
},
|
|
||||||
QueryInterface: function(aIID) {
|
|
||||||
if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
|
|
||||||
aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
|
|
||||||
aIID.equals(Components.interfaces.nsISupports))
|
|
||||||
return this;
|
|
||||||
throw Components.results.NS_NOINTERFACE;
|
|
||||||
},
|
|
||||||
onStateChange : function(aWebProgress, aRequest, aStateFlags, aStatus) {
|
|
||||||
if ((aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_STOP) &&
|
|
||||||
(aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_IS_DOCUMENT)) {
|
|
||||||
var doc = this.mBrowser.contentDocument;
|
|
||||||
var stage = doc.getElementById("stage");
|
|
||||||
if (this.mPrerendered) {
|
|
||||||
is(stage.textContent, "before", "The blacklisted call should properly be intercepted in prerendering mode");
|
|
||||||
} else {
|
|
||||||
// In normal mode, we may or may not have run the timeout and/or the interval.
|
|
||||||
switch (stage.textContent) {
|
|
||||||
case "after":
|
|
||||||
case "in timeout":
|
|
||||||
case "in interval":
|
|
||||||
ok(true, "The blacklisted call should work fine in normal mode");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
ok(false, "The blacklisted call should work fine in normal mode");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
progress.removeProgressListener(progressListener);
|
|
||||||
|
|
||||||
// Set three timeouts to see if the interval triggered
|
|
||||||
var self = this;
|
|
||||||
function checkInterval() {
|
|
||||||
var expected = self.mPrerendered ? "before" : "in interval";
|
|
||||||
var desc = self.mPrerendered ? "No timer should be running" : "Timers should run as normal";
|
|
||||||
is(stage.textContent, expected, desc);
|
|
||||||
// Now, dispatch a key event to the window and see if the keydown handler runs
|
|
||||||
synthesizeKey("a", {}, self.mBrowser.contentWindow);
|
|
||||||
expected = self.mPrerendered ? "before" : "keydown";
|
|
||||||
desc = self.mPrerendered ? "No event handler should be running" : "Event handlers should run as normal";
|
|
||||||
is(stage.textContent, expected, desc);
|
|
||||||
self.mCallback();
|
|
||||||
}
|
|
||||||
setTimeout(function() {
|
|
||||||
setTimeout(function() {
|
|
||||||
setTimeout(function() {
|
|
||||||
checkInterval();
|
|
||||||
}, 0);
|
|
||||||
}, 0);
|
|
||||||
}, 0);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onProgressChange : function(aWebProgress, aRequest,
|
|
||||||
aCurSelfProgress, aMaxSelfProgress,
|
|
||||||
aCurTotalProgress, aMaxTotalProgress) {},
|
|
||||||
onLocationChange : function(aWebProgress, aRequest, aLocation, aFlags) {},
|
|
||||||
onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage) {},
|
|
||||||
onSecurityChange : function(aWebProgress, aRequest, aState) {},
|
|
||||||
mBrowser: null,
|
|
||||||
mPrerendered: false,
|
|
||||||
mCallback: null
|
|
||||||
};
|
|
||||||
|
|
||||||
var progress, progressListener;
|
|
||||||
|
|
||||||
function runTest() {
|
|
||||||
testStep(false, "file_focuser.html", function() {
|
|
||||||
testStep(true, "file_focuser.html", function() {
|
|
||||||
testStep(false, "file_fullScreenPropertyAccessor.html", function() {
|
|
||||||
testStep(true, "file_fullScreenPropertyAccessor.html", function() {
|
|
||||||
SimpleTest.finish();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function testStep(aPrerendered, aFileName, aCallback) {
|
|
||||||
var browser = document.getElementById(aPrerendered ? "prerendered" : "normal");;
|
|
||||||
progressListener = new Listener(browser, aPrerendered, aCallback);
|
|
||||||
var docShell = browser.docShell;
|
|
||||||
progress = docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
|
|
||||||
.getInterface(Components.interfaces.nsIWebProgress);
|
|
||||||
progress.addProgressListener(progressListener,
|
|
||||||
Components.interfaces.nsIWebProgress.NOTIFY_ALL);
|
|
||||||
browser.loadURI("chrome://mochitests/content/chrome/dom/bindings/test/" + aFileName);
|
|
||||||
}
|
|
||||||
|
|
||||||
]]>
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<body id="html_body" xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1069719">Mozilla Bug 1069719</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
<browser prerendered="true" id="prerendered"/>
|
|
||||||
<browser id="normal"/>
|
|
||||||
</window>
|
|
|
@ -1,123 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1036214
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1036214</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for subsumes-checking |any| and |object| for js-implemented WebIDL. **/
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
var xoObjects = [];
|
|
||||||
function setup() {
|
|
||||||
xoObjects.push(window[0]);
|
|
||||||
xoObjects.push(window[0].location);
|
|
||||||
xoObjects.push(SpecialPowers.unwrap(SpecialPowers.wrap(window[0]).document));
|
|
||||||
xoObjects.push(SpecialPowers);
|
|
||||||
xoObjects.push(SpecialPowers.wrap);
|
|
||||||
SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, go);
|
|
||||||
}
|
|
||||||
|
|
||||||
function checkThrows(f, msg) {
|
|
||||||
try {
|
|
||||||
f();
|
|
||||||
ok(false, "Should have thrown: " + msg);
|
|
||||||
} catch (e) {
|
|
||||||
ok(true, "Threw correctly: " + msg);
|
|
||||||
ok(/denied|insecure/.test(e), "Threw security exception: " + e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function go() {
|
|
||||||
|
|
||||||
//
|
|
||||||
// Test the basics of the test interface.
|
|
||||||
//
|
|
||||||
|
|
||||||
var any = { a: 11 };
|
|
||||||
var obj = { b: 22, c: "str" };
|
|
||||||
var obj2 = { foo: "baz" };
|
|
||||||
var myDict = { anyMember: 42, objectMember: { answer: 42 }, objectOrStringMember: { answer: "anobject" },
|
|
||||||
anySequenceMember: [{}, 1, "thirdinsequence"],
|
|
||||||
innerDictionary: { innerObject: { answer: "rabbithole" } } };
|
|
||||||
var t = new TestInterfaceJS(any, obj, myDict);
|
|
||||||
is(Object.getPrototypeOf(t), TestInterfaceJS.prototype, "Prototype setup works correctly");
|
|
||||||
is(t.anyArg, any, "anyArg is correct");
|
|
||||||
is(t.objectArg, obj, "objectArg is correct");
|
|
||||||
is(t.dictionaryArg.anyMember, 42, "dictionaryArg looks correct");
|
|
||||||
is(t.dictionaryArg.objectMember.answer, 42, "dictionaryArg looks correct");
|
|
||||||
t.anyAttr = 2;
|
|
||||||
is(t.anyAttr, 2, "ping-pong any attribute works");
|
|
||||||
t.objAttr = obj2;
|
|
||||||
is(t.objAttr, obj2, "ping-pong object attribute works");
|
|
||||||
t.dictionaryAttr = myDict;
|
|
||||||
is(t.dictionaryAttr.anyMember, 42, "ping-pong dictionary attribute works");
|
|
||||||
is(t.dictionaryAttr.objectMember.answer, 42, "ping-pong dictionary attribute works");
|
|
||||||
|
|
||||||
is(any, t.pingPongAny(any), "ping-pong works with any");
|
|
||||||
is(obj, t.pingPongObject(obj), "ping-pong works with obj");
|
|
||||||
is(obj, t.pingPongObjectOrString(obj), "ping-pong works with obj or string");
|
|
||||||
is("foo", t.pingPongObjectOrString("foo"), "ping-pong works with obj or string");
|
|
||||||
is(t.pingPongDictionary(myDict).anyMember, 42, "ping pong works with dict");
|
|
||||||
is(t.pingPongDictionary(myDict).objectMember.answer, 42, "ping pong works with dict");
|
|
||||||
is(t.pingPongDictionary(myDict).objectOrStringMember.answer, "anobject", "ping pong works with dict");
|
|
||||||
is(t.pingPongDictionary(myDict).anySequenceMember[2], "thirdinsequence", "ping pong works with dict");
|
|
||||||
is(t.pingPongDictionary(myDict).innerDictionary.innerObject.answer, "rabbithole", "ping pong works with layered dicts");
|
|
||||||
is(t.pingPongDictionaryOrLong({anyMember: 42}), 42, "ping pong (dict or long) works with dict");
|
|
||||||
is(t.pingPongDictionaryOrLong(42), 42, "ping pong (dict or long) works with long");
|
|
||||||
ok(/canary/.test(t.pingPongMap({ someVal: 42, someOtherVal: "canary" })), "ping pong works with mozmap");
|
|
||||||
is(t.objectSequenceLength([{}, {}, {}]), 3, "ping pong works with object sequence");
|
|
||||||
is(t.anySequenceLength([42, 'string', {}, undefined]), 4, "ping pong works with any sequence");
|
|
||||||
|
|
||||||
//
|
|
||||||
// Test that we throw in the cross-origin cases.
|
|
||||||
//
|
|
||||||
|
|
||||||
xoObjects.forEach(function(xoObj) {
|
|
||||||
var blank = new TestInterfaceJS();
|
|
||||||
checkThrows(() => new TestInterfaceJS(xoObj, undefined), "any param for constructor");
|
|
||||||
checkThrows(() => new TestInterfaceJS(undefined, xoObj), "obj param for constructor");
|
|
||||||
checkThrows(() => new TestInterfaceJS(undefined, undefined, { anyMember: xoObj }), "any dict param for constructor");
|
|
||||||
checkThrows(() => new TestInterfaceJS(undefined, undefined, { objectMember: xoObj }), "object dict param for constructor");
|
|
||||||
checkThrows(() => new TestInterfaceJS(undefined, undefined, { objectOrStringMember: xoObj }), "union dict param for constructor");
|
|
||||||
checkThrows(() => new TestInterfaceJS(undefined, undefined, { anySequenceMember: [0, xoObj, 'hi' ] }), "sequence dict param for constructor");
|
|
||||||
checkThrows(() => new TestInterfaceJS(undefined, undefined, { innerDictionary: { innerObject: xoObj } }), "inner dict param for constructor");
|
|
||||||
checkThrows(() => t.anyAttr = xoObj, "anyAttr");
|
|
||||||
checkThrows(() => t.objectAttr = xoObj, "objAttr");
|
|
||||||
checkThrows(() => t.dictionaryAttr = { anyMember: xoObj }, "dictionaryAttr any");
|
|
||||||
checkThrows(() => t.dictionaryAttr = { objectMember: xoObj }, "dictionaryAttr object");
|
|
||||||
checkThrows(() => t.pingPongAny(xoObj), "pingpong any");
|
|
||||||
checkThrows(() => t.pingPongObject(xoObj), "pingpong obj");
|
|
||||||
checkThrows(() => t.pingPongObjectOrString(xoObj), "pingpong union");
|
|
||||||
checkThrows(() => t.pingPongDictionary({ anyMember: xoObj }), "dictionary pingpong any");
|
|
||||||
checkThrows(() => t.pingPongDictionary({ objectMember: xoObj }), "dictionary pingpong object");
|
|
||||||
checkThrows(() => t.pingPongDictionary({ anyMember: xoObj, objectMember: xoObj }), "dictionary pingpong both");
|
|
||||||
checkThrows(() => t.pingPongDictionary({ objectOrStringMember: xoObj }), "dictionary pingpong objectorstring");
|
|
||||||
checkThrows(() => t.pingPongDictionaryOrLong({ objectMember: xoObj }), "unionable dictionary");
|
|
||||||
checkThrows(() => t.pingPongDictionaryOrLong({ anyMember: xoObj }), "unionable dictionary");
|
|
||||||
checkThrows(() => t.pingPongMap({ someMember: 42, someOtherMember: {}, crossOriginMember: xoObj }), "mozmap");
|
|
||||||
checkThrows(() => t.objectSequenceLength([{}, {}, xoObj, {}]), "object sequence");
|
|
||||||
checkThrows(() => t.anySequenceLength([42, 'someString', xoObj, {}]), "any sequence");
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1036214">Mozilla Bug 1036214</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
<iframe id="ifr" onload="setup();" src="http://example.org/tests/js/xpconnect/tests/mochitest/file_empty.html"></iframe>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,49 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1041646
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1041646</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 1041646 **/
|
|
||||||
// We need to reject the promise with a DOMException, so make sure we have
|
|
||||||
// something that produces one.
|
|
||||||
function throwException() {
|
|
||||||
document.createTextNode("").appendChild(document);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
throwException();
|
|
||||||
} catch (e) {
|
|
||||||
ok(e instanceof DOMException, "This test won't test what it should be testing");
|
|
||||||
}
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
|
|
||||||
// We want a new DOMException each time here.
|
|
||||||
for (var i = 0; i < 100; ++i) {
|
|
||||||
new Promise(throwException);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now make sure we wait for all those promises above to reject themselves
|
|
||||||
Promise.resolve(1).then(function() {
|
|
||||||
SpecialPowers.gc(); // This should not assert or crash
|
|
||||||
SimpleTest.finish();
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1041646">Mozilla Bug 1041646</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,271 +0,0 @@
|
||||||
<!-- Any copyright is dedicated to the Public Domain.
|
|
||||||
- http://creativecommons.org/publicdomain/zero/1.0/ -->
|
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Test Maplike Interface</title>
|
|
||||||
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<script class="testbody" type="application/javascript">
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, function() {
|
|
||||||
|
|
||||||
base_properties = [["has", "function", 1],
|
|
||||||
["entries", "function", 0],
|
|
||||||
["keys", "function", 0],
|
|
||||||
["values", "function", 0],
|
|
||||||
["forEach", "function", 1],
|
|
||||||
["size", "number"]];
|
|
||||||
maplike_properties = base_properties.concat([["set", "function", 2]]);
|
|
||||||
setlike_properties = base_properties;
|
|
||||||
rw_properties = [["clear", "function", 0],
|
|
||||||
["delete", "function", 1]];
|
|
||||||
setlike_rw_properties = base_properties.concat(rw_properties).concat([["add", "function", 1]]);
|
|
||||||
maplike_rw_properties = maplike_properties.concat(rw_properties).concat([["get", "function",1]]);
|
|
||||||
var testExistence = function testExistence(prefix, obj, properties) {
|
|
||||||
for (var [name, type, args] of properties) {
|
|
||||||
// Properties are somewhere up the proto chain, hasOwnProperty won't work
|
|
||||||
isnot(obj[name], undefined,
|
|
||||||
`${prefix} object has property ${name}`);
|
|
||||||
|
|
||||||
is(typeof obj[name], type,
|
|
||||||
`${prefix} object property ${name} is a ${type}`);
|
|
||||||
// Check function length
|
|
||||||
if (type == "function") {
|
|
||||||
is(obj[name].length, args,
|
|
||||||
`${prefix} object property ${name} is length ${args}`);
|
|
||||||
is(obj[name].name, name,
|
|
||||||
`${prefix} object method name is ${name}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find where property is on proto chain, check for enumerablility there.
|
|
||||||
var owner = obj;
|
|
||||||
while (owner) {
|
|
||||||
var propDesc = Object.getOwnPropertyDescriptor(owner, name);
|
|
||||||
if (propDesc) {
|
|
||||||
ok(!propDesc.enumerable,
|
|
||||||
`${prefix} object property ${name} is not enumerable`);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
owner = Object.getPrototypeOf(owner);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var m;
|
|
||||||
var testSet;
|
|
||||||
var testIndex;
|
|
||||||
// Simple map creation and functionality test
|
|
||||||
info("SimpleMap: Testing simple map creation and functionality");
|
|
||||||
m = new TestInterfaceMaplike();
|
|
||||||
ok(m, "SimpleMap: got a TestInterfaceMaplike object");
|
|
||||||
testExistence("SimpleMap: ", m, maplike_rw_properties);
|
|
||||||
is(m.size, 0, "SimpleMap: size should be zero");
|
|
||||||
ok(!m.has("test"), "SimpleMap: maplike has should return false");
|
|
||||||
is(m.get("test"), undefined, "SimpleMap: maplike get should return undefined on bogus lookup");
|
|
||||||
m1 = m.set("test", 1);
|
|
||||||
is(m, m1, "SimpleMap: return from set should be map object");
|
|
||||||
is(m.size, 1, "SimpleMap: size should be 1");
|
|
||||||
ok(m.has("test"), "SimpleMap: maplike has should return true");
|
|
||||||
is(m.get("test"), 1, "SimpleMap: maplike get should return value entered");
|
|
||||||
m2 = m.set("test2", 2);
|
|
||||||
is(m.size, 2, "SimpleMap: size should be 2");
|
|
||||||
testSet = [["test", 1], ["test2", 2]];
|
|
||||||
testIndex = 0;
|
|
||||||
m.forEach(function(v, k, o) {
|
|
||||||
"use strict";
|
|
||||||
is(o, m, "SimpleMap: foreach obj is correct");
|
|
||||||
is(k, testSet[testIndex][0], "SimpleMap: foreach map key: " + k + " = " + testSet[testIndex][0]);
|
|
||||||
is(v, testSet[testIndex][1], "SimpleMap: foreach map value: " + v + " = " + testSet[testIndex][1]);
|
|
||||||
testIndex += 1;
|
|
||||||
});
|
|
||||||
is(testIndex, 2, "SimpleMap: foreach ran correct number of times");
|
|
||||||
ok(m.has("test2"), "SimpleMap: maplike has should return true");
|
|
||||||
is(m.get("test2"), 2, "SimpleMap: maplike get should return value entered");
|
|
||||||
is(m.delete("test2"), true, "SimpleMap: maplike deletion should return boolean");
|
|
||||||
is(m.size, 1, "SimpleMap: size should be 1");
|
|
||||||
iterable = false;
|
|
||||||
for (var e of m) {
|
|
||||||
iterable = true;
|
|
||||||
is(e[0], "test", "SimpleMap: iterable first array element should be key");
|
|
||||||
is(e[1], 1, "SimpleMap: iterable second array element should be value");
|
|
||||||
}
|
|
||||||
is(m[Symbol.iterator].length, 0, "SimpleMap: @@iterator symbol is correct length");
|
|
||||||
is(m[Symbol.iterator].name, "entries", "SimpleMap: @@iterator symbol has correct name");
|
|
||||||
is(m[Symbol.iterator], m.entries, 'SimpleMap: @@iterator is an alias for "entries"');
|
|
||||||
ok(iterable, "SimpleMap: @@iterator symbol resolved correctly");
|
|
||||||
for (var k of m.keys()) {
|
|
||||||
is(k, "test", "SimpleMap: first keys element should be 'test'");
|
|
||||||
}
|
|
||||||
for (var v of m.values()) {
|
|
||||||
is(v, 1, "SimpleMap: first values elements should be 1");
|
|
||||||
}
|
|
||||||
for (var e of m.entries()) {
|
|
||||||
is(e[0], "test", "SimpleMap: entries first array element should be 'test'");
|
|
||||||
is(e[1], 1, "SimpleMap: entries second array element should be 1");
|
|
||||||
}
|
|
||||||
m.clear();
|
|
||||||
is(m.size, 0, "SimpleMap: size should be 0 after clear");
|
|
||||||
|
|
||||||
// Simple set creation and functionality test
|
|
||||||
info("SimpleSet: Testing simple set creation and functionality");
|
|
||||||
m = new TestInterfaceSetlike();
|
|
||||||
ok(m, "SimpleSet: got a TestInterfaceSetlike object");
|
|
||||||
testExistence("SimpleSet: ", m, setlike_rw_properties);
|
|
||||||
is(m.size, 0, "SimpleSet: size should be zero");
|
|
||||||
ok(!m.has("test"), "SimpleSet: maplike has should return false");
|
|
||||||
m1 = m.add("test");
|
|
||||||
is(m, m1, "SimpleSet: return from set should be map object");
|
|
||||||
is(m.size, 1, "SimpleSet: size should be 1");
|
|
||||||
ok(m.has("test"), "SimpleSet: maplike has should return true");
|
|
||||||
m2 = m.add("test2");
|
|
||||||
is(m.size, 2, "SimpleSet: size should be 2");
|
|
||||||
testSet = ["test", "test2"];
|
|
||||||
testIndex = 0;
|
|
||||||
m.forEach(function(v, k, o) {
|
|
||||||
"use strict";
|
|
||||||
is(o, m, "SimpleSet: foreach obj is correct");
|
|
||||||
is(k, testSet[testIndex], "SimpleSet: foreach set key: " + k + " = " + testSet[testIndex]);
|
|
||||||
testIndex += 1;
|
|
||||||
});
|
|
||||||
is(testIndex, 2, "SimpleSet: foreach ran correct number of times");
|
|
||||||
ok(m.has("test2"), "SimpleSet: maplike has should return true");
|
|
||||||
is(m.delete("test2"), true, "SimpleSet: maplike deletion should return true");
|
|
||||||
is(m.size, 1, "SimpleSet: size should be 1");
|
|
||||||
iterable = false;
|
|
||||||
for (var e of m) {
|
|
||||||
iterable = true;
|
|
||||||
is(e, "test", "SimpleSet: iterable first array element should be key");
|
|
||||||
}
|
|
||||||
is(m[Symbol.iterator].length, 0, "SimpleSet: @@iterator symbol is correct length");
|
|
||||||
is(m[Symbol.iterator].name, "values", "SimpleSet: @@iterator symbol has correct name");
|
|
||||||
is(m[Symbol.iterator], m.values, 'SimpleSet: @@iterator is an alias for "values"');
|
|
||||||
ok(iterable, "SimpleSet: @@iterator symbol resolved correctly");
|
|
||||||
for (var k of m.keys()) {
|
|
||||||
is(k, "test", "SimpleSet: first keys element should be 'test'");
|
|
||||||
}
|
|
||||||
for (var v of m.values()) {
|
|
||||||
is(v, "test", "SimpleSet: first values elements should be 'test'");
|
|
||||||
}
|
|
||||||
for (var e of m.entries()) {
|
|
||||||
is(e[0], "test", "SimpleSet: Entries first array element should be 'test'");
|
|
||||||
is(e[1], "test", "SimpleSet: Entries second array element should be 'test'");
|
|
||||||
}
|
|
||||||
m.clear();
|
|
||||||
is(m.size, 0, "SimpleSet: size should be 0 after clear");
|
|
||||||
|
|
||||||
// Map convenience function test
|
|
||||||
info("Testing map convenience functions");
|
|
||||||
m = new TestInterfaceMaplike();
|
|
||||||
ok(m, "MapConvenience: got a TestInterfaceMaplike object");
|
|
||||||
is(m.size, 0, "MapConvenience: size should be zero");
|
|
||||||
ok(!m.hasInternal("test"), "MapConvenience: maplike hasInternal should return false");
|
|
||||||
m.setInternal("test", 1);
|
|
||||||
is(m.size, 1, "MapConvenience: size should be 1");
|
|
||||||
ok(m.hasInternal("test"), "MapConvenience: maplike hasInternal should return true");
|
|
||||||
is(m.get("test"), 1, "MapConvenience: maplike get should return value entered");
|
|
||||||
m2 = m.setInternal("test2", 2);
|
|
||||||
is(m.size, 2, "size should be 2");
|
|
||||||
ok(m.hasInternal("test2"), "MapConvenience: maplike hasInternal should return true");
|
|
||||||
is(m.get("test2"), 2, "MapConvenience: maplike get should return value entered");
|
|
||||||
is(m.deleteInternal("test2"), true, "MapConvenience: maplike deleteInternal should return true");
|
|
||||||
is(m.size, 1, "MapConvenience: size should be 1");
|
|
||||||
m.clearInternal();
|
|
||||||
is(m.size, 0, "MapConvenience: size should be 0 after clearInternal");
|
|
||||||
|
|
||||||
// Map convenience function test using objects and readonly
|
|
||||||
|
|
||||||
info("Testing Map convenience function test using objects and readonly");
|
|
||||||
m = new TestInterfaceMaplikeObject();
|
|
||||||
ok(m, "ReadOnlyMapConvenience: got a TestInterfaceMaplikeObject object");
|
|
||||||
is(m.size, 0, "ReadOnlyMapConvenience: size should be zero");
|
|
||||||
is(m["set"], undefined, "ReadOnlyMapConvenience: readonly map, should be no set function");
|
|
||||||
is(m["clear"], undefined, "ReadOnlyMapConvenience: readonly map, should be no clear function");
|
|
||||||
is(m["delete"], undefined, "ReadOnlyMapConvenience: readonly map, should be no delete function");
|
|
||||||
ok(!m.hasInternal("test"), "ReadOnlyMapConvenience: maplike hasInternal should return false");
|
|
||||||
m.setInternal("test");
|
|
||||||
is(m.size, 1, "size should be 1");
|
|
||||||
ok(m.hasInternal("test"), "ReadOnlyMapConvenience: maplike hasInternal should return true");
|
|
||||||
m2 = m.setInternal("test2");
|
|
||||||
is(m.size, 2, "size should be 2");
|
|
||||||
ok(m.hasInternal("test2"), "ReadOnlyMapConvenience: maplike hasInternal should return true");
|
|
||||||
is(m.deleteInternal("test2"), true, "ReadOnlyMapConvenience: maplike deleteInternal should return true");
|
|
||||||
is(m.size, 1, "ReadOnlyMapConvenience: size should be 1");
|
|
||||||
m.clearInternal();
|
|
||||||
is(m.size, 0, "ReadOnlyMapConvenience: size should be 0 after clearInternal");
|
|
||||||
|
|
||||||
// JS implemented map creation convenience function test
|
|
||||||
|
|
||||||
info("JSMapConvenience: Testing JS implemented map creation convenience functions");
|
|
||||||
m = new TestInterfaceJSMaplike();
|
|
||||||
ok(m, "JSMapConvenience: got a TestInterfaceJSMaplike object");
|
|
||||||
is(m.size, 0, "JSMapConvenience: size should be zero");
|
|
||||||
ok(!m.has("test"), "JSMapConvenience: maplike has should return false");
|
|
||||||
m.setInternal("test", 1);
|
|
||||||
is(m.size, 1, "JSMapConvenience: size should be 1");
|
|
||||||
ok(m.has("test"), "JSMapConvenience: maplike has should return true");
|
|
||||||
is(m.get("test"), 1, "JSMapConvenience: maplike get should return value entered");
|
|
||||||
m2 = m.setInternal("test2", 2);
|
|
||||||
is(m.size, 2, "JSMapConvenience: size should be 2");
|
|
||||||
ok(m.has("test2"), "JSMapConvenience: maplike has should return true");
|
|
||||||
is(m.get("test2"), 2, "JSMapConvenience: maplike get should return value entered");
|
|
||||||
is(m.deleteInternal("test2"), true, "JSMapConvenience: maplike deleteInternal should return true");
|
|
||||||
is(m.size, 1, "JSMapConvenience: size should be 1");
|
|
||||||
for (var k of m.keys()) {
|
|
||||||
is(k, "test", "JSMapConvenience: first keys element should be 'test'");
|
|
||||||
}
|
|
||||||
for (var v of m.values()) {
|
|
||||||
is(v, 1, "JSMapConvenience: first values elements should be 1");
|
|
||||||
}
|
|
||||||
for (var e of m.entries()) {
|
|
||||||
is(e[0], "test", "JSMapConvenience: entries first array element should be 'test'");
|
|
||||||
is(e[1], 1, "JSMapConvenience: entries second array element should be 1");
|
|
||||||
}
|
|
||||||
m.clearInternal();
|
|
||||||
is(m.size, 0, "JSMapConvenience: size should be 0 after clearInternal");
|
|
||||||
|
|
||||||
// Test this override for forEach
|
|
||||||
info("ForEachThisOverride: Testing this override for forEach");
|
|
||||||
m = new TestInterfaceMaplike();
|
|
||||||
m.set("test", 1);
|
|
||||||
m.forEach(function(v, k, o) {
|
|
||||||
"use strict";
|
|
||||||
is(o, m, "ForEachThisOverride: foreach obj is correct");
|
|
||||||
is(this, 5, "ForEachThisOverride: 'this' value should be correct");
|
|
||||||
}, 5);
|
|
||||||
|
|
||||||
// Test defaulting arguments on maplike to undefined
|
|
||||||
info("MapArgsDefault: Testing maplike defaulting arguments to undefined");
|
|
||||||
m = new TestInterfaceMaplike();
|
|
||||||
m.set();
|
|
||||||
is(m.size, 1, "MapArgsDefault: should have 1 entry");
|
|
||||||
m.forEach(function(v, k) {
|
|
||||||
"use strict";
|
|
||||||
is(typeof k, "string", "MapArgsDefault: key is a string");
|
|
||||||
is(k, "undefined", "MapArgsDefault: key is the string undefined");
|
|
||||||
is(v, 0, "MapArgsDefault: value is 0");
|
|
||||||
});
|
|
||||||
is(m.get(), 0, "MapArgsDefault: no argument to get() returns correct value");
|
|
||||||
m.delete();
|
|
||||||
is(m.size, 0, "MapArgsDefault: should have 0 entries");
|
|
||||||
|
|
||||||
// Test defaulting arguments on setlike to undefined
|
|
||||||
info("SetArgsDefault: Testing setlike defaulting arguments to undefined");
|
|
||||||
m = new TestInterfaceSetlike();
|
|
||||||
m.add();
|
|
||||||
is(m.size, 1, "SetArgsDefault: should have 1 entry");
|
|
||||||
m.forEach(function(v, k) {
|
|
||||||
"use strict";
|
|
||||||
is(typeof k, "string", "SetArgsDefault: key is a string");
|
|
||||||
is(k, "undefined", "SetArgsDefault: key is the string undefined");
|
|
||||||
});
|
|
||||||
m.delete();
|
|
||||||
is(m.size, 0, "SetArgsDefault: should have 0 entries");
|
|
||||||
|
|
||||||
SimpleTest.finish();
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,68 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
|
|
||||||
<?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1123516
|
|
||||||
-->
|
|
||||||
<window title="Mozilla Bug 1123516"
|
|
||||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
|
||||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<iframe id="t"></iframe>
|
|
||||||
|
|
||||||
<!-- test results are displayed in the html:body -->
|
|
||||||
<body xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1123516"
|
|
||||||
target="_blank">Mozilla Bug 1123516</a>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
<!-- test code goes here -->
|
|
||||||
<script type="application/javascript">
|
|
||||||
<![CDATA[
|
|
||||||
|
|
||||||
/** Test for Bug 1123516 **/
|
|
||||||
const Cu = Components.utils;
|
|
||||||
function doTest() {
|
|
||||||
var win = $("t").contentWindow;
|
|
||||||
var sandbox = Components.utils.Sandbox(win, { sandboxPrototype: win });
|
|
||||||
is(sandbox._content, undefined, "_content does nothing over Xray");
|
|
||||||
// Test cross-compartment usage of maplike/setlike WebIDL structures.
|
|
||||||
SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, function() {
|
|
||||||
try {
|
|
||||||
var maplike = Components.utils.evalInSandbox("var m = new TestInterfaceMaplike(); m;", sandbox);
|
|
||||||
maplike.set("test2", 2);
|
|
||||||
is(maplike.get("test2"), 2, "Should be able to create and use maplike/setlike across compartments");
|
|
||||||
var test = Components.utils.evalInSandbox("m.get('test2');", sandbox);
|
|
||||||
is(test, 2, "Maplike/setlike should still work in original compartment");
|
|
||||||
is(maplike.size, 1, "Testing size retrieval across compartments");
|
|
||||||
} catch(e) {
|
|
||||||
ok(false, "Shouldn't throw when working with cross-compartment maplike/setlike interfaces " + e)
|
|
||||||
};
|
|
||||||
try {
|
|
||||||
var setlike = Components.utils.evalInSandbox("var m = new TestInterfaceSetlikeNode(); m.add(document.documentElement); m;", sandbox);
|
|
||||||
is(TestInterfaceSetlikeNode.prototype.has.call(setlike, win.document.documentElement), true,
|
|
||||||
"Cross-compartment unwrapping/comparison has works");
|
|
||||||
// TODO: Should throw until iterators are handled by Xrays, Bug 1023984
|
|
||||||
try {
|
|
||||||
var e = TestInterfaceSetlikeNode.prototype.keys.call(setlike);
|
|
||||||
ok(false, "Calling iterators via xrays should fail");
|
|
||||||
} catch(e) {
|
|
||||||
ok(true, "Calling iterators via xrays should fail");
|
|
||||||
}
|
|
||||||
|
|
||||||
setlike.forEach((v,k,t) => { is(v, win.document.documentElement, "Cross-compartment forEach works"); });
|
|
||||||
TestInterfaceSetlikeNode.prototype.forEach.call(setlike,
|
|
||||||
(v,k,t) => { is(v, win.document.documentElement, "Cross-compartment forEach works"); });
|
|
||||||
is(TestInterfaceSetlikeNode.prototype.delete.call(setlike, win.document.documentElement), true,
|
|
||||||
"Cross-compartment unwrapping/comparison delete works");
|
|
||||||
} catch(e) {
|
|
||||||
ok(false, "Shouldn't throw when working with cross-compartment maplike/setlike interfaces " + e)
|
|
||||||
};
|
|
||||||
SimpleTest.finish();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
addLoadEvent(doTest);
|
|
||||||
]]>
|
|
||||||
</script>
|
|
||||||
</window>
|
|
|
@ -1,14 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<meta charset=utf-8>
|
|
||||||
<title>Test for Bug 1123875</title>
|
|
||||||
<script src=/resources/testharness.js></script>
|
|
||||||
<script src=/resources/testharnessreport.js></script>
|
|
||||||
<div id=log></div>
|
|
||||||
<script>
|
|
||||||
test(() => {
|
|
||||||
assert_throws(new TypeError, () => {
|
|
||||||
"use strict";
|
|
||||||
document.childNodes.length = 0;
|
|
||||||
});
|
|
||||||
}, "setting a readonly attribute on a proxy in strict mode should throw a TypeError");
|
|
||||||
</script>
|
|
|
@ -1,37 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1287912
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1287912</title>
|
|
||||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1287912">Mozilla Bug 1287912</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
<iframe id="t" src="http://example.org/tests/dom/bindings/test/"></iframe>
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
function test()
|
|
||||||
{
|
|
||||||
var win = document.getElementById("t").contentWindow;
|
|
||||||
is(Object.getPrototypeOf(win.Image), win.Function.prototype, "The __proto__ of a named constructor is Function.prototype");
|
|
||||||
is(win.Image.prototype, win.HTMLImageElement.prototype, "The prototype property of a named constructor is the interface prototype object");
|
|
||||||
is(win.HTMLImageElement['foo'], undefined, "Should not have a property named foo on the HTMLImageElement interface object");
|
|
||||||
is(win.Image['foo'], undefined, "Should not have a property named foo on the Image named constructor");
|
|
||||||
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
addLoadEvent(test);
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,34 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=560072
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 560072</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=560072">Mozilla Bug 560072</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 560072 **/
|
|
||||||
is(document.body,
|
|
||||||
Object.getOwnPropertyDescriptor(Document.prototype, "body").get.call(document),
|
|
||||||
"Should get body out of property descriptor");
|
|
||||||
|
|
||||||
is(document.body,
|
|
||||||
Object.getOwnPropertyDescriptor(
|
|
||||||
Object.getPrototypeOf(Object.getPrototypeOf(document)), "body").get.call(document),
|
|
||||||
"Should get body out of property descriptor this way too");
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,36 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=742191
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for invalid argument object</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=742191">Mozilla Bug 742191</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 742191 **/
|
|
||||||
function doTest() {
|
|
||||||
var gotTypeError = false;
|
|
||||||
var ctx = document.createElement("canvas").getContext("2d");
|
|
||||||
try {
|
|
||||||
ctx.drawImage({}, 0, 0);
|
|
||||||
} catch(e) {
|
|
||||||
if (e instanceof TypeError) {
|
|
||||||
gotTypeError = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ok(gotTypeError, "passing an invalid argument should cause a type error!");
|
|
||||||
}
|
|
||||||
doTest();
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,29 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=759621
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 759621</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=759621">Mozilla Bug 759621</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 759621 **/
|
|
||||||
var l = document.getElementsByTagName("*");
|
|
||||||
l.namedItem = "pass";
|
|
||||||
is(l.namedItem, "pass", "Should be able to set expando shadowing a proto prop");
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,11 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<meta charset=utf-8>
|
|
||||||
<title>Test for Bug 773326</title>
|
|
||||||
<script src=/resources/testharness.js></script>
|
|
||||||
<script src=/resources/testharnessreport.js></script>
|
|
||||||
<div id=log></div>
|
|
||||||
<script>
|
|
||||||
test(function() {
|
|
||||||
new Worker("data:text/javascript,new XMLHttpRequest(42)");
|
|
||||||
}, "Should not crash")
|
|
||||||
</script>
|
|
|
@ -1,37 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=775543
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 775543</title>
|
|
||||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=775543">Mozilla Bug 775543</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
<iframe id="t" src="http://example.org/tests/dom/bindings/test/file_bug775543.html" onload="test();"></iframe>
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 775543 **/
|
|
||||||
|
|
||||||
function test()
|
|
||||||
{
|
|
||||||
var a = XPCNativeWrapper(document.getElementById("t").contentWindow.wrappedJSObject.worker);
|
|
||||||
isnot(XPCNativeWrapper.unwrap(a), a, "XPCNativeWrapper(Worker) should be an Xray wrapper");
|
|
||||||
a.toString();
|
|
||||||
ok(true, "Shouldn't crash when calling a method on an Xray wrapper around a worker");
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,30 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=788369
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 788369</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=788369">Mozilla Bug 788369</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 788369 **/
|
|
||||||
try {
|
|
||||||
var xhr = new(window.ActiveXObject || XMLHttpRequest)("Microsoft.XMLHTTP");
|
|
||||||
ok(xhr instanceof XMLHttpRequest, "Should have an XHR object");
|
|
||||||
} catch (e) {
|
|
||||||
ok(false, "Should not throw exception when constructing: " + e);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,34 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=852846
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 852846</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 852846 **/
|
|
||||||
var elem = document.createElement("div");
|
|
||||||
is(elem.style.color, "", "Shouldn't have color set on HTML element")
|
|
||||||
elem.style = "color: green";
|
|
||||||
is(elem.style.color, "green", "Should have color set on HTML element")
|
|
||||||
|
|
||||||
elem = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
||||||
is(elem.style.color, "", "Shouldn't have color set on SVG element")
|
|
||||||
elem.style = "color: green";
|
|
||||||
is(elem.style.color, "green", "Should have color set on SVG element")
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=852846">Mozilla Bug 852846</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,37 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=862092
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 862092</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 862092 **/
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
function runTest()
|
|
||||||
{
|
|
||||||
var frameDoc = document.getElementById("f").contentDocument;
|
|
||||||
var a = document.createElement("select");
|
|
||||||
a.expando = "test";
|
|
||||||
a = frameDoc.adoptNode(a)
|
|
||||||
is(a.expando, "test", "adoptNode needs to preserve expandos");
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body onload="runTest();">
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=862092">Mozilla Bug 862092</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
<iframe id="f"></iframe>
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,43 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=963382
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 963382</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for clearing cache attributes in JS-implemented WebIDL implementations. **/
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, go);
|
|
||||||
|
|
||||||
function go() {
|
|
||||||
var t = new TestInterfaceJS();
|
|
||||||
|
|
||||||
// Test [Cached] attribute clearing.
|
|
||||||
is(t.cachedAttr, 15, "Initial value of number");
|
|
||||||
|
|
||||||
t.setCachedAttr(3);
|
|
||||||
is(t.cachedAttr, 15, "Setting the number on the inner JS object should not affect cached value");
|
|
||||||
|
|
||||||
t.clearCachedAttrCache();
|
|
||||||
is(t.cachedAttr, 3, "Setting the number on the inner JS object should affect cached value after clearing the cache.");
|
|
||||||
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=963382">Mozilla Bug 963382</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,21 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<meta charset=utf-8>
|
|
||||||
<title>Test for callback invocation for a callback that comes from a
|
|
||||||
no-longer-current window that still has an active document.</title>
|
|
||||||
<script src="/resources/testharness.js"></script>
|
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
|
||||||
<div id="log"></div>
|
|
||||||
<iframe srcdoc='<script>function f() { parent.callCount++; }</script>'></iframe>
|
|
||||||
<script>
|
|
||||||
var callCount = 0;
|
|
||||||
var t = async_test("A test of callback invocation in a no-longer-current window with a still-active document");
|
|
||||||
window.addEventListener("load", t.step_func_done(function() {
|
|
||||||
var d = document.createElement("div");
|
|
||||||
d.addEventListener("xyz", frames[0].f);
|
|
||||||
frames[0].document.open();
|
|
||||||
frames[0].document.write("All gone");
|
|
||||||
frames[0].document.close();
|
|
||||||
d.dispatchEvent(new Event("xyz"));
|
|
||||||
assert_equals(callCount, 1, "Callback should have been called");
|
|
||||||
}));
|
|
||||||
</script>
|
|
|
@ -1,36 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=957929
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 957929</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 957929 **/
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
|
|
||||||
function f() {
|
|
||||||
"use strict";
|
|
||||||
is(this, undefined, "Should have undefined this value");
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
addLoadEvent(function() {
|
|
||||||
requestAnimationFrame(f);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=957929">Mozilla Bug 957929</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,17 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<meta charset=utf-8>
|
|
||||||
<title>Test for ...</title>
|
|
||||||
<script src="/resources/testharness.js"></script>
|
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
|
||||||
<div id="log"></div>
|
|
||||||
<script>
|
|
||||||
promise_test(function(t) {
|
|
||||||
var iterator = document.createNodeIterator(document, NodeFilter.SHOW_ALL, JSON.parse);
|
|
||||||
return promise_rejects(t, new SyntaxError,
|
|
||||||
Promise.resolve().then(iterator.nextNode.bind(iterator)));
|
|
||||||
}, "Trying to use JSON.parse as filter should throw a catchable SyntaxError exception even when the filter is invoked async");
|
|
||||||
|
|
||||||
promise_test(function(t) {
|
|
||||||
return promise_rejects(t, new SyntaxError, Promise.resolve('{').then(JSON.parse));
|
|
||||||
}, "Trying to use JSON.parse as a promise callback should allow the next promise to handle the resulting exception.");
|
|
||||||
</script>
|
|
|
@ -1,48 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=882541
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 882541</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 882541 **/
|
|
||||||
var div = document.createElement("div");
|
|
||||||
div.appendChild(document.createElement("span"));
|
|
||||||
|
|
||||||
var div2;
|
|
||||||
|
|
||||||
div2 = div.cloneNode();
|
|
||||||
is(div2.childNodes.length, 0, "cloneNode() should do a shallow clone");
|
|
||||||
|
|
||||||
div2 = div.cloneNode(undefined);
|
|
||||||
is(div2.childNodes.length, 0, "cloneNode(undefined) should do a shallow clone");
|
|
||||||
|
|
||||||
div2 = div.cloneNode(true);
|
|
||||||
is(div2.childNodes.length, 1, "cloneNode(true) should do a deep clone");
|
|
||||||
|
|
||||||
div2 = document.importNode(div);
|
|
||||||
is(div2.childNodes.length, 0, "importNode(node) should do a deep import");
|
|
||||||
|
|
||||||
div2 = document.importNode(div, undefined);
|
|
||||||
is(div2.childNodes.length, 0, "importNode(undefined) should do a shallow import");
|
|
||||||
|
|
||||||
div2 = document.importNode(div, true);
|
|
||||||
is(div2.childNodes.length, 1, "importNode(true) should do a deep import");
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=882541">Mozilla Bug 882541</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,23 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<meta charset=utf-8>
|
|
||||||
<title>Test for accessing symbols on a cross-origin window</title>
|
|
||||||
<script src="/resources/testharness.js"></script>
|
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
|
||||||
<div id="log"></div>
|
|
||||||
<iframe src="http://www1.w3c-test.org/common/blank.html"></iframe>
|
|
||||||
<script>
|
|
||||||
async_test(function (t) {
|
|
||||||
window.addEventListener("load", t.step_func(
|
|
||||||
function() {
|
|
||||||
assert_equals(document.querySelector("iframe").contentDocument, null, "Should have a crossorigin frame");
|
|
||||||
assert_throws(new Error(), function() {
|
|
||||||
frames[0][Symbol.iterator];
|
|
||||||
}, "Should throw exception on cross-origin Window symbol-named get");
|
|
||||||
assert_throws(new Error(), function() {
|
|
||||||
frames[0].location[Symbol.iterator];
|
|
||||||
}, "Should throw exception on cross-origin Location symbol-named get");
|
|
||||||
t.done();
|
|
||||||
}
|
|
||||||
));
|
|
||||||
}, "Check Symbol access on load");
|
|
||||||
</script>
|
|
|
@ -1,157 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=910220
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 910220</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=910220">Mozilla Bug 910220</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
<form name="x"></form>
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 910220 **/
|
|
||||||
|
|
||||||
function getX() {
|
|
||||||
return "x";
|
|
||||||
}
|
|
||||||
|
|
||||||
function namedSetStrict(obj) {
|
|
||||||
"use strict";
|
|
||||||
var threw;
|
|
||||||
try {
|
|
||||||
obj.x = 5;
|
|
||||||
threw = false;
|
|
||||||
} catch (e) {
|
|
||||||
threw = true;
|
|
||||||
}
|
|
||||||
ok(threw,
|
|
||||||
"Should throw in strict mode when setting named property on " + obj);
|
|
||||||
|
|
||||||
try {
|
|
||||||
obj[getX()] = 5;
|
|
||||||
threw = false;
|
|
||||||
} catch (e) {
|
|
||||||
threw = true;
|
|
||||||
}
|
|
||||||
ok(threw,
|
|
||||||
"Should throw in strict mode when setting named property via SETELEM on " + obj);
|
|
||||||
|
|
||||||
try {
|
|
||||||
Object.defineProperty(obj, "x", { value: 17 });
|
|
||||||
threw = false;
|
|
||||||
} catch (e) {
|
|
||||||
threw = true;
|
|
||||||
}
|
|
||||||
ok(threw,
|
|
||||||
"Should throw in strict mode when defining named property on " + obj);
|
|
||||||
}
|
|
||||||
function namedSetNonStrict(obj) {
|
|
||||||
var threw;
|
|
||||||
try {
|
|
||||||
obj.x = 5;
|
|
||||||
threw = false;
|
|
||||||
} catch (e) {
|
|
||||||
threw = true;
|
|
||||||
}
|
|
||||||
ok(!threw,
|
|
||||||
"Should not throw in non-strict mode when setting named property on " + obj);
|
|
||||||
|
|
||||||
try {
|
|
||||||
obj[getX()] = 5;
|
|
||||||
threw = false;
|
|
||||||
} catch (e) {
|
|
||||||
threw = true;
|
|
||||||
}
|
|
||||||
ok(!threw,
|
|
||||||
"Should not throw in non-strict mode when setting named property via SETELEM on" + obj);
|
|
||||||
|
|
||||||
try {
|
|
||||||
Object.defineProperty(obj, "x", { value: 17 });
|
|
||||||
threw = false;
|
|
||||||
} catch (e) {
|
|
||||||
threw = true;
|
|
||||||
}
|
|
||||||
ok(threw,
|
|
||||||
"Should throw in non-strict mode when defining named property on " + obj);
|
|
||||||
}
|
|
||||||
for (var obj of [ document, document.forms ]) {
|
|
||||||
namedSetStrict(obj);
|
|
||||||
namedSetNonStrict(obj);
|
|
||||||
}
|
|
||||||
|
|
||||||
function indexedSetStrict(obj) {
|
|
||||||
"use strict";
|
|
||||||
var threw;
|
|
||||||
try {
|
|
||||||
obj[0] = 5;
|
|
||||||
threw = false;
|
|
||||||
} catch (e) {
|
|
||||||
threw = true;
|
|
||||||
}
|
|
||||||
ok(threw,
|
|
||||||
"Should throw in strict mode when setting indexed property on " + obj);
|
|
||||||
|
|
||||||
try {
|
|
||||||
obj[1000] = 5;
|
|
||||||
threw = false;
|
|
||||||
} catch (e) {
|
|
||||||
threw = true;
|
|
||||||
}
|
|
||||||
ok(threw,
|
|
||||||
"Should throw in strict mode when setting out of bounds indexed property on " + obj);
|
|
||||||
|
|
||||||
try {
|
|
||||||
Object.defineProperty(obj, "0", { value: 17 });
|
|
||||||
threw = false;
|
|
||||||
} catch (e) {
|
|
||||||
threw = true;
|
|
||||||
}
|
|
||||||
ok(threw,
|
|
||||||
"Should throw in strict mode when defining indexed property on " + obj);
|
|
||||||
}
|
|
||||||
function indexedSetNonStrict(obj) {
|
|
||||||
var threw;
|
|
||||||
try {
|
|
||||||
obj[0] = 5;
|
|
||||||
threw = false;
|
|
||||||
} catch (e) {
|
|
||||||
threw = true;
|
|
||||||
}
|
|
||||||
ok(!threw,
|
|
||||||
"Should not throw in non-strict mode when setting indexed property on " + obj);
|
|
||||||
|
|
||||||
try {
|
|
||||||
obj[1000] = 5;
|
|
||||||
threw = false;
|
|
||||||
} catch (e) {
|
|
||||||
threw = true;
|
|
||||||
}
|
|
||||||
ok(!threw,
|
|
||||||
"Should not throw in non-strict mode when setting out of bounds indexed property on " + obj);
|
|
||||||
|
|
||||||
try {
|
|
||||||
Object.defineProperty(obj, "0", { value: 17 });
|
|
||||||
threw = false;
|
|
||||||
} catch (e) {
|
|
||||||
threw = true;
|
|
||||||
}
|
|
||||||
ok(threw,
|
|
||||||
"Should throw in non-strict mode when defining indexed property on " + obj);
|
|
||||||
}
|
|
||||||
for (var obj of [ document.forms, document.childNodes ]) {
|
|
||||||
indexedSetStrict(obj);
|
|
||||||
indexedSetNonStrict(obj);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,49 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=905493
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 905493</title>
|
|
||||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=905493">Mozilla Bug 905493</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
<iframe id="t" src="http://example.org/tests/dom/bindings/test/file_document_location_set_via_xray.html"></iframe>
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 905493 **/
|
|
||||||
|
|
||||||
function test()
|
|
||||||
{
|
|
||||||
var doc = document.getElementById("t").contentWindow.document;
|
|
||||||
ok(!("x" in doc), "Should have an Xray here");
|
|
||||||
is(doc.x, undefined, "Really should have an Xray here");
|
|
||||||
is(doc.wrappedJSObject.x, 5, "And wrapping the right thing");
|
|
||||||
document.getElementById("t").onload = function() {
|
|
||||||
ok(true, "Load happened");
|
|
||||||
SimpleTest.finish();
|
|
||||||
};
|
|
||||||
try {
|
|
||||||
// Test the forwarding location setter
|
|
||||||
doc.location = "chrome://mochikit/content/tests/SimpleTest/test.css";
|
|
||||||
} catch (e) {
|
|
||||||
// Load failed
|
|
||||||
ok(false, "Load failed");
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
addLoadEvent(test);
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,36 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1041731
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1041731</title>
|
|
||||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1041731">Mozilla Bug 1041731</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
<iframe id="t" src="http://example.org/tests/dom/bindings/test/file_document_location_set_via_xray.html"></iframe>
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 1041731 **/
|
|
||||||
|
|
||||||
function test()
|
|
||||||
{
|
|
||||||
var loc = document.getElementById("t").contentWindow.document.location;
|
|
||||||
is(loc.toString, loc.toString, "Unforgeable method on the Xray should be cached");
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
addLoadEvent(test);
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,28 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1221421
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1221421</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var x = document.documentElement.style;
|
|
||||||
x.__proto__ = [1, 2, 3];
|
|
||||||
|
|
||||||
var res = 0;
|
|
||||||
for (var h = 0; h < 5000; ++h) {
|
|
||||||
res += x.length;
|
|
||||||
}
|
|
||||||
is(res, 15000, "length getter should return array length");
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1221421">Mozilla Bug 1221421</a>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,231 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=787070
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 787070</title>
|
|
||||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=787070">Mozilla Bug 787070</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
<iframe id="t" src="http://example.org/tests/dom/bindings/test/file_dom_xrays.html"></iframe>
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 1021066 **/
|
|
||||||
|
|
||||||
var Cu = Components.utils;
|
|
||||||
|
|
||||||
// values should contain the values that the property should have on each of
|
|
||||||
// the objects on the prototype chain of obj. A value of undefined signals
|
|
||||||
// that the value should not be present on that prototype.
|
|
||||||
function checkXrayProperty(obj, name, values)
|
|
||||||
{
|
|
||||||
var instance = obj;
|
|
||||||
do {
|
|
||||||
var value = values.shift();
|
|
||||||
if (typeof value == "undefined") {
|
|
||||||
ok(!obj.hasOwnProperty(name), "hasOwnProperty shouldn't see \"" + name + "\" through Xrays");
|
|
||||||
is(Object.getOwnPropertyDescriptor(obj, name), undefined, "getOwnPropertyDescriptor shouldn't see \"" + name + "\" through Xrays");
|
|
||||||
ok(Object.keys(obj).indexOf(name) == -1, "Enumerating the Xray should not return \"" + name + "\"");
|
|
||||||
} else {
|
|
||||||
ok(obj.hasOwnProperty(name), "hasOwnProperty should see \"" + name + "\" through Xrays");
|
|
||||||
var pd = Object.getOwnPropertyDescriptor(obj, name);
|
|
||||||
ok(pd, "getOwnPropertyDescriptor should see \"" + name + "\" through Xrays");
|
|
||||||
if (pd && pd.get) {
|
|
||||||
is(pd.get.call(instance), value, "Should get the right value for \"" + name + "\" through Xrays");
|
|
||||||
} else {
|
|
||||||
is(obj[name], value, "Should get the right value for \"" + name + "\" through Xrays");
|
|
||||||
}
|
|
||||||
if (pd && pd.enumerable) {
|
|
||||||
ok(Object.keys(obj).indexOf("" + name) > -1, "Enumerating the Xray should return \"" + name + "\"");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} while ((obj = Object.getPrototypeOf(obj)));
|
|
||||||
}
|
|
||||||
|
|
||||||
function checkWindowXrayProperty(obj, name, windowValue, windowPrototypeValue, namedPropertiesValue, eventTargetValue)
|
|
||||||
{
|
|
||||||
checkXrayProperty(obj, name, [ windowValue, windowPrototypeValue, namedPropertiesValue, eventTargetValue ]);
|
|
||||||
}
|
|
||||||
|
|
||||||
function test()
|
|
||||||
{
|
|
||||||
// Window
|
|
||||||
var win = document.getElementById("t").contentWindow;
|
|
||||||
var doc = document.getElementById("t").contentDocument;
|
|
||||||
|
|
||||||
var winProto = Object.getPrototypeOf(win);
|
|
||||||
is(winProto, win.Window.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
|
|
||||||
|
|
||||||
var namedPropertiesObject = Object.getPrototypeOf(winProto);
|
|
||||||
is(Cu.getClassName(namedPropertiesObject, /* unwrap = */ true), "WindowProperties", "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
|
|
||||||
|
|
||||||
var eventTargetProto = Object.getPrototypeOf(namedPropertiesObject);
|
|
||||||
is(eventTargetProto, win.EventTarget.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
|
|
||||||
|
|
||||||
// Xrays need to filter expandos.
|
|
||||||
checkWindowXrayProperty(win, "expando", undefined);
|
|
||||||
ok(!("expando" in win), "Xrays should filter expandos");
|
|
||||||
|
|
||||||
checkWindowXrayProperty(win, "shadowedIframe", undefined, undefined, doc.getElementById("shadowedIframe").contentWindow);
|
|
||||||
ok("shadowedIframe" in win, "Named properties should be exposed through Xrays");
|
|
||||||
|
|
||||||
// Named properties live on the named properties object for global objects.
|
|
||||||
checkWindowXrayProperty(win, "iframe", undefined, undefined, doc.getElementById("iframe").contentWindow);
|
|
||||||
ok("iframe" in win, "Named properties should be exposed through Xrays");
|
|
||||||
|
|
||||||
// Window properties live on the instance, shadowing the properties of the named property object.
|
|
||||||
checkWindowXrayProperty(win, "document", doc, undefined, doc.getElementById("document").contentWindow);
|
|
||||||
ok("document" in win, "WebIDL properties should be exposed through Xrays");
|
|
||||||
|
|
||||||
// Unforgeable properties live on the instance, shadowing the properties of the named property object.
|
|
||||||
checkWindowXrayProperty(win, "self", win, undefined, doc.getElementById("self").contentWindow);
|
|
||||||
ok("self" in win, "WebIDL properties should be exposed through Xrays");
|
|
||||||
|
|
||||||
// Object.prototype is at the end of the prototype chain.
|
|
||||||
var obj = win;
|
|
||||||
while ((proto = Object.getPrototypeOf(obj))) {
|
|
||||||
obj = proto;
|
|
||||||
}
|
|
||||||
is(obj, win.Object.prototype, "Object.prototype should be at the end of the prototype chain");
|
|
||||||
|
|
||||||
// Named properties shouldn't shadow WebIDL- or ECMAScript-defined properties.
|
|
||||||
checkWindowXrayProperty(win, "addEventListener", undefined, undefined, undefined, eventTargetProto.addEventListener);
|
|
||||||
is(win.addEventListener, eventTargetProto.addEventListener, "Named properties shouldn't shadow WebIDL-defined properties");
|
|
||||||
|
|
||||||
is(win.toString, win.Object.prototype.toString, "Named properties shouldn't shadow ECMAScript-defined properties");
|
|
||||||
|
|
||||||
// HTMLDocument
|
|
||||||
// Unforgeable properties live on the instance.
|
|
||||||
checkXrayProperty(doc, "location", [ win.location ]);
|
|
||||||
is(String(win.location), document.getElementById("t").src,
|
|
||||||
"Should have the right stringification");
|
|
||||||
|
|
||||||
// HTMLHtmlElement
|
|
||||||
var elem = doc.documentElement;
|
|
||||||
|
|
||||||
var elemProto = Object.getPrototypeOf(elem);
|
|
||||||
is(elemProto, win.HTMLHtmlElement.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
|
|
||||||
|
|
||||||
elemProto = Object.getPrototypeOf(elemProto);
|
|
||||||
is(elemProto, win.HTMLElement.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
|
|
||||||
|
|
||||||
elemProto = Object.getPrototypeOf(elemProto);
|
|
||||||
is(elemProto, win.Element.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
|
|
||||||
|
|
||||||
elemProto = Object.getPrototypeOf(elemProto);
|
|
||||||
is(elemProto, win.Node.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
|
|
||||||
|
|
||||||
elemProto = Object.getPrototypeOf(elemProto);
|
|
||||||
is(elemProto, win.EventTarget.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
|
|
||||||
|
|
||||||
// Xrays need to filter expandos.
|
|
||||||
ok(!("expando" in elem), "Xrays should filter expandos");
|
|
||||||
|
|
||||||
// WebIDL-defined properties live on the prototype.
|
|
||||||
checkXrayProperty(elem, "version", [ undefined, "" ]);
|
|
||||||
is(elem.version, "", "WebIDL properties should be exposed through Xrays");
|
|
||||||
|
|
||||||
// HTMLCollection
|
|
||||||
var coll = doc.getElementsByTagName("iframe");
|
|
||||||
|
|
||||||
// Named properties live on the instance for non-global objects.
|
|
||||||
checkXrayProperty(coll, "iframe", [ doc.getElementById("iframe") ]);
|
|
||||||
|
|
||||||
// Indexed properties live on the instance.
|
|
||||||
checkXrayProperty(coll, 0, [ doc.getElementById("shadowedIframe") ]);
|
|
||||||
|
|
||||||
// WebIDL-defined properties live on the prototype, overriding any named properties.
|
|
||||||
checkXrayProperty(coll, "item", [ undefined, win.HTMLCollection.prototype.item ]);
|
|
||||||
|
|
||||||
// ECMAScript-defined properties live on the prototype, overriding any named properties.
|
|
||||||
checkXrayProperty(coll, "toString", [ undefined, undefined, win.Object.prototype.toString ]);
|
|
||||||
|
|
||||||
// Frozen arrays should come from our compartment, not the target one.
|
|
||||||
var languages1 = win.navigator.languages;
|
|
||||||
isnot(languages1, undefined, "Must have .languages");
|
|
||||||
ok(Array.isArray(languages1), ".languages should be an array");
|
|
||||||
ok(Object.isFrozen(languages1), ".languages should be a frozen array");
|
|
||||||
ok(!Cu.isXrayWrapper(languages1), "Should have our own version of array");
|
|
||||||
is(Cu.getGlobalForObject(languages1), window,
|
|
||||||
"languages1 should come from our window");
|
|
||||||
// We want to get .languages in the content compartment, but without waiving
|
|
||||||
// Xrays altogether.
|
|
||||||
var languages2 = win.eval("navigator.languages");
|
|
||||||
isnot(languages2, undefined, "Must still have .languages");
|
|
||||||
ok(Array.isArray(languages2), ".languages should still be an array");
|
|
||||||
ok(Cu.isXrayWrapper(languages2), "Should have xray for content version of array");
|
|
||||||
is(Cu.getGlobalForObject(languages2), win,
|
|
||||||
"languages2 come from the underlying window");
|
|
||||||
ok(Object.isFrozen(languages2.wrappedJSObject),
|
|
||||||
".languages should still be a frozen array underneath");
|
|
||||||
isnot(languages1, languages2, "Must have distinct arrays");
|
|
||||||
isnot(languages1, languages2.wrappedJSObject,
|
|
||||||
"Must have distinct arrays no matter how we slice it");
|
|
||||||
|
|
||||||
// Check that DataTransfer's .types has the hack to alias contains()
|
|
||||||
// to includes().
|
|
||||||
var dataTransfer = new win.DataTransfer();
|
|
||||||
is(dataTransfer.types.contains, dataTransfer.types.includes,
|
|
||||||
"Should have contains() set up as an alias to includes()");
|
|
||||||
// Waive Xrays on the dataTransfer itself, since the .types we get is
|
|
||||||
// different over Xrays vs not.
|
|
||||||
is(dataTransfer.wrappedJSObject.types.contains, undefined,
|
|
||||||
"Underlying object should not have contains() set up as an alias to " +
|
|
||||||
"includes()");
|
|
||||||
|
|
||||||
// Check that deleters work correctly in the [OverrideBuiltins] case.
|
|
||||||
var elem = win.document.documentElement;
|
|
||||||
var dataset = elem.dataset;
|
|
||||||
is(dataset.foo, undefined, "Should not have a 'foo' property");
|
|
||||||
ok(!('foo' in dataset), "Really should not have a 'foo' property");
|
|
||||||
is(elem.getAttribute("data-foo"), null,
|
|
||||||
"Should not have a 'data-foo' attribute");
|
|
||||||
ok(!elem.hasAttribute("data-foo"),
|
|
||||||
"Really should not have a 'data-foo' attribute");
|
|
||||||
dataset.foo = "bar";
|
|
||||||
is(dataset.foo, "bar", "Should now have a 'foo' property");
|
|
||||||
ok('foo' in dataset, "Really should have a 'foo' property");
|
|
||||||
is(elem.getAttribute("data-foo"), "bar",
|
|
||||||
"Should have a 'data-foo' attribute");
|
|
||||||
ok(elem.hasAttribute("data-foo"),
|
|
||||||
"Really should have a 'data-foo' attribute");
|
|
||||||
delete dataset.foo;
|
|
||||||
is(dataset.foo, undefined, "Should not have a 'foo' property again");
|
|
||||||
ok(!('foo' in dataset), "Really should not have a 'foo' property again");
|
|
||||||
is(elem.getAttribute("data-foo"), null,
|
|
||||||
"Should not have a 'data-foo' attribute again");
|
|
||||||
ok(!elem.hasAttribute("data-foo"),
|
|
||||||
"Really should not have a 'data-foo' attribute again");
|
|
||||||
|
|
||||||
// Check that deleters work correctly in the non-[OverrideBuiltins] case.
|
|
||||||
var storage = win.sessionStorage;
|
|
||||||
is(storage.foo, undefined, "Should not have a 'foo' property");
|
|
||||||
ok(!('foo' in storage), "Really should not have a 'foo' property");
|
|
||||||
is(storage.getItem("foo"), null, "Should not have an item named 'foo'");
|
|
||||||
storage.foo = "bar";
|
|
||||||
is(storage.foo, "bar", "Should have a 'foo' property");
|
|
||||||
ok('foo' in storage, "Really should have a 'foo' property");
|
|
||||||
is(storage.getItem("foo"), "bar", "Should have an item named 'foo'");
|
|
||||||
delete storage.foo
|
|
||||||
is(storage.foo, undefined, "Should not have a 'foo' property again");
|
|
||||||
ok(!('foo' in storage), "Really should not have a 'foo' property again");
|
|
||||||
is(storage.getItem("foo"), null, "Should not have an item named 'foo' again");
|
|
||||||
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
addLoadEvent(test);
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,15 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<meta charset=utf-8>
|
|
||||||
<title>Enums</title>
|
|
||||||
<script src=/resources/testharness.js></script>
|
|
||||||
<script src=/resources/testharnessreport.js></script>
|
|
||||||
<div id=log></div>
|
|
||||||
<script>
|
|
||||||
test(function() {
|
|
||||||
var xhr = new XMLHttpRequest();
|
|
||||||
xhr.open("get", "foo")
|
|
||||||
assert_equals(xhr.responseType, "");
|
|
||||||
xhr.responseType = "foo";
|
|
||||||
assert_equals(xhr.responseType, "");
|
|
||||||
}, "Assigning an invalid value to an enum attribute should not throw.");
|
|
||||||
</script>
|
|
|
@ -1,45 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1295322
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1295322</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1295322">Mozilla Bug 1295322</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 1295322 **/
|
|
||||||
iframe = document.createElement('iframe');
|
|
||||||
iframe.name = "eWin";
|
|
||||||
document.body.appendChild(iframe);
|
|
||||||
|
|
||||||
try{
|
|
||||||
// NOTE: The idea here is to call something that will end up throwing an
|
|
||||||
// exception in a JS component and then propagate back to C++ code before
|
|
||||||
// returning to us. If opening a feed: URI stops doing that, we will need a
|
|
||||||
// new guinea pig here.
|
|
||||||
open('feed://java:script:codeshouldgohere','eWin');
|
|
||||||
ok(false, "Should have thrown!");
|
|
||||||
} catch(e){
|
|
||||||
try {
|
|
||||||
is(e.name, "NS_ERROR_UNEXPECTED", "Should have the right exception");
|
|
||||||
is(e.filename, location.href,
|
|
||||||
"Should not be seeing where the exception really came from");
|
|
||||||
} catch (e2) {
|
|
||||||
ok(false, "Should be able to work with the exception");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,56 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=847119
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 847119</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 847119 **/
|
|
||||||
|
|
||||||
var xhr = new XMLHttpRequest();
|
|
||||||
var domthrows = function() { xhr.open(); }
|
|
||||||
|
|
||||||
var count = 20000;
|
|
||||||
|
|
||||||
function f() {
|
|
||||||
var k = 0;
|
|
||||||
for (var j = 0; j < count; ++j) {
|
|
||||||
try { domthrows(); } catch(e) { ++k; }
|
|
||||||
}
|
|
||||||
return k;
|
|
||||||
}
|
|
||||||
function g() { return count; }
|
|
||||||
|
|
||||||
is(f(), count, "Should get count exceptions");
|
|
||||||
for (var h of [f, g]) {
|
|
||||||
try { is(h(), count, "Should get count exceptions here too"); } catch (e) {}
|
|
||||||
}
|
|
||||||
ok(true, "We should get here");
|
|
||||||
|
|
||||||
var domthrows = function() { xhr.withCredentials = false; }
|
|
||||||
xhr.open("GET", "");
|
|
||||||
xhr.send();
|
|
||||||
|
|
||||||
is(f(), count, "Should get count exceptions from getter");
|
|
||||||
for (var h of [f, g]) {
|
|
||||||
try { is(h(), count, "Should get count exceptions from getter here too"); } catch (e) {}
|
|
||||||
}
|
|
||||||
ok(true, "We should get here too");
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=847119">Mozilla Bug 847119</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,82 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=882653
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 882653</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 882653 **/
|
|
||||||
// Each test is a string to eval, the expected exception message, and the
|
|
||||||
// test description.
|
|
||||||
var tests = [
|
|
||||||
[ 'document.documentElement.appendChild.call({}, new Image())',
|
|
||||||
"'appendChild' called on an object that does not implement interface Node.",
|
|
||||||
"bogus method this object" ],
|
|
||||||
[ 'Object.getOwnPropertyDescriptor(Document.prototype, "documentElement").get.call({})',
|
|
||||||
"'get documentElement' called on an object that does not implement interface Document.",
|
|
||||||
"bogus getter this object" ],
|
|
||||||
[ 'Object.getOwnPropertyDescriptor(Element.prototype, "innerHTML").set.call({})',
|
|
||||||
"'set innerHTML' called on an object that does not implement interface Element.",
|
|
||||||
"bogus setter this object" ],
|
|
||||||
[ 'document.documentElement.appendChild(5)',
|
|
||||||
"Argument 1 of Node.appendChild is not an object.",
|
|
||||||
"bogus interface argument" ],
|
|
||||||
[ 'document.documentElement.appendChild(null)',
|
|
||||||
"Argument 1 of Node.appendChild is not an object.",
|
|
||||||
"null interface argument" ],
|
|
||||||
[ 'document.createTreeWalker(document).currentNode = 5',
|
|
||||||
"Value being assigned to TreeWalker.currentNode is not an object.",
|
|
||||||
"interface setter call" ],
|
|
||||||
[ 'document.documentElement.appendChild({})',
|
|
||||||
"Argument 1 of Node.appendChild does not implement interface Node.",
|
|
||||||
"wrong interface argument" ],
|
|
||||||
[ 'document.createTreeWalker(document).currentNode = {}',
|
|
||||||
"Value being assigned to TreeWalker.currentNode does not implement interface Node.",
|
|
||||||
"wrong interface setter call" ],
|
|
||||||
[ 'document.createElement("canvas").getContext("2d").fill("bogus")',
|
|
||||||
"Argument 1 of CanvasRenderingContext2D.fill 'bogus' is not a valid value for enumeration CanvasWindingRule.",
|
|
||||||
"bogus enum value" ],
|
|
||||||
[ 'document.createTreeWalker(document, 0xFFFFFFFF, { acceptNode: 5 }).nextNode()',
|
|
||||||
"Property 'acceptNode' is not callable.",
|
|
||||||
"non-callable callback interface operation property" ],
|
|
||||||
[ '(new TextDecoder).decode(new Uint8Array(), new RegExp())',
|
|
||||||
"Argument 2 of TextDecoder.decode can't be converted to a dictionary.",
|
|
||||||
"regexp passed for a dictionary" ],
|
|
||||||
[ 'URL.createObjectURL(null, null)',
|
|
||||||
"Argument 1 is not valid for any of the 2-argument overloads of URL.createObjectURL.",
|
|
||||||
"overload resolution failure" ],
|
|
||||||
[ 'document.createElement("select").add({})',
|
|
||||||
"Argument 1 of HTMLSelectElement.add could not be converted to any of: HTMLOptionElement, HTMLOptGroupElement.",
|
|
||||||
"invalid value passed for union" ],
|
|
||||||
[ 'document.createElement("canvas").getContext("2d").createLinearGradient(0, 1, 0, 1).addColorStop(NaN, "")',
|
|
||||||
"Argument 1 of CanvasGradient.addColorStop is not a finite floating-point value.",
|
|
||||||
"invalid float" ]
|
|
||||||
];
|
|
||||||
|
|
||||||
for (var i = 0; i < tests.length; ++i) {
|
|
||||||
msg = "Correct exception should be thrown for " + tests[i][2];
|
|
||||||
try {
|
|
||||||
eval(tests[i][0]);
|
|
||||||
ok(false, msg);
|
|
||||||
} catch (e) {
|
|
||||||
is(e.message, tests[i][1], msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=882653">Mozilla Bug 882653</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,166 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1107592
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1107592</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 1107592 **/
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
|
|
||||||
function doTest() {
|
|
||||||
var file = location.href;
|
|
||||||
var asyncFrame;
|
|
||||||
/* Async parent frames from pushPrefEnv don't show up in e10s. */
|
|
||||||
var isE10S = !SpecialPowers.isMainProcess();
|
|
||||||
if (!isE10S && SpecialPowers.getBoolPref("javascript.options.asyncstack")) {
|
|
||||||
asyncFrame = `Async*@${file}:153:3
|
|
||||||
`;
|
|
||||||
} else {
|
|
||||||
asyncFrame = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
var t = new TestInterfaceJS();
|
|
||||||
try {
|
|
||||||
t.testThrowError();
|
|
||||||
} catch (e) {
|
|
||||||
ok(e instanceof Error, "Should have an Error here");
|
|
||||||
ok(!(e instanceof DOMException), "Should not have DOMException here");
|
|
||||||
ok(!("code" in e), "Should not have a 'code' property");
|
|
||||||
is(e.name, "Error", "Should not have an interesting name here");
|
|
||||||
is(e.message, "We are an Error", "Should have the right message");
|
|
||||||
is(e.stack,
|
|
||||||
`doTest@${file}:31:7
|
|
||||||
${asyncFrame}`,
|
|
||||||
"Exception stack should still only show our code");
|
|
||||||
is(e.fileName,
|
|
||||||
file,
|
|
||||||
"Should have the right file name");
|
|
||||||
is(e.lineNumber, 31, "Should have the right line number");
|
|
||||||
is(e.columnNumber, 7, "Should have the right column number");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
t.testThrowDOMException();
|
|
||||||
} catch (e) {
|
|
||||||
ok(e instanceof Error, "Should also have an Error here");
|
|
||||||
ok(e instanceof DOMException, "Should have DOMException here");
|
|
||||||
is(e.name, "NotSupportedError", "Should have the right name here");
|
|
||||||
is(e.message, "We are a DOMException",
|
|
||||||
"Should also have the right message");
|
|
||||||
is(e.code, DOMException.NOT_SUPPORTED_ERR,
|
|
||||||
"Should have the right 'code'");
|
|
||||||
is(e.stack,
|
|
||||||
`doTest@${file}:50:7
|
|
||||||
${asyncFrame}`,
|
|
||||||
"Exception stack should still only show our code");
|
|
||||||
is(e.filename,
|
|
||||||
file,
|
|
||||||
"Should still have the right file name");
|
|
||||||
is(e.lineNumber, 50, "Should still have the right line number");
|
|
||||||
todo_isnot(e.columnNumber, 0,
|
|
||||||
"No column number support for DOMException yet");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
t.testThrowTypeError();
|
|
||||||
} catch (e) {
|
|
||||||
ok(e instanceof TypeError, "Should have a TypeError here");
|
|
||||||
ok(!(e instanceof DOMException), "Should not have DOMException here (2)");
|
|
||||||
ok(!("code" in e), "Should not have a 'code' property (2)");
|
|
||||||
is(e.name, "TypeError", "Should be named TypeError");
|
|
||||||
is(e.message, "We are a TypeError",
|
|
||||||
"Should also have the right message (2)");
|
|
||||||
is(e.stack,
|
|
||||||
`doTest@${file}:72:7
|
|
||||||
${asyncFrame}`,
|
|
||||||
"Exception stack for TypeError should only show our code");
|
|
||||||
is(e.fileName,
|
|
||||||
file,
|
|
||||||
"Should still have the right file name for TypeError");
|
|
||||||
is(e.lineNumber, 72, "Should still have the right line number for TypeError");
|
|
||||||
is(e.columnNumber, 7, "Should have the right column number for TypeError");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
t.testThrowCallbackError(function() { Array.indexOf() });
|
|
||||||
} catch (e) {
|
|
||||||
ok(e instanceof TypeError, "Should have a TypeError here (3)");
|
|
||||||
ok(!(e instanceof DOMException), "Should not have DOMException here (3)");
|
|
||||||
ok(!("code" in e), "Should not have a 'code' property (3)");
|
|
||||||
is(e.name, "TypeError", "Should be named TypeError (3)");
|
|
||||||
is(e.message, "missing argument 0 when calling function Array.indexOf",
|
|
||||||
"Should also have the right message (3)");
|
|
||||||
is(e.stack,
|
|
||||||
`doTest/<@${file}:92:45
|
|
||||||
doTest@${file}:92:7
|
|
||||||
${asyncFrame}`,
|
|
||||||
"Exception stack for TypeError should only show our code (3)");
|
|
||||||
is(e.fileName,
|
|
||||||
file,
|
|
||||||
"Should still have the right file name for TypeError (3)");
|
|
||||||
is(e.lineNumber, 92, "Should still have the right line number for TypeError (3)");
|
|
||||||
is(e.columnNumber, 45, "Should have the right column number for TypeError (3)");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
t.testThrowXraySelfHosted();
|
|
||||||
} catch (e) {
|
|
||||||
ok(!(e instanceof Error), "Should have an Exception here (4)");
|
|
||||||
ok(!(e instanceof DOMException), "Should not have DOMException here (4)");
|
|
||||||
ok(!("code" in e), "Should not have a 'code' property (4)");
|
|
||||||
is(e.name, "NS_ERROR_UNEXPECTED", "Name should be sanitized (4)");
|
|
||||||
is(e.message, "", "Message should be sanitized (5)");
|
|
||||||
is(e.stack,
|
|
||||||
`doTest@${file}:113:7
|
|
||||||
${asyncFrame}`,
|
|
||||||
"Exception stack for sanitized exception should only show our code (4)");
|
|
||||||
is(e.filename,
|
|
||||||
file,
|
|
||||||
"Should still have the right file name for sanitized exception (4)");
|
|
||||||
is(e.lineNumber, 113, "Should still have the right line number for sanitized exception (4)");
|
|
||||||
todo_isnot(e.columnNumber, 0, "Should have the right column number for sanitized exception (4)");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
t.testThrowSelfHosted();
|
|
||||||
} catch (e) {
|
|
||||||
ok(!(e instanceof Error), "Should have an Exception here (5)");
|
|
||||||
ok(!(e instanceof DOMException), "Should not have DOMException here (5)");
|
|
||||||
ok(!("code" in e), "Should not have a 'code' property (5)");
|
|
||||||
is(e.name, "NS_ERROR_UNEXPECTED", "Name should be sanitized (5)");
|
|
||||||
is(e.message, "", "Message should be sanitized (5)");
|
|
||||||
is(e.stack,
|
|
||||||
`doTest@${file}:132:7
|
|
||||||
${asyncFrame}`,
|
|
||||||
"Exception stack for sanitized exception should only show our code (5)");
|
|
||||||
is(e.filename,
|
|
||||||
file,
|
|
||||||
"Should still have the right file name for sanitized exception (5)");
|
|
||||||
is(e.lineNumber, 132, "Should still have the right line number for sanitized exception (5)");
|
|
||||||
todo_isnot(e.columnNumber, 0, "Should have the right column number for sanitized exception (5)");
|
|
||||||
}
|
|
||||||
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]},
|
|
||||||
doTest);
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107592">Mozilla Bug 1107592</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,56 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=923010
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 923010</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
/** Test for Bug 923010 **/
|
|
||||||
try {
|
|
||||||
var conn = new RTCPeerConnection();
|
|
||||||
|
|
||||||
var candidate = new RTCIceCandidate({candidate: null });
|
|
||||||
conn.addIceCandidate(candidate)
|
|
||||||
.then(function() {
|
|
||||||
ok(false, "addIceCandidate succeeded when it should have failed");
|
|
||||||
}, function(reason) {
|
|
||||||
is(reason.lineNumber, 17, "Rejection should have been on line 17");
|
|
||||||
is(reason.message,
|
|
||||||
"Invalid candidate passed to addIceCandidate!",
|
|
||||||
"Should have the rejection we expect");
|
|
||||||
})
|
|
||||||
.catch(function(reason) {
|
|
||||||
ok(false, "unexpected error: " + reason);
|
|
||||||
});
|
|
||||||
} catch (e) {
|
|
||||||
// b2g has no WebRTC, apparently
|
|
||||||
todo(false, "No WebRTC on b2g yet");
|
|
||||||
}
|
|
||||||
|
|
||||||
conn.close();
|
|
||||||
try {
|
|
||||||
conn.setIdentityProvider("example.com", "foo");
|
|
||||||
ok(false, "That call to setIdentityProvider should have thrown");
|
|
||||||
} catch (e) {
|
|
||||||
is(e.lineNumber, 36, "Exception should have been on line 36");
|
|
||||||
is(e.message,
|
|
||||||
"Peer connection is closed",
|
|
||||||
"Should have the exception we expect");
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=923010">Mozilla Bug 923010</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,86 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=725907
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 725907</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=725907">Mozilla Bug 725907</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div id="basket">
|
|
||||||
<span id="egg0"></span>
|
|
||||||
<span id="egg1"><span id="duckling1"></span></span>
|
|
||||||
<span id="egg2"></span>
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 725907 **/
|
|
||||||
|
|
||||||
function runTestsForDocument(document, msgSuffix) {
|
|
||||||
function is(a, b, msg) { SimpleTest.is(a, b, msg + msgSuffix); }
|
|
||||||
function isnot(a, b, msg) { SimpleTest.isnot(a, b, msg + msgSuffix); }
|
|
||||||
|
|
||||||
var basket = document.getElementById("basket");
|
|
||||||
var egg3 = document.createElement("span");
|
|
||||||
egg3.id = "egg3";
|
|
||||||
|
|
||||||
var log = '';
|
|
||||||
for (var x of basket.childNodes) {
|
|
||||||
if (x.nodeType != x.TEXT_NODE)
|
|
||||||
log += x.id + ";";
|
|
||||||
}
|
|
||||||
is(log, "egg0;egg1;egg2;", "'for (x of div.childNodes)' should iterate over child nodes");
|
|
||||||
|
|
||||||
log = '';
|
|
||||||
for (var x of basket.childNodes) {
|
|
||||||
if (x.nodeType != x.TEXT_NODE) {
|
|
||||||
log += x.id + ";";
|
|
||||||
if (x.id == "egg1")
|
|
||||||
basket.appendChild(egg3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
is(log, "egg0;egg1;egg2;egg3;", "'for (x of div.childNodes)' should see elements added during iteration");
|
|
||||||
|
|
||||||
log = '';
|
|
||||||
basket.appendChild(document.createTextNode("some text"));
|
|
||||||
for (var x of basket.children)
|
|
||||||
log += x.id + ";";
|
|
||||||
is(log, "egg0;egg1;egg2;egg3;", "'for (x of div.children)' should iterate over child elements");
|
|
||||||
|
|
||||||
var count = 0;
|
|
||||||
for (var x of document.getElementsByClassName("hazardous-materials"))
|
|
||||||
count++;
|
|
||||||
is(count, 0, "'for (x of emptyNodeList)' loop should run zero times");
|
|
||||||
|
|
||||||
var log = '';
|
|
||||||
for (var x of document.querySelectorAll("span"))
|
|
||||||
log += x.id + ";";
|
|
||||||
is(log, "egg0;egg1;duckling1;egg2;egg3;", "for-of loop should work with a querySelectorAll() NodeList");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* All the tests run twice. First, in this document, so without any wrappers. */
|
|
||||||
runTestsForDocument(document, "");
|
|
||||||
|
|
||||||
/* And once using the document of an iframe, so working with cross-compartment wrappers. */
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
function iframeLoaded(iframe) {
|
|
||||||
runTestsForDocument(iframe.contentWindow.document, " (in iframe)");
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<iframe src="forOf_iframe.html" onload="iframeLoaded(this)"></iframe>
|
|
||||||
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,50 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
<canvas id="c" width="1" height="1"></canvas>
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
function testInt64NonFinite(arg) {
|
|
||||||
// We can use a WebGLRenderingContext to test conversion to 64-bit signed
|
|
||||||
// ints edge cases.
|
|
||||||
var gl = $("c").getContext("experimental-webgl");
|
|
||||||
if (!gl) {
|
|
||||||
// No WebGL support on MacOS 10.5. Just skip this test
|
|
||||||
todo(false, "WebGL not supported");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var error = gl.getError()
|
|
||||||
|
|
||||||
// on the b2g emulator we get GL_INVALID_FRAMEBUFFER_OPERATION
|
|
||||||
if (error == 0x0506) // GL_INVALID_FRAMEBUFFER_OPERATION
|
|
||||||
return;
|
|
||||||
|
|
||||||
is(error, 0, "Should not start in an error state");
|
|
||||||
|
|
||||||
var b = gl.createBuffer();
|
|
||||||
gl.bindBuffer(gl.ARRAY_BUFFER, b);
|
|
||||||
|
|
||||||
var a = new Float32Array(1);
|
|
||||||
gl.bufferData(gl.ARRAY_BUFFER, a, gl.STATIC_DRAW);
|
|
||||||
|
|
||||||
gl.bufferSubData(gl.ARRAY_BUFFER, arg, a);
|
|
||||||
|
|
||||||
is(gl.getError(), 0, "Should have treated non-finite double as 0");
|
|
||||||
}
|
|
||||||
|
|
||||||
testInt64NonFinite(NaN);
|
|
||||||
testInt64NonFinite(Infinity);
|
|
||||||
testInt64NonFinite(-Infinity);
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,28 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1084001
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1084001</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 1084001 **/
|
|
||||||
is(Image.name, "Image", "Image name");
|
|
||||||
is(Promise.name, "Promise", "Promise name");
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1084001">Mozilla Bug 1084001</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,47 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=742156
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 742156</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=742156">Mozilla Bug 742156</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 742156 **/
|
|
||||||
|
|
||||||
var nativeToString = ("" + String.replace).replace("replace", "EventTarget");
|
|
||||||
try {
|
|
||||||
var eventTargetToString = "" + EventTarget;
|
|
||||||
is(eventTargetToString, nativeToString,
|
|
||||||
"Stringifying a DOM interface object should return the same string" +
|
|
||||||
"as stringifying a native function.");
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
ok(false, "Stringifying a DOM interface object shouldn't throw.");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
eventTargetToString = Function.prototype.toString.call(EventTarget);
|
|
||||||
is(eventTargetToString, nativeToString,
|
|
||||||
"Stringifying a DOM interface object via Function.prototype.toString " +
|
|
||||||
"should return the same string as stringifying a native function.");
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
ok(false, "Stringifying a DOM interface object shouldn't throw.");
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,241 +0,0 @@
|
||||||
<!-- Any copyright is dedicated to the Public Domain.
|
|
||||||
- http://creativecommons.org/publicdomain/zero/1.0/ -->
|
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Test Iterable Interface</title>
|
|
||||||
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<script class="testbody" type="application/javascript">
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, function() {
|
|
||||||
|
|
||||||
base_properties = [["entries", "function", 0],
|
|
||||||
["keys", "function", 0],
|
|
||||||
["values", "function", 0],
|
|
||||||
["forEach", "function", 1]]
|
|
||||||
var testExistence = function testExistence(prefix, obj, properties) {
|
|
||||||
for (var [name, type, args] of properties) {
|
|
||||||
// Properties are somewhere up the proto chain, hasOwnProperty won't work
|
|
||||||
isnot(obj[name], undefined,
|
|
||||||
`${prefix} object has property ${name}`);
|
|
||||||
|
|
||||||
is(typeof obj[name], type,
|
|
||||||
`${prefix} object property ${name} is a ${type}`);
|
|
||||||
// Check function length
|
|
||||||
if (type == "function") {
|
|
||||||
is(obj[name].length, args,
|
|
||||||
`${prefix} object property ${name} is length ${args}`);
|
|
||||||
is(obj[name].name, name,
|
|
||||||
`${prefix} object method name is ${name}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find where property is on proto chain, check for enumerablility there.
|
|
||||||
var owner = obj;
|
|
||||||
while (owner) {
|
|
||||||
var propDesc = Object.getOwnPropertyDescriptor(owner, name);
|
|
||||||
if (propDesc) {
|
|
||||||
ok(propDesc.enumerable,
|
|
||||||
`${prefix} object property ${name} is enumerable`);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
owner = Object.getPrototypeOf(owner);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var itr;
|
|
||||||
// Simple single type iterable creation and functionality test
|
|
||||||
info("IterableSingle: Testing simple iterable creation and functionality");
|
|
||||||
itr = new TestInterfaceIterableSingle();
|
|
||||||
testExistence("IterableSingle: ", itr, base_properties);
|
|
||||||
is(itr[Symbol.iterator], Array.prototype[Symbol.iterator],
|
|
||||||
"IterableSingle: Should be using %ArrayIterator% for @@iterator");
|
|
||||||
is(itr.keys, Array.prototype.keys,
|
|
||||||
"IterableSingle: Should be using %ArrayIterator% for 'keys'");
|
|
||||||
is(itr.entries, Array.prototype.entries,
|
|
||||||
"IterableSingle: Should be using %ArrayIterator% for 'entries'");
|
|
||||||
is(itr.values, itr[Symbol.iterator],
|
|
||||||
"IterableSingle: Should be using @@iterator for 'values'");
|
|
||||||
is(itr.forEach, Array.prototype.forEach,
|
|
||||||
"IterableSingle: Should be using %ArrayIterator% for 'forEach'");
|
|
||||||
var keys = [...itr.keys()];
|
|
||||||
var values = [...itr.values()];
|
|
||||||
var entries = [...itr.entries()];
|
|
||||||
var key_itr = itr.keys();
|
|
||||||
var value_itr = itr.values();
|
|
||||||
var entries_itr = itr.entries();
|
|
||||||
for (var i = 0; i < 3; ++i) {
|
|
||||||
var key = key_itr.next();
|
|
||||||
var value = value_itr.next();
|
|
||||||
var entry = entries_itr.next();
|
|
||||||
is(key.value, i, "IterableSingle: Key iterator value should be " + i);
|
|
||||||
is(key.value, keys[i],
|
|
||||||
"IterableSingle: Key iterator value should match destructuring " + i);
|
|
||||||
is(value.value, key.value, "IterableSingle: Value iterator value should be " + key.value);
|
|
||||||
is(value.value, values[i],
|
|
||||||
"IterableSingle: Value iterator value should match destructuring " + i);
|
|
||||||
is(entry.value[0], i, "IterableSingle: Entry iterator value 0 should be " + i);
|
|
||||||
is(entry.value[1], i, "IterableSingle: Entry iterator value 1 should be " + i);
|
|
||||||
is(entry.value[0], entries[i][0],
|
|
||||||
"IterableSingle: Entry iterator value 0 should match destructuring " + i);
|
|
||||||
is(entry.value[1], entries[i][1],
|
|
||||||
"IterableSingle: Entry iterator value 1 should match destructuring " + i);
|
|
||||||
}
|
|
||||||
|
|
||||||
var callsToForEachCallback = 0;
|
|
||||||
var thisArg = {};
|
|
||||||
itr.forEach(function(value, index, obj) {
|
|
||||||
is(index, callsToForEachCallback,
|
|
||||||
`IterableSingle: Should have the right index at ${callsToForEachCallback} calls to forEach callback`);
|
|
||||||
is(value, values[index],
|
|
||||||
`IterableSingle: Should have the right value at ${callsToForEachCallback} calls to forEach callback`);
|
|
||||||
is(this, thisArg,
|
|
||||||
"IterableSingle: Should have the right this value for forEach callback");
|
|
||||||
is(obj, itr,
|
|
||||||
"IterableSingle: Should have the right third arg for forEach callback");
|
|
||||||
++callsToForEachCallback;
|
|
||||||
}, thisArg);
|
|
||||||
is(callsToForEachCallback, 3,
|
|
||||||
"IterableSingle: Should have right total number of calls to forEach callback");
|
|
||||||
|
|
||||||
var key = key_itr.next();
|
|
||||||
var value = value_itr.next();
|
|
||||||
var entry = entries_itr.next();
|
|
||||||
is(key.value, undefined, "IterableSingle: Key iterator value should be undefined");
|
|
||||||
is(key.done, true, "IterableSingle: Key iterator done should be true");
|
|
||||||
is(value.value, undefined, "IterableSingle: Value iterator value should be undefined");
|
|
||||||
is(value.done, true, "IterableSingle: Value iterator done should be true");
|
|
||||||
is(entry.value, undefined, "IterableDouble: Entry iterator value should be undefined");
|
|
||||||
is(entry.done, true, "IterableSingle: Entry iterator done should be true");
|
|
||||||
is(Object.prototype.toString.call(Object.getPrototypeOf(key_itr)),
|
|
||||||
"[object Array Iterator]",
|
|
||||||
"iterator prototype should have the right brand");
|
|
||||||
|
|
||||||
// Simple dual type iterable creation and functionality test
|
|
||||||
info("IterableDouble: Testing simple iterable creation and functionality");
|
|
||||||
itr = new TestInterfaceIterableDouble();
|
|
||||||
testExistence("IterableDouble: ", itr, base_properties);
|
|
||||||
is(itr.entries, itr[Symbol.iterator],
|
|
||||||
"IterableDouble: Should be using @@iterator for 'entries'");
|
|
||||||
var elements = [["a", "b"], ["c", "d"], ["e", "f"]]
|
|
||||||
var keys = [...itr.keys()];
|
|
||||||
var values = [...itr.values()];
|
|
||||||
var entries = [...itr.entries()];
|
|
||||||
var key_itr = itr.keys();
|
|
||||||
var value_itr = itr.values();
|
|
||||||
var entries_itr = itr.entries();
|
|
||||||
for (var i = 0; i < 3; ++i) {
|
|
||||||
var key = key_itr.next();
|
|
||||||
var value = value_itr.next();
|
|
||||||
var entry = entries_itr.next();
|
|
||||||
is(key.value, elements[i][0], "IterableDouble: Key iterator value should be " + elements[i][0]);
|
|
||||||
is(key.value, keys[i],
|
|
||||||
"IterableDouble: Key iterator value should match destructuring " + i);
|
|
||||||
is(value.value, elements[i][1], "IterableDouble: Value iterator value should be " + elements[i][1]);
|
|
||||||
is(value.value, values[i],
|
|
||||||
"IterableDouble: Value iterator value should match destructuring " + i);
|
|
||||||
is(entry.value[0], elements[i][0], "IterableDouble: Entry iterator value 0 should be " + elements[i][0]);
|
|
||||||
is(entry.value[1], elements[i][1], "IterableDouble: Entry iterator value 1 should be " + elements[i][1]);
|
|
||||||
is(entry.value[0], entries[i][0],
|
|
||||||
"IterableDouble: Entry iterator value 0 should match destructuring " + i);
|
|
||||||
is(entry.value[1], entries[i][1],
|
|
||||||
"IterableDouble: Entry iterator value 1 should match destructuring " + i);
|
|
||||||
}
|
|
||||||
|
|
||||||
callsToForEachCallback = 0;
|
|
||||||
thisArg = {};
|
|
||||||
itr.forEach(function(value, key, obj) {
|
|
||||||
is(key, keys[callsToForEachCallback],
|
|
||||||
`IterableDouble: Should have the right key at ${callsToForEachCallback} calls to forEach callback`);
|
|
||||||
is(value, values[callsToForEachCallback],
|
|
||||||
`IterableDouble: Should have the right value at ${callsToForEachCallback} calls to forEach callback`);
|
|
||||||
is(this, thisArg,
|
|
||||||
"IterableDouble: Should have the right this value for forEach callback");
|
|
||||||
is(obj, itr,
|
|
||||||
"IterableSingle: Should have the right third arg for forEach callback");
|
|
||||||
++callsToForEachCallback;
|
|
||||||
}, thisArg);
|
|
||||||
is(callsToForEachCallback, 3,
|
|
||||||
"IterableDouble: Should have right total number of calls to forEach callback");
|
|
||||||
|
|
||||||
var key = key_itr.next();
|
|
||||||
var value = value_itr.next();
|
|
||||||
var entry = entries_itr.next()
|
|
||||||
is(key.value, undefined, "IterableDouble: Key iterator value should be undefined");
|
|
||||||
is(key.done, true, "IterableDouble: Key iterator done should be true");
|
|
||||||
is(value.value, undefined, "IterableDouble: Value iterator value should be undefined");
|
|
||||||
is(value.done, true, "IterableDouble: Value iterator done should be true");
|
|
||||||
is(entry.value, undefined, "IterableDouble: Entry iterator value should be undefined");
|
|
||||||
is(entry.done, true, "IterableDouble: Entry iterator done should be true");
|
|
||||||
is(Object.prototype.toString.call(Object.getPrototypeOf(key_itr)),
|
|
||||||
"[object TestInterfaceIterableDoubleIteratorPrototype]",
|
|
||||||
"iterator prototype should have the right brand");
|
|
||||||
|
|
||||||
// Simple dual type iterable creation and functionality test
|
|
||||||
info("IterableDoubleUnion: Testing simple iterable creation and functionality");
|
|
||||||
itr = new TestInterfaceIterableDoubleUnion();
|
|
||||||
testExistence("IterableDoubleUnion: ", itr, base_properties);
|
|
||||||
is(itr.entries, itr[Symbol.iterator],
|
|
||||||
"IterableDoubleUnion: Should be using @@iterator for 'entries'");
|
|
||||||
var elements = [["long", 1], ["string", "a"]]
|
|
||||||
var keys = [...itr.keys()];
|
|
||||||
var values = [...itr.values()];
|
|
||||||
var entries = [...itr.entries()];
|
|
||||||
var key_itr = itr.keys();
|
|
||||||
var value_itr = itr.values();
|
|
||||||
var entries_itr = itr.entries();
|
|
||||||
for (var i = 0; i < elements.length; ++i) {
|
|
||||||
var key = key_itr.next();
|
|
||||||
var value = value_itr.next();
|
|
||||||
var entry = entries_itr.next();
|
|
||||||
is(key.value, elements[i][0], "IterableDoubleUnion: Key iterator value should be " + elements[i][0]);
|
|
||||||
is(key.value, keys[i],
|
|
||||||
"IterableDoubleUnion: Key iterator value should match destructuring " + i);
|
|
||||||
is(value.value, elements[i][1], "IterableDoubleUnion: Value iterator value should be " + elements[i][1]);
|
|
||||||
is(value.value, values[i],
|
|
||||||
"IterableDoubleUnion: Value iterator value should match destructuring " + i);
|
|
||||||
is(entry.value[0], elements[i][0], "IterableDoubleUnion: Entry iterator value 0 should be " + elements[i][0]);
|
|
||||||
is(entry.value[1], elements[i][1], "IterableDoubleUnion: Entry iterator value 1 should be " + elements[i][1]);
|
|
||||||
is(entry.value[0], entries[i][0],
|
|
||||||
"IterableDoubleUnion: Entry iterator value 0 should match destructuring " + i);
|
|
||||||
is(entry.value[1], entries[i][1],
|
|
||||||
"IterableDoubleUnion: Entry iterator value 1 should match destructuring " + i);
|
|
||||||
}
|
|
||||||
|
|
||||||
callsToForEachCallback = 0;
|
|
||||||
thisArg = {};
|
|
||||||
itr.forEach(function(value, key, obj) {
|
|
||||||
is(key, keys[callsToForEachCallback],
|
|
||||||
`IterableDoubleUnion: Should have the right key at ${callsToForEachCallback} calls to forEach callback`);
|
|
||||||
is(value, values[callsToForEachCallback],
|
|
||||||
`IterableDoubleUnion: Should have the right value at ${callsToForEachCallback} calls to forEach callback`);
|
|
||||||
is(this, thisArg,
|
|
||||||
"IterableDoubleUnion: Should have the right this value for forEach callback");
|
|
||||||
is(obj, itr,
|
|
||||||
"IterableSingle: Should have the right third arg for forEach callback");
|
|
||||||
++callsToForEachCallback;
|
|
||||||
}, thisArg);
|
|
||||||
is(callsToForEachCallback, 2,
|
|
||||||
"IterableDoubleUnion: Should have right total number of calls to forEach callback");
|
|
||||||
|
|
||||||
var key = key_itr.next();
|
|
||||||
var value = value_itr.next();
|
|
||||||
var entry = entries_itr.next()
|
|
||||||
is(key.value, undefined, "IterableDoubleUnion: Key iterator value should be undefined");
|
|
||||||
is(key.done, true, "IterableDoubleUnion: Key iterator done should be true");
|
|
||||||
is(value.value, undefined, "IterableDoubleUnion: Value iterator value should be undefined");
|
|
||||||
is(value.done, true, "IterableDoubleUnion: Value iterator done should be true");
|
|
||||||
is(entry.value, undefined, "IterableDoubleUnion: Entry iterator value should be undefined");
|
|
||||||
is(entry.done, true, "IterableDoubleUnion: Entry iterator done should be true");
|
|
||||||
is(Object.prototype.toString.call(Object.getPrototypeOf(key_itr)),
|
|
||||||
"[object TestInterfaceIterableDoubleUnionIteratorPrototype]",
|
|
||||||
"iterator prototype should have the right brand");
|
|
||||||
|
|
||||||
SimpleTest.finish();
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,47 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1186696
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1186696</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 1186696 **/
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
|
|
||||||
function doTest() {
|
|
||||||
var values = [ function() {}, 5, null, undefined, "some string", {} ];
|
|
||||||
|
|
||||||
while (values.length != 0) {
|
|
||||||
var value = values.pop();
|
|
||||||
var t = new TestInterfaceJS();
|
|
||||||
t.onsomething = value;
|
|
||||||
var gottenValue = t.onsomething;
|
|
||||||
if (typeof value == "object" || typeof value == "function") {
|
|
||||||
is(gottenValue, value, "Should get back the object-or-null we put in");
|
|
||||||
} else {
|
|
||||||
is(gottenValue, null, "Should get back null");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]},
|
|
||||||
doTest);
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1186696">Mozilla Bug 1186696</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,85 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
|
|
||||||
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
|
|
||||||
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
|
||||||
xmlns:html="http://www.w3.org/1999/xhtml"
|
|
||||||
onload="runTest();">
|
|
||||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
|
|
||||||
|
|
||||||
<script class="testbody" type="application/javascript">
|
|
||||||
<![CDATA[
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
|
|
||||||
function Listener(aBrowser, aPrerendered, aCallback) {
|
|
||||||
this.init(aBrowser, aPrerendered, aCallback);
|
|
||||||
}
|
|
||||||
|
|
||||||
Listener.prototype = {
|
|
||||||
init: function(aBrowser, aCallback) {
|
|
||||||
this.mBrowser = aBrowser;
|
|
||||||
this.mCallback = aCallback;
|
|
||||||
},
|
|
||||||
QueryInterface: function(aIID) {
|
|
||||||
if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
|
|
||||||
aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
|
|
||||||
aIID.equals(Components.interfaces.nsISupports))
|
|
||||||
return this;
|
|
||||||
throw Components.results.NS_NOINTERFACE;
|
|
||||||
},
|
|
||||||
onStateChange : function(aWebProgress, aRequest, aStateFlags, aStatus) {
|
|
||||||
if ((aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_STOP) &&
|
|
||||||
(aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_IS_DOCUMENT)) {
|
|
||||||
setTimeout(this.mCallback, 0);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onProgressChange : function(aWebProgress, aRequest,
|
|
||||||
aCurSelfProgress, aMaxSelfProgress,
|
|
||||||
aCurTotalProgress, aMaxTotalProgress) {},
|
|
||||||
onLocationChange : function(aWebProgress, aRequest, aLocation, aFlags) {},
|
|
||||||
onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage) {},
|
|
||||||
onSecurityChange : function(aWebProgress, aRequest, aState) {},
|
|
||||||
mBrowser: null,
|
|
||||||
mPrerendered: false,
|
|
||||||
mCallback: null
|
|
||||||
};
|
|
||||||
|
|
||||||
var progress, progressListener;
|
|
||||||
|
|
||||||
function runTest() {
|
|
||||||
SpecialPowers.pushPrefEnv({
|
|
||||||
"set": [
|
|
||||||
["dom.max_script_run_time", 1]
|
|
||||||
]
|
|
||||||
}, function() {
|
|
||||||
test(function() {
|
|
||||||
ok("The page is successfully interrupted.");
|
|
||||||
SimpleTest.finish();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function test(aCallback) {
|
|
||||||
var browser = document.getElementById("prerendered");;
|
|
||||||
progressListener = new Listener(browser, aCallback);
|
|
||||||
var docShell = browser.docShell;
|
|
||||||
progress = docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
|
|
||||||
.getInterface(Components.interfaces.nsIWebProgress);
|
|
||||||
progress.addProgressListener(progressListener,
|
|
||||||
Components.interfaces.nsIWebProgress.NOTIFY_ALL);
|
|
||||||
browser.loadURI("data:text/html,<script>;for(;;);</script" + ">");
|
|
||||||
}
|
|
||||||
|
|
||||||
]]>
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<body id="html_body" xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1050456">Mozilla Bug 1050456</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
<browser prerendered="true" id="prerendered"/>
|
|
||||||
</window>
|
|
|
@ -1,27 +0,0 @@
|
||||||
<!doctype html>
|
|
||||||
<meta charset=utf-8>
|
|
||||||
<title>[LenientThis]</title>
|
|
||||||
<script src=/resources/testharness.js></script>
|
|
||||||
<script src=/resources/testharnessreport.js></script>
|
|
||||||
<div id=log></div>
|
|
||||||
<script>
|
|
||||||
function noop1() { }
|
|
||||||
function noop2() { }
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
var desc = Object.getOwnPropertyDescriptor(Document.prototype, "onreadystatechange");
|
|
||||||
|
|
||||||
document.onreadystatechange = noop1;
|
|
||||||
assert_equals(document.onreadystatechange, noop1, "document.onreadystatechange == noop1");
|
|
||||||
assert_equals(desc.get.call({ }), undefined, "document.onreadystatechange getter.call({}) == undefined");
|
|
||||||
}, "invoking Document.onreadystatechange's getter with an invalid this object returns undefined");
|
|
||||||
|
|
||||||
test(function() {
|
|
||||||
var desc = Object.getOwnPropertyDescriptor(Document.prototype, "onreadystatechange");
|
|
||||||
|
|
||||||
document.onreadystatechange = noop1;
|
|
||||||
assert_equals(document.onreadystatechange, noop1, "document.onreadystatechange == noop1");
|
|
||||||
assert_equals(desc.set.call({ }, noop2), undefined, "document.onreadystatechange setter.call({}) == undefined");
|
|
||||||
assert_equals(document.onreadystatechange, noop1, "document.onreadystatechange == noop1 (still)");
|
|
||||||
}, "invoking Document.onreadystatechange's setter with an invalid this object does nothing and returns undefined");
|
|
||||||
</script>
|
|
|
@ -1,49 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=462428
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<title>Test for Bug 462428</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=462428">Mozilla Bug 462428</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 462428 **/
|
|
||||||
var x = new XMLHttpRequest;
|
|
||||||
x.open("GET", "");
|
|
||||||
var getter = x.__lookupGetter__('readyState');
|
|
||||||
ok(getter !== undefined, "But able to look it up the normal way");
|
|
||||||
ok(!x.hasOwnProperty('readyState'), "property should still be on the prototype");
|
|
||||||
|
|
||||||
var sawProp = false;
|
|
||||||
for (var i in x) {
|
|
||||||
if (i === "readyState") {
|
|
||||||
sawProp = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ok(sawProp, "property should be enumerable");
|
|
||||||
|
|
||||||
is(getter.call(x), 1, "the getter actually works");
|
|
||||||
|
|
||||||
Object.getPrototypeOf(x).__defineSetter__('readyState', function() {});
|
|
||||||
is(getter.call(x), 1, "the getter works after defineSetter");
|
|
||||||
|
|
||||||
is(x.responseType, "", "Should have correct responseType up front");
|
|
||||||
var setter = x.__lookupSetter__('responseType');
|
|
||||||
setter.call(x, "document");
|
|
||||||
is(x.responseType, "document", "the setter is bound correctly");
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,36 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=808991
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 808991</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=808991">Mozilla Bug 808991</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none" data-1="foo" data-bar="baz">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 808991 **/
|
|
||||||
is($("content").dataset[1], "foo",
|
|
||||||
"Indexed props should work like named on dataset");
|
|
||||||
is($("content").dataset["1"], "foo",
|
|
||||||
"Indexed props as strings should work like named on dataset");
|
|
||||||
is($("content").dataset.bar, "baz",
|
|
||||||
"Named props should work on dataset");
|
|
||||||
is($("content").dataset['bar'], "baz",
|
|
||||||
"Named props as strings should work on dataset");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,40 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<meta charset=utf-8>
|
|
||||||
<title>Test for named getter enumerability</title>
|
|
||||||
<script src="/resources/testharness.js"></script>
|
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
|
||||||
<div id="log"></div>
|
|
||||||
<script>
|
|
||||||
test(function() {
|
|
||||||
var list = document.getElementsByTagName("div");
|
|
||||||
var desc = Object.getOwnPropertyDescriptor(list, "0");
|
|
||||||
assert_equals(typeof desc, "object", "Should have a '0' property");
|
|
||||||
assert_true(desc.enumerable, "'0' property should be enumerable");
|
|
||||||
desc = Object.getOwnPropertyDescriptor(list, "log");
|
|
||||||
assert_equals(typeof desc, "object", "Should have a 'log' property");
|
|
||||||
assert_false(desc.enumerable, "'log' property should not be enumerable");
|
|
||||||
}, "Correct getOwnPropertyDescriptor behavior");
|
|
||||||
test(function() {
|
|
||||||
var list = document.getElementsByTagName("div");
|
|
||||||
props = [];
|
|
||||||
for (var prop in list) {
|
|
||||||
props.push(prop);
|
|
||||||
}
|
|
||||||
assert_not_equals(props.indexOf("0"), -1, "Should enumerate '0'");
|
|
||||||
assert_equals(props.indexOf("log"), -1, "Should not enumerate 'log'");
|
|
||||||
}, "Correct enumeration behavior");
|
|
||||||
test(function() {
|
|
||||||
var list = document.getElementsByTagName("div");
|
|
||||||
props = Object.keys(list)
|
|
||||||
assert_not_equals(props.indexOf("0"), -1, "Keys should contain '0'");
|
|
||||||
assert_equals(props.indexOf("log"), -1, "Keys should not contain 'log'");
|
|
||||||
}, "Correct keys() behavior");
|
|
||||||
test(function() {
|
|
||||||
var list = document.getElementsByTagName("div");
|
|
||||||
props = Object.getOwnPropertyNames(list)
|
|
||||||
assert_not_equals(props.indexOf("0"), -1,
|
|
||||||
"own prop names should contain '0'");
|
|
||||||
assert_not_equals(props.indexOf("log"), -1,
|
|
||||||
"own prop names should contain 'log'");
|
|
||||||
}, "Correct getOwnPropertyNames() behavior");
|
|
||||||
</script>
|
|
|
@ -1,42 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug </title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug **/
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
|
|
||||||
SimpleTest.expectUncaughtException();
|
|
||||||
setTimeout(function() {
|
|
||||||
SpecialPowers.Cu.getJSTestingFunctions().throwOutOfMemory();
|
|
||||||
}, 0);
|
|
||||||
|
|
||||||
addEventListener("error", function(e) {
|
|
||||||
is(e.type, "error", "Should have an error event");
|
|
||||||
is(e.message, "uncaught exception: out of memory",
|
|
||||||
"Should have the right error message");
|
|
||||||
// Make sure we finish async, in case the expectUncaughtException assertion
|
|
||||||
// about having seen the exception runs after our listener
|
|
||||||
SimpleTest.executeSoon(SimpleTest.finish);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=">Mozilla Bug </a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,45 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=603201
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 603201</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 603201 **/
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
function runTest()
|
|
||||||
{
|
|
||||||
var nodes = document.body.childNodes;
|
|
||||||
|
|
||||||
Object.setPrototypeOf(Number.prototype, nodes);
|
|
||||||
|
|
||||||
Object.defineProperty(nodes, "getter", {get: function() {
|
|
||||||
"use strict";
|
|
||||||
is(this, 1);
|
|
||||||
return "getter";
|
|
||||||
}});
|
|
||||||
Object.defineProperty(Object.getPrototypeOf(nodes), "getter2", {get: function() {
|
|
||||||
"use strict";
|
|
||||||
is(this, 1);
|
|
||||||
return "getter2";
|
|
||||||
}});
|
|
||||||
|
|
||||||
var number = 1;
|
|
||||||
is(number.getter, "getter");
|
|
||||||
is(number.getter2, "getter2");
|
|
||||||
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body onload="runTest();">
|
|
||||||
<pre>Test</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,143 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1107592
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1107592</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 1107592 **/
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
|
|
||||||
function checkExn(lineNumber, name, message, code, filename, testNumber, stack, exn) {
|
|
||||||
is(exn.lineNumber, lineNumber,
|
|
||||||
"Should have the right line number in test " + testNumber);
|
|
||||||
is(exn.name, name,
|
|
||||||
"Should have the right exception name in test " + testNumber);
|
|
||||||
is("filename" in exn ? exn.filename : exn.fileName, filename,
|
|
||||||
"Should have the right file name in test " + testNumber);
|
|
||||||
is(exn.message, message,
|
|
||||||
"Should have the right message in test " + testNumber);
|
|
||||||
is(exn.code, code, "Should have the right .code in test " + testNumber);
|
|
||||||
if (message === "") {
|
|
||||||
is(exn.name, "InternalError",
|
|
||||||
"Should have one of our synthetic exceptions in test " + testNumber);
|
|
||||||
}
|
|
||||||
is(exn.stack, stack, "Should have the right stack in test " + testNumber);
|
|
||||||
}
|
|
||||||
|
|
||||||
function ensurePromiseFail(testNumber, value) {
|
|
||||||
ok(false, "Test " + testNumber + " should not have a fulfilled promise");
|
|
||||||
}
|
|
||||||
|
|
||||||
function doTest() {
|
|
||||||
var t = new TestInterfaceJS();
|
|
||||||
/* Async parent frames from pushPrefEnv don't show up in e10s. */
|
|
||||||
var isE10S = !SpecialPowers.isMainProcess();
|
|
||||||
var asyncStack = SpecialPowers.getBoolPref("javascript.options.asyncstack");
|
|
||||||
var ourFile = location.href;
|
|
||||||
var unwrapError = "Promise rejection value is a non-unwrappable cross-compartment wrapper.";
|
|
||||||
var parentFrame = (asyncStack && !isE10S) ? `Async*@${ourFile}:130:3
|
|
||||||
` : "";
|
|
||||||
|
|
||||||
Promise.all([
|
|
||||||
t.testPromiseWithThrowingChromePromiseInit().then(
|
|
||||||
ensurePromiseFail.bind(null, 1),
|
|
||||||
checkExn.bind(null, 49, "InternalError", unwrapError,
|
|
||||||
undefined, ourFile, 1,
|
|
||||||
`doTest@${ourFile}:49:7
|
|
||||||
` +
|
|
||||||
parentFrame)),
|
|
||||||
t.testPromiseWithThrowingContentPromiseInit(function() {
|
|
||||||
thereIsNoSuchContentFunction1();
|
|
||||||
}).then(
|
|
||||||
ensurePromiseFail.bind(null, 2),
|
|
||||||
checkExn.bind(null, 57, "ReferenceError",
|
|
||||||
"thereIsNoSuchContentFunction1 is not defined",
|
|
||||||
undefined, ourFile, 2,
|
|
||||||
`doTest/<@${ourFile}:57:11
|
|
||||||
doTest@${ourFile}:56:7
|
|
||||||
` +
|
|
||||||
parentFrame)),
|
|
||||||
t.testPromiseWithThrowingChromeThenFunction().then(
|
|
||||||
ensurePromiseFail.bind(null, 3),
|
|
||||||
checkExn.bind(null, 0, "InternalError", unwrapError, undefined, "", 3, asyncStack ? (`Async*doTest@${ourFile}:67:7
|
|
||||||
` +
|
|
||||||
parentFrame) : "")),
|
|
||||||
t.testPromiseWithThrowingContentThenFunction(function() {
|
|
||||||
thereIsNoSuchContentFunction2();
|
|
||||||
}).then(
|
|
||||||
ensurePromiseFail.bind(null, 4),
|
|
||||||
checkExn.bind(null, 73, "ReferenceError",
|
|
||||||
"thereIsNoSuchContentFunction2 is not defined",
|
|
||||||
undefined, ourFile, 4,
|
|
||||||
`doTest/<@${ourFile}:73:11
|
|
||||||
` +
|
|
||||||
(asyncStack ? `Async*doTest@${ourFile}:72:7
|
|
||||||
` : "") +
|
|
||||||
parentFrame)),
|
|
||||||
t.testPromiseWithThrowingChromeThenable().then(
|
|
||||||
ensurePromiseFail.bind(null, 5),
|
|
||||||
checkExn.bind(null, 0, "InternalError", unwrapError, undefined, "", 5, asyncStack ? (`Async*doTest@${ourFile}:84:7
|
|
||||||
` +
|
|
||||||
parentFrame) : "")),
|
|
||||||
t.testPromiseWithThrowingContentThenable({
|
|
||||||
then: function() { thereIsNoSuchContentFunction3(); }
|
|
||||||
}).then(
|
|
||||||
ensurePromiseFail.bind(null, 6),
|
|
||||||
checkExn.bind(null, 90, "ReferenceError",
|
|
||||||
"thereIsNoSuchContentFunction3 is not defined",
|
|
||||||
undefined, ourFile, 6,
|
|
||||||
`then@${ourFile}:90:32
|
|
||||||
` + (asyncStack ? `Async*doTest@${ourFile}:89:7\n` + parentFrame : ""))),
|
|
||||||
t.testPromiseWithDOMExceptionThrowingPromiseInit().then(
|
|
||||||
ensurePromiseFail.bind(null, 7),
|
|
||||||
checkExn.bind(null, 98, "NotFoundError",
|
|
||||||
"We are a second DOMException",
|
|
||||||
DOMException.NOT_FOUND_ERR, ourFile, 7,
|
|
||||||
`doTest@${ourFile}:98:7
|
|
||||||
` +
|
|
||||||
parentFrame)),
|
|
||||||
t.testPromiseWithDOMExceptionThrowingThenFunction().then(
|
|
||||||
ensurePromiseFail.bind(null, 8),
|
|
||||||
checkExn.bind(null, asyncStack ? 106 : 0, "NetworkError",
|
|
||||||
"We are a third DOMException",
|
|
||||||
DOMException.NETWORK_ERR, asyncStack ? ourFile : "", 8,
|
|
||||||
(asyncStack ? `Async*doTest@${ourFile}:106:7
|
|
||||||
` +
|
|
||||||
parentFrame : ""))),
|
|
||||||
t.testPromiseWithDOMExceptionThrowingThenable().then(
|
|
||||||
ensurePromiseFail.bind(null, 9),
|
|
||||||
checkExn.bind(null, asyncStack ? 114 : 0, "TypeMismatchError",
|
|
||||||
"We are a fourth DOMException",
|
|
||||||
DOMException.TYPE_MISMATCH_ERR,
|
|
||||||
asyncStack ? ourFile : "", 9,
|
|
||||||
(asyncStack ? `Async*doTest@${ourFile}:114:7
|
|
||||||
` +
|
|
||||||
parentFrame : ""))),
|
|
||||||
]).then(SimpleTest.finish,
|
|
||||||
function(err) {
|
|
||||||
ok(false, "One of our catch statements totally failed with err" + err + ', stack: ' + (err ? err.stack : ''));
|
|
||||||
SimpleTest.finish();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]},
|
|
||||||
doTest);
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107592">Mozilla Bug 1107592</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,99 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1021066
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1021066</title>
|
|
||||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1021066">Mozilla Bug 1021066</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
<iframe id="t" src="http://example.org/tests/dom/bindings/test/file_proxies_via_xray.html"></iframe>
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 1021066 **/
|
|
||||||
|
|
||||||
function test()
|
|
||||||
{
|
|
||||||
"use strict"; // So we'll get exceptions on sets
|
|
||||||
var doc = document.getElementById("t").contentWindow.document;
|
|
||||||
ok(!("x" in doc), "Should have an Xray here");
|
|
||||||
is(doc.x, undefined, "Really should have an Xray here");
|
|
||||||
is(doc.wrappedJSObject.x, 5, "And wrapping the right thing");
|
|
||||||
|
|
||||||
// Test overridebuiltins binding without named setter
|
|
||||||
is(doc.y, doc.getElementById("y"),
|
|
||||||
"Named getter should work on Document");
|
|
||||||
try {
|
|
||||||
doc.z = 5;
|
|
||||||
ok(false, "Should have thrown on set of readonly property on Document");
|
|
||||||
} catch (e) {
|
|
||||||
ok(/read-only/.test(e.message),
|
|
||||||
"Threw the right exception on set of readonly property on Document");
|
|
||||||
}
|
|
||||||
|
|
||||||
doc.w = 5;
|
|
||||||
is(doc.w, 5, "Should be able to set things that are not named props");
|
|
||||||
|
|
||||||
// Test non-overridebuiltins binding without named setter
|
|
||||||
var l = doc.getElementsByTagName("img");
|
|
||||||
is(l.y, doc.getElementById("y"),
|
|
||||||
"Named getter should work on HTMLCollection");
|
|
||||||
try {
|
|
||||||
l.z = 5;
|
|
||||||
ok(false, "Should have thrown on set of readonly property on HTMLCollection");
|
|
||||||
} catch (e) {
|
|
||||||
ok(/read-only/.test(e.message),
|
|
||||||
"Should throw the right exception on set of readonly property on HTMLCollection");
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
l[10] = 5;
|
|
||||||
ok(false, "Should have thrown on set of indexed property on HTMLCollection");
|
|
||||||
} catch (e) {
|
|
||||||
ok(/doesn't have an indexed property setter/.test(e.message),
|
|
||||||
"Should throw the right exception on set of indexed property on HTMLCollection");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test overridebuiltins binding with named setter
|
|
||||||
var d = doc.documentElement.dataset;
|
|
||||||
d.foo = "bar";
|
|
||||||
// Check that this actually got passed on to the underlying object.
|
|
||||||
is(d.wrappedJSObject.foo, "bar",
|
|
||||||
"Set should get forwarded to the underlying object");
|
|
||||||
is(doc.documentElement.getAttribute("data-foo"), "bar",
|
|
||||||
"Attribute setter should have been called");
|
|
||||||
d.foo = "baz";
|
|
||||||
// Check that this actually got passed on to the underlying object.
|
|
||||||
is(d.wrappedJSObject.foo, "baz",
|
|
||||||
"Set should get forwarded to the underlying object again");
|
|
||||||
is(doc.documentElement.getAttribute("data-foo"), "baz",
|
|
||||||
"Attribute setter should have been called again");
|
|
||||||
|
|
||||||
// Test non-overridebuiltins binding with named setter
|
|
||||||
var s = doc.defaultView.localStorage;
|
|
||||||
s["test_proxies_via_xray"] = "bar";
|
|
||||||
// Check that this actually got passed on to the underlying object.
|
|
||||||
is(s.wrappedJSObject["test_proxies_via_xray"], "bar",
|
|
||||||
"Set should get forwarded to the underlying object without overridebuiltins");
|
|
||||||
s["test_proxies_via_xray"] = "baz";
|
|
||||||
// Check that this actually got passed on to the underlying object.
|
|
||||||
is(s.wrappedJSObject["test_proxies_via_xray"], "baz",
|
|
||||||
"Set should get forwarded to the underlying object again without overridebuiltins");
|
|
||||||
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
addLoadEvent(test);
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,41 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=827546
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 827546</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 827546 **/
|
|
||||||
|
|
||||||
var notEditable = document.createElement("div");
|
|
||||||
var thrown;
|
|
||||||
try {
|
|
||||||
thrown = false;
|
|
||||||
SpecialPowers.do_QueryInterface(notEditable, "nsIDOMNSEditableElement");
|
|
||||||
} catch (e) {
|
|
||||||
thrown = true;
|
|
||||||
}
|
|
||||||
ok(thrown,
|
|
||||||
"QI to nsIDOMNSEditableElement on a non-editable element should fail");
|
|
||||||
|
|
||||||
var editable = document.createElement("input");
|
|
||||||
ok(SpecialPowers.do_QueryInterface(editable, "nsIDOMNSEditableElement"),
|
|
||||||
"Editable element needs to support QI to nsIDOMNSEditableElement");
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=827546">Mozilla Bug 827546</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,59 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1048659
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1048659</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for returning unions from JS-implemented WebIDL. **/
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, go);
|
|
||||||
|
|
||||||
function go() {
|
|
||||||
var t = new TestInterfaceJS();
|
|
||||||
var t2 = new TestInterfaceJS();
|
|
||||||
|
|
||||||
is(t.pingPongUnion(t2), t2, "ping pong union for left case should be identity");
|
|
||||||
is(t.pingPongUnion(12), 12, "ping pong union for right case should be identity");
|
|
||||||
|
|
||||||
is(t.pingPongUnionContainingNull("this is not a string"), "this is not a string",
|
|
||||||
"ping pong union containing union for left case should be identity");
|
|
||||||
is(t.pingPongUnionContainingNull(null), null,
|
|
||||||
"ping pong union containing null for right case null should be identity");
|
|
||||||
is(t.pingPongUnionContainingNull(t2), t2,
|
|
||||||
"ping pong union containing null for right case should be identity");
|
|
||||||
|
|
||||||
is(t.pingPongNullableUnion(t2), t2, "ping pong nullable union for left case should be identity");
|
|
||||||
is(t.pingPongNullableUnion(12), 12, "ping pong nullable union for right case should be identity");
|
|
||||||
is(t.pingPongNullableUnion(null), null, "ping pong nullable union for null case should be identity");
|
|
||||||
|
|
||||||
var rejectedBadUnion = false;
|
|
||||||
var result = null;
|
|
||||||
try {
|
|
||||||
result = t.returnBadUnion();
|
|
||||||
} catch (e) {
|
|
||||||
rejectedBadUnion = true;
|
|
||||||
}
|
|
||||||
is(result, null, "bad union should not set a value for result");
|
|
||||||
ok(rejectedBadUnion, "bad union should throw an exception");
|
|
||||||
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1048659">Mozilla Bug 1048659</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,53 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1066432
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1066432</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 1066432 **/
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, function() {
|
|
||||||
var testInterfaceJS = new TestInterfaceJS();
|
|
||||||
ok(testInterfaceJS, "got a TestInterfaceJS object");
|
|
||||||
|
|
||||||
var nonIterableObject = {[Symbol.iterator]: 5};
|
|
||||||
|
|
||||||
try {
|
|
||||||
testInterfaceJS.testSequenceOverload(nonIterableObject);
|
|
||||||
ok(false, "Should have thrown in the overload case"); // see long comment above!
|
|
||||||
} catch (e) {
|
|
||||||
is(e.name, "TypeError", "Should get a TypeError for the overload case");
|
|
||||||
ok(e.message.includes("not iterable"),
|
|
||||||
"Should have a message about being non-iterable in the overload case");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
testInterfaceJS.testSequenceUnion(nonIterableObject);
|
|
||||||
ok(false, "Should have thrown in the union case");
|
|
||||||
} catch (e) {
|
|
||||||
is(e.name, "TypeError", "Should get a TypeError for the union case");
|
|
||||||
ok(e.message.includes("not iterable"),
|
|
||||||
"Should have a message about being non-iterable in the union case");
|
|
||||||
}
|
|
||||||
|
|
||||||
SimpleTest.finish();
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1066432">Mozilla Bug 1066432</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,59 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=775852
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 775852</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=775852">Mozilla Bug 775852</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
<canvas width="1" height="1" id="c"></canvas>
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 775852 **/
|
|
||||||
function doTest() {
|
|
||||||
var gl = $("c").getContext("experimental-webgl");
|
|
||||||
if (!gl) {
|
|
||||||
// No WebGL support on MacOS 10.5. Just skip this test
|
|
||||||
todo(false, "WebGL not supported");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var setterCalled = false;
|
|
||||||
|
|
||||||
extLength = gl.getSupportedExtensions().length;
|
|
||||||
ok(extLength > 0,
|
|
||||||
"This test won't work right if we have no supported extensions");
|
|
||||||
|
|
||||||
Object.defineProperty(Array.prototype, "0",
|
|
||||||
{
|
|
||||||
set: function(val) {
|
|
||||||
setterCalled = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Test that our property got defined correctly
|
|
||||||
var arr = []
|
|
||||||
arr[0] = 5;
|
|
||||||
is(setterCalled, true, "Setter should be called when setting prop on array");
|
|
||||||
|
|
||||||
setterCalled = false;
|
|
||||||
|
|
||||||
is(gl.getSupportedExtensions().length, extLength,
|
|
||||||
"We should still have the same number of extensions");
|
|
||||||
|
|
||||||
is(setterCalled, false,
|
|
||||||
"Setter should not be called when getting supported extensions");
|
|
||||||
}
|
|
||||||
doTest();
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,40 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1043690
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1043690</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1043690">Mozilla Bug 1043690</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
<form>
|
|
||||||
<input name="action">
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 1043690 **/
|
|
||||||
var f = document.querySelector("form");
|
|
||||||
var i = document.querySelector("input");
|
|
||||||
is(f.getAttribute("action"), null, "Should have no action attribute");
|
|
||||||
is(f.action, i, "form.action should be the input");
|
|
||||||
f.action = "http://example.org";
|
|
||||||
is(f.getAttribute("action"), "http://example.org",
|
|
||||||
"Should have an action attribute now");
|
|
||||||
is(f.action, i, "form.action should still be the input");
|
|
||||||
i.remove();
|
|
||||||
is(f.action, "http://example.org/",
|
|
||||||
"form.action should no longer be shadowed");
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,59 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1334537
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test for Bug 1334537</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 1334537 **/
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
|
|
||||||
function go() {
|
|
||||||
// Need a new global that will pick up our pref.
|
|
||||||
var ifr = document.createElement("iframe");
|
|
||||||
document.body.appendChild(ifr);
|
|
||||||
|
|
||||||
var t = new ifr.contentWindow.TestFunctions();
|
|
||||||
var testString = "abcdefghijklmnopqrstuvwxyz";
|
|
||||||
const substringLength = 10;
|
|
||||||
var shortTestString = testString.substring(0, substringLength);
|
|
||||||
|
|
||||||
t.setStringData(testString);
|
|
||||||
// Note: we want to do all our gets before we start running code we don't
|
|
||||||
// control inside the test harness, if we really want to exercise the string
|
|
||||||
// cache in controlled ways.
|
|
||||||
|
|
||||||
var asShortDOMString = t.getStringDataAsDOMString(substringLength);
|
|
||||||
var asFullDOMString = t.getStringDataAsDOMString();
|
|
||||||
var asShortAString = t.getStringDataAsAString(substringLength);
|
|
||||||
var asAString = t.getStringDataAsAString();
|
|
||||||
|
|
||||||
is(asShortAString, shortTestString, "Short DOMString should be short");
|
|
||||||
is(asFullDOMString, testString, "Full DOMString should be test string");
|
|
||||||
is(asShortAString, shortTestString, "Short AString should be short");
|
|
||||||
is(asAString, testString, "Full AString should be test string");
|
|
||||||
|
|
||||||
SimpleTest.finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
addLoadEvent(function() {
|
|
||||||
SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]},
|
|
||||||
go);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1334537">Mozilla Bug 1334537</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<pre id="test">
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue