core: Remove clear_clipboard, format and fix tests

This commit is contained in:
CUB3D 2020-05-31 03:49:07 +01:00
parent bc1055e381
commit 48bef91917
11 changed files with 141 additions and 78 deletions

View File

@ -28,11 +28,11 @@ mod rectangle;
mod sound; mod sound;
mod stage; mod stage;
pub(crate) mod string; pub(crate) mod string;
pub(crate) mod system_capabilities;
pub(crate) mod system; pub(crate) mod system;
pub(crate) mod text_field; pub(crate) mod system_capabilities;
pub(crate) mod system_ime; pub(crate) mod system_ime;
pub(crate) mod system_security; pub(crate) mod system_security;
pub(crate) mod text_field;
mod text_format; mod text_format;
mod xml; mod xml;
@ -317,11 +317,24 @@ pub fn create_globals<'gc>(
globals.define_value(gc_context, "Number", number.into(), EnumSet::empty()); globals.define_value(gc_context, "Number", number.into(), EnumSet::empty());
globals.define_value(gc_context, "Boolean", boolean.into(), EnumSet::empty()); globals.define_value(gc_context, "Boolean", boolean.into(), EnumSet::empty());
let system_security = system_security::create(gc_context, Some(object_proto), Some(function_proto)); let system_security =
system_security::create(gc_context, Some(object_proto), Some(function_proto));
let system_capabilities = system_capabilities::create(gc_context, Some(object_proto)); let system_capabilities = system_capabilities::create(gc_context, Some(object_proto));
let system_ime = system_ime::create(gc_context, Some(object_proto), Some(function_proto), &listeners.ime); let system_ime = system_ime::create(
gc_context,
Some(object_proto),
Some(function_proto),
&listeners.ime,
);
let system = system::create(gc_context, Some(object_proto), Some(function_proto), system_security, system_capabilities, system_ime); let system = system::create(
gc_context,
Some(object_proto),
Some(function_proto),
system_security,
system_capabilities,
system_ime,
);
globals.define_value(gc_context, "System", system.into(), EnumSet::empty()); globals.define_value(gc_context, "System", system.into(), EnumSet::empty());
globals.define_value( globals.define_value(

View File

@ -1,20 +1,20 @@
use crate::avm1::function::Executable;
use crate::avm1::object::Object; use crate::avm1::object::Object;
use crate::avm1::property::Attribute::{DontDelete, DontEnum, ReadOnly}; use crate::avm1::property::Attribute::{DontDelete, DontEnum, ReadOnly};
use crate::avm1::return_value::ReturnValue; use crate::avm1::return_value::ReturnValue;
use crate::avm1::{Avm1, Error, ScriptObject, TObject, Value}; use crate::avm1::{Avm1, Error, ScriptObject, TObject, Value};
use crate::context::UpdateContext; use crate::context::UpdateContext;
use enumset::{EnumSet, EnumSetType};
use gc_arena::MutationContext; use gc_arena::MutationContext;
use num_enum::TryFromPrimitive; use num_enum::TryFromPrimitive;
use std::convert::TryFrom; use std::convert::TryFrom;
use crate::avm1::function::Executable;
use enumset::{EnumSet, EnumSetType};
/// Available type of sandbox for a given SWF /// Available type of sandbox for a given SWF
pub enum SandboxType { pub enum SandboxType {
Remote, Remote,
LocalWithFile, LocalWithFile,
LocalWithNetwork, LocalWithNetwork,
LocalTrusted LocalTrusted,
} }
impl SandboxType { impl SandboxType {
@ -37,7 +37,7 @@ pub enum OperatingSystem {
Windows95, Windows95,
WindowsCE, WindowsCE,
Linux, Linux,
MacOS MacOS,
} }
impl OperatingSystem { impl OperatingSystem {
@ -84,7 +84,7 @@ impl Manufacturer {
Manufacturer::Windows => "WIN", Manufacturer::Windows => "WIN",
Manufacturer::Macintosh => "MAC", Manufacturer::Macintosh => "MAC",
Manufacturer::Linux => "LNX", Manufacturer::Linux => "LNX",
_ => "" _ => "",
} }
} }
} }
@ -111,12 +111,12 @@ pub enum Language {
Spanish, Spanish,
Swedish, Swedish,
TraditionalChinese, TraditionalChinese,
Turkish Turkish,
} }
impl Language { impl Language {
pub fn get_language_code(&self, player_version: u8) -> &str { pub fn get_language_code(&self, player_version: u8) -> &str {
return match self { match self {
Language::Czech => "cs", Language::Czech => "cs",
Language::Danish => "da", Language::Danish => "da",
Language::Dutch => "nl", Language::Dutch => "nl",
@ -143,7 +143,7 @@ impl Language {
Language::Spanish => "es", Language::Spanish => "es",
Language::Swedish => "sv", Language::Swedish => "sv",
Language::TraditionalChinese => "zh-TW", Language::TraditionalChinese => "zh-TW",
Language::Turkish => "tr" Language::Turkish => "tr",
} }
} }
} }
@ -157,7 +157,7 @@ pub enum ScreenColor {
impl ScreenColor { impl ScreenColor {
pub fn get_color_code(&self) -> &str { pub fn get_color_code(&self) -> &str {
return match self { match self {
ScreenColor::Color => "color", ScreenColor::Color => "color",
ScreenColor::Gray => "gray", ScreenColor::Gray => "gray",
ScreenColor::BlackWhite => "bw", ScreenColor::BlackWhite => "bw",
@ -175,7 +175,7 @@ pub enum PlayerType {
impl PlayerType { impl PlayerType {
pub fn get_player_name(&self) -> &str { pub fn get_player_name(&self) -> &str {
return match self { match self {
PlayerType::StandAlone => "StandAlone", PlayerType::StandAlone => "StandAlone",
PlayerType::External => "External", PlayerType::External => "External",
PlayerType::PlugIn => "PlugIn", PlayerType::PlugIn => "PlugIn",
@ -244,7 +244,11 @@ pub struct SystemProperties {
impl SystemProperties { impl SystemProperties {
pub fn get_version_string(&self, avm: &Avm1) -> String { pub fn get_version_string(&self, avm: &Avm1) -> String {
format!("{} {},0,0,0", self.manufacturer.get_platform_name(), avm.player_version) format!(
"{} {},0,0,0",
self.manufacturer.get_platform_name(),
avm.player_version
)
} }
pub fn has_capability(&self, cap: SystemCapabilities) -> bool { pub fn has_capability(&self, cap: SystemCapabilities) -> bool {
@ -258,14 +262,14 @@ impl SystemProperties {
fn encode_capability(&self, cap: SystemCapabilities) -> &str { fn encode_capability(&self, cap: SystemCapabilities) -> &str {
match self.has_capability(cap) { match self.has_capability(cap) {
true => "t", true => "t",
false => "f" false => "f",
} }
} }
fn encode_not_capability(&self, cap: SystemCapabilities) -> &str { fn encode_not_capability(&self, cap: SystemCapabilities) -> &str {
match self.has_capability(cap) { match self.has_capability(cap) {
true => "t", true => "t",
false => "f" false => "f",
} }
} }
@ -274,30 +278,69 @@ impl SystemProperties {
} }
pub fn get_server_string(&self, avm: &Avm1) -> String { pub fn get_server_string(&self, avm: &Avm1) -> String {
url::form_urlencoded::Serializer::new(String::new()) url::form_urlencoded::Serializer::new(String::new())
.append_pair("A", self.encode_capability(SystemCapabilities::Audio)) .append_pair("A", self.encode_capability(SystemCapabilities::Audio))
.append_pair("SA", self.encode_capability(SystemCapabilities::StreamingAudio)) .append_pair(
.append_pair("SV", self.encode_capability(SystemCapabilities::StreamingVideo)) "SA",
.append_pair("EV", self.encode_capability(SystemCapabilities::EmbeddedVideo)) self.encode_capability(SystemCapabilities::StreamingAudio),
)
.append_pair(
"SV",
self.encode_capability(SystemCapabilities::StreamingVideo),
)
.append_pair(
"EV",
self.encode_capability(SystemCapabilities::EmbeddedVideo),
)
.append_pair("MP3", self.encode_capability(SystemCapabilities::MP3)) .append_pair("MP3", self.encode_capability(SystemCapabilities::MP3))
.append_pair("AE", self.encode_capability(SystemCapabilities::AudioEncoder)) .append_pair(
.append_pair("VE", self.encode_capability(SystemCapabilities::VideoEncoder)) "AE",
.append_pair("ACC", self.encode_not_capability(SystemCapabilities::Accessibility)) self.encode_capability(SystemCapabilities::AudioEncoder),
)
.append_pair(
"VE",
self.encode_capability(SystemCapabilities::VideoEncoder),
)
.append_pair(
"ACC",
self.encode_not_capability(SystemCapabilities::Accessibility),
)
.append_pair("PR", self.encode_capability(SystemCapabilities::Printing)) .append_pair("PR", self.encode_capability(SystemCapabilities::Printing))
.append_pair("SP", self.encode_capability(SystemCapabilities::ScreenPlayback)) .append_pair(
.append_pair("SB", self.encode_capability(SystemCapabilities::ScreenBroadcast)) "SP",
self.encode_capability(SystemCapabilities::ScreenPlayback),
)
.append_pair(
"SB",
self.encode_capability(SystemCapabilities::ScreenBroadcast),
)
.append_pair("DEB", self.encode_capability(SystemCapabilities::Debugger)) .append_pair("DEB", self.encode_capability(SystemCapabilities::Debugger))
.append_pair("M", &self.encode_string(self.manufacturer.get_manufacturer_string(avm.player_version).as_str())) .append_pair(
.append_pair("R", &format!("{}x{}", self.screen_resolution.0, self.screen_resolution.1)) "M",
&self.encode_string(
self.manufacturer
.get_manufacturer_string(avm.player_version)
.as_str(),
),
)
.append_pair(
"R",
&format!("{}x{}", self.screen_resolution.0, self.screen_resolution.1),
)
.append_pair("COL", self.screen_color.get_color_code()) .append_pair("COL", self.screen_color.get_color_code())
.append_pair("AR", &self.aspect_ratio.to_string()) .append_pair("AR", &self.aspect_ratio.to_string())
.append_pair("OS", &self.encode_string(self.os.get_os_name())) .append_pair("OS", &self.encode_string(self.os.get_os_name()))
.append_pair("L", self.language.get_language_code(avm.player_version)) .append_pair("L", self.language.get_language_code(avm.player_version))
.append_pair("IME", self.encode_capability(SystemCapabilities::IME)) .append_pair("IME", self.encode_capability(SystemCapabilities::IME))
.append_pair("PT", self.player_type.get_player_name()) .append_pair("PT", self.player_type.get_player_name())
.append_pair("AVD", self.encode_not_capability(SystemCapabilities::AvHardware)) .append_pair(
.append_pair("LFD", self.encode_not_capability(SystemCapabilities::LocalFileRead)) "AVD",
self.encode_not_capability(SystemCapabilities::AvHardware),
)
.append_pair(
"LFD",
self.encode_not_capability(SystemCapabilities::LocalFileRead),
)
.append_pair("DP", &self.dpi.to_string()) .append_pair("DP", &self.dpi.to_string())
.finish() .finish()
} }
@ -316,8 +359,8 @@ impl Default for SystemProperties {
// TODO: note for fp <7 this should be the locale and the ui lang for >= 7, on windows // TODO: note for fp <7 this should be the locale and the ui lang for >= 7, on windows
language: Language::English, language: Language::English,
screen_resolution: (0, 0), screen_resolution: (0, 0),
aspect_ratio: 1 as f32, aspect_ratio: 1_f32,
dpi: 1 as f32, dpi: 1_f32,
manufacturer: Manufacturer::Linux, manufacturer: Manufacturer::Linux,
os: OperatingSystem::Linux, os: OperatingSystem::Linux,
sandbox_type: SandboxType::LocalTrusted, sandbox_type: SandboxType::LocalTrusted,
@ -431,7 +474,7 @@ pub fn create<'gc>(
fn_proto: Option<Object<'gc>>, fn_proto: Option<Object<'gc>>,
security: Object<'gc>, security: Object<'gc>,
capabilities: Object<'gc>, capabilities: Object<'gc>,
ime: Object<'gc> ime: Object<'gc>,
) -> Object<'gc> { ) -> Object<'gc> {
let mut system = ScriptObject::object(gc_context, proto); let mut system = ScriptObject::object(gc_context, proto);
@ -443,7 +486,6 @@ pub fn create<'gc>(
DontDelete | DontEnum, DontDelete | DontEnum,
); );
system.add_property( system.add_property(
gc_context, gc_context,
"useCodepage", "useCodepage",

View File

@ -1,11 +1,11 @@
use crate::avm1::function::Executable;
use crate::avm1::globals::system::SystemCapabilities;
use crate::avm1::object::Object; use crate::avm1::object::Object;
use crate::avm1::property::Attribute::{DontDelete, DontEnum, ReadOnly}; use crate::avm1::property::Attribute::{DontDelete, DontEnum, ReadOnly};
use crate::avm1::{ScriptObject, TObject, Avm1, Value, Error};
use gc_arena::MutationContext;
use crate::context::UpdateContext;
use crate::avm1::return_value::ReturnValue; use crate::avm1::return_value::ReturnValue;
use crate::avm1::globals::system::SystemCapabilities; use crate::avm1::{Avm1, Error, ScriptObject, TObject, Value};
use crate::avm1::function::Executable; use crate::context::UpdateContext;
use gc_arena::MutationContext;
macro_rules! capabilities_func { macro_rules! capabilities_func {
($func_name: ident, $capability: expr) => { ($func_name: ident, $capability: expr) => {
@ -55,16 +55,21 @@ capabilities_func!(get_has_embedded_video, SystemCapabilities::EmbeddedVideo);
capabilities_func!(get_has_ime, SystemCapabilities::IME); capabilities_func!(get_has_ime, SystemCapabilities::IME);
capabilities_func!(get_has_mp3, SystemCapabilities::MP3); capabilities_func!(get_has_mp3, SystemCapabilities::MP3);
capabilities_func!(get_has_printing, SystemCapabilities::Printing); capabilities_func!(get_has_printing, SystemCapabilities::Printing);
capabilities_func!(get_has_screen_broadcast, SystemCapabilities::ScreenBroadcast); capabilities_func!(
get_has_screen_broadcast,
SystemCapabilities::ScreenBroadcast
);
capabilities_func!(get_has_screen_playback, SystemCapabilities::ScreenPlayback); capabilities_func!(get_has_screen_playback, SystemCapabilities::ScreenPlayback);
capabilities_func!(get_has_streaming_audio, SystemCapabilities::StreamingAudio); capabilities_func!(get_has_streaming_audio, SystemCapabilities::StreamingAudio);
capabilities_func!(get_has_streaming_video, SystemCapabilities::StreamingVideo); capabilities_func!(get_has_streaming_video, SystemCapabilities::StreamingVideo);
capabilities_func!(get_has_video_encoder, SystemCapabilities::VideoEncoder); capabilities_func!(get_has_video_encoder, SystemCapabilities::VideoEncoder);
capabilities_func!(get_is_debugger, SystemCapabilities::Debugger); capabilities_func!(get_is_debugger, SystemCapabilities::Debugger);
inverse_capabilities_func!(get_is_local_file_read_disabled, SystemCapabilities::LocalFileRead); inverse_capabilities_func!(
get_is_local_file_read_disabled,
SystemCapabilities::LocalFileRead
);
inverse_capabilities_func!(get_is_av_hardware_disabled, SystemCapabilities::AvHardware); inverse_capabilities_func!(get_is_av_hardware_disabled, SystemCapabilities::AvHardware);
pub fn get_player_type<'gc>( pub fn get_player_type<'gc>(
_avm: &mut Avm1<'gc>, _avm: &mut Avm1<'gc>,
context: &mut UpdateContext<'_, 'gc, '_>, context: &mut UpdateContext<'_, 'gc, '_>,
@ -89,7 +94,11 @@ pub fn get_language<'gc>(
_this: Object<'gc>, _this: Object<'gc>,
_args: &[Value<'gc>], _args: &[Value<'gc>],
) -> Result<ReturnValue<'gc>, Error> { ) -> Result<ReturnValue<'gc>, Error> {
Ok(context.system.language.get_language_code(avm.player_version).into()) Ok(context
.system
.language
.get_language_code(avm.player_version)
.into())
} }
pub fn get_screen_resolution_x<'gc>( pub fn get_screen_resolution_x<'gc>(
@ -134,7 +143,11 @@ pub fn get_manufacturer<'gc>(
_this: Object<'gc>, _this: Object<'gc>,
_args: &[Value<'gc>], _args: &[Value<'gc>],
) -> Result<ReturnValue<'gc>, Error> { ) -> Result<ReturnValue<'gc>, Error> {
Ok(context.system.manufacturer.get_manufacturer_string(avm.player_version).into()) Ok(context
.system
.manufacturer
.get_manufacturer_string(avm.player_version)
.into())
} }
pub fn get_os_name<'gc>( pub fn get_os_name<'gc>(
@ -164,7 +177,6 @@ pub fn get_server_string<'gc>(
Ok(context.system.get_server_string(avm).into()) Ok(context.system.get_server_string(avm).into())
} }
pub fn create<'gc>( pub fn create<'gc>(
gc_context: MutationContext<'gc, '_>, gc_context: MutationContext<'gc, '_>,
proto: Option<Object<'gc>>, proto: Option<Object<'gc>>,

View File

@ -1,12 +1,12 @@
use crate::avm1::listeners::Listeners;
use crate::avm1::object::Object; use crate::avm1::object::Object;
use crate::avm1::property::Attribute;
use crate::avm1::property::Attribute::{DontDelete, DontEnum, ReadOnly}; use crate::avm1::property::Attribute::{DontDelete, DontEnum, ReadOnly};
use crate::avm1::{ScriptObject, TObject, Avm1, Value, Error}; use crate::avm1::return_value::ReturnValue;
use crate::avm1::{Avm1, Error, ScriptObject, TObject, Value};
use crate::context::UpdateContext;
use gc_arena::MutationContext; use gc_arena::MutationContext;
use std::convert::Into; use std::convert::Into;
use crate::context::UpdateContext;
use crate::avm1::return_value::ReturnValue;
use crate::avm1::property::Attribute;
use crate::avm1::listeners::Listeners;
fn on_ime_composition<'gc>( fn on_ime_composition<'gc>(
_avm: &mut Avm1<'gc>, _avm: &mut Avm1<'gc>,
@ -135,7 +135,7 @@ pub fn create<'gc>(
on_ime_composition, on_ime_composition,
gc_context, gc_context,
DontDelete | DontEnum, DontDelete | DontEnum,
fn_proto fn_proto,
); );
ime.force_set_function( ime.force_set_function(
@ -143,16 +143,15 @@ pub fn create<'gc>(
do_conversion, do_conversion,
gc_context, gc_context,
DontDelete | DontEnum, DontDelete | DontEnum,
fn_proto fn_proto,
); );
ime.force_set_function( ime.force_set_function(
"getConversionMode", "getConversionMode",
get_conversion_mode, get_conversion_mode,
gc_context, gc_context,
DontDelete | DontEnum, DontDelete | DontEnum,
fn_proto fn_proto,
); );
ime.force_set_function( ime.force_set_function(
@ -160,7 +159,7 @@ pub fn create<'gc>(
get_enabled, get_enabled,
gc_context, gc_context,
DontDelete | DontEnum, DontDelete | DontEnum,
fn_proto fn_proto,
); );
ime.force_set_function( ime.force_set_function(
@ -168,7 +167,7 @@ pub fn create<'gc>(
set_composition_string, set_composition_string,
gc_context, gc_context,
DontDelete | DontEnum, DontDelete | DontEnum,
fn_proto fn_proto,
); );
ime.force_set_function( ime.force_set_function(
@ -176,7 +175,7 @@ pub fn create<'gc>(
set_conversion_mode, set_conversion_mode,
gc_context, gc_context,
DontDelete | DontEnum, DontDelete | DontEnum,
fn_proto fn_proto,
); );
ime.force_set_function( ime.force_set_function(
@ -184,7 +183,7 @@ pub fn create<'gc>(
set_enabled, set_enabled,
gc_context, gc_context,
DontDelete | DontEnum, DontDelete | DontEnum,
fn_proto fn_proto,
); );
ime.into() ime.into()

View File

@ -1,11 +1,11 @@
use crate::avm1::function::Executable;
use crate::avm1::object::Object; use crate::avm1::object::Object;
use crate::avm1::property::Attribute::{DontDelete, DontEnum, ReadOnly}; use crate::avm1::property::Attribute::{DontDelete, DontEnum, ReadOnly};
use crate::avm1::{ScriptObject, TObject, Avm1, Value, Error}; use crate::avm1::return_value::ReturnValue;
use crate::avm1::{Avm1, Error, ScriptObject, TObject, Value};
use crate::context::UpdateContext;
use gc_arena::MutationContext; use gc_arena::MutationContext;
use std::convert::Into; use std::convert::Into;
use crate::context::UpdateContext;
use crate::avm1::return_value::ReturnValue;
use crate::avm1::function::Executable;
fn allow_domain<'gc>( fn allow_domain<'gc>(
_avm: &mut Avm1<'gc>, _avm: &mut Avm1<'gc>,
@ -46,7 +46,6 @@ fn get_sandbox_type<'gc>(
Ok(context.system.sandbox_type.get_sandbox_name().into()) Ok(context.system.sandbox_type.get_sandbox_name().into())
} }
pub fn create<'gc>( pub fn create<'gc>(
gc_context: MutationContext<'gc, '_>, gc_context: MutationContext<'gc, '_>,
proto: Option<Object<'gc>>, proto: Option<Object<'gc>>,
@ -59,7 +58,7 @@ pub fn create<'gc>(
allow_domain, allow_domain,
gc_context, gc_context,
DontDelete | ReadOnly | DontEnum, DontDelete | ReadOnly | DontEnum,
fn_proto fn_proto,
); );
security.force_set_function( security.force_set_function(
@ -67,7 +66,7 @@ pub fn create<'gc>(
allow_insecure_domain, allow_insecure_domain,
gc_context, gc_context,
DontDelete | ReadOnly | DontEnum, DontDelete | ReadOnly | DontEnum,
fn_proto fn_proto,
); );
security.force_set_function( security.force_set_function(
@ -75,7 +74,7 @@ pub fn create<'gc>(
load_policy_file, load_policy_file,
gc_context, gc_context,
DontDelete | ReadOnly | DontEnum, DontDelete | ReadOnly | DontEnum,
fn_proto fn_proto,
); );
security.add_property( security.add_property(

View File

@ -136,7 +136,7 @@ impl<'gc> Listeners<'gc> {
#[derive(Clone, Debug, PartialEq, Eq)] #[derive(Clone, Debug, PartialEq, Eq)]
pub enum SystemListener { pub enum SystemListener {
Mouse, Mouse,
Ime Ime,
} }
#[derive(Clone, Collect, Debug, Copy)] #[derive(Clone, Collect, Debug, Copy)]

View File

@ -718,6 +718,7 @@ mod tests {
use rand::{rngs::SmallRng, SeedableRng}; use rand::{rngs::SmallRng, SeedableRng};
use std::collections::BTreeMap; use std::collections::BTreeMap;
use std::sync::Arc; use std::sync::Arc;
use crate::avm1::globals::system::SystemProperties;
fn with_object<F, R>(swf_version: u8, test: F) -> R fn with_object<F, R>(swf_version: u8, test: F) -> R
where where
@ -758,6 +759,7 @@ mod tests {
stage_size: (Twips::from_pixels(550.0), Twips::from_pixels(400.0)), stage_size: (Twips::from_pixels(550.0), Twips::from_pixels(400.0)),
player: None, player: None,
load_manager: &mut LoadManager::new(), load_manager: &mut LoadManager::new(),
system: &mut SystemProperties::default(),
}; };
root.post_instantiation(&mut avm, &mut context, root, None); root.post_instantiation(&mut avm, &mut context, root, None);

View File

@ -14,6 +14,7 @@ use gc_arena::{rootless_arena, GcCell, MutationContext};
use rand::{rngs::SmallRng, SeedableRng}; use rand::{rngs::SmallRng, SeedableRng};
use std::collections::BTreeMap; use std::collections::BTreeMap;
use std::sync::Arc; use std::sync::Arc;
use crate::avm1::globals::system::SystemProperties;
pub fn with_avm<F, R>(swf_version: u8, test: F) -> R pub fn with_avm<F, R>(swf_version: u8, test: F) -> R
where where
@ -57,6 +58,7 @@ where
stage_size: (Twips::from_pixels(550.0), Twips::from_pixels(400.0)), stage_size: (Twips::from_pixels(550.0), Twips::from_pixels(400.0)),
player: None, player: None,
load_manager: &mut LoadManager::new(), load_manager: &mut LoadManager::new(),
system: &mut SystemProperties::default(),
}; };
root.post_instantiation(&mut avm, &mut context, root, None); root.post_instantiation(&mut avm, &mut context, root, None);

View File

@ -17,9 +17,6 @@ pub trait InputBackend: Downcast {
/// Set the clipboard to the given content /// Set the clipboard to the given content
fn set_clipboard_content(&mut self, content: String); fn set_clipboard_content(&mut self, content: String);
/// Empty the clipboard
fn clear_clipboard(&mut self);
} }
impl_downcast!(InputBackend); impl_downcast!(InputBackend);
@ -52,8 +49,6 @@ impl InputBackend for NullInputBackend {
fn set_mouse_cursor(&mut self, _cursor: MouseCursor) {} fn set_mouse_cursor(&mut self, _cursor: MouseCursor) {}
fn set_clipboard_content(&mut self, _content: String) {} fn set_clipboard_content(&mut self, _content: String) {}
fn clear_clipboard(&mut self) {}
} }
impl Default for NullInputBackend { impl Default for NullInputBackend {

View File

@ -1,6 +1,7 @@
//! Contexts and helper types passed between functions. //! Contexts and helper types passed between functions.
use crate::avm1; use crate::avm1;
use crate::avm1::globals::system::SystemProperties;
use crate::avm1::listeners::SystemListener; use crate::avm1::listeners::SystemListener;
use crate::avm1::{Object, Value}; use crate::avm1::{Object, Value};
use crate::backend::input::InputBackend; use crate::backend::input::InputBackend;
@ -17,7 +18,6 @@ use rand::rngs::SmallRng;
use std::collections::BTreeMap; use std::collections::BTreeMap;
use std::collections::VecDeque; use std::collections::VecDeque;
use std::sync::{Arc, Mutex, Weak}; use std::sync::{Arc, Mutex, Weak};
use crate::avm1::globals::system::SystemProperties;
/// `UpdateContext` holds shared data that is used by the various subsystems of Ruffle. /// `UpdateContext` holds shared data that is used by the various subsystems of Ruffle.
/// `Player` crates this when it begins a tick and passes it through the call stack to /// `Player` crates this when it begins a tick and passes it through the call stack to

View File

@ -1,4 +1,5 @@
use crate::avm1::debug::VariableDumper; use crate::avm1::debug::VariableDumper;
use crate::avm1::globals::system::SystemProperties;
use crate::avm1::listeners::SystemListener; use crate::avm1::listeners::SystemListener;
use crate::avm1::{Activation, Avm1, TObject, Value}; use crate::avm1::{Activation, Avm1, TObject, Value};
use crate::backend::input::{InputBackend, MouseCursor}; use crate::backend::input::{InputBackend, MouseCursor};
@ -20,8 +21,6 @@ use std::collections::BTreeMap;
use std::convert::TryFrom; use std::convert::TryFrom;
use std::ops::DerefMut; use std::ops::DerefMut;
use std::sync::{Arc, Mutex, Weak}; use std::sync::{Arc, Mutex, Weak};
use crate::avm1::globals::system::SystemProperties;
static DEVICE_FONT_TAG: &[u8] = include_bytes!("../assets/noto-sans-definefont3.bin"); static DEVICE_FONT_TAG: &[u8] = include_bytes!("../assets/noto-sans-definefont3.bin");
@ -237,7 +236,7 @@ impl Player {
navigator, navigator,
input, input,
self_reference: None, self_reference: None,
system: SystemProperties::default() system: SystemProperties::default(),
}; };
player.mutate_with_update_context(|avm, context| { player.mutate_with_update_context(|avm, context| {
@ -881,7 +880,7 @@ impl Player {
system_prototypes: avm.prototypes().clone(), system_prototypes: avm.prototypes().clone(),
player, player,
load_manager, load_manager,
system: system_properties system: system_properties,
}; };
let ret = f(avm, &mut update_context); let ret = f(avm, &mut update_context);