Commit Graph

6342 Commits

Author SHA1 Message Date
Tom Schuster fca17a0061 avm2: Add a E4XNode::is_text helper 2023-11-04 21:45:31 +01:00
Tom Schuster 28476d83be avm2: Add a E4XNode::is_element helper 2023-11-04 21:45:31 +01:00
Tom Schuster 1953ab3cf0 avm2: Add a E4XNode::is_attribute helper 2023-11-04 21:45:31 +01:00
TÖRÖK Attila 2059492d77 avm2: Remove default width and height values from BitmapData ctor 2023-11-03 21:41:39 +01:00
CUB3D b0d88645bc avm1: Implement FileReference 2023-11-03 19:32:24 +01:00
Nathan Adams dad39631cf avm2: Don't add ClassDefinition to AMF0 objects 2023-11-03 02:17:40 +01:00
Tom Schuster 8138b68919 avm2: Implement XML.setChildren 2023-11-02 13:40:16 +01:00
Tom Schuster 3572367c8e avm2: Allow assigning XML objects without a name (eg. text) 2023-11-01 18:44:36 +01:00
Aaron Hill 8d75f98214 core: Remove unused exports (fix nightly warnings) 2023-11-01 00:21:59 -04:00
Nathan Adams 432a63250b core: Update our xmlns/xml namespace detection for new quick-xml 0.31.0 2023-11-01 00:45:43 +01:00
renovate[bot] 1377a5b07b fix(deps): update rust dependencies 2023-11-01 00:45:43 +01:00
Nathan Adams 36eda35197 avm2: Implement Font.registerFont 2023-10-30 15:49:07 +01:00
Nathan Adams 9ecb7d221f avm2: Implement Font.enumerateFonts 2023-10-30 15:49:07 +01:00
Nathan Adams 8be05d8673 avm2: Made a FontObject type and switch Font to use that instead of looking up per getter 2023-10-30 15:49:07 +01:00
Tom Schuster 780489903a amv2: Implement flash.xml.XMLDocument createTextNode 2023-10-30 14:30:59 +01:00
Tom Schuster 72965b3689 amv2: Implement flash.xml.XMLNode removeNode 2023-10-30 14:30:59 +01:00
Tom Schuster 445643fedb amv2: Implement flash.xml.XMLNode cloneNode 2023-10-30 14:30:59 +01:00
sleepycatcoding fb3c4cd307 avm2: Fix E4X [[Replace]] implementation bug
We were incorrectly returning for XML attributes. Fixes #13780.
2023-10-30 14:05:23 +01:00
sleepycatcoding 5bebebddbe avm2: Add SWFv21 and above XML special case 2023-10-29 09:43:14 -07:00
nosamu 6f5eb48ec2 avm2: Fix return value of SharedObject.flush 2023-10-29 16:08:24 +01:00
Nathan Adams 878f1fc64e swf: Removed ButtonAction::key_code and fixed writing button tags 2023-10-29 14:31:45 +01:00
Lord-McSweeney 911f1c29db avm2: Correctly set `caller_movie` in `Activation::from_script` 2023-10-28 21:30:40 -04:00
Aaron Hill cc49aaee58 avm2: Add UTF-16 BOM handling to ByteArray.toString
When a UTF-16 BOM is present, ByteArray.toString automatically
strips it out, and treats the remaining data as a UTF-16 string
with the specified endianness.
2023-10-29 01:13:05 +02:00
Tom Schuster ef627babfd avm2: Stub undocumented XML notification functions 2023-10-28 14:17:34 -07:00
Aaron Hill 84f788c2d2
avm2: Use RawTable to implement 'public index' iteration (#12470)
* avm2: Use RawTable to implement 'public index' iteration

This makes our implementation more closely aligned with avmplus.
In particular, it's now possible to delete keys from an object
while iterating without disturbing the iteration order (as long
as those keys were already produced by the iterator).

This is based on @Bale001's work on RawTable-based iteration

A few tests had their output changed (they depend on the exact
object iteration order, and don't neccessarily match Flash Player
exactly).

* Use Cell to store index fields

* Remove outdated comment
2023-10-28 20:44:01 +00:00
Tom Schuster 33dde1eccf avm2: Ignore a missing [[TargetProperty]] when assigning an XMLList 2023-10-28 08:18:15 -07:00
Tom Schuster 08d6a7b648 avm2: Reimplement XML.appendChild in terms of [[Get]] and [[Put]] 2023-10-28 08:18:15 -07:00
TÖRÖK Attila 0c0b86c008 core,web: Replace `instant` with `web-time` 2023-10-28 03:01:45 +02:00
sleepycatcoding ed6fa6b2fe avm2: Support indices in XMLList.child 2023-10-27 22:53:16 +02:00
sleepycatcoding d9dad1109a avm2: Fix many uses of XmlListObject::new 2023-10-27 22:53:16 +02:00
sleepycatcoding 34b80a41b5 avm2: Take Mutation instead of Activation in append
There is no need for a full on activation in append.
2023-10-27 22:53:16 +02:00
sleepycatcoding 9d7f0a2bcc avm2: Add target_dirty flag and use it to reevaluate target object 2023-10-27 22:53:16 +02:00
michiel2005 333009b79f avm1: Implement key.isToggled() 2023-10-26 17:39:14 -04:00
Tom Schuster 444af0eaf4 avm2: Add AIR flash.system::ImageDecodingPolicy 2023-10-26 08:54:31 +02:00
Aaron Hill d5da655f8f avm2: Fix setting frontAndBack culling
The name uses camel case, not snake case.
2023-10-23 18:44:48 -04:00
Aaron Hill 3a75502a36 avm2: Implement DisplayObjectContainer.getObjectsUnderPoint 2023-10-23 18:01:08 -04:00
Aaron Hill b5097445e6 render: Add support for Context3DTextureFormat.COMPRESSED_ALPHA
This is our first non-rgba texture format (it uses Bc3RgbaUnorm).
ATF files store these textures in a very convoluted way - fortunately,
the 'dds2atf' tool is open-source, which allowed me to figure out
how to decode the texture back to a DXT5/DXT1 texture.
2023-10-23 11:18:27 -04:00
sleepycatcoding bb053df30b avm2: Implement XMLList.parent 2023-10-23 15:46:47 +02:00
sleepycatcoding 2745efe2b1 avm2: Throw error 1010 when null/undefined is given to name_to_multiname 2023-10-23 15:26:37 +02:00
renovate[bot] cd01bfe7d6 fix(deps): update rust dependencies 2023-10-23 02:55:11 +02:00
sleepycatcoding 10cf247315 avm2: Fix incorrect XMLList method signatures 2023-10-22 15:16:51 -04:00
Tom Schuster 172c1057bb avm2: XML objects must support lookups like "@attr" 2023-10-22 14:28:22 -04:00
Lord-McSweeney d23346271e core/avm2: Implement TextEvent.TEXT_INPUT 2023-10-22 08:01:18 -07:00
sleepycatcoding 0745968c49 avm2: Fix ifstricteq and ifstrictne comparisons
Unlike strict_equals they were comparing with just `==`, which is not entirely correct,
since objects like XmlObjects need special cases.
2023-10-22 00:23:51 -04:00
Lord-McSweeney 5f217a6b9a avm2: Improve quick_xml to AVM2 XML error conversion 2023-10-21 11:41:57 -07:00
Lord-McSweeney 18fb1cd6d1 avm2: Fix Vector call handler error 2023-10-21 11:41:57 -07:00
Lord-McSweeney 0c6a0e80af avm2: Add class call handlers for Boolean, Number, and (u)int 2023-10-21 11:41:57 -07:00
Lord-McSweeney 043f7cdea7 chore: appease clippy 2023-10-21 11:41:57 -07:00
Lord-McSweeney 901d84b2cf avm2: Fix defining const slots on global object 2023-10-21 11:41:57 -07:00
Lord-McSweeney 18c53694cb avm2: Implement Error 1070 2023-10-21 11:41:57 -07:00
Lord-McSweeney b1056311f0 avm2: Implement Error 1112 2023-10-21 11:41:57 -07:00
Lord-McSweeney 5d2d8e080a avm2: Pass around Mutation instead of Activation in some places 2023-10-21 11:41:57 -07:00
Aaron Hill 5d4e851a6e avm2: Throw ArgumentError when calling function with wrong arg count
Some SWFs rely on catching the error.

In order to reproduce Flash's error messages, we now store a `QName`
in `FunctionObject`, which is set when we make a bound method.
2023-10-21 00:18:50 -04:00
Crowdin Bot 94174b30fe chore: Update translations from Crowdin 2023-10-20 21:10:35 +02:00
sleepycatcoding c87ac6f5f5 avm2: Replace culling panic messages with stub messages
A stub message is good enough.
2023-10-20 20:45:45 +02:00
Nathan Adams feacbdc118 core: <font> tag in text should reset the style to Regular 2023-10-20 12:41:15 +02:00
Nathan Adams b2a43cb1f7 core: Add style to edittext debug UI 2023-10-20 12:41:15 +02:00
Nathan Adams 64385efe48 core: Use correct embedded font fallback order + tests 2023-10-20 12:41:15 +02:00
sleepycatcoding 8b5b135a2d avm2: Do not panic in XMLList call handler 2023-10-19 20:52:33 +02:00
sleepycatcoding 8021efaabc avm2: Do not panic in XML call handler
This panic occurred when the call handler was passed zero arguments.
2023-10-19 20:52:33 +02:00
sleepycatcoding 5da09c137e avm2: Implement QName call handler 2023-10-19 11:46:31 +02:00
Aaron Hill fd4d6921d8 avm2: Don't stop root movie clip, even if it doesn't extend `MovieClip`
Normally, Flash Player will ignores frames for a movie clip with
a symbol class that doesn't extend `MovieClip` (e.g. it extends
`Sprite`). However, the root movie appears to have frame run
unconditionally, even if it only extends `Sprite`. This can
be observed by adding a Graphics child in the second frame only -
the child will flicker in and out as the player switches between
frames, but only for the root movie clip.

