Aaron Hill
c1fce1106f
swf: Parse string as Vec<u8> instead of String in SWF
...
Some obfuscated SWFs may have invalid strings in their constant
pool - trying to immediately parse them as a utf-8 String throws
away information. Instead, we now store a `Vec<u8>`, which we
then use to construct an `AvmString` (or with `String::from_utf8_lossy`
for debug printing).
2024-01-22 21:50:45 -05:00
Aaron Hill
8dbcfe26f9
core: Display image load when using Loader.loadBytes
...
The handling of images in Loader.loaderBytes is similar to
the handling of SWFs - some of the data is exposed immediately
following the 'Loader.loadBytes' call, but the DisplayObject isn't
loaded until later.
2024-01-22 19:35:08 -05:00
Tom Schuster
173efbb77a
avm2: Stub flash.desktop.Clipboard
2024-01-22 23:37:22 +01:00
sleepycatcoding
1804c23b93
avm2: Fix `Error.toString` regression
...
This was introduced by #14897 , and to make sure this won't happen again I added a test.
Fixes #14901 .
2024-01-22 19:34:12 +01:00
sleepycatcoding
2057417824
avm2: Implement `Error.prototype.toString`
...
And remove `ErrorObject::to_string` implementation. This fixes a few avmplus tests.
2024-01-22 15:09:55 +01:00
renovate[bot]
262dff83a4
fix(deps): update rust dependencies
2024-01-22 03:09:33 +01:00
cmdocmd
c6331113ed
avm2: Stub `flash.text.engine.TextLine.getAtomIndexAtCharIndex`
2024-01-21 22:09:39 +01:00
Tom Schuster
ab99eb3e09
avm2: Only lookup own properties in flash.net.getClassByAlias
2024-01-21 17:23:29 +01:00
cmdocmd
5cf9e00f9c
avm2: Stub XML::inScopeNamespaces
2024-01-20 14:27:27 -08:00
nosamu
379bed891f
core: Invalidate cached bitmap on state change in AVM2Button
2024-01-20 11:53:19 +01:00
nosamu
284489b721
avm2: Stub Stage colorCorrection and colorCorrectionSupport
2024-01-20 11:35:28 +01:00
Tom Schuster
c9c1326d13
avm2: Allow TLF to use embedded fonts when requested
2024-01-19 23:14:58 +01:00
Tom Schuster
0a6cf92a53
core: Implement DefineFont4
2024-01-19 23:14:58 +01:00
Tom Schuster
e0f5b8906d
desktop: Support device font with a non-zero index
2024-01-19 19:21:48 +01:00
Adrian Wielgosik
11fe70ab65
avm2: Fix possible overflow in address calculations
2024-01-18 23:35:03 +01:00
Tom Schuster
28b20322f0
avm2: Assume we have the default public namespace when matching XML names
2024-01-18 16:31:00 +01:00
TÖRÖK Attila
9aff953163
core: Make `Player::mutate_with_update_context` public
2024-01-18 09:00:40 +01:00
TÖRÖK Attila
d153290fd6
nits: Fix a whole bunch of typos all over the place
2024-01-17 23:59:19 +01:00
Daniel Jacobs
8f2292c2c7
core: Add error for loading invalid SWF files and display as appropriate
2024-01-17 17:38:47 -05:00
Daniel Jacobs
5765177ba7
web: Properly panic when loading invalid SWF files ( fix #14665 )
2024-01-17 17:38:47 -05:00
Aaron Hill
97f868b8d5
avm2: Don't hold GcCell read ref open for Loader.loadBytes
...
We were holding this open while dispatching an event,
leading to a panic if anything attempted to modify the
ByteArray.
2024-01-17 17:05:52 -05:00
Tom Schuster
b54a807b37
avm2: Handle explicitly imported/used namespace for XML lookup
...
Fixes #14792
2024-01-17 21:11:25 +01:00
Aaron Hill
6c420fa5d5
avm2: Run most of Loader.loadBytes immediately
...
This requires moving `set_root_movie` into `UpdateContext`.
Now, we preload the entire movieclip immediately - Flash Player
does this regardless of the size of the SWF.
The 'Loader::load_complete' is delayed to the end of the frame
(which is when the root class is constructed for the loaded clip).
2024-01-17 00:53:08 +01:00
Nathan Adams
f65060e8c9
desktop: Update winit to 0.29.10 and egui to 0.25.0
2024-01-16 21:10:36 +01:00
zhenghaoz
5169d9db3d
avm2: Fix multiply with overflow in `string_to_f64`
2024-01-15 23:44:14 -05:00
Lord-McSweeney
9637682216
avm1: Correctly access topmost `LoaderDisplay` or `Stage` instead of accessing the parent of `avm1_root`
...
This fixes a case where `lockRoot` is involved.
2024-01-15 17:15:36 -08:00
Tom Schuster
1b5eb2e8e2
avm2: Stub XML::namespaceDeclarations
...
Improves #14734
2024-01-15 19:50:09 -05:00
renovate[bot]
3c115238fd
fix(deps): update rust dependencies
2024-01-16 01:13:38 +01:00
sleepycatcoding
5b19ecec97
avm2: Implement XML.setLocalName
2024-01-15 23:53:17 +01:00
renovate[bot]
e0a22b56ce
fix(deps): update wasm-bindgen
2024-01-15 17:24:02 -05:00
Abiel Deneke
df3a033b77
avm2: Stub Accelerometer.isSupported
2024-01-15 22:10:58 +01:00
Kamil Jarosz
5bd643cd4f
core: Improve caret blinking behavior
...
Caret now blinks only when idle.
2024-01-15 08:20:22 +01:00
nosamu
a638715bd8
avm2: Throw null param error in navigateToURL
...
Fixes #14733
2024-01-14 20:17:31 +01:00
Aaron Hill
3cbfbdd4a6
avm2: Add weird parse-as-uint special case to Object keys
...
When handling dynamic properties, avmplus will always try to
parse the string key name as a uint. If it succeeds, then the
key will be stored internally as a integer (via Atom), which is
observable by property iteration. The intention appears to have
been to support `obj[25] = someVal`, but it causes `obj["25"]`
and `obj[25]` to map to the same key (though iterating over the
object's keys will always produce a `number`).
2024-01-13 19:47:58 -05:00
TÖRÖK Attila
55cdfab3d3
avm2: Add API versioning to DisplayObjectContainer
2024-01-13 19:35:54 +01:00
TÖRÖK Attila
4c1d59c4a3
avm2: Cleanup: Make `Domain::get_class` not return a `Result`
...
As it was always the `Ok` variant anyway.
2024-01-13 11:53:35 -05:00
Aaron Hill
195822885e
avm2: Stub all remaining TextField methods and properties
2024-01-12 20:42:18 -05:00
Aaron Hill
639d17d259
Apply 'xml["@myattr"]' logic when setting/deleting properties
...
We previously only applied this when getting properties.
2024-01-12 19:13:35 -05:00
sleepycatcoding
2775c917bf
avm2: Correctly handle `@*` in string_to_multiname
2024-01-13 00:27:28 +02:00
Tom Schuster
79c5112f45
core: Provide a better fallback for Ming typefaces
2024-01-12 21:59:20 +01:00
Kamil Jarosz
70486465e8
core: Support TextField.restrict when pasting
2024-01-11 23:22:49 +01:00
Kamil Jarosz
2ef63d3a61
avm2: Implement TextField.restrict
2024-01-11 23:22:49 +01:00
Kamil Jarosz
1c15cd55b9
avm1: Implement TextField.restrict
2024-01-11 23:22:49 +01:00
Kamil Jarosz
43d4c26b77
core: Implement restrict for EditText
...
EditTextRestrict models the `restrict` property, which is used
to specify which characters the user is allowed to type.
2024-01-11 23:22:49 +01:00
Kamil Jarosz
5ece6981ce
core: Fix caret and selection rendering
...
This commit fixes issues with caret and selection rendering:
1. They had the wrong height and were rendered lower than expected
for some fonts and sizes.
2. The caret was not being rendered at all when there was no text,
but only when the text was set earlier and then deleted.
3. The selection was rendered with translate_x=-1,
which caused overlap over some glyphs.
2024-01-11 23:04:02 +01:00
Nathan Adams
e993f5ce46
core: Support F13..F24 keys
2024-01-11 22:40:37 +01:00
Tom Schuster
7498ed51d8
core: Font kerning is in points not pixels
2024-01-11 21:39:17 +01:00
Tom Schuster
ae8c0148c2
core: Use sans instead of serif when missing a font
2024-01-11 10:35:47 +01:00
Kamil Jarosz
5feafb2ca3
avm1: Add support for onSetFocus & onKillFocus
...
Methods `onSetFocus` & `onKillFocus` are invoked when focus is changed
for `TextField`, `Button`, and `MovieClip`.
Multiple SWFs use these methods to listen to a focus change,
e.g. in order to implement placeholders for text fields.
2024-01-10 21:59:25 -05:00
Aaron Hill
c01ab53d2e
avm2: Stub flash.text.engine.GraphicElement
2024-01-10 21:29:33 -05:00
Aaron Hill
db623a90e8
avm2: Stub TextField.getCharBoundaries
2024-01-10 20:35:29 -05:00
sleepycatcoding
aeedec19fa
avm2: Implement XML.normalize
2024-01-11 01:30:47 +01:00
Tom Schuster
82ce40af82
avm2: Optimize op_get_property index access on array-like
2024-01-10 23:18:40 +01:00
Tom Schuster
532279b4e6
avm2: Inline Avm2::peek
2024-01-10 23:18:40 +01:00
Nathan Adams
d89e4536b3
core: Support Japanese font defaults
2024-01-10 23:15:26 +01:00
Aaron Hill
9a96941de9
avm2: Improve Graphics.drawGraphicsData stubs
...
We now produce stubs or clearer errors for unsupported argument
combinations, instead of unclear `RustError`s
2024-01-10 01:53:27 +01:00
Tom Schuster
ba3d1bbf66
core: Don't treat known aliases as default fonts before trying to load them as device fonts
2024-01-10 00:41:31 +01:00
Tom Schuster
b34d3c9ad2
core: Explicitly match and use default fonts, before loading device fonts
2024-01-08 23:00:18 +01:00
Nathan Adams
7e4ac986f2
core: Add FontFace struct, for loading a Font from a file binary
2024-01-08 23:00:18 +01:00
Aaron Hill
6c2e28a08f
Correctly handle zero-frame MovieClip
...
A MovieClip with zero frames can still have a child added
through ActionScript, which ticks normally.
2024-01-08 08:19:17 -05:00
renovate[bot]
a328deab11
fix(deps): update rust dependencies
2024-01-08 02:59:04 +01:00
Aaron Hill
47db84473a
avm2: Improve handling of Stage3D profile
...
We now validate the passed in profile, and return the selected profile
from 'Context3D.profile'. We don't yet alter the available
registers/textures based on the profile.
2024-01-07 22:34:33 +01:00
Aaron Hill
3156bf31ce
avm2: Throw correct errors in Graphics.[drawPath,drawGraphicsData]
...
This is pretty straightforward, except for the fact that Flash
completely ignores the provided commands when the 'data' vector
is empty (if 'data' has even a single entry, then Flash will validate
that all of the commands have the correct amount of data to run).
One SWF that I tested relies on this behavior.
2024-01-07 19:57:47 +01:00
Tom Schuster
e0abe72da4
avm2: Stub more TextField getLine methods
2024-01-07 12:29:26 -05:00
nosamu
95ad0f103f
avm2: Stub flash.globalization.DateTimeFormatter
...
Closes #14577
2024-01-06 23:41:53 -05:00
Aaron Hill
b96cfed6c7
avm2: Stub TextField.getCharIndexAtPoint
2024-01-06 23:11:43 -05:00
TÖRÖK Attila
f0ed5c7211
chore: Upgrade gc-arena to 0.5.0
2024-01-06 09:45:35 +01:00
Tom Schuster
7da3411fd0
avm2: Revert XML get_property_local to using has_explicit_namespace
...
This partly reverts #13966 . No new test failure, but makes the add test
for `xml["@attr"]` pass.
2024-01-06 09:16:04 +01:00
Tom Schuster
79e0e8b2ae
avm2: XML::name() needs to mark attributes as such
2024-01-06 09:16:04 +01:00
Kamil Jarosz
47deaf50a2
core: Fix non-ASCII characters input in EditText
...
Casting the character to u8 and back to char caused some non-ASCII
non-control characters to be treated as control characters.
For instance the letter "ą" (U+0105) after casting to u8 and back
became ENQ (U+0005) which is a control character.
Some other letters worked, for instance the letter "ł" (U+0142)
became "B" (U+0042) and was not classified as a control character.
The test edittext_input was added to verify this behavior.
2024-01-05 13:03:43 -08:00
TÖRÖK Attila
217585daa8
chore: Delegate `[lints]` in `Cargo.toml` of all packages to the workspace
2024-01-05 11:28:19 +01:00
Lord-McSweeney
89b7f7a6b8
avm2: Use correct null parameter error in `registerClassAlias`
2024-01-04 21:34:21 +01:00
Tom Schuster
dd53b4e06b
avm2: Reduce the size of Op on 64bit
2024-01-04 21:15:09 +01:00
Lord-McSweeney
a7716bb744
avm2: Implement FP's logic for parsing XML with multiple nodes
2024-01-03 15:14:11 +01:00
Tom Schuster
8b414c48c7
avm2: Optimize Avm2::push/pop slightly
2024-01-02 20:37:05 +01:00
Tom Schuster
c8901d43a4
avm2: Force inlining of do_next_opcode
2024-01-02 20:37:05 +01:00
renovate[bot]
c47962fc71
fix(deps): update rust crate syn to 2.0.44
2024-01-01 04:29:05 +01:00
renovate[bot]
6a0a35c370
fix(deps): update rust dependencies
2024-01-01 02:44:40 +01:00
renovate[bot]
91d0520a43
fix(deps): update rust dependencies
2024-01-01 02:03:54 +01:00
Lord-McSweeney
9f8c6bb703
avm1: Correctly handle a missing name when trying to lookup child of `ChildContainer` by that name
2023-12-31 07:06:08 +03:00
Daniel Jacobs
51254e16d1
web: Use unwrap_or_default for the PlayerRuntime instead or map_err
2023-12-30 17:58:36 -05:00
Daniel Jacobs
27849b5cdc
web: Add playerRuntime option to config for air or flashPlayer
2023-12-30 17:58:36 -05:00
Aaron Hill
583327ff62
avm2: Properly set LoaderInfo.contentType from sniffed type
2023-12-29 18:40:25 -05:00
sleepycatcoding
41fb30a6a9
avm2: Do not set dispatched flag if dispatcher does not have a listener
2023-12-29 07:31:53 +03:00
Tom Schuster
28a3c7178a
avm2: Check the text.engine.FontDescription properties before setting
2023-12-26 23:16:27 +01:00
Tom Schuster
973a81a40e
avm2: Support more ElementFormat font options in TextBlock
2023-12-26 19:19:58 +03:00
Tom Schuster
b44eed8350
avm2: Micro-optimize coerce_to_i32/u32
2023-12-26 18:50:08 +03:00
TÖRÖK Attila
2647c192d9
chore: Stop allowing, and fix lint `clippy::explicit_auto_deref`
2023-12-25 19:20:53 -05:00
TÖRÖK Attila
badac4176c
chore: Stop allowing previously buggy lint `clippy::extra_unused_type_parameters`
...
The corresponding Clippy issue was fixed long ago.
2023-12-25 19:20:53 -05:00
Aaron Hill
f60ba00240
avm2: Show FunctionObject name in Debug impl
2023-12-25 12:49:32 -05:00
renovate[bot]
216a8f3b14
fix(deps): update rust dependencies
2023-12-25 10:09:07 +01:00
Lord-McSweeney
a7145380ac
avm2/core: Implement basic SWF-local `LocalConnection`
...
Also implement `LocalConnection.isSupported` (namespace versioned to SWFv10+)
2023-12-23 15:46:03 -05:00
Crowdin Bot
9523022cdd
chore: Update translations from Crowdin
2023-12-23 13:26:37 +01:00
TÖRÖK Attila
1569ecfeae
chore: Fix a beta clippy lint in avm2: `clippy::ptr-arg`
2023-12-23 13:06:47 +01:00
Tom Schuster
704bd7502e
core: Do exact matching for device fonts first, because we might be able to load bold/italic variants
2023-12-22 13:47:48 +01:00
Tom Schuster
e3d8a279ad
core: load_device_font register function must be &mut
2023-12-22 13:47:48 +01:00
nosamu
4f62e7de47
avm1: Implement String.charCodeAt() SWFv5 behavior
2023-12-20 10:38:17 -08:00
nosamu
95851e6e9a
avm1: Implement undocumented SWFv5 string split behavior
2023-12-20 10:38:17 -08:00
nosamu
d443bd9def
avm1: Correctly handle undefined delimiter in String.split()
2023-12-20 10:38:17 -08:00
Aaron Hill
5c37533761
avm2: Avoid marking interface method definitions with VM_INTERNAL
...
Our asc.jar doesn't seem to apply a version suffix to namespaces for
interface method definitions. This was causing these methods to
get marked as VM_INTERNAL when we loaded playerglobals, preventing SWF
from invoking these methods through the interface (e.g. having a
variable of type `IEventDispatcher`, and calling `dispatchEvent` on it)
2023-12-18 21:50:34 +01:00