From 218b621ae3ffbf7d09a8da4f09c4a0032900677d Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Fri, 17 Mar 2023 14:35:00 +0100 Subject: [PATCH] avm2: Convert external_interface to use ParametersExt --- .../flash/external/external_interface.rs | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/core/src/avm2/globals/flash/external/external_interface.rs b/core/src/avm2/globals/flash/external/external_interface.rs index 24afd472a..18c212415 100644 --- a/core/src/avm2/globals/flash/external/external_interface.rs +++ b/core/src/avm2/globals/flash/external/external_interface.rs @@ -1,3 +1,4 @@ +use crate::avm2::parameters::ParametersExt; use crate::avm2::{Activation, Error, Object, Value}; use crate::external::{Callback, Value as ExternalValue}; @@ -6,11 +7,7 @@ pub fn call<'gc>( _this: Option>, args: &[Value<'gc>], ) -> Result, Error<'gc>> { - if args.is_empty() { - return Ok(Value::Null); - } - - let name = args.get(0).unwrap().coerce_to_string(activation)?; + let name = args.get_string(activation, 0)?; if let Some(method) = activation .context .external_interface @@ -41,18 +38,12 @@ pub fn add_callback<'gc>( _this: Option>, args: &[Value<'gc>], ) -> Result, Error<'gc>> { - if args.len() < 2 { - return Ok(Value::Undefined); - } + let name = args.get_string(activation, 0)?; + let method = args.get_object(activation, 1, "closure")?; - let name = args.get(0).unwrap().coerce_to_string(activation)?; - let method = args.get(1).unwrap(); - - if let Value::Object(method) = method { - activation - .context - .external_interface - .add_callback(name.to_string(), Callback::Avm2 { method: *method }); - } + activation + .context + .external_interface + .add_callback(name.to_string(), Callback::Avm2 { method }); Ok(Value::Undefined) }