Seedling relies on this behavior - it has `DoAbc2` tags in the second
frame, and has a main `Preloader` class that extends `Sprite`.
2023-10-18 09:28:50 -04:00
TÖRÖK Attila 627e8c8063 core: Switch dasp from a git revision to v0.11.0 2023-10-17 21:31:18 +02:00
Adrian Wielgosik a8ea913bf6 avm1: Store childNodes on the node itself 2023-10-16 11:25:48 +02:00
renovate[bot] b427940431 fix(deps): update rust dependencies 2023-10-16 09:51:22 +02:00
Nathan Adams d2541a7ff0 core: Rename Library::load_device_font to Library::get_or_load_device_font 2023-10-15 14:09:21 +02:00
Nathan Adams e768140a1f core: Cache the result of Library::default_font 2023-10-15 14:09:21 +02:00
Nathan Adams ec21ad8658 core: Add default_font feature which enables the fallback font 2023-10-15 14:09:21 +02:00
Nathan Adams 74a7ab5afe core: Implement device font lookup, and multiple default device fonts 2023-10-15 14:09:21 +02:00
Nathan Adams 909d33e12e core: Inline Player::load_device_font in Font tests, it's just testing one specific font 2023-10-15 14:09:21 +02:00
Lord-McSweeney 93aa3a493b avm2: Add back log_warn 2023-10-13 20:22:00 +02:00
Lord-McSweeney 4561fd3631 avm2: Move top-level functions and __ruffle__ stub functions to ActionScript 2023-10-13 20:22:00 +02:00
David Wendt cf3c594209 docs: Correct documentation of what `execute_seek` does 2023-10-10 18:49:09 -06:00
David Wendt 759aa1e469 core: Allow seeks to process on paused streams.
Our list of 'playing' streams is now a list of 'active' streams. This nomenclature change also indicates a rule change: streams are activated whenever there is work for them to do, and they are only ever deactivated by themselves when they're out of work to do. We no longer deactivate streams when they are paused as they may still have a queued seek to process.
2023-10-10 18:49:09 -06:00
David Wendt e5b59438f7 core: Swap order of parameters on `NetStream.Seek.Notify` event 2023-10-10 18:49:09 -06:00
David Wendt 4420dc8d23 core: Let each VM flag if it wants to send seek events or not 2023-10-10 18:49:09 -06:00
David Wendt c086a6da11 chore: Fix let statements holding unnecessary borrows, *grumble grumble* 2023-10-10 18:49:09 -06:00
David Wendt 78e41b5be5 avm1: Implement `NetStream.time` 2023-10-10 18:49:09 -06:00
David Wendt c23f346665 chore: Ensure all `NetStream` code is working in milliseconds.
AVM `NetStream` reports and accepts values in seconds, so all the unit conversions went there now.
2023-10-10 18:49:09 -06:00
David Wendt a0a762ccfc core: `NetStream` seeks are queued.
They do not execute until the next stream tick.

We also implement a few new status events, including some AVM2 exclusive ones.
2023-10-10 18:49:09 -06:00
David Wendt 3f13087d39 chore: Use `get_f64` for `NetStream.seek` 2023-10-10 18:49:09 -06:00
David Wendt 99de1ae154 avm2: Implement `NetStream.time` 2023-10-10 18:49:09 -06:00
David Wendt 0d886dd860 core: Add `NetStream.Pause.Notify` event 2023-10-10 18:49:09 -06:00
David Wendt 3566d7f43a core: Fire `NetStream.SeekStart.Notify` events 2023-10-10 18:49:09 -06:00
David Wendt 1f5947912d core: Defensively program against `flv` being broken 2023-10-10 18:49:09 -06:00
David Wendt 3be9ce4ac0 avm2: Implement `NetStream.seek` 2023-10-10 18:49:09 -06:00
David Wendt e440e175d9 avm1: Implement `seek` method 2023-10-10 18:49:09 -06:00
David Wendt bc6291898c core: Add a `seek` method 2023-10-10 18:49:09 -06:00
David Wendt 4867ff1210 core: Break type sniffing out into a separate fn. 2023-10-10 18:49:09 -06:00
renovate[bot] 18796a67fe fix(deps): update rust dependencies 2023-10-10 02:15:59 +02:00
Lord-McSweeney 7254cdeef9 avm2: Throw ArgumentError when trying to construct `new Worker()` 2023-10-10 01:20:06 +02:00
TÖRÖK Attila 602154b1b7 core,desktop: Switch to egui v0.23.0
Since it's compatible with wgpu 0.17.x.
2023-10-09 18:51:01 -04:00
sleepycatcoding 21a1e1f670 avm2: Small set_property_local fixup
Fixes a borrow panic and logic error.
2023-10-10 00:24:39 +02:00
sleepycatcoding 0b2771c23d avm2: Implement other XMLList set_property_local path 2023-10-10 00:24:39 +02:00
sleepycatcoding 917e70086b avm2: Throw Error 1089, if base list length bigger than 1
This is not mentioned in the E4X specification, but this is what avmplus
seems to be doing.
2023-10-10 00:24:39 +02:00
sleepycatcoding ca5ba4877c avm2: Implement one XMLList set_property path 2023-10-10 00:24:39 +02:00
sleepycatcoding 709306be81 avm2: Implement resolveValue 2023-10-10 00:24:39 +02:00
sleepycatcoding 4285d998dc avm2: Add target property to XMLListObject 2023-10-10 00:24:39 +02:00
Nathan Adams a3b95d9534 avm2: Fix missing stub imports in TextRenderer.as 2023-10-09 23:54:58 +02:00
Lord-McSweeney b877a39c47 avm2: Implement SharedObject.setProperty 2023-10-07 23:49:36 +02:00