1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
import WebIDL
def WebIDLTest(parser, harness):
parser.parse(
"""
[Global=Foo, Exposed=Foo]
interface Foo : Bar {
getter any(DOMString name);
};
[Exposed=Foo]
interface Bar {};
"""
)
results = parser.finish()
harness.ok(
results[0].isOnGlobalProtoChain(),
"[Global] interface should be on global's proto chain",
)
harness.ok(
results[1].isOnGlobalProtoChain(),
"[Global] interface should be on global's proto chain",
)
parser = parser.reset()
threw = False
try:
parser.parse(
"""
[Global=Foo, Exposed=Foo]
interface Foo {
getter any(DOMString name);
setter undefined(DOMString name, any arg);
};
"""
)
parser.finish()
except WebIDL.WebIDLError:
threw = True
harness.ok(
threw,
"Should have thrown for [Global] used on an interface with a " "named setter",
)
parser = parser.reset()
threw = False
try:
parser.parse(
"""
[Global=Foo, Exposed=Foo]
interface Foo {
getter any(DOMString name);
deleter undefined(DOMString name);
};
"""
)
parser.finish()
except WebIDL.WebIDLError:
threw = True
harness.ok(
threw,
"Should have thrown for [Global] used on an interface with a " "named deleter",
)
parser = parser.reset()
threw = False
try:
parser.parse(
"""
[Global=Foo, LegacyOverrideBuiltIns, Exposed=Foo]
interface Foo {
};
"""
)
parser.finish()
except WebIDL.WebIDLError:
threw = True
harness.ok(
threw,
"Should have thrown for [Global] used on an interface with a "
"[LegacyOverrideBuiltIns]",
)
parser = parser.reset()
threw = False
try:
parser.parse(
"""
[Global=Foo, Exposed=Foo]
interface Foo : Bar {
};
[LegacyOverrideBuiltIns, Exposed=Foo]
interface Bar {
};
"""
)
parser.finish()
except WebIDL.WebIDLError:
threw = True
harness.ok(
threw,
"Should have thrown for [Global] used on an interface with an "
"[LegacyOverrideBuiltIns] ancestor",
)
parser = parser.reset()
threw = False
try:
parser.parse(
"""
[Global=Foo, Exposed=Foo]
interface Foo {
};
[Exposed=Foo]
interface Bar : Foo {
};
"""
)
parser.finish()
except WebIDL.WebIDLError:
threw = True
harness.ok(
threw,
"Should have thrown for [Global] used on an interface with a " "descendant",
)
parser = parser.reset()
threw = False
try:
parser.parse(
"""
[Global, Exposed=Foo]
interface Foo {
};
"""
)
parser.finish()
except WebIDL.WebIDLError:
threw = True
harness.ok(
threw,
"Should have thrown for [Global] without a right hand side value",
)
|