avm2: Namespace support for XML.name()
This commit is contained in:
parent
30614bdd2f
commit
6d51bc3964
|
@ -73,9 +73,7 @@ pub fn name<'gc>(
|
|||
) -> Result<Value<'gc>, Error<'gc>> {
|
||||
let node = this.as_xml_object().unwrap();
|
||||
if let Some(local_name) = node.local_name() {
|
||||
avm2_stub_method!(activation, "XML", "name", "namespaces");
|
||||
// FIXME - use namespace
|
||||
let namespace = activation.avm2().public_namespace;
|
||||
let namespace = node.namespace(activation);
|
||||
Ok(QNameObject::from_name(activation, Multiname::new(namespace, local_name))?.into())
|
||||
} else {
|
||||
Ok(Value::Null)
|
||||
|
@ -162,10 +160,7 @@ pub fn namespace_internal_impl<'gc>(
|
|||
|
||||
// b. Return the result of calling the [[GetNamespace]] method of x.[[Name]] with argument inScopeNS
|
||||
// FIXME: Use inScopeNS
|
||||
let namespace = match node.namespace() {
|
||||
Some(ns) => Namespace::package(ns, &mut activation.context.borrow_gc()),
|
||||
None => activation.avm2().public_namespace,
|
||||
};
|
||||
let namespace = xml.namespace(activation);
|
||||
Ok(NamespaceObject::from_namespace(activation, namespace)?.into())
|
||||
} else {
|
||||
// a. Let prefix = ToString(prefix)
|
||||
|
|
|
@ -7,6 +7,7 @@ use crate::avm2::object::script_object::ScriptObjectData;
|
|||
use crate::avm2::object::{ClassObject, Object, ObjectPtr, TObject, XmlListObject};
|
||||
use crate::avm2::string::AvmString;
|
||||
use crate::avm2::value::Value;
|
||||
use crate::avm2::Namespace;
|
||||
use crate::avm2::{Error, Multiname};
|
||||
use core::fmt;
|
||||
use gc_arena::{Collect, GcCell, GcWeakCell, Mutation};
|
||||
|
@ -75,6 +76,13 @@ impl<'gc> XmlObject<'gc> {
|
|||
self.0.read().node.local_name()
|
||||
}
|
||||
|
||||
pub fn namespace(&self, activation: &mut Activation<'_, 'gc>) -> Namespace<'gc> {
|
||||
match self.0.read().node.namespace() {
|
||||
Some(ns) => Namespace::package(ns, &mut activation.context.borrow_gc()),
|
||||
None => activation.avm2().public_namespace,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn matches_name(&self, multiname: &Multiname<'gc>) -> bool {
|
||||
self.0.read().node.matches_name(multiname)
|
||||
}
|
||||
|
|
|
@ -1,2 +1 @@
|
|||
num_ticks = 1
|
||||
known_failure = true # https://github.com/ruffle-rs/ruffle/issues/12351
|
||||
|
|
Loading…
Reference in New Issue