From 7cbba5bc8ff38a9a422664fd6b595af39b6bffe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?T=C3=96R=C3=96K=20Attila?= Date: Tue, 19 Apr 2022 18:05:30 +0200 Subject: [PATCH] avm2: Stub flash.accessibility.AccessibilityProperties --- core/src/avm2/globals.rs | 7 ++ core/src/avm2/globals/flash.rs | 1 + core/src/avm2/globals/flash/accessibility.rs | 3 + .../accessibility/accessibilityproperties.rs | 68 +++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 core/src/avm2/globals/flash/accessibility.rs create mode 100644 core/src/avm2/globals/flash/accessibility/accessibilityproperties.rs diff --git a/core/src/avm2/globals.rs b/core/src/avm2/globals.rs index 62f3a2763..5e70640af 100644 --- a/core/src/avm2/globals.rs +++ b/core/src/avm2/globals.rs @@ -961,5 +961,12 @@ pub fn load_player_globals<'gc>( script, )?; + // package `flash.accessibility` + class( + activation, + flash::accessibility::accessibilityproperties::create_class(mc), + script, + )?; + Ok(()) } diff --git a/core/src/avm2/globals/flash.rs b/core/src/avm2/globals/flash.rs index c5fffd174..c8bf00a0c 100644 --- a/core/src/avm2/globals/flash.rs +++ b/core/src/avm2/globals/flash.rs @@ -1,5 +1,6 @@ //! `flash` namespace +pub mod accessibility; pub mod crypto; pub mod display; pub mod events; diff --git a/core/src/avm2/globals/flash/accessibility.rs b/core/src/avm2/globals/flash/accessibility.rs new file mode 100644 index 000000000..90b898967 --- /dev/null +++ b/core/src/avm2/globals/flash/accessibility.rs @@ -0,0 +1,3 @@ +//! `flash.accessibility` namespace + +pub mod accessibilityproperties; diff --git a/core/src/avm2/globals/flash/accessibility/accessibilityproperties.rs b/core/src/avm2/globals/flash/accessibility/accessibilityproperties.rs new file mode 100644 index 000000000..1d8b8db5d --- /dev/null +++ b/core/src/avm2/globals/flash/accessibility/accessibilityproperties.rs @@ -0,0 +1,68 @@ +//! `flash.accessibility.AccessibilityProperties` builtin/prototype + +use crate::avm2::activation::Activation; +use crate::avm2::class::{Class, ClassAttributes}; +use crate::avm2::method::Method; +use crate::avm2::names::{Namespace, QName}; +use crate::avm2::object::Object; +use crate::avm2::value::Value; +use crate::avm2::Error; +use gc_arena::{GcCell, MutationContext}; + +fn instance_init<'gc>( + activation: &mut Activation<'_, 'gc, '_>, + this: Option>, + _args: &[Value<'gc>], +) -> Result, Error> { + if let Some(this) = this { + activation.super_init(this, &[])?; + } + + Ok(Value::Undefined) +} + +fn class_init<'gc>( + _activation: &mut Activation<'_, 'gc, '_>, + _this: Option>, + _args: &[Value<'gc>], +) -> Result, Error> { + Ok(Value::Undefined) +} + +/// Construct `flash.accessibility.AccessibilityProperties`'s class. +pub fn create_class<'gc>(mc: MutationContext<'gc, '_>) -> GcCell<'gc, Class<'gc>> { + let class = Class::new( + QName::new( + Namespace::package("flash.accessibility"), + "AccessibilityProperties", + ), + Some(QName::new(Namespace::public(), "Object").into()), + Method::from_builtin( + instance_init, + "", + mc, + ), + Method::from_builtin( + class_init, + "", + mc, + ), + mc, + ); + + let mut write = class.write(mc); + write.set_attributes(ClassAttributes::SEALED); + + const PUBLIC_INSTANCE_SLOTS: &[(&str, &str, &str)] = &[ + ("description", "", "String"), + ("forceSimple", "", "Boolean"), + ("name", "", "String"), + ("noAutoLabeling", "", "Boolean"), + ("shortcut", "", "String"), + ("silent", "", "Boolean"), + ]; + + write.define_public_slot_instance_traits(PUBLIC_INSTANCE_SLOTS); + + class +}