Auto merge of #28092 - jdm:smuppy2, r=emilio,asajeffrey

Update mozjs
This commit is contained in:
bors-servo 2021-02-18 09:40:37 -05:00 committed by GitHub
commit 5b8f045f2b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
127 changed files with 1967 additions and 3493 deletions

4
Cargo.lock generated
View file

@ -3785,7 +3785,7 @@ dependencies = [
[[package]]
name = "mozjs"
version = "0.14.1"
source = "git+https://github.com/servo/rust-mozjs#db90a4651adcc1447d1eb8c4bb13f18ea957d263"
source = "git+https://github.com/servo/rust-mozjs#b8122da4ea8a48ea21454e65f42d5b2194a2d311"
dependencies = [
"cc",
"lazy_static",
@ -3798,7 +3798,7 @@ dependencies = [
[[package]]
name = "mozjs_sys"
version = "0.68.2"
source = "git+https://github.com/servo/mozjs?rev=26a1e8afdb21beec33373ef2a38131272d064bdd#26a1e8afdb21beec33373ef2a38131272d064bdd"
source = "git+https://github.com/servo/mozjs?rev=c6c7b5319975a8f0465ce8c17329e74be4cb80b1#c6c7b5319975a8f0465ce8c17329e74be4cb80b1"
dependencies = [
"bindgen",
"cc",

View file

@ -65,11 +65,11 @@ impl<'a> phf_shared::PhfHash for Bytes<'a> {
}
fn find_python() -> String {
env::var("PYTHON2").ok().unwrap_or_else(|| {
env::var("PYTHON3").ok().unwrap_or_else(|| {
let candidates = if cfg!(windows) {
["python2.7.exe", "python27.exe", "python.exe"]
["python3.8.exe", "python38.exe", "python.exe"]
} else {
["python2.7", "python2", "python"]
["python3.8", "python3", "python"]
};
for &name in &candidates {
if Command::new(name)
@ -82,7 +82,7 @@ fn find_python() -> String {
}
}
panic!(
"Can't find python (tried {})! Try fixing PATH or setting the PYTHON2 env var",
"Can't find python (tried {})! Try fixing PATH or setting the PYTHON3 env var",
candidates.join(", ")
)
})

View file

@ -23,9 +23,8 @@ use devtools_traits::{AutoMargins, ComputedNodeLayout, TimelineMarkerType};
use devtools_traits::{EvaluateJSReply, Modification, NodeInfo, TimelineMarker};
use ipc_channel::ipc::IpcSender;
use js::jsval::UndefinedValue;
use js::rust::wrappers::ObjectClassName;
use js::rust::ToString;
use msg::constellation_msg::PipelineId;
use std::ffi::CStr;
use std::rc::Rc;
use std::str;
use uuid::Uuid;
@ -65,12 +64,11 @@ pub fn handle_evaluate_js(global: &GlobalScope, eval: String, reply: IpcSender<E
} else {
assert!(rval.is_object());
rooted!(in(*cx) let obj = rval.to_object());
let class_name = CStr::from_ptr(ObjectClassName(*cx, obj.handle()));
let class_name = str::from_utf8(class_name.to_bytes()).unwrap();
let jsstr = ToString(*cx, rval.handle());
let class_name = jsstring_to_str(*cx, jsstr);
EvaluateJSReply::ActorValue {
class: class_name.to_owned(),
class: class_name.to_string(),
uuid: Uuid::new_v4().to_string(),
}
}

View file

@ -344,7 +344,7 @@ class CGMethodCall(CGThing):
distinguishingArg = "HandleValue::from_raw(args.get(%d))" % distinguishingIndex
def pickFirstSignature(condition, filterLambda):
sigs = filter(filterLambda, possibleSignatures)
sigs = list(filter(filterLambda, possibleSignatures))
assert len(sigs) < 2
if len(sigs) > 0:
call = getPerSignatureCall(sigs[0], distinguishingIndex)
@ -1616,9 +1616,12 @@ class PropertyDefiner:
specs = []
prefableSpecs = []
prefableTemplate = ' Guard::new(%s, %s[%d])'
origTemplate = specTemplate
if isinstance(specTemplate, str):
specTemplate = lambda _: origTemplate # noqa
for cond, members in groupby(array, lambda m: getCondition(m, self.descriptor)):
currentSpecs = [specTemplate % getDataTuple(m) for m in members]
currentSpecs = [specTemplate(m) % getDataTuple(m) for m in members]
if specTerminator:
currentSpecs.append(specTerminator)
specs.append("&[\n" + ",\n".join(currentSpecs) + "]\n")
@ -1826,7 +1829,11 @@ class AttrDefiner(PropertyDefiner):
self.name = name
self.descriptor = descriptor
self.regular = [
m
{
"name": m.identifier.name,
"attr": m,
"flags": "JSPROP_ENUMERATE",
}
for m in descriptor.interface.members if
m.isAttr() and m.isStatic() == static
and MemberIsUnforgeable(m, descriptor) == unforgeable
@ -1834,15 +1841,21 @@ class AttrDefiner(PropertyDefiner):
self.static = static
self.unforgeable = unforgeable
if not static and not unforgeable and not (
descriptor.interface.isNamespace() or descriptor.interface.isCallback()
):
self.regular.append({
"name": "@@toStringTag",
"attr": None,
"flags": "JSPROP_READONLY | JSPROP_INTERNAL_USE_BIT"
})
def generateArray(self, array, name):
if len(array) == 0:
return ""
flags = "JSPROP_ENUMERATE"
if self.unforgeable:
flags += " | JSPROP_PERMANENT"
def getter(attr):
attr = attr['attr']
if self.static:
accessor = 'get_' + self.descriptor.internalNameFor(attr.identifier.name)
jitinfo = "0 as *const JSJitInfo"
@ -1858,6 +1871,7 @@ class AttrDefiner(PropertyDefiner):
"native": accessor})
def setter(attr):
attr = attr['attr']
if (attr.readonly and not attr.getExtendedAttribute("PutForwards")
and not attr.getExtendedAttribute("Replaceable")):
return "JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }"
@ -1876,29 +1890,59 @@ class AttrDefiner(PropertyDefiner):
% {"info": jitinfo,
"native": accessor})
def condition(m, d):
if m["name"] == "@@toStringTag":
return MemberCondition(pref=None, func=None, exposed=None, secure=None)
return PropertyDefiner.getControllingCondition(m["attr"], d)
def specData(attr):
return (str_to_const_array(attr.identifier.name), flags, getter(attr),
if attr["name"] == "@@toStringTag":
return (attr["name"][2:], attr["flags"],
str_to_const_array(self.descriptor.interface.getClassName()))
flags = attr["flags"]
if self.unforgeable:
flags += " | JSPROP_PERMANENT"
return (str_to_const_array(attr["attr"].identifier.name), flags, getter(attr),
setter(attr))
def template(m):
if m["name"] == "@@toStringTag":
return """ JSPropertySpec {
name: JSPropertySpec_Name { symbol_: SymbolCode::%s as usize + 1 },
flags_: (%s) as u8,
u: JSPropertySpec_AccessorsOrValue {
value: JSPropertySpec_ValueWrapper {
type_: JSValueType::JSVAL_TYPE_STRING as _,
__bindgen_anon_1: JSPropertySpec_ValueWrapper__bindgen_ty_1 {
string: %s as *const u8 as *const libc::c_char,
}
}
}
}
"""
return """ JSPropertySpec {
name: JSPropertySpec_Name { string_: %s as *const u8 as *const libc::c_char },
flags_: (%s) as u8,
u: JSPropertySpec_AccessorsOrValue {
accessors: JSPropertySpec_AccessorsOrValue_Accessors {
getter: JSPropertySpec_Accessor {
native: %s,
},
setter: JSPropertySpec_Accessor {
native: %s,
}
}
}
}
"""
return self.generateGuardedArray(
array, name,
' JSPropertySpec {\n'
' name: JSPropertySpec_Name { string_: %s as *const u8 as *const libc::c_char },\n'
' flags: (%s) as u8,\n'
' u: JSPropertySpec_AccessorsOrValue {\n'
' accessors: JSPropertySpec_AccessorsOrValue_Accessors {\n'
' getter: JSPropertySpec_Accessor {\n'
' native: %s,\n'
' },\n'
' setter: JSPropertySpec_Accessor {\n'
' native: %s,\n'
' }\n'
' }\n'
' }\n'
' }',
template,
' JSPropertySpec::ZERO',
'JSPropertySpec',
PropertyDefiner.getControllingCondition, specData)
condition, specData)
class ConstDefiner(PropertyDefiner):
@ -2073,7 +2117,7 @@ class CGImports(CGWrapper):
members += [constructor]
if d.proxy:
members += [o for o in d.operations.values() if o]
members += [o for o in list(d.operations.values()) if o]
for m in members:
if m.isMethod():
@ -2513,7 +2557,7 @@ def UnionTypes(descriptors, dictionaries, callbacks, typedefs, config):
])
# Sort unionStructs by key, retrieve value
unionStructs = (i[1] for i in sorted(unionStructs.items(), key=operator.itemgetter(0)))
unionStructs = (i[1] for i in sorted(list(unionStructs.items()), key=operator.itemgetter(0)))
return CGImports(CGList(unionStructs, "\n\n"),
descriptors=[],
@ -2741,7 +2785,7 @@ ensure_expando_object(*cx, obj.handle().into(), expando.handle_mut());
# unforgeable holder for those with the right JSClass. Luckily, there
# aren't too many globals being created.
if descriptor.isGlobal():
copyFunc = "JS_CopyPropertiesFrom"
copyFunc = "JS_CopyOwnPropertiesAndPrivateFields"
else:
copyFunc = "JS_InitializePropertiesFromCompatibleNativeObject"
copyCode += """\
@ -2783,7 +2827,6 @@ rooted!(in(*cx) let obj = NewProxyObject(
Handle::from_raw(UndefinedHandleValue),
proto.get(),
ptr::null(),
false,
));
assert!(!obj.is_null());
SetProxyReservedSlot(
@ -4412,9 +4455,10 @@ class CGEnum(CGThing):
pub enum %s {
%s
}
""" % (ident, ",\n ".join(map(getEnumValueName, enum.values())))
""" % (ident, ",\n ".join(map(getEnumValueName, list(enum.values()))))
pairs = ",\n ".join(['("%s", super::%s::%s)' % (val, ident, getEnumValueName(val)) for val in enum.values()])
pairs = ",\n ".join(['("%s", super::%s::%s)' % (val, ident, getEnumValueName(val))
for val in list(enum.values())])
inner = string.Template("""\
use crate::dom::bindings::conversions::ConversionResult;
@ -4597,9 +4641,8 @@ class CGUnionStruct(CGThing):
return "Rc"
return ""
templateVars = map(lambda t: (getUnionTypeTemplateVars(t, self.descriptorProvider),
getTypeWrapper(t)),
self.type.flatMemberTypes)
templateVars = [(getUnionTypeTemplateVars(t, self.descriptorProvider),
getTypeWrapper(t)) for t in self.type.flatMemberTypes]
enumValues = [
" %s(%s)," % (v["name"], "%s<%s>" % (wrapper, v["typeName"]) if wrapper else v["typeName"])
for (v, wrapper) in templateVars
@ -4658,7 +4701,7 @@ class CGUnionConversionStruct(CGThing):
" Ok(None) => (),\n"
"}\n") % (self.type, name, self.type, name)
interfaceMemberTypes = filter(lambda t: t.isNonCallbackInterface(), memberTypes)
interfaceMemberTypes = [t for t in memberTypes if t.isNonCallbackInterface()]
if len(interfaceMemberTypes) > 0:
typeNames = [get_name(memberType) for memberType in interfaceMemberTypes]
interfaceObject = CGList(CGGeneric(get_match(typeName)) for typeName in typeNames)
@ -4666,7 +4709,7 @@ class CGUnionConversionStruct(CGThing):
else:
interfaceObject = None
arrayObjectMemberTypes = filter(lambda t: t.isSequence(), memberTypes)
arrayObjectMemberTypes = [t for t in memberTypes if t.isSequence()]
if len(arrayObjectMemberTypes) > 0:
assert len(arrayObjectMemberTypes) == 1
typeName = arrayObjectMemberTypes[0].name
@ -4675,7 +4718,7 @@ class CGUnionConversionStruct(CGThing):
else:
arrayObject = None
callbackMemberTypes = filter(lambda t: t.isCallback() or t.isCallbackInterface(), memberTypes)
callbackMemberTypes = [t for t in memberTypes if t.isCallback() or t.isCallbackInterface()]
if len(callbackMemberTypes) > 0:
assert len(callbackMemberTypes) == 1
typeName = callbackMemberTypes[0].name
@ -4683,7 +4726,7 @@ class CGUnionConversionStruct(CGThing):
else:
callbackObject = None
dictionaryMemberTypes = filter(lambda t: t.isDictionary(), memberTypes)
dictionaryMemberTypes = [t for t in memberTypes if t.isDictionary()]
if len(dictionaryMemberTypes) > 0:
assert len(dictionaryMemberTypes) == 1
typeName = dictionaryMemberTypes[0].name
@ -4692,7 +4735,7 @@ class CGUnionConversionStruct(CGThing):
else:
dictionaryObject = None
objectMemberTypes = filter(lambda t: t.isObject(), memberTypes)
objectMemberTypes = [t for t in memberTypes if t.isObject()]
if len(objectMemberTypes) > 0:
assert len(objectMemberTypes) == 1
typeName = objectMemberTypes[0].name
@ -4701,7 +4744,7 @@ class CGUnionConversionStruct(CGThing):
else:
object = None
mozMapMemberTypes = filter(lambda t: t.isRecord(), memberTypes)
mozMapMemberTypes = [t for t in memberTypes if t.isRecord()]
if len(mozMapMemberTypes) > 0:
assert len(mozMapMemberTypes) == 1
typeName = mozMapMemberTypes[0].name
@ -4747,9 +4790,9 @@ class CGUnionConversionStruct(CGThing):
typename = get_name(memberType)
return CGGeneric(get_match(typename))
other = []
stringConversion = map(getStringOrPrimitiveConversion, stringTypes)
numericConversion = map(getStringOrPrimitiveConversion, numericTypes)
booleanConversion = map(getStringOrPrimitiveConversion, booleanTypes)
stringConversion = list(map(getStringOrPrimitiveConversion, stringTypes))
numericConversion = list(map(getStringOrPrimitiveConversion, numericTypes))
booleanConversion = list(map(getStringOrPrimitiveConversion, booleanTypes))
if stringConversion:
if booleanConversion:
other.append(CGIfWrapper("value.get().is_boolean()", booleanConversion[0]))
@ -5915,7 +5958,7 @@ class CGInterfaceTrait(CGThing):
rettype)
if descriptor.proxy:
for name, operation in descriptor.operations.iteritems():
for name, operation in descriptor.operations.items():
if not operation or operation.isStringifier():
continue
@ -6047,11 +6090,14 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries
'js::jsapi::JSPROP_ENUMERATE',
'js::jsapi::JSPROP_PERMANENT',
'js::jsapi::JSPROP_READONLY',
'js::jsapi::JSPROP_INTERNAL_USE_BIT',
'js::jsapi::JSPropertySpec',
'js::jsapi::JSPropertySpec_Accessor',
'js::jsapi::JSPropertySpec_AccessorsOrValue',
'js::jsapi::JSPropertySpec_AccessorsOrValue_Accessors',
'js::jsapi::JSPropertySpec_Name',
'js::jsapi::JSPropertySpec_ValueWrapper',
'js::jsapi::JSPropertySpec_ValueWrapper__bindgen_ty_1',
'js::jsapi::JSString',
'js::jsapi::JSTracer',
'js::jsapi::JSType',
@ -6059,7 +6105,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries
'js::jsapi::JSValueType',
'js::jsapi::JS_AtomizeAndPinString',
'js::rust::wrappers::JS_CallFunctionValue',
'js::rust::wrappers::JS_CopyPropertiesFrom',
'js::rust::wrappers::JS_CopyOwnPropertiesAndPrivateFields',
'js::rust::wrappers::JS_DefineProperty',
'js::rust::wrappers::JS_DefinePropertyById2',
'js::jsapi::JS_ForwardGetPropertyTo',
@ -6442,7 +6488,7 @@ class CGDescriptor(CGThing):
post='\n')
if reexports:
reexports = ', '.join(map(lambda name: reexportedName(name), reexports))
reexports = ', '.join([reexportedName(name) for name in reexports])
cgThings = CGList([CGGeneric('pub use self::%s::{%s};' % (toBindingNamespace(descriptor.name), reexports)),
cgThings], '\n')
@ -7778,7 +7824,7 @@ impl Clone for TopTypeId {
# TypeId enum.
return "%s(%sTypeId)" % (name, name) if name in hierarchy else name
for base, derived in hierarchy.iteritems():
for base, derived in hierarchy.items():
variants = []
if config.getDescriptor(base).concrete:
variants.append(CGGeneric(base))

View file

@ -73,7 +73,7 @@ class Configuration:
def getDescriptors(self, **filters):
"""Gets the descriptors that match the given filters."""
curr = self.descriptors
for key, val in filters.iteritems():
for key, val in filters.items():
if key == 'webIDLFile':
def getter(x):
return x.interface.filename()
@ -104,14 +104,14 @@ class Configuration:
else:
def getter(x):
return getattr(x, key)
curr = filter(lambda x: getter(x) == val, curr)
curr = [x for x in curr if getter(x) == val]
return curr
def getEnums(self, webIDLFile):
return filter(lambda e: e.filename() == webIDLFile, self.enums)
return [e for e in self.enums if e.filename() == webIDLFile]
def getTypedefs(self, webIDLFile):
return filter(lambda e: e.filename() == webIDLFile, self.typedefs)
return [e for e in self.typedefs if e.filename() == webIDLFile]
@staticmethod
def _filterForFile(items, webIDLFile=""):
@ -119,7 +119,7 @@ class Configuration:
if not webIDLFile:
return items
return filter(lambda x: x.filename() == webIDLFile, items)
return [x for x in items if x.filename() == webIDLFile]
def getDictionaries(self, webIDLFile=""):
return self._filterForFile(self.dictionaries, webIDLFile=webIDLFile)
@ -327,7 +327,7 @@ class Descriptor(DescriptorProvider):
if config == '*':
iface = self.interface
while iface:
add('all', map(lambda m: m.name, iface.members), attribute)
add('all', [m.name for m in iface.members], attribute)
iface = iface.parent
else:
add('all', [config], attribute)

View file

@ -4,7 +4,7 @@
""" A WebIDL parser. """
from __future__ import print_function
from ply import lex, yacc
import re
import os
@ -57,7 +57,7 @@ def enum(*names, **kw):
if "base" not in kw:
return Foo(names)
return Foo(chain(kw["base"].attrs.keys(), names))
return Foo(chain(list(kw["base"].attrs.keys()), names))
class WebIDLError(Exception):
@ -124,6 +124,9 @@ class BuiltinLocation(object):
return (isinstance(other, BuiltinLocation) and
self.msg == other.msg)
def __hash__(self):
return hash(self.msg)
def filename(self):
return '<builtin>'
@ -2360,6 +2363,9 @@ class IDLNullableType(IDLParametrizedType):
def __eq__(self, other):
return isinstance(other, IDLNullableType) and self.inner == other.inner
def __hash__(self):
return hash(self.inner)
def __str__(self):
return self.inner.__str__() + "OrNull"
@ -2522,6 +2528,9 @@ class IDLSequenceType(IDLParametrizedType):
def __eq__(self, other):
return isinstance(other, IDLSequenceType) and self.inner == other.inner
def __hash__(self):
return hash(self.inner)
def __str__(self):
return self.inner.__str__() + "Sequence"
@ -2933,6 +2942,9 @@ class IDLWrapperType(IDLType):
self._identifier == other._identifier and
self.builtin == other.builtin)
def __hash__(self):
return hash((self._identifier, self.builtin))
def __str__(self):
return str(self.name) + " (Wrapper)"
@ -3301,6 +3313,12 @@ class IDLBuiltinType(IDLType):
return "MaybeShared" + str(self.name)
return str(self.name)
def __eq__(self, other):
return other and self.location == other.location and self.name == other.name and self._typeTag == other._typeTag
def __hash__(self):
return hash((self.location, self.name, self._typeTag))
def prettyName(self):
return IDLBuiltinType.PrettyNames[self._typeTag]
@ -3628,7 +3646,7 @@ integerTypeSizes = {
def matchIntegerValueToType(value):
for type, extremes in integerTypeSizes.items():
for type, extremes in list(integerTypeSizes.items()):
(min, max) = extremes
if value <= max and value >= min:
return BuiltinTypes[type]
@ -3707,7 +3725,7 @@ class IDLValue(IDLObject):
elif self.type.isString() and type.isEnum():
# Just keep our string, but make sure it's a valid value for this enum
enum = type.unroll().inner
if self.value not in enum.values():
if self.value not in list(enum.values()):
raise WebIDLError("'%s' is not a valid default value for enum %s"
% (self.value, enum.identifier.name),
[location, enum.location])
@ -4789,7 +4807,7 @@ class IDLAttribute(IDLInterfaceMember):
"CrossOriginWritable",
"SetterThrows",
]
for (key, value) in self._extendedAttrDict.items():
for (key, value) in list(self._extendedAttrDict.items()):
if key in allowedExtAttrs:
if value is not True:
raise WebIDLError("[%s] with a value is currently "
@ -5479,7 +5497,7 @@ class IDLMethod(IDLInterfaceMember, IDLScope):
[attr.location])
if identifier == "CrossOriginCallable" and self.isStatic():
raise WebIDLError("[CrossOriginCallable] is only allowed on non-static "
"attributes"
"attributes",
[attr.location, self.location])
elif identifier == "Pure":
if not attr.noArguments():
@ -5721,6 +5739,7 @@ class Tokenizer(object):
"FLOATLITERAL",
"IDENTIFIER",
"STRING",
"COMMENTS",
"WHITESPACE",
"OTHER"
]
@ -5753,8 +5772,12 @@ class Tokenizer(object):
t.value = t.value[1:-1]
return t
def t_COMMENTS(self, t):
r'(\/\*(.|\n)*?\*\/)|(\/\/.*)'
pass
def t_WHITESPACE(self, t):
r'[\t\n\r ]+|[\t\n\r ]*((//[^\n]*|/\*.*?\*/)[\t\n\r ]*)+'
r'[\t\n\r ]+'
pass
def t_ELLIPSIS(self, t):
@ -5840,7 +5863,7 @@ class Tokenizer(object):
"async": "ASYNC",
}
tokens.extend(keywords.values())
tokens.extend(list(keywords.values()))
def t_error(self, t):
raise WebIDLError("Unrecognized Input",
@ -5849,23 +5872,21 @@ class Tokenizer(object):
lexpos=self.lexer.lexpos,
filename=self.filename)])
def __init__(self, outputdir, lexer=None):
def __init__(self, lexer=None):
if lexer:
self.lexer = lexer
else:
self.lexer = lex.lex(object=self,
outputdir=outputdir,
lextab='webidllex',
reflags=re.DOTALL)
self.lexer = lex.lex(object=self)
class SqueakyCleanLogger(object):
errorWhitelist = [
# Web IDL defines the WHITESPACE token, but doesn't actually
# Web IDL defines the WHITESPACE and COMMENTS token, but doesn't actually
# use it ... so far.
"Token 'WHITESPACE' defined, but not used",
# And that means we have an unused token
"There is 1 unused token",
"Token 'COMMENTS' defined, but not used",
# And that means we have unused tokens
"There are 2 unused tokens",
# Web IDL defines a OtherOrComma rule that's only used in
# ExtendedAttributeInner, which we don't use yet.
"Rule 'OtherOrComma' defined, but not used",
@ -7506,22 +7527,11 @@ class Parser(Tokenizer):
raise WebIDLError("invalid syntax", [Location(self.lexer, p.lineno, p.lexpos, self._filename)])
def __init__(self, outputdir='', lexer=None):
Tokenizer.__init__(self, outputdir, lexer)
Tokenizer.__init__(self, lexer)
logger = SqueakyCleanLogger()
try:
self.parser = yacc.yacc(module=self,
outputdir=outputdir,
tabmodule='webidlyacc',
errorlog=logger,
debug=False
# Pickling the grammar is a speedup in
# some cases (older Python?) but a
# significant slowdown in others.
# We're not pickling for now, until it
# becomes a speedup again.
# , picklefile='WebIDLGrammar.pkl'
)
self.parser = yacc.yacc(module=self, errorlog=logger, debug=False)
finally:
logger.reportGrammarErrors()
@ -7553,12 +7563,12 @@ class Parser(Tokenizer):
return type
def parse(self, t, filename=None):
self.lexer.input(t)
self._filename = filename
self.lexer.input(t.decode(encoding = 'utf-8'))
# for tok in iter(self.lexer.token, None):
# print tok
self._filename = filename
self._productions.extend(self.parser.parse(lexer=self.lexer, tracking=True))
self._filename = None

View file

@ -3,7 +3,7 @@ http://www.dabeaz.com/ply/
Licensed under BSD.
This directory contains just the code and license from PLY version 3.3;
This directory contains just the code and license from PLY version 4.0;
the full distribution (see the URL) also contains examples, tests,
documentation, and a longer README.

View file

@ -1,4 +1,6 @@
# PLY package
# Author: David Beazley (dave@dabeaz.com)
# https://dabeaz.com/ply/index.html
__version__ = '4.0'
__all__ = ['lex','yacc']

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -52,7 +52,7 @@ def main():
module = CGBindingRoot(config, prefix, filename).define()
if module:
with open(os.path.join(out_dir, prefix + ".rs"), "wb") as f:
f.write(module)
f.write(module.encode("utf-8"))
def make_dir(path):
@ -66,7 +66,7 @@ def generate(config, name, filename):
root = getattr(GlobalGenRoots, name)(config)
code = root.define()
with open(filename, "wb") as f:
f.write(code)
f.write(code.encode("utf-8"))
def add_css_properties_attributes(css_properties_json, parser):

View file

@ -56,12 +56,12 @@ use js::glue::{IsWrapper, UnwrapObjectDynamic};
use js::glue::{RUST_JSID_IS_INT, RUST_JSID_TO_INT};
use js::glue::{RUST_JSID_IS_STRING, RUST_JSID_TO_STRING};
use js::jsapi::{Heap, JSContext, JSObject, JSString};
use js::jsapi::{IsWindowProxy, JS_NewStringCopyN, JS_StringHasLatin1Chars};
use js::jsapi::{IsWindowProxy, JS_DeprecatedStringHasLatin1Chars, JS_NewStringCopyN};
use js::jsapi::{
JS_GetLatin1StringCharsAndLength, JS_GetTwoByteStringCharsAndLength, JS_IsExceptionPending,
};
use js::jsval::{ObjectValue, StringValue, UndefinedValue};
use js::rust::wrappers::{JS_GetProperty, JS_HasProperty, JS_IsArrayObject};
use js::rust::wrappers::{IsArrayObject, JS_GetProperty, JS_HasProperty};
use js::rust::{get_object_class, is_dom_class, is_dom_object, maybe_wrap_value, ToString};
use js::rust::{HandleId, HandleObject, HandleValue, MutableHandleValue};
use num_traits::Float;
@ -220,7 +220,7 @@ impl FromJSValConvertible for DOMString {
/// Convert the given `JSString` to a `DOMString`. Fails if the string does not
/// contain valid UTF-16.
pub unsafe fn jsstring_to_str(cx: *mut JSContext, s: *mut JSString) -> DOMString {
let latin1 = JS_StringHasLatin1Chars(s);
let latin1 = JS_DeprecatedStringHasLatin1Chars(s);
DOMString::from_string(if latin1 {
latin1_to_string(cx, s)
} else {
@ -271,7 +271,7 @@ impl FromJSValConvertible for USVString {
debug!("ToString failed");
return Err(());
}
let latin1 = JS_StringHasLatin1Chars(jsstr);
let latin1 = JS_DeprecatedStringHasLatin1Chars(jsstr);
if latin1 {
// FIXME(ajeffrey): Convert directly from DOMString to USVString
return Ok(ConversionResult::Success(USVString(String::from(
@ -317,7 +317,7 @@ impl FromJSValConvertible for ByteString {
return Err(());
}
let latin1 = JS_StringHasLatin1Chars(string);
let latin1 = JS_DeprecatedStringHasLatin1Chars(string);
if latin1 {
let mut length = 0;
let chars = JS_GetLatin1StringCharsAndLength(cx, ptr::null(), string, &mut length);
@ -564,7 +564,7 @@ impl<T: DomObject> ToJSValConvertible for DomRoot<T> {
/// NodeList).
pub unsafe fn is_array_like(cx: *mut JSContext, value: HandleValue) -> bool {
let mut is_array = false;
assert!(JS_IsArrayObject(cx, value, &mut is_array));
assert!(IsArrayObject(cx, value, &mut is_array));
if is_array {
return true;
}

View file

@ -116,6 +116,7 @@ unsafe fn write_blob(
unsafe extern "C" fn read_callback(
cx: *mut JSContext,
r: *mut JSStructuredCloneReader,
_policy: *const CloneDataPolicy,
tag: u32,
_data: u32,
closure: *mut raw::c_void,
@ -143,6 +144,7 @@ unsafe extern "C" fn write_callback(
cx: *mut JSContext,
w: *mut JSStructuredCloneWriter,
obj: RawHandleObject,
_same_process_scope_required: *mut bool,
closure: *mut raw::c_void,
) -> bool {
if let Ok(blob) = root_from_object::<Blob>(*obj, cx) {
@ -216,6 +218,7 @@ unsafe extern "C" fn free_transfer_callback(
unsafe extern "C" fn can_transfer_callback(
cx: *mut JSContext,
obj: RawHandleObject,
_same_process_scope_required: *mut bool,
_closure: *mut raw::c_void,
) -> bool {
if let Ok(_port) = root_from_object::<MessagePort>(*obj, cx) {
@ -224,7 +227,21 @@ unsafe extern "C" fn can_transfer_callback(
false
}
unsafe extern "C" fn report_error_callback(_cx: *mut JSContext, _errorid: u32) {}
unsafe extern "C" fn report_error_callback(
_cx: *mut JSContext,
_errorid: u32,
_closure: *mut ::std::os::raw::c_void,
_error_message: *const ::std::os::raw::c_char,
) {
}
unsafe extern "C" fn sab_cloned_callback(
_cx: *mut JSContext,
_receiving: bool,
_closure: *mut ::std::os::raw::c_void,
) -> bool {
false
}
static STRUCTURED_CLONE_CALLBACKS: JSStructuredCloneCallbacks = JSStructuredCloneCallbacks {
read: Some(read_callback),
@ -234,6 +251,7 @@ static STRUCTURED_CLONE_CALLBACKS: JSStructuredCloneCallbacks = JSStructuredClon
writeTransfer: Some(write_transfer_callback),
freeTransfer: Some(free_transfer_callback),
canTransfer: Some(can_transfer_callback),
sabCloned: Some(sab_cloned_callback),
};
/// A data holder for results from, and inputs to, structured-data read/write operations.
@ -286,15 +304,15 @@ pub fn write(
);
let scdata = &mut ((*scbuf).data_);
let policy = CloneDataPolicy {
// TODO: SAB?
sharedArrayBuffer_: false,
allowIntraClusterClonableSharedObjects_: false,
allowSharedMemoryObjects_: false,
};
let result = JS_WriteStructuredClone(
*cx,
message,
scdata,
StructuredCloneScope::DifferentProcess,
policy,
&policy,
&STRUCTURED_CLONE_CALLBACKS,
sc_holder_ptr as *mut raw::c_void,
val.handle(),
@ -361,8 +379,9 @@ pub fn read(
JS_STRUCTURED_CLONE_VERSION,
StructuredCloneScope::DifferentProcess,
rval,
CloneDataPolicy {
sharedArrayBuffer_: false,
&CloneDataPolicy {
allowIntraClusterClonableSharedObjects_: false,
allowSharedMemoryObjects_: false,
},
&STRUCTURED_CLONE_CALLBACKS,
sc_holder_ptr as *mut raw::c_void,

View file

@ -16,7 +16,7 @@ use crate::dom::bindings::str::DOMString;
use crate::dom::bindings::trace::trace_object;
use crate::dom::windowproxy;
use crate::script_runtime::JSContext as SafeJSContext;
use js::conversions::{jsstr_to_string, ToJSValConvertible};
use js::conversions::ToJSValConvertible;
use js::glue::{CallJitGetterOp, CallJitMethodOp, CallJitSetterOp, IsWrapper};
use js::glue::{GetCrossCompartmentWrapper, JS_GetReservedSlot, WrapperNew};
use js::glue::{UnwrapObjectDynamic, UnwrapObjectStatic, RUST_JSID_TO_INT, RUST_JSID_TO_STRING};
@ -27,15 +27,15 @@ use js::jsapi::HandleId as RawHandleId;
use js::jsapi::HandleObject as RawHandleObject;
use js::jsapi::MutableHandleIdVector as RawMutableHandleIdVector;
use js::jsapi::MutableHandleObject as RawMutableHandleObject;
use js::jsapi::{AtomToLinearString, GetLinearStringCharAt, GetLinearStringLength};
use js::jsapi::{CallArgs, DOMCallbacks, GetNonCCWObjectGlobal};
use js::jsapi::{Heap, JSAutoRealm, JSContext, JS_FreezeObject};
use js::jsapi::{JSAtom, JS_IsExceptionPending, JS_IsGlobalObject};
use js::jsapi::{JSJitInfo, JSObject, JSTracer, JSWrapObjectCallbacks};
use js::jsapi::{JS_EnumerateStandardClasses, JS_GetLatin1StringCharsAndLength};
use js::jsapi::{JS_IsExceptionPending, JS_IsGlobalObject};
use js::jsapi::{
JS_ResolveStandardClass, JS_StringHasLatin1Chars, ObjectOpResult, StringIsArrayIndex1,
StringIsArrayIndex2,
JS_DeprecatedStringHasLatin1Chars, JS_ResolveStandardClass, ObjectOpResult, StringIsArrayIndex,
};
use js::jsapi::{JS_EnumerateStandardClasses, JS_GetLatin1StringCharsAndLength};
use js::jsval::{JSVal, UndefinedValue};
use js::rust::wrappers::JS_DeletePropertyById;
use js::rust::wrappers::JS_ForwardGetPropertyTo;
@ -191,7 +191,7 @@ pub unsafe fn get_property_on_prototype(
/// Get an array index from the given `jsid`. Returns `None` if the given
/// `jsid` is not an integer.
pub unsafe fn get_array_index_from_id(cx: *mut JSContext, id: HandleId) -> Option<u32> {
pub unsafe fn get_array_index_from_id(_cx: *mut JSContext, id: HandleId) -> Option<u32> {
let raw_id = id.into();
if RUST_JSID_IS_INT(raw_id) {
return Some(RUST_JSID_TO_INT(raw_id) as u32);
@ -201,7 +201,28 @@ pub unsafe fn get_array_index_from_id(cx: *mut JSContext, id: HandleId) -> Optio
return None;
}
let s = jsstr_to_string(cx, RUST_JSID_TO_STRING(raw_id));
let atom = RUST_JSID_TO_STRING(raw_id) as *mut JSAtom;
let s = AtomToLinearString(atom);
if GetLinearStringLength(s) == 0 {
return None;
}
let chars = [GetLinearStringCharAt(s, 0)];
let first_char = char::decode_utf16(chars.iter().cloned())
.next()
.map_or('\0', |r| r.unwrap_or('\0'));
if first_char < 'a' || first_char > 'z' {
return None;
}
let mut i = 0;
if StringIsArrayIndex(s, &mut i) {
Some(i)
} else {
None
}
/*let s = jsstr_to_string(cx, RUST_JSID_TO_STRING(raw_id));
if s.len() == 0 {
return None;
}
@ -225,7 +246,7 @@ pub unsafe fn get_array_index_from_id(cx: *mut JSContext, id: HandleId) -> Optio
Some(i)
} else {
None
}
}*/
}
/// Find the enum equivelent of a string given by `v` in `pairs`.
@ -436,7 +457,7 @@ pub unsafe extern "C" fn resolve_global(
}
let string = RUST_JSID_TO_STRING(id);
if !JS_StringHasLatin1Chars(string) {
if !JS_DeprecatedStringHasLatin1Chars(string) {
*rval = false;
return true;
}

View file

@ -66,6 +66,7 @@ use std::io::{Read, Seek, Write};
use std::mem::replace;
use std::path::PathBuf;
use std::process::Command;
use std::ptr;
use std::rc::Rc;
use std::sync::{Arc, Mutex};
use style::str::{StaticStringVec, HTML_SPACE_CHARACTERS};
@ -445,6 +446,7 @@ impl FetchResponseListener for ClassicContext {
fetch_options: self.fetch_options.clone(),
});
let mut token = ptr::null_mut();
unsafe {
assert!(CompileOffThread1(
*cx,
@ -452,6 +454,7 @@ impl FetchResponseListener for ClassicContext {
&mut transform_str_to_source_text(&context.script_text) as *mut _,
Some(off_thread_compilation_callback),
Box::into_raw(context) as *mut c_void,
&mut token,
));
}
} else {

View file

@ -36,7 +36,7 @@ use js::jsapi::JSAutoRealm;
use js::jsapi::JSObject;
use js::jsapi::JS_ClearPendingException;
use js::jsapi::JS_IsExceptionPending;
use js::jsapi::JS_NewArrayObject;
use js::jsapi::NewArrayObject;
use js::jsval::JSVal;
use js::jsval::ObjectValue;
use js::jsval::UndefinedValue;
@ -333,7 +333,7 @@ impl PaintWorkletGlobalScope {
.collect();
let arguments_value_array =
unsafe { HandleValueArray::from_rooted_slice(&*arguments_value_vec) };
rooted!(in(*cx) let argument_object = unsafe { JS_NewArrayObject(*cx, &arguments_value_array) });
rooted!(in(*cx) let argument_object = unsafe { NewArrayObject(*cx, &arguments_value_array) });
let args_slice = [
ObjectValue(rendering_context.reflector().get_jsobject().get()),

View file

@ -112,7 +112,7 @@ fn typedarray_elem_size(typeid: Type) -> usize {
Type::Int32 | Type::Uint32 | Type::Float32 => 4,
Type::Int64 | Type::Float64 => 8,
Type::BigInt64 | Type::BigUint64 => 8,
Type::MaxTypedArrayViewType => unreachable!(),
Type::Simd128 | Type::MaxTypedArrayViewType => unreachable!(),
}
}

View file

@ -5042,6 +5042,7 @@ fn array_buffer_type_to_sized_type(type_: Type) -> Option<SizedDataType> {
Type::BigInt64 |
Type::BigUint64 |
Type::MaxTypedArrayViewType |
Type::Int64 => None,
Type::Int64 |
Type::Simd128 => None,
}
}

View file

@ -2,6 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
#![feature(assoc_char_funcs)]
#![feature(const_fn)]
#![feature(core_intrinsics)]
#![feature(drain_filter)]

View file

@ -45,17 +45,17 @@ use js::jsapi::Handle as RawHandle;
use js::jsapi::HandleObject;
use js::jsapi::HandleValue as RawHandleValue;
use js::jsapi::Value;
use js::jsapi::{CompileModuleDontInflate, ExceptionStackBehavior, FinishDynamicModuleImport};
use js::jsapi::{CompileModule1, ExceptionStackBehavior, FinishDynamicModuleImport};
use js::jsapi::{DynamicImportStatus, SetModuleDynamicImportHook, SetScriptPrivateReferenceHooks};
use js::jsapi::{GetModuleResolveHook, JSRuntime, SetModuleResolveHook};
use js::jsapi::{GetRequestedModules, SetModuleMetadataHook};
use js::jsapi::{Heap, JSContext, JS_ClearPendingException, SetModulePrivate};
use js::jsapi::{JSAutoRealm, JSObject, JSString};
use js::jsapi::{JS_DefineProperty4, JS_IsExceptionPending, JS_NewStringCopyN, JSPROP_ENUMERATE};
use js::jsapi::{ModuleEvaluate, ModuleInstantiate};
use js::jsapi::{SetModuleDynamicImportHook, SetScriptPrivateReferenceHooks};
use js::jsval::{JSVal, PrivateValue, UndefinedValue};
use js::rust::jsapi_wrapped::{GetArrayLength, JS_GetElement};
use js::rust::jsapi_wrapped::{GetRequestedModuleSpecifier, JS_GetPendingException};
use js::rust::jsapi_wrapped::{JS_GetArrayLength, JS_GetElement};
use js::rust::transform_str_to_source_text;
use js::rust::wrappers::JS_SetPendingException;
use js::rust::CompileOptionsWrapper;
@ -425,7 +425,7 @@ impl ModuleTree {
unsafe { CompileOptionsWrapper::new(*global.get_cx(), url.as_str(), 1) };
unsafe {
rooted!(in(*global.get_cx()) let mut module_script = CompileModuleDontInflate(
rooted!(in(*global.get_cx()) let mut module_script = CompileModule1(
*global.get_cx(),
compile_options.ptr,
&mut transform_str_to_source_text(&module_script_text),
@ -558,7 +558,7 @@ impl ModuleTree {
let mut length = 0;
if !JS_GetArrayLength(*global.get_cx(), requested_modules.handle(), &mut length) {
if !GetArrayLength(*global.get_cx(), requested_modules.handle(), &mut length) {
let module_length_error =
gen_type_error(&global, "Wrong length of requested modules".to_owned());
@ -995,26 +995,38 @@ impl ModuleOwner {
};
// Ensure any failures related to importing this dynamic module are immediately reported.
match (network_error, existing_rethrow_error, execution_err) {
let status = match (network_error, existing_rethrow_error, execution_err) {
(Some(_), _, _) => unsafe {
let err = gen_type_error(&global, "Dynamic import failed".to_owned());
JS_SetPendingException(*cx, err.handle(), ExceptionStackBehavior::Capture)
JS_SetPendingException(*cx, err.handle(), ExceptionStackBehavior::Capture);
DynamicImportStatus::Failed
},
(None, _, Some(execution_err)) => unsafe {
JS_SetPendingException(*cx, execution_err.handle(), ExceptionStackBehavior::Capture)
JS_SetPendingException(
*cx,
execution_err.handle(),
ExceptionStackBehavior::Capture,
);
DynamicImportStatus::Failed
},
(None, Some(rethrow_error), _) => unsafe {
JS_SetPendingException(*cx, rethrow_error.handle(), ExceptionStackBehavior::Capture)
JS_SetPendingException(
*cx,
rethrow_error.handle(),
ExceptionStackBehavior::Capture,
);
DynamicImportStatus::Failed
},
// do nothing if there's no errors
(None, None, None) => {},
}
(None, None, None) => DynamicImportStatus::Ok,
};
debug!("Finishing dynamic import for {:?}", module_identity);
unsafe {
FinishDynamicModuleImport(
*cx,
status,
module.referencing_private.handle(),
module.specifier.handle(),
module.promise.reflector().get_jsobject().into_handle(),

View file

@ -50,17 +50,17 @@ use js::jsapi::PromiseUserInputEventHandlingState;
use js::jsapi::StreamConsumer as JSStreamConsumer;
use js::jsapi::{BuildIdCharVector, DisableIncrementalGC, GCDescription, GCProgress};
use js::jsapi::{Dispatchable as JSRunnable, Dispatchable_MaybeShuttingDown};
use js::jsapi::{
GCReason, JSGCInvocationKind, JSGCStatus, JS_AddExtraGCRootsTracer,
JS_RequestInterruptCallback, JS_SetGCCallback,
};
use js::jsapi::{HandleObject, Heap, JobQueue};
use js::jsapi::{JSContext as RawJSContext, JSTracer, SetDOMCallbacks, SetGCSliceCallback};
use js::jsapi::{
JSGCInvocationKind, JSGCStatus, JS_AddExtraGCRootsTracer, JS_RequestInterruptCallback,
JS_SetGCCallback,
};
use js::jsapi::{JSGCMode, JSGCParamKey, JS_SetGCParameter, JS_SetGlobalJitCompilerOption};
use js::jsapi::{
JSJitCompilerOption, JS_SetOffthreadIonCompilationEnabled, JS_SetParallelParsingEnabled,
};
use js::jsapi::{JSObject, PromiseRejectionHandlingState, SetPreserveWrapperCallback};
use js::jsapi::{JSObject, PromiseRejectionHandlingState, SetPreserveWrapperCallbacks};
use js::jsapi::{SetJobQueue, SetProcessBuildIdOp, SetPromiseRejectionTrackerCallback};
use js::jsval::UndefinedValue;
use js::panic::wrap_panic;
@ -478,8 +478,16 @@ unsafe fn new_rt_and_cx_with_parent(
unsafe extern "C" fn empty_wrapper_callback(_: *mut RawJSContext, _: HandleObject) -> bool {
true
}
unsafe extern "C" fn empty_has_released_callback(_: HandleObject) -> bool {
// fixme: return true when the Drop impl for a DOM object has been invoked
false
}
SetDOMCallbacks(cx, &DOM_CALLBACKS);
SetPreserveWrapperCallback(cx, Some(empty_wrapper_callback));
SetPreserveWrapperCallbacks(
cx,
Some(empty_wrapper_callback),
Some(empty_has_released_callback),
);
// Pre barriers aren't working correctly at the moment
DisableIncrementalGC(cx);
@ -542,7 +550,7 @@ unsafe fn new_rt_and_cx_with_parent(
}
cx_opts.set_wasmBaseline_(pref!(js.wasm.baseline.enabled));
cx_opts.set_wasmIon_(pref!(js.wasm.ion.enabled));
cx_opts.set_extraWarnings_(pref!(js.strict.enabled));
cx_opts.set_strictMode_(pref!(js.strict.enabled));
// TODO: handle js.strict.debug.enabled
// TODO: handle js.throw_on_asmjs_validation_failure (needs new Spidermonkey)
JS_SetGlobalJitCompilerOption(
@ -574,7 +582,6 @@ unsafe fn new_rt_and_cx_with_parent(
// TODO: handle js.asyncstack.enabled (needs new Spidermonkey)
// TODO: handle js.throw_on_debugee_would_run (needs new Spidermonkey)
// TODO: handle js.dump_stack_on_debugee_would_run (needs new Spidermonkey)
cx_opts.set_werror_(pref!(js.werror.enabled));
// TODO: handle js.shared_memory.enabled
JS_SetGCParameter(
cx,
@ -604,49 +611,39 @@ unsafe fn new_rt_and_cx_with_parent(
if let Some(val) = in_range(pref!(js.mem.gc.high_frequency_time_limit_ms), 0, 10_000) {
JS_SetGCParameter(cx, JSGCParamKey::JSGC_HIGH_FREQUENCY_TIME_LIMIT, val as u32);
}
JS_SetGCParameter(
cx,
JSGCParamKey::JSGC_DYNAMIC_MARK_SLICE,
pref!(js.mem.gc.dynamic_mark_slice.enabled) as u32,
);
JS_SetGCParameter(
cx,
JSGCParamKey::JSGC_DYNAMIC_HEAP_GROWTH,
pref!(js.mem.gc.dynamic_heap_growth.enabled) as u32,
);
if let Some(val) = in_range(pref!(js.mem.gc.low_frequency_heap_growth), 0, 10_000) {
JS_SetGCParameter(cx, JSGCParamKey::JSGC_LOW_FREQUENCY_HEAP_GROWTH, val as u32);
}
if let Some(val) = in_range(pref!(js.mem.gc.high_frequency_heap_growth_min), 0, 10_000) {
JS_SetGCParameter(
cx,
JSGCParamKey::JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MIN,
JSGCParamKey::JSGC_HIGH_FREQUENCY_LARGE_HEAP_GROWTH,
val as u32,
);
}
if let Some(val) = in_range(pref!(js.mem.gc.high_frequency_heap_growth_max), 0, 10_000) {
JS_SetGCParameter(
cx,
JSGCParamKey::JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MAX,
JSGCParamKey::JSGC_HIGH_FREQUENCY_SMALL_HEAP_GROWTH,
val as u32,
);
}
if let Some(val) = in_range(pref!(js.mem.gc.high_frequency_low_limit_mb), 0, 10_000) {
JS_SetGCParameter(cx, JSGCParamKey::JSGC_HIGH_FREQUENCY_LOW_LIMIT, val as u32);
JS_SetGCParameter(cx, JSGCParamKey::JSGC_SMALL_HEAP_SIZE_MAX, val as u32);
}
if let Some(val) = in_range(pref!(js.mem.gc.high_frequency_high_limit_mb), 0, 10_000) {
JS_SetGCParameter(cx, JSGCParamKey::JSGC_HIGH_FREQUENCY_HIGH_LIMIT, val as u32);
JS_SetGCParameter(cx, JSGCParamKey::JSGC_LARGE_HEAP_SIZE_MIN, val as u32);
}
if let Some(val) = in_range(pref!(js.mem.gc.allocation_threshold_factor), 0, 10_000) {
/*if let Some(val) = in_range(pref!(js.mem.gc.allocation_threshold_factor), 0, 10_000) {
JS_SetGCParameter(cx, JSGCParamKey::JSGC_NON_INCREMENTAL_FACTOR, val as u32);
}
if let Some(val) = in_range(
pref!(js.mem.gc.allocation_threshold_avoid_interrupt_factor),
0,
10_000,
) {
JS_SetGCParameter(cx, JSGCParamKey::JSGC_AVOID_INTERRUPT_FACTOR, val as u32);
}
}*/
/*
// JSGC_SMALL_HEAP_INCREMENTAL_LIMIT
pref("javascript.options.mem.gc_small_heap_incremental_limit", 140);
// JSGC_LARGE_HEAP_INCREMENTAL_LIMIT
pref("javascript.options.mem.gc_large_heap_incremental_limit", 110);
*/
if let Some(val) = in_range(pref!(js.mem.gc.empty_chunk_count_min), 0, 10_000) {
JS_SetGCParameter(cx, JSGCParamKey::JSGC_MIN_EMPTY_CHUNK_COUNT, val as u32);
}
@ -796,6 +793,7 @@ unsafe extern "C" fn gc_slice_callback(
unsafe extern "C" fn debug_gc_callback(
_cx: *mut RawJSContext,
status: JSGCStatus,
_reason: GCReason,
_data: *mut os::raw::c_void,
) {
match status {

View file

@ -40,11 +40,11 @@ fn error(message: &str) {
}
fn find_python() -> String {
env::var("PYTHON2").ok().unwrap_or_else(|| {
env::var("PYTHON3").ok().unwrap_or_else(|| {
let candidates = if cfg!(windows) {
["python2.7.exe", "python27.exe", "python.exe"]
["python3.8.exe", "python38.exe", "python.exe"]
} else {
["python2.7", "python2", "python"]
["python3.8", "python3", "python"]
};
for &name in &candidates {
if Command::new(name)
@ -57,7 +57,7 @@ fn find_python() -> String {
}
}
panic!(
"Can't find python (tried {})! Try fixing PATH or setting the PYTHON2 env var",
"Can't find python (tried {})! Try fixing PATH or setting the PYTHON3 env var",
candidates.join(", ")
)
})

View file

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python3
# Copyright 2018 The Servo Project Developers. See the COPYRIGHT
# file at the top-level directory of this distribution.

View file

@ -132,6 +132,8 @@ windows_build_env = {
"PYTHON3": "%HOMEDRIVE%%HOMEPATH%\\python3\\python.exe",
"LINKER": "lld-link.exe",
"MOZTOOLS_PATH_PREPEND": "%HOMEDRIVE%%HOMEPATH%\\git\\cmd",
"CC": "clang-cl.exe",
"CXX": "clang-cl.exe",
},
}
@ -155,11 +157,11 @@ def linux_tidy_unit_untrusted():
.with_env(**build_env, **unix_build_env, **linux_build_env)
.with_repo_bundle()
.with_script("""
./mach test-tidy --no-progress --all
./mach test-tidy --no-progress --self-test
./mach bootstrap-gstreamer
./mach build --dev
./mach test-unit
python3 ./mach test-tidy --no-progress --all
python3 ./mach test-tidy --no-progress --self-test
python3 ./mach bootstrap-gstreamer
python3 ./mach build --dev
python3 ./mach test-unit
./etc/ci/lockfile_changed.sh
./etc/memory_reports_over_time.py --test
@ -175,8 +177,7 @@ def linux_tidy_unit():
.with_treeherder("Linux x64", "Tidy+Unit")
.with_max_run_time_minutes(75)
.with_script("""
./mach test-tidy --no-progress --all
python3 ./mach test-tidy --no-progress --all --no-wpt
python3 ./mach test-tidy --no-progress --all
python3 ./mach build --dev
python3 ./mach test-unit
python3 ./mach package --dev
@ -201,7 +202,7 @@ def linux_docs_check():
linux_build_task("Docs + check")
.with_treeherder("Linux x64", "Doc+Check")
.with_script("""
RUSTDOCFLAGS="--disable-minification" ./mach doc
RUSTDOCFLAGS="--disable-minification" python3 ./mach doc
(
cd target/doc
git init
@ -219,7 +220,7 @@ def linux_docs_check():
# The reverse order would not increase the total amount of work to do,
# but would reduce the amount of parallelism available.
"""
./mach check
python3 ./mach check
""")
.with_artifacts("/repo/target/doc/docs.bundle")
.find_or_create("docs." + CONFIG.tree_hash())
@ -243,7 +244,7 @@ def upload_docs():
open("/root/.git-credentials", "w").write("https://git:%s@github.com/" % token)
""")
.with_script("""
python -c "$PY"
python3 -c "$PY"
git init --bare
git config credential.helper store
git fetch --quiet docs.bundle
@ -274,9 +275,9 @@ def macos_unit():
macos_build_task("Dev build + unit tests")
.with_treeherder("macOS x64", "Unit")
.with_script("""
./mach build --dev --verbose
./mach test-unit
./mach package --dev
python3 ./mach build --dev --verbose
python3 ./mach test-unit
python3 ./mach package --dev
./etc/ci/macos_package_smoketest.sh target/debug/servo-tech-demo.dmg
./etc/ci/lockfile_changed.sh
""")
@ -296,8 +297,8 @@ def with_rust_nightly():
.with_treeherder("Linux x64", "RustNightly")
.with_script("""
echo "nightly" > rust-toolchain
./mach build --dev
./mach test-unit
python3 ./mach build --dev
python3 ./mach test-unit
""")
.create()
)
@ -354,10 +355,10 @@ def uwp_nightly(rdp=False):
"secrets:get:project/servo/windows-codesign-cert/latest",
)
.with_script(
"python mach build --release --target=x86_64-uwp-windows-msvc",
"python mach build --release --target=aarch64-uwp-windows-msvc",
"python mach package --release --target=x86_64-uwp-windows-msvc --uwp=x64 --uwp=arm64",
"python mach upload-nightly uwp --secret-from-taskcluster",
"python3 mach build --release --target=x86_64-uwp-windows-msvc",
"python3 mach build --release --target=aarch64-uwp-windows-msvc",
"python3 mach package --release --target=x86_64-uwp-windows-msvc --uwp=x64 --uwp=arm64",
"python3 mach upload-nightly uwp --secret-from-taskcluster",
)
.with_artifacts(appx_artifact)
.with_max_run_time_minutes(3 * 60)
@ -377,6 +378,9 @@ def windows_unit(cached=True, rdp=False):
"python mach build --dev",
"python mach test-unit",
# Running the TC task with administrator privileges breaks the
# smoketest for unknown reasons.
#"python mach smoketest --angle",
"python mach package --dev",
"python mach build --dev --libsimpleservo",
@ -418,9 +422,9 @@ def linux_nightly():
.with_scopes("secrets:get:project/servo/s3-upload-credentials")
# Not reusing the build made for WPT because it has debug assertions
.with_script(
"./mach build --release",
"./mach package --release",
"./mach upload-nightly linux --secret-from-taskcluster",
"python3 ./mach build --release",
"python3 ./mach package --release",
"python3 ./mach upload-nightly linux --secret-from-taskcluster",
)
.with_artifacts("/repo/target/release/servo-tech-demo.tar.gz")
.find_or_create("build.linux_x64_nightly" + CONFIG.tree_hash())
@ -432,8 +436,8 @@ def linux_release():
linux_build_task("Release build")
.with_treeherder("Linux x64", "Release")
.with_script(
"./mach build --release",
"./mach package --release",
"python3 ./mach build --release",
"python3 ./mach package --release",
)
.find_or_create("build.linux_x64_release" + CONFIG.tree_hash())
)
@ -449,10 +453,10 @@ def macos_nightly():
"secrets:get:project/servo/github-homebrew-token",
)
.with_script(
"./mach build --release",
"./mach package --release",
"python3 ./mach build --release",
"python3 ./mach package --release",
"./etc/ci/macos_package_smoketest.sh target/release/servo-tech-demo.dmg",
"./mach upload-nightly mac --secret-from-taskcluster",
"python3 ./mach upload-nightly mac --secret-from-taskcluster",
)
.with_artifacts("repo/target/release/servo-tech-demo.dmg")
.find_or_create("build.mac_x64_nightly." + CONFIG.tree_hash())
@ -489,7 +493,7 @@ def macos_release_build_with_debug_assertions(priority=None):
.with_treeherder("macOS x64", "Release+A")
.with_priority(priority)
.with_script("\n".join([
"./mach build --release --verbose --with-debug-assertions",
"python3 ./mach build --release --verbose --with-debug-assertions",
"./etc/ci/lockfile_changed.sh",
"tar -czf target.tar.gz" +
" target/release/servo" +
@ -516,9 +520,9 @@ def linux_release_build_with_debug_assertions(layout_2020):
linux_build_task(name_prefix + "Release build, with debug assertions")
.with_treeherder("Linux x64", treeherder_prefix + "Release+A")
.with_script("""
time ./mach rustc -V
time ./mach fetch
./mach build --release --with-debug-assertions %s -p servo
time python3 ./mach rustc -V
time python3 ./mach fetch
python3 ./mach build --release --with-debug-assertions %s -p servo
./etc/ci/lockfile_changed.sh
tar -czf /target.tar.gz \
target/release/servo \
@ -537,7 +541,7 @@ def macos_wpt():
priority = "high" if CONFIG.git_ref == "refs/heads/auto" else None
build_task = macos_release_build_with_debug_assertions(priority=priority)
def macos_run_task(name):
task = macos_task(name).with_python2().with_python3() \
task = macos_task(name).with_python3() \
.with_repo_bundle(alternate_object_dir="/var/cache/servo.git/objects")
return with_homebrew(task, ["etc/taskcluster/macos/Brewfile"])
wpt_chunks(
@ -619,11 +623,11 @@ def wpt_chunks(platform, make_chunk_task, build_task, total_chunks, processes,
if this_chunk == 0:
if run_webgpu:
webgpu_script = """
time ./mach test-wpt _webgpu --release --processes $PROCESSES \
time python3 ./mach test-wpt _webgpu --release --processes $PROCESSES \
--headless --log-raw test-webgpu.log --always-succeed \
--log-errorsummary webgpu-errorsummary.log \
| cat
./mach filter-intermittents \
python3 ./mach filter-intermittents \
webgpu-errorsummary.log \
--log-intermittents webgpu-intermittents.log \
--log-filteredsummary filtered-webgpu-errorsummary.log \
@ -634,7 +638,7 @@ def wpt_chunks(platform, make_chunk_task, build_task, total_chunks, processes,
webgpu_script = ""
task.with_script("""
time python ./mach test-wpt --release --binary-arg=--multiprocess \
time python3 ./mach test-wpt --release --binary-arg=--multiprocess \
--processes $PROCESSES \
--log-raw test-wpt-mp.log \
--log-errorsummary wpt-mp-errorsummary.log \
@ -647,30 +651,30 @@ def wpt_chunks(platform, make_chunk_task, build_task, total_chunks, processes,
--always-succeed \
url \
| cat
./mach filter-intermittents \
python3 ./mach filter-intermittents \
wpt-py3-errorsummary.log \
--log-intermittents wpt-py3-intermittents.log \
--log-filteredsummary filtered-py3-errorsummary.log \
--tracker-api default \
--reporter-api default
time ./mach test-wpt --release --product=servodriver --headless \
time python3 ./mach test-wpt --release --product=servodriver --headless \
tests/wpt/mozilla/tests/mozilla/DOMParser.html \
tests/wpt/mozilla/tests/css/per_glyph_font_fallback_a.html \
tests/wpt/mozilla/tests/css/img_simple.html \
tests/wpt/mozilla/tests/mozilla/secure.https.html \
| cat
time ./mach test-wpt --release --processes $PROCESSES --product=servodriver \
time python3 ./mach test-wpt --release --processes $PROCESSES --product=servodriver \
--headless --log-raw test-bluetooth.log \
--log-errorsummary bluetooth-errorsummary.log \
bluetooth \
| cat
time ./mach test-wpt --release --processes $PROCESSES --timeout-multiplier=4 \
time python3 ./mach test-wpt --release --processes $PROCESSES --timeout-multiplier=4 \
--headless --log-raw test-wdspec.log \
--log-servojson wdspec-jsonsummary.log \
--always-succeed \
webdriver \
| cat
./mach filter-intermittents \
python3 ./mach filter-intermittents \
wdspec-jsonsummary.log \
--log-intermittents intermittents.log \
--log-filteredsummary filtered-wdspec-errorsummary.log \
@ -680,7 +684,7 @@ def wpt_chunks(platform, make_chunk_task, build_task, total_chunks, processes,
)
else:
task.with_script("""
./mach test-wpt \
python3 ./mach test-wpt \
--release \
$WPT_ARGS \
--processes $PROCESSES \
@ -690,7 +694,7 @@ def wpt_chunks(platform, make_chunk_task, build_task, total_chunks, processes,
--log-servojson wpt-jsonsummary.log \
--always-succeed \
| cat
./mach filter-intermittents \
python3 ./mach filter-intermittents \
wpt-jsonsummary.log \
--log-intermittents intermittents.log \
--log-filteredsummary filtered-wpt-errorsummary.log \
@ -770,7 +774,7 @@ def linux_build_task(name, *, build_env=build_env):
.with_dockerfile(dockerfile_path("build"))
.with_env(**build_env, **unix_build_env, **linux_build_env)
.with_repo_bundle()
.with_script("./mach bootstrap-gstreamer")
.with_script("python3 ./mach bootstrap-gstreamer")
)
return task
@ -797,12 +801,7 @@ def windows_build_task(name, package=True, arch="x86_64", rdp=False):
**windows_build_env["all"]
)
.with_repo_bundle(sparse_checkout=windows_sparse_checkout)
.with_python2()
.with_directory_mount(
"https://www.python.org/ftp/python/3.7.3/python-3.7.3-embed-amd64.zip",
sha256="6de14c9223226cf0cd8c965ecb08c51d62c770171a256991b4fddc25188cfa8e",
path="python3",
)
.with_python3()
.with_rustup()
)
if arch in hashes["non-devel"] and arch in hashes["devel"]:
@ -844,7 +843,7 @@ def macos_build_task(name):
.with_max_run_time_minutes(60 * 2)
.with_env(**build_env, **unix_build_env, **macos_build_env)
.with_repo_bundle(alternate_object_dir="/var/cache/servo.git/objects")
.with_python2()
.with_python3()
.with_rustup()
.with_index_and_artifacts_expire_in(build_artifacts_expire_in)
# Debugging for surprising generic-worker behaviour

View file

@ -474,9 +474,13 @@ class WindowsGenericWorkerTask(GenericWorkerTask):
if self.rdp_info_artifact_name:
rdp_scope = "generic-worker:allow-rdp:%s/%s" % (self.provisioner_id, self.worker_type)
self.scopes.append(rdp_scope)
self.scopes.append("generic-worker:os-group:proj-servo/win2016/Administrators")
self.scopes.append("generic-worker:run-as-administrator:proj-servo/win2016")
self.with_features("runAsAdministrator")
return dict_update_if_truthy(
super().build_worker_payload(),
rdpInfo=self.rdp_info_artifact_name,
osGroups=["Administrators"]
)
def with_rdp_info(self, *, artifact_name):
@ -619,26 +623,23 @@ class WindowsGenericWorkerTask(GenericWorkerTask):
.with_dependencies(repack_task) \
.with_directory_mount("public/repacked.zip", task_id=repack_task, path=path)
def with_python2(self):
def with_python3(self):
"""
Make Python 2, pip, and virtualenv accessible to the tasks commands.
For Python 3, use `with_directory_mount` and the "embeddable zip file" distribution
from python.org.
You may need to remove `python37._pth` from the ZIP in order to work around
<https://bugs.python.org/issue34841>.
"""
return self \
.with_repacked_msi(
"https://www.python.org/ftp/python/2.7.15/python-2.7.15.amd64.msi",
sha256="5e85f3c4c209de98480acbf2ba2e71a907fd5567a838ad4b6748c76deb286ad7",
path="python2"
) \
.with_early_script("""
python -m ensurepip
pip install virtualenv==16.0.0
""") \
.with_path_from_homedir("python2", "python2\\Scripts")
return (
self
.with_curl_script(
"https://www.python.org/ftp/python/3.7.3/python-3.7.3-amd64.exe",
"do-the-python.exe"
)
.with_script("do-the-python.exe /quiet TargetDir=%HOMEDRIVE%%HOMEPATH%\\python3")
.with_path_from_homedir("python3", "python3\\Scripts")
.with_script("pip install virtualenv==20.2.1")
)
class UnixTaskMixin(Task):
@ -697,13 +698,6 @@ class MacOsGenericWorkerTask(UnixTaskMixin, GenericWorkerTask):
]
]
def with_python2(self):
return self.with_early_script("""
export PATH="$HOME/Library/Python/2.7/bin:$PATH"
python -m ensurepip --user
pip install --user virtualenv
""")
def with_python3(self):
return self.with_early_script("""
python3 -m ensurepip --user

View file

@ -17,11 +17,6 @@ RUN \
git \
ca-certificates \
#
# Running mach with Python 2
python2 \
python2-dev \
python-is-python2 \
#
# Running mach with Python 3
python3 \
python3-pip \
@ -35,12 +30,4 @@ RUN \
curl \
# Setting the default locale
locales \
locales-all \
&& \
#
# Python 2 bits that have been removed from Ubuntu packages
curl https://bootstrap.pypa.io/2.7/get-pip.py -sSf -o get-pip.py && \
python2 get-pip.py && \
python2 -m pip install virtualenv && \
# Ensure modern pip is present.
python3 -m pip install -U pip
locales-all

6
mach
View file

@ -6,7 +6,7 @@
# The beginning of this script is both valid shell and valid python,
# such that the script starts with the shell and is reexecuted with
# the right python.
''':' && if [ ! -z "$MSYSTEM" ] ; then exec python "$0" "$@" ; else which python2.7 > /dev/null 2> /dev/null && exec python2.7 "$0" "$@" || exec python "$0" "$@" ; fi
''':' && if [ ! -z "$MSYSTEM" ] ; then exec python "$0" "$@" ; else which python3 > /dev/null 2> /dev/null && exec python3 "$0" "$@" || exec python "$0" "$@" ; fi
'''
from __future__ import print_function, unicode_literals
@ -18,8 +18,8 @@ import sys
# Check for the current python version as some users (especially on archlinux)
# may not have python 2 installed and their /bin/python binary symlinked to
# python 3.
if sys.version_info >= (3, 0) and sys.version_info < (3, 5):
print("mach does not support python 3 (< 3.5), please install python 2 or python 3 (>= 3.5)")
if sys.version_info < (3, 5):
print("mach does not support python 3 (< 3.5), please install python 3 (>= 3.5)")
sys.exit(1)

View file

@ -5,9 +5,9 @@ blessings == 1.6
distro == 1.4
mach == 1.0.0
mozdebug == 0.2
mozinfo == 1.1.0
mozlog == 5.0
setuptools == 39.0
mozinfo == 1.2.1
mozlog == 7.1.0
setuptools == 50.3.2
toml == 0.9.2
# For Python linting
@ -30,6 +30,6 @@ boto3 == 1.4.4
certifi
# For Python3 compatibility
six == 1.12
six == 1.15
-e python/tidy

View file

@ -749,7 +749,7 @@ install them, let us know by filing a bug!")
# Shorten hash
# NOTE: Partially verifies the hash, but it will still pass if it's, e.g., a tree
git_sha = subprocess.check_output([
'git', 'rev-parse', '--short', git_sha
'git', 'rev-parse', '--short', git_sha.decode('ascii')
])
else:
# This is a regular commit
@ -999,7 +999,7 @@ install them, let us know by filing a bug!")
toolchain = self.rust_toolchain()
status = subprocess.call(
["rustup", "run", toolchain.encode("utf-8"), "rustc", "--version"],
["rustup", "run", toolchain, "rustc", "--version"],
stdout=open(os.devnull, "wb"),
stderr=subprocess.STDOUT,
)

View file

@ -775,7 +775,11 @@ def setup_uwp_signing(ms_app_store, publisher):
def run_powershell_cmd(cmd):
try:
return subprocess.check_output(['powershell.exe', '-NoProfile', '-Command', cmd])
return (
subprocess
.check_output(['powershell.exe', '-NoProfile', '-Command', cmd])
.decode('utf-8')
)
except subprocess.CalledProcessError:
print("ERROR: PowerShell command failed: ", cmd)
exit(1)
@ -841,6 +845,7 @@ def build_uwp(platforms, dev, msbuild_dir, ms_app_store):
.replace("%%PACKAGE_PLATFORMS%%", '|'.join(platforms))
.replace("%%CONFIGURATION%%", Configuration)
.replace("%%SOLUTION%%", path.join(os.getcwd(), 'support', 'hololens', 'ServoApp.sln'))
.encode('utf-8')
)
build_file.close()
# Generate an appxbundle.

View file

@ -243,7 +243,8 @@ class PostBuildCommands(CommandBase):
media_stack=None, **kwargs):
self.ensure_bootstrapped(rustup_components=["rust-docs"])
rustc_path = check_output(
["rustup" + BIN_SUFFIX, "which", "--toolchain", self.rust_toolchain(), "rustc"])
["rustup" + BIN_SUFFIX, "which", "--toolchain", self.rust_toolchain(), "rustc"]
).decode('utf-8')
assert path.basename(path.dirname(rustc_path)) == "bin"
toolchain_path = path.dirname(path.dirname(rustc_path))
rust_docs = path.join(toolchain_path, "share", "doc", "rust", "html")

View file

@ -585,7 +585,10 @@ class MachCommands(CommandBase):
def format(outputs, description, file=sys.stdout):
formatted = "%s %s:\n%s" % (len(outputs), description, "\n".join(outputs))
file.write(formatted.encode("utf-8"))
if file == sys.stdout:
file.write(formatted)
else:
file.write(formatted.encode("utf-8"))
if log_intermittents:
with open(log_intermittents, "wb") as file:

View file

@ -0,0 +1,2 @@
[bg-color-with-gradient.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[backdrop-filters-hue-rotate.html]
expected: FAIL

View file

@ -1,33 +0,0 @@
[class-string-interface.any.html]
[Object.prototype.toString applied to the prototype]
expected: FAIL
[Object.prototype.toString applied to a null-prototype instance]
expected: FAIL
[Object.prototype.toString applied after modifying the prototype's @@toStringTag]
expected: FAIL
[Object.prototype.toString applied after deleting @@toStringTag]
expected: FAIL
[@@toStringTag exists on the prototype with the appropriate descriptor]
expected: FAIL
[class-string-interface.any.worker.html]
[Object.prototype.toString applied to the prototype]
expected: FAIL
[Object.prototype.toString applied to a null-prototype instance]
expected: FAIL
[Object.prototype.toString applied after modifying the prototype's @@toStringTag]
expected: FAIL
[Object.prototype.toString applied after deleting @@toStringTag]
expected: FAIL
[@@toStringTag exists on the prototype with the appropriate descriptor]
expected: FAIL

View file

@ -1,39 +0,0 @@
[class-string-iterator-prototype-object.any.html]
[Object.prototype.toString]
expected: FAIL
[Object.prototype.toString applied after deleting @@toStringTag]
expected: FAIL
[@@toStringTag exists with the appropriate descriptor]
expected: FAIL
[Object.prototype.toString applied after modifying @@toStringTag]
expected: FAIL
[Object.prototype.toString applied after nulling the prototype]
expected: FAIL
[Object.prototype.toString applied to a null-prototype instance]
expected: FAIL
[class-string-iterator-prototype-object.any.worker.html]
[Object.prototype.toString]
expected: FAIL
[Object.prototype.toString applied after deleting @@toStringTag]
expected: FAIL
[@@toStringTag exists with the appropriate descriptor]
expected: FAIL
[Object.prototype.toString applied after modifying @@toStringTag]
expected: FAIL
[Object.prototype.toString applied after nulling the prototype]
expected: FAIL
[Object.prototype.toString applied to a null-prototype instance]
expected: FAIL

View file

@ -1,7 +1,4 @@
[class-string-named-properties-object.window.html]
[Object.prototype.toString applied after modifying @@toStringTag]
expected: FAIL
[Object.prototype.toString applied after deleting @@toStringTag]
expected: FAIL

View file

@ -1,7 +0,0 @@
[default-iterator-object.html]
[Object.prototype.toString returns correct value]
expected: FAIL
[@@toStringTag has correct value from prototype]
expected: FAIL

View file

@ -5,9 +5,9 @@
[[data-expected-height\] 7]
expected: FAIL
[[data-expected-height\] 3]
[[data-expected-height\] 1]
expected: FAIL
[[data-expected-height\] 4]
[[data-expected-height\] 2]
expected: FAIL

View file

@ -1,2 +0,0 @@
[white-space-002.xht]
expected: FAIL

View file

@ -1,2 +0,0 @@
[white-space-003.xht]
expected: FAIL

View file

@ -0,0 +1,2 @@
[bg-color-with-gradient.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[line-break-normal-018.xht]
expected: FAIL

View file

@ -0,0 +1,2 @@
[line-break-strict-018.xht]
expected: FAIL

View file

@ -0,0 +1,2 @@
[outline-006.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[backdrop-filters-hue-rotate.html]
expected: FAIL

View file

@ -1,2 +1,22 @@
[element-internals-shadowroot.html]
expected: ERROR
[ElementInternals cannot be called after constructor calls it, create case]
expected: FAIL
[ElementInternals cannot be called before constructor, upgrade case]
expected: FAIL
[ElementInternals.shadowRoot allows access to open shadow root]
expected: FAIL
[ElementInternals.shadowRoot allows access to closed shadow root]
expected: FAIL
[ElementInternals *can* be called after constructor, upgrade case]
expected: FAIL
[ElementInternals disabled by disabledFeatures]
expected: FAIL
[ElementInternals.shadowRoot doesn't reveal pre-attached closed shadowRoot]
expected: FAIL

View file

@ -6,3 +6,8 @@
[Trying to set an expando with an indexed property name past the end of the list]
expected: FAIL
[Handling of property names that look like integers around 2^32]
expected: FAIL
[Handling of property names that look like integers around 2^31]
expected: FAIL

View file

@ -4,7 +4,6 @@
expected: ERROR
[response-error-from-stream.any.html]
expected: ERROR
[response-error-from-stream.any.sharedworker.html]
expected: ERROR

View file

@ -1,86 +1,43 @@
[parent-no-child-bad-subdomain.sub.https.html]
expected: TIMEOUT
["true": originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[""?1"": message event must occur]
expected: NOTRUN
expected: FAIL
["(?1)": originAgentCluster must equal false]
expected: NOTRUN
["1": frame insertion]
expected: NOTRUN
expected: FAIL
["?2": message event must occur]
expected: NOTRUN
expected: FAIL
["?0": originAgentCluster must equal false]
expected: NOTRUN
[""?1"": setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
["true": message event must occur]
expected: NOTRUN
expected: FAIL
["": originAgentCluster must equal false]
expected: NOTRUN
["true": setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[""?1"": originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
["": message event must occur]
expected: NOTRUN
["": frame insertion]
expected: TIMEOUT
expected: FAIL
["?2": originAgentCluster must equal false]
expected: NOTRUN
["?2": setting document.domain must give sync access]
expected: NOTRUN
["(?1)": frame insertion]
expected: NOTRUN
expected: FAIL
["1": message event must occur]
expected: NOTRUN
["?0": frame insertion]
expected: NOTRUN
["?0": setting document.domain must give sync access]
expected: NOTRUN
["1": setting document.domain must give sync access]
expected: NOTRUN
["": setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
["(?1)": message event must occur]
expected: NOTRUN
["true": frame insertion]
expected: NOTRUN
expected: FAIL
["1": originAgentCluster must equal false]
expected: NOTRUN
[""?1"": frame insertion]
expected: NOTRUN
expected: FAIL
["?0": message event must occur]
expected: NOTRUN
["?2": frame insertion]
expected: NOTRUN
["(?1)": setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,13 @@
[parent-no-child-yes-port.sub.https.html]
expected: TIMEOUT
[setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,10 @@
[parent-no-child-yes-same.sub.https.html]
expected: TIMEOUT
[message event must occur]
expected: NOTRUN
[setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[child: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,13 @@
[parent-no-child-yes-subdomain-with-redirect.sub.https.html]
expected: TIMEOUT
[setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,13 @@
[parent-no-child-yes-subdomain.sub.https.html]
expected: TIMEOUT
[setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,13 @@
[parent-no-child-yeswithparams-subdomain.sub.https.html]
expected: TIMEOUT
[setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,13 @@
[parent-yes-child-no-port.sub.https.html]
expected: TIMEOUT
[setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,10 @@
[parent-yes-child-no-same.sub.https.html]
expected: TIMEOUT
[message event must occur]
expected: NOTRUN
[setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,13 @@
[parent-yes-child-no-subdomain.sub.https.html]
expected: TIMEOUT
[setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,13 @@
[parent-yes-child-yes-port.sub.https.html]
expected: TIMEOUT
[setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,10 @@
[parent-yes-child-yes-same.sub.https.html]
expected: TIMEOUT
[message event must occur]
expected: NOTRUN
[setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,13 @@
[parent-yes-child-yes-subdomain.sub.https.html]
expected: TIMEOUT
[setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL

View file

@ -6,26 +6,20 @@
[parent: originAgentCluster must equal false]
expected: NOTRUN
[Parent to child2: setting document.domain must give sync access]
expected: NOTRUN
[Parent to child2: message event must occur]
expected: NOTRUN
expected: FAIL
[child1: originAgentCluster must equal false]
expected: NOTRUN
[child1 to child2: message event must occur]
expected: NOTRUN
expected: TIMEOUT
[child2: originAgentCluster must equal false]
expected: NOTRUN
[Parent to child1: message event must occur]
expected: NOTRUN
[Parent to child1: setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[child1 to child2: setting document.domain must give sync access]
expected: NOTRUN

View file

@ -4,7 +4,7 @@
expected: NOTRUN
[child1 to child2: messageerror event must occur]
expected: NOTRUN
expected: TIMEOUT
[parent: originAgentCluster must equal false]
expected: NOTRUN
@ -12,11 +12,8 @@
[child2 to child1: setting document.domain must not give sync access]
expected: NOTRUN
[Parent to child1: setting document.domain must give sync access]
expected: NOTRUN
[Parent to child2: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child1: originAgentCluster must equal false]
expected: NOTRUN
@ -25,10 +22,10 @@
expected: NOTRUN
[Parent to child1: message event must occur]
expected: NOTRUN
expected: FAIL
[Parent to child2: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[child2 to child1: messageerror event must occur]
expected: NOTRUN

View file

@ -4,7 +4,7 @@
expected: NOTRUN
[child1 to child2: messageerror event must occur]
expected: NOTRUN
expected: TIMEOUT
[parent: originAgentCluster must equal false]
expected: NOTRUN
@ -12,11 +12,8 @@
[child2 to child1: setting document.domain must not give sync access]
expected: NOTRUN
[Parent to child1: setting document.domain must give sync access]
expected: NOTRUN
[Parent to child2: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child1: originAgentCluster must equal false]
expected: NOTRUN
@ -25,10 +22,10 @@
expected: NOTRUN
[Parent to child1: message event must occur]
expected: NOTRUN
expected: FAIL
[Parent to child2: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[child2 to child1: messageerror event must occur]
expected: NOTRUN

View file

@ -4,19 +4,16 @@
expected: NOTRUN
[child1 to child2: messageerror event must occur]
expected: NOTRUN
expected: TIMEOUT
[parent: originAgentCluster must equal false]
expected: NOTRUN
[Parent to child2: setting document.domain must give sync access]
expected: NOTRUN
[Parent to child2: message event must occur]
expected: NOTRUN
expected: FAIL
[Parent to child1: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[child1 to child2: setting document.domain must not give sync access]
expected: NOTRUN
@ -25,7 +22,7 @@
expected: NOTRUN
[Parent to child1: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child2 to child1: setting document.domain must not give sync access]
expected: NOTRUN

View file

@ -1,7 +1,7 @@
[parent-no-child1-yes-subdomain-child2-no-subdomain.sub.https.html]
expected: TIMEOUT
[Parent to child1: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child1: originAgentCluster must equal true]
expected: NOTRUN
@ -13,19 +13,19 @@
expected: NOTRUN
[Parent to child2: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child1 to child2: message event must occur]
expected: NOTRUN
expected: TIMEOUT
[child2 to child1: setting document.domain must give sync access]
expected: NOTRUN
[Parent to child1: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child2: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[child2: originAgentCluster must equal true]
expected: NOTRUN

View file

@ -1,13 +1,13 @@
[parent-yes-child1-no-subdomain-child2-no-subdomain.sub.https.html]
expected: TIMEOUT
[Parent to child1: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child2 to child1: message event must occur]
expected: NOTRUN
[Parent to child2: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
@ -16,7 +16,7 @@
expected: NOTRUN
[child1 to child2: message event must occur]
expected: NOTRUN
expected: TIMEOUT
[child2 to child1: setting document.domain must give sync access]
expected: NOTRUN
@ -25,10 +25,10 @@
expected: NOTRUN
[Parent to child1: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child2: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[child1 to child2: setting document.domain must give sync access]
expected: NOTRUN

View file

@ -1,13 +1,13 @@
[parent-yes-child1-no-subdomain-child2-no-subdomain2.sub.https.html]
expected: TIMEOUT
[Parent to child1: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child2 to child1: message event must occur]
expected: NOTRUN
[Parent to child2: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
@ -16,7 +16,7 @@
expected: NOTRUN
[child1 to child2: message event must occur]
expected: NOTRUN
expected: TIMEOUT
[child2 to child1: setting document.domain must give sync access]
expected: NOTRUN
@ -25,10 +25,10 @@
expected: NOTRUN
[Parent to child1: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child2: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[child1 to child2: setting document.domain must give sync access]
expected: NOTRUN

View file

@ -1,13 +1,13 @@
[parent-yes-child1-no-subdomain-child2-yes-subdomain.sub.https.html]
expected: TIMEOUT
[Parent to child1: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child2 to child1: message event must occur]
expected: NOTRUN
[Parent to child2: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
@ -16,7 +16,7 @@
expected: NOTRUN
[child1 to child2: message event must occur]
expected: NOTRUN
expected: TIMEOUT
[child2 to child1: setting document.domain must give sync access]
expected: NOTRUN
@ -25,10 +25,10 @@
expected: NOTRUN
[Parent to child1: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child2: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[child1 to child2: setting document.domain must give sync access]
expected: NOTRUN

View file

@ -4,13 +4,13 @@
expected: NOTRUN
[child1 to child2: messageerror event must occur]
expected: NOTRUN
expected: TIMEOUT
[child2 to child1: setting document.domain must not give sync access]
expected: NOTRUN
[Parent to child2: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
@ -22,13 +22,13 @@
expected: NOTRUN
[Parent to child1: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child2: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child1: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child2 to child1: messageerror event must occur]
expected: NOTRUN

View file

@ -4,13 +4,13 @@
expected: NOTRUN
[child1 to child2: messageerror event must occur]
expected: NOTRUN
expected: TIMEOUT
[child2 to child1: setting document.domain must not give sync access]
expected: NOTRUN
[Parent to child2: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
@ -22,13 +22,13 @@
expected: NOTRUN
[Parent to child1: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child2: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child1: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child2 to child1: messageerror event must occur]
expected: NOTRUN

View file

@ -4,13 +4,13 @@
expected: NOTRUN
[child1 to child2: messageerror event must occur]
expected: NOTRUN
expected: TIMEOUT
[child2 to child1: setting document.domain must not give sync access]
expected: NOTRUN
[Parent to child2: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
@ -22,13 +22,13 @@
expected: NOTRUN
[Parent to child1: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child2: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child1: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child2 to child1: messageerror event must occur]
expected: NOTRUN

View file

@ -1,7 +1,7 @@
[parent-yes-child1-yes-subdomain-child2-no-subdomain.sub.https.html]
expected: TIMEOUT
[Parent to child1: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child1: originAgentCluster must equal true]
expected: NOTRUN
@ -10,22 +10,22 @@
expected: NOTRUN
[Parent to child2: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
[child1 to child2: message event must occur]
expected: NOTRUN
expected: TIMEOUT
[child2 to child1: setting document.domain must give sync access]
expected: NOTRUN
[Parent to child1: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child2: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[child2: originAgentCluster must equal true]
expected: NOTRUN

View file

@ -1,7 +1,7 @@
[parent-yes-child1-yes-subdomain-child2-yes-subdomain.sub.https.html]
expected: TIMEOUT
[Parent to child1: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child1: originAgentCluster must equal true]
expected: NOTRUN
@ -10,22 +10,22 @@
expected: NOTRUN
[Parent to child2: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
[child1 to child2: message event must occur]
expected: NOTRUN
expected: TIMEOUT
[child2 to child1: setting document.domain must give sync access]
expected: NOTRUN
[Parent to child1: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child2: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[child2: originAgentCluster must equal true]
expected: NOTRUN

View file

@ -7,13 +7,13 @@
expected: NOTRUN
[child1 to child2: messageerror event must occur]
expected: NOTRUN
expected: TIMEOUT
[child2 to child1: setting document.domain must not give sync access]
expected: NOTRUN
[Parent to child2: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
@ -22,13 +22,13 @@
expected: NOTRUN
[Parent to child1: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child2: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child1: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child2 to child1: messageerror event must occur]
expected: NOTRUN

View file

@ -7,13 +7,13 @@
expected: NOTRUN
[child1 to child2: messageerror event must occur]
expected: NOTRUN
expected: TIMEOUT
[child2 to child1: setting document.domain must not give sync access]
expected: NOTRUN
[Parent to child2: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal true]
expected: NOTRUN
@ -22,13 +22,13 @@
expected: NOTRUN
[Parent to child1: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child2: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Parent to child1: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[child2 to child1: messageerror event must occur]
expected: NOTRUN

View file

@ -1,13 +1,10 @@
[about-blank.https.sub.html]
expected: TIMEOUT
[about:blank to child2: messageerror event must occur]
expected: NOTRUN
[parent to about:blank: setting document.domain must give sync access]
expected: NOTRUN
expected: TIMEOUT
[parent to about:blank: message event must occur]
expected: NOTRUN
expected: FAIL
[about:blank to child2: setting document.domain must not give sync access]
expected: NOTRUN

View file

@ -1,8 +1,5 @@
[cross-origin-isolated.sub.https.html]
expected: TIMEOUT
[self: originAgentCluster must equal true]
expected: FAIL
[child: originAgentCluster must equal true]
expected: TIMEOUT
expected: FAIL

View file

@ -1,5 +1,4 @@
[sandboxed-iframe-no.https.html]
expected: TIMEOUT
[originAgentCluster must equal true]
expected: TIMEOUT
expected: FAIL

View file

@ -1,5 +1,4 @@
[sandboxed-iframe-yes.https.html]
expected: TIMEOUT
[originAgentCluster must equal true]
expected: TIMEOUT
expected: FAIL

View file

@ -1,5 +1,4 @@
[sandboxed-same-origin-iframe-no.https.html]
expected: TIMEOUT
[originAgentCluster must equal false]
expected: TIMEOUT
expected: FAIL

View file

@ -1,5 +1,4 @@
[sandboxed-same-origin-iframe-yes.https.html]
expected: TIMEOUT
[originAgentCluster must equal true]
expected: TIMEOUT
expected: FAIL

View file

@ -1,13 +1,13 @@
[going-back.sub.https.html]
expected: TIMEOUT
[After navigation: parent to child2: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[child2 to child1: setting document.domain must give sync access]
expected: NOTRUN
[Before navigation: parent to child1: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[After back: parent to child1: messageerror event must occur]
expected: NOTRUN
@ -15,11 +15,8 @@
[child2 to child1: message event must occur]
expected: NOTRUN
[Inserting a second iframe]
expected: NOTRUN
[After navigation: parent to child2: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[After back: parent to child2: setting document.domain must not give sync access]
expected: NOTRUN
@ -31,17 +28,14 @@
expected: NOTRUN
[Going back in history (navigating back the first iframe)]
expected: NOTRUN
expected: TIMEOUT
[Before navigation: parent to child1: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[child1 to child2: setting document.domain must give sync access]
expected: NOTRUN
[Navigation]
expected: NOTRUN
[After back: parent to child1: setting document.domain must not give sync access]
expected: NOTRUN

View file

@ -1,29 +1,22 @@
[parent-no-1-no-same-2-yes-port.sub.https.html]
expected: TIMEOUT
[before parent: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[before child: originAgentCluster must equal false]
expected: NOTRUN
[Before: parent to child: setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[after child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[After: parent to child: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[after parent: originAgentCluster must equal false]
expected: NOTRUN
[Navigation]
expected: NOTRUN
expected: FAIL
[After: parent to child: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Before: parent to child: message event must occur]
expected: NOTRUN
expected: FAIL

View file

@ -1,29 +1,22 @@
[parent-no-1-no-same-2-yes-subdomain.sub.https.html]
expected: TIMEOUT
[before parent: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[before child: originAgentCluster must equal false]
expected: NOTRUN
[Before: parent to child: setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[after child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[After: parent to child: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[after parent: originAgentCluster must equal false]
expected: NOTRUN
[Navigation]
expected: NOTRUN
expected: FAIL
[After: parent to child: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Before: parent to child: message event must occur]
expected: NOTRUN
expected: FAIL

View file

@ -1,29 +1,19 @@
[parent-no-1-no-subdomain-2-yes-subdomain.sub.https.html]
expected: TIMEOUT
[before parent: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[before child: originAgentCluster must equal false]
expected: NOTRUN
[Before: parent to child: setting document.domain must give sync access]
expected: NOTRUN
[After: parent to child: setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[After: parent to child: message event must occur]
expected: NOTRUN
expected: FAIL
[after parent: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[after child: originAgentCluster must equal false]
expected: NOTRUN
[Navigation]
expected: NOTRUN
expected: FAIL
[Before: parent to child: message event must occur]
expected: NOTRUN
expected: FAIL

View file

@ -1,29 +1,22 @@
[parent-no-1-no-subdomain-2-yes-subdomain2.sub.https.html]
expected: TIMEOUT
[before parent: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[before child: originAgentCluster must equal false]
expected: NOTRUN
[Before: parent to child: setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[after child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[After: parent to child: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[after parent: originAgentCluster must equal false]
expected: NOTRUN
[Navigation]
expected: NOTRUN
expected: FAIL
[After: parent to child: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Before: parent to child: message event must occur]
expected: NOTRUN
expected: FAIL

View file

@ -1,29 +1,22 @@
[parent-no-1-subdomain-yes-2-subdomain2-no.sub.https.html]
expected: TIMEOUT
[before parent: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[Before: parent to child: setting document.domain must not give sync access]
expected: NOTRUN
[After: parent to child: setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[Before: parent to child: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[before child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[After: parent to child: message event must occur]
expected: NOTRUN
expected: FAIL
[after parent: originAgentCluster must equal false]
expected: NOTRUN
[Navigation]
expected: NOTRUN
expected: FAIL
[after child: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL

View file

@ -1,29 +1,25 @@
[parent-no-1-yes-subdomain-2-no-subdomain.sub.https.html]
expected: TIMEOUT
[before parent: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[after parent: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[Before: parent to child: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[after child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[After: parent to child: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[before child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[Before: parent to child: messageerror event must occur]
expected: NOTRUN
[Navigation]
expected: NOTRUN
expected: FAIL
[After: parent to child: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL

View file

@ -1,29 +1,22 @@
[parent-yes-1-no-same-2-no-port.sub.https.html]
expected: TIMEOUT
[after parent: originAgentCluster must equal true]
expected: NOTRUN
[Before: parent to child: setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[before parent: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[before child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[After: parent to child: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[after child: originAgentCluster must equal false]
expected: NOTRUN
[Navigation]
expected: NOTRUN
expected: FAIL
[After: parent to child: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Before: parent to child: message event must occur]
expected: NOTRUN
expected: FAIL

View file

@ -1,29 +1,22 @@
[parent-yes-1-no-same-2-no-subdomain.sub.https.html]
expected: TIMEOUT
[after parent: originAgentCluster must equal true]
expected: NOTRUN
[Before: parent to child: setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[before parent: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[before child: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[After: parent to child: messageerror event must occur]
expected: NOTRUN
expected: FAIL
[after child: originAgentCluster must equal false]
expected: NOTRUN
[Navigation]
expected: NOTRUN
expected: FAIL
[After: parent to child: setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[Before: parent to child: message event must occur]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,10 @@
[insecure-http.sub.html]
expected: TIMEOUT
[message event must occur]
expected: NOTRUN
[setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[parent: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[child: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,13 @@
[opener-no-openee-yes-port.sub.https.html]
expected: TIMEOUT
[setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[opener: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[messageerror event must occur]
expected: NOTRUN
expected: FAIL
[openee: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,10 @@
[opener-no-openee-yes-same.sub.https.html]
expected: TIMEOUT
[message event must occur]
expected: NOTRUN
[setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[opener: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[openee: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,13 @@
[opener-no-openee-yes-subdomain.sub.https.html]
expected: TIMEOUT
[setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[opener: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[messageerror event must occur]
expected: NOTRUN
expected: FAIL
[openee: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,13 @@
[opener-yes-openee-no-port.sub.https.html]
expected: TIMEOUT
[setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[messageerror event must occur]
expected: NOTRUN
expected: FAIL
[openee: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[opener: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,10 @@
[opener-yes-openee-no-same.sub.https.html]
expected: TIMEOUT
[message event must occur]
expected: NOTRUN
[setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[opener: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[openee: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,13 @@
[opener-yes-openee-no-subdomain.sub.https.html]
expected: TIMEOUT
[setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[messageerror event must occur]
expected: NOTRUN
expected: FAIL
[openee: originAgentCluster must equal false]
expected: NOTRUN
expected: FAIL
[opener: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,13 @@
[opener-yes-openee-yes-port.sub.https.html]
expected: TIMEOUT
[setting document.domain must not give sync access]
expected: NOTRUN
expected: FAIL
[messageerror event must occur]
expected: NOTRUN
expected: FAIL
[openee: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[opener: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL

View file

@ -1,14 +1,10 @@
[opener-yes-openee-yes-same.sub.https.html]
expected: TIMEOUT
[message event must occur]
expected: NOTRUN
[setting document.domain must give sync access]
expected: NOTRUN
expected: FAIL
[opener: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL
[openee: originAgentCluster must equal true]
expected: NOTRUN
expected: FAIL

Some files were not shown because too many files have changed in this diff Show more