Commit Graph

1334 Commits

Author SHA1 Message Date
michiel2005 ee9237681b tests/avm1: Added test for key.isToggled 2023-10-26 17:39:14 -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
Lord-McSweeney 47442ddd32 tests: Add a test for `textInput` event 2023-10-22 08:01:18 -07:00
Lord-McSweeney 5f217a6b9a avm2: Improve quick_xml to AVM2 XML error conversion 2023-10-21 11:41:57 -07:00
Lord-McSweeney 4de186e18a tests: Activate passing test 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
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
Nathan Adams feacbdc118 core: <font> tag in text should reset the style to Regular 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 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
Adrian Wielgosik b02038bcd2 avm1: Add a test for .childNodes edge cases 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 ec21ad8658 core: Add default_font feature which enables the fallback font 2023-10-15 14:09:21 +02:00
Lord-McSweeney acecaabd0e tests: Activate newly passing tests 2023-10-13 20:22:00 +02:00
David Wendt 18f78233ac tests: Add `output.expected.png` file to `avm2/netstream_seek_flv` 2023-10-10 18:49:09 -06:00
David Wendt 0fc3465443 chore: I deleted one too many lines 2023-10-10 18:49:09 -06:00
David Wendt 81740d09f7 tests: Change seek test output to match test harness timing.
We are not interested in testing the timing of buffer loads (since that will vary based on hardware), we just need to know that we got a buffer load event.

Furthermore all our seeks are in-buffer so multiple buffer full events shouldn't happen in Ruffle.
2023-10-10 18:49:09 -06:00
David Wendt 87b9cf2fa0 tests: Remove all time assertions from the seek test as our test harness and loader impl screws up timing 2023-10-10 18:49:09 -06:00
David Wendt 525165caf6 tests: Change AVM2 version of the `netstream_seek_flv` test to wait for video to play before tracking time and seeking. 2023-10-10 18:49:09 -06:00
David Wendt d3335f4dc4 tests: Add AVM1 version of `netstream_seek_flv` 2023-10-10 18:49:09 -06:00
David Wendt 008427e490 tests: Work around our test harness not loading videos syncronously 2023-10-10 18:49:09 -06:00
David Wendt 5cf005e69e tests: Add test for seeking NetStream on AVM2 2023-10-10 18:49:09 -06:00
renovate[bot] 18796a67fe fix(deps): update rust dependencies 2023-10-10 02:15:59 +02: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 ca5ba4877c avm2: Implement one XMLList set_property path 2023-10-10 00:24:39 +02:00
Tom Schuster c6804be307 avm2: Add smoke test for namespace issue in monopoly 2023-10-07 23:46:40 +02:00
Tom Schuster ed1a2ee27c avm2: Add failing namespace test for flash.xml 2023-10-07 23:46:40 +02:00
Aaron Hill 3a658f5dec avm2: Implement BitmapData.copyPixelsToByteArray
This basically just re-uses the implementation of getPixels
2023-10-05 17:35:54 -04:00
sleepycatcoding 80ccc1d8a3 avm2: Implement some obscure SWFv9 XML behavior
This affects appendChild, prependChild, insertChildBefore, insertChildAfter.
2023-10-05 16:12:43 +02:00
Aaron Hill ddefac322a avm2: Run DoAbc/DoAbc2/SymbolClass as part of their frame
We previously ran these tags during preloading - however,
they are actually run as part of frame execution. This is observable
by ActionScript - a SWF can load in a class from a stop()'d MoveClip,
and then advance the clip to a frame with a SymbolClass referencing
the loaded class.
2023-10-04 22:00:22 -04:00
renovate[bot] 428e89af73 fix(deps): update rust dependencies 2023-10-04 19:19:51 -04:00
sleepycatcoding 09716b8386 tests: make jpegxr optional 2023-10-03 16:08:51 -04:00
Tom Schuster 6d51bc3964 avm2: Namespace support for XML.name() 2023-10-01 19:26:07 +02:00
sleepycatcoding f140e7a14b
core: Place jpegxr texture support behind feature flag (#13348) 2023-09-29 18:46:54 -04:00
Aaron Hill ec7a8ac645
avm2: Add support for Stage3D bytearray/compressed textures (#13180) 2023-09-28 03:03:30 +00:00
renovate[bot] 7e4e4d4c5b fix(deps): update rust dependencies 2023-09-25 11:14:39 +02:00
Lord-McSweeney 1adde21a9b avm2, tests: Improve String.substr; add a complex test 2023-09-24 12:11:24 +02:00
Aaron Hill 8aec2f1703 Add another test 2023-09-23 14:11:24 +02:00
Aaron Hill bb4410e387 avm2: Skip nested 'goto' frame for SWF 9
This fixes 'who_killed_travolta', and unblocks DeathvsMonstars and
NeoPets Lost City Lanes once some additional button fixes are merged.

This isn't 100% correct (as shown by the disabled test), but it brings
us closer to what Flash Player does.
2023-09-23 14:11:24 +02:00
nosamu e8bbb21554 avm1: tellTarget on an undefined object targets the base clip in SWF6- 2023-09-23 13:42:03 +02:00
Tom Schuster dc53758488 avm2: Implement support for indexes in xml.child() 2023-09-22 21:28:20 +02:00
renovate[bot] 37e2c06034 fix(deps): update rust dependencies 2023-09-18 00:00:45 +02:00
Lord-McSweeney 6eddd3532e avm2: Support Error 1089 2023-09-17 22:03:05 +02:00
sleepycatcoding ecbf325d41
avm2: Improve XML set_property_local implementation (#13041)
* avm2: Add error 1087

* avm2: Add deep_copy method to XmlObject

Changes existing AS3 copy method to use this instead

* avm2: Add a few utility methods to E4XNode

* avm2: Change XML.replace impl to use new utility methods

* avm2: allow setting XML/XMLList as a element

* avm2: Fix `xml_namespaced_property` test failure

* chore: fmt

* chore: Appease clippy

* avm2: Add test for XML/XMLList as element
2023-09-14 21:33:32 +00:00
sleepycatcoding b5fdd9142f avm2: Coerce value in set slot opcode
This was causing a bunch of implicit conversion test failures.
2023-09-13 23:02:44 +02:00
Aaron Hill 981dedafd2 avm2: Fix avmplus.describeTypeJSON bugs and add test 2023-09-08 17:52:12 -04:00
Lord-McSweeney 20db9f8326
avm2: Implement XML.setName (#12979)
* avm2/tests: Implement XML.setName; add a test

* avm2: Basic support for QNames in XML.setName (no namespace support yet)

* avm2: Reorder order of Attribute/Element/PI checks in XML.setName

* avm2: Throw error #1117 when the name passed to XML.setName is not a valid XML name
2023-09-07 21:47:02 +02:00
sleepycatcoding 9c7eb90d69 avm2: Implement XML.prependChild 2023-09-07 01:13:16 +02:00
sleepycatcoding 936eb777e8 avm2: Implement isXMLName 2023-09-06 23:01:34 +02:00
renovate[bot] dabc2d56b9 fix(deps): update rust dependencies 2023-09-04 10:25:24 +02:00
Lord-McSweeney 5edba670de tests: Add a test for using Shared Objects without a root movie 2023-08-31 19:58:53 -04:00
Daniel Jacobs 7bef26d993 tests: Add test for avm2 Sound constructor with URLRequest parameter 2023-08-30 22:41:49 +02:00
Abiel Deneke 0ed447b428 avm1: Set target clip to None if target is an undefined object
SetTarget currently sets the target clip to the base clip if the
target passed to tellTarget() is an undefined object. This causes
goto's to run on the base clip in Ruffle, when Adobe Flash Player
does not run the goto's at all.

Fixes #12389 and #12390
2023-08-29 01:23:52 +02:00
sleepycatcoding 80db9caf74 avm2: Implement XML.replace 2023-08-29 00:48:48 +02:00
sleepycatcoding fbaa02e295 avm2: Implement XML.insertChildAfter and XML.insertChildBefore 2023-08-29 00:48:48 +02:00
TÖRÖK Attila 7dc70354bf tests: Exclude WARP from running acid_large, and allow acid_image and acid_gradient_* again 2023-08-28 21:24:01 +02:00
renovate[bot] 4e75c3890a fix(deps): update rust dependencies 2023-08-28 07:39:35 +02:00
Aaron Hill 88acc96467 avm2: Fix XML/XMLDocument ignoreWhite handling for cdata
The ignoreWhite settings only affect text nodes, not cdata nodes.
Additionally, there should be no special case for empty text.
2023-08-27 20:28:20 -04:00
sleepycatcoding 33164d3f56 avm2: Preserve attribute flag when filling lazy multiname with QName
Fixes #12570
2023-08-27 19:40:00 -04:00
Aaron Hill 879dac347c avm2: Handle child being removing from `Loader`
`Loader` override `removeChild` and `removeChildAt` to try to prevent
user code from removing the loaded content child. However, this can be
bypassed by calling `otherContainer.addChild(loader.content)`, which
actually removes the child from the loader. Stealth Hunter 2 relies
on this behavior.

To make this work, `Loader.content` needs to go through
`contentLoaderInfo`, instead of relying on a child being present.
2023-08-27 19:13:45 -04:00
Nathan Adams 19ad492eaa avm2: Implement Graphics.cubicCurveTo and CUBIC_CURVE_TO 2023-08-27 20:17:43 +02:00
TÖRÖK Attila d523be02e4 tests: Exclude WARP from running the acid_gradient_1 visual test ported from Shumway 2023-08-27 12:25:41 +02:00
Lord-McSweeney 72c659fd0e avm2: Add some static properties to Number 2023-08-26 13:38:33 +02:00
Lord-McSweeney d366d19de6 avm2: Various (u)int/Number correctness fixes 2023-08-26 13:38:33 +02:00
sleepycatcoding 75566b92e0 avm2: XML/XMLList is converted to a string when set as attribute value 2023-08-25 11:20:51 +02:00
David Wendt 7158039135 audio: Audio streamed from FLVs do not have the SWF MP3 header 2023-08-23 15:36:20 -06:00
nosamu 20b07ff147 avm1: Fix XML=>String coercion mangling non-ascii chars
Fixes #12859
2023-08-22 17:23:56 +02:00
nosamu 2f40f0093a avm1: Unescape + to space 2023-08-22 16:38:24 +02:00
sleepycatcoding 991976e437 avm2: Implement XML pretty printing 2023-08-22 09:57:59 -04:00
renovate[bot] 2f4c7d2fe3 fix(deps): update rust dependencies 2023-08-21 08:59:07 +02:00
Nathan Adams 385c2d7cb0 core: Fix links in TextEdits when scrolled down 2023-08-20 22:31:27 +02:00
Nathan Adams f0d356589a core: Implement avm2 event: links in texts 2023-08-20 22:31:27 +02:00
Nathan Adams 814a900b03 avm1: asfunction goes by the parent, not root 2023-08-20 22:31:27 +02:00
Nathan Adams b8cda975f3 core: Allow clicking EditTexts if we're clicking links 2023-08-20 22:31:27 +02:00
Nathan Adams 658ac2dd9f core: Implement url handling (+asfunction) in textedits 2023-08-20 22:31:27 +02:00
TÖRÖK Attila a11725c27c tests: Exclude WARP from running the acid_gradient_2 visual test (ported from Shumway)
This was the culprit for most of our recent Windows CI failures.
2023-08-20 12:49:37 +02:00
Kornelius Rohrschneider a50f5cd072 avm1: Remove delay to enter the unloaded state for non-root MovieClips
avm1_unload_movie has been adapted to only enter the unloaded state with
one frame delay if the MovieClip is a root MovieClip. The unloaded state
is now immediately entered for non-root MovieClips.
This fixes the regressions #12254 and #12265 which got introduced
because of this delay.

However, in Flash Player, even non-root MovieClips enter the unloaded
state one frame after the unloadMovie command has been read. Ruffle is
probably replacing a MovieClip differently to Flash, therefore
introducing these regressions when trying to emulate that delay.
Documentation explaining this all has been added to avm1_unload_movie.

Therefore, the test movieclip_library_state_values has been added. It
tests the default state and the unloaded state of a (non-root) child
MovieClip that's loaded from the library. It is marked as known_failure
because Ruffle currently doesn't implement the delay before entering the
unloaded state for non-root MovieClips.
2023-08-19 17:29:00 +02:00
nosamu 050da0740a avm1: Pass flashvars in loadMovie and MovieClipLoader
Fixes #11497
2023-08-19 16:45:01 +02:00
Lord-McSweeney 89b9bc3827 core/avm2: Support accessing applicationDomain on a LoaderInfo before load starts/finishes; also improve Loader.unload stub. 2023-08-19 00:24:03 +02:00
Nathan Adams a6aa72351f avm2: Add a Function() call handler 2023-08-18 22:13:46 +02:00
Nathan Adams 7df861f212 avm2: Disallow 'new Function(args)' 2023-08-18 22:13:46 +02:00
Nathan Adams f2233855c7 avm2: Throw proper error on 'x is SomethingThatIsntAClass' 2023-08-18 22:13:46 +02:00
Nathan Adams 46381d181a avm2: Use correct error when trying to construct something invalid 2023-08-18 22:13:46 +02:00
Nathan Adams 8bbf8f4ea1 avm2: Use correct error in toString with invalid radix 2023-08-18 22:13:46 +02:00
Nathan Adams c9c2e213bb avm2: Use correct error in toPrecision 2023-08-18 22:13:46 +02:00
sleepycatcoding 2f98da44fb avm2: String.indexOf returns -1 when passed in undefined 2023-08-18 20:41:41 +02:00
sleepycatcoding cde49de1fb avm2: Remove undefined specific behavior in String.split 2023-08-18 20:41:41 +02:00
sleepycatcoding a44546ab1c avm2: Do not ignore nulls in String.fromCharCode 2023-08-18 20:41:41 +02:00
sleepycatcoding 7316f51cb1 avm2: String.toString defaults to "" 2023-08-18 20:41:41 +02:00
sleepycatcoding b835cc8091 avm2: Boolean.valueOf and Boolean.toString default to false
Makes tests `e15_6_3_1`, `e15_6_3_1_3`, `e15_6_4`, `e15_6_4__1` and `ecall_1` pass.
2023-08-18 16:07:15 +02:00
nosamu f3feabb59a avm2: nextScene() and prevScene() should fall back to current scene
Fixes #12797
2023-08-18 00:33:32 +02:00
nosamu 5618ebe6eb tests: Add failing test for queued gotos in AVM2 framescripts
This minimally reproduces #12069 and #10113
2023-08-17 22:46:38 +02:00
Nathan Adams f00671e9cc core: Fix rendering masks + scrollRects when cacheAsBitmap 2023-08-16 16:34:24 +02:00
Aaron Hill b1981debc9 tests: Include test name in error context 2023-08-15 17:04:28 +02:00
Tom Schuster d93c449199 avm2: Throw TypeError on unbound namespace prefix 2023-08-14 19:58:21 +02:00
Tom Schuster 7639d045ad avm2: Limited XML namespace support 2023-08-14 19:58:21 +02:00
Nathan Adams 5e1a30cf4a core: Fix avm2 button bounding box when using scroll rects 2023-08-13 14:14:34 +02:00
Nathan Adams db7c6dec00 core: Implement XML.toString for comments and processing instructions 2023-08-12 20:15:21 +02:00
Nathan Adams bf7c17737b avm2: Trim the start of processing instruction values 2023-08-12 20:15:21 +02:00
Nathan Adams 90b3fa4c63 avm2: Implement to_xml_string_inner for procesing instructions 2023-08-12 20:15:21 +02:00
Nathan Adams f4216aefc1 avm2: Implement XMLList.comments() 2023-08-12 20:15:21 +02:00
Nathan Adams d9847d0167 tests: Rename some files because windows is dumb and they're too long I guess 2023-08-12 17:37:17 +02:00
TÖRÖK Attila 0591fd882a tests: Update displacement_map expected output. 2023-08-12 14:15:40 +02:00
Nathan Adams adda66723e core: Use filters to calculate render sizes of objects 2023-08-12 13:00:27 +02:00
Nathan Adams d35b2b8b84 core: Inform Bitmaps to invalidate, if their backing BitmapDatas change 2023-08-12 11:56:18 +02:00
Nathan Adams e73cd91283 tests: Fix running tests without img_tests feature 2023-08-11 20:15:24 +02:00
Nathan Adams 1858db65c4 tests: Add known_failure test for CABs containing grown filters 2023-08-11 11:23:03 +02:00
Nathan Adams f55147d7c3 core: Override render_bounds_with_transform in Avm2Button 2023-08-11 11:23:03 +02:00
Nathan Adams a9c5bdfbab core: Better handle scroll_rect and/or masks with cacheAsBitmap 2023-08-11 11:23:03 +02:00
Nathan Adams b1aeb010a4 tests: Add CAB + Masks test 2023-08-11 11:23:03 +02:00
TÖRÖK Attila fb01473bb3 tests: Exclude WARP from shumway_acid_tests/acid_image, it was flaky 2023-08-09 21:04:59 +02:00
TÖRÖK Attila 0c4bb22491 chore: Update dependencies of the crates within tests. 2023-08-08 23:19:16 +02:00
MrCheeze 68f8cd6149 avm2: Remove focus from an EditText when it unloads (close #12092) 2023-08-07 23:16:06 +02:00
Nathan Adams bdd2a7ea9e tests: Allow capturing images on specific frames/ticks 2023-08-07 22:52:10 +02:00
Nathan Adams ca8fc23a6c tests: Allow fscommand("captureImage", "IMAGE_NAME") 2023-08-07 22:52:10 +02:00
Nathan Adams 1c8724a458 tests: Turn image_comparison into image_comparisons.NAME, allowing multiple comparisons per test 2023-08-07 22:52:10 +02:00
Nathan Adams 42b4812601 avm2: Throw error when using descendants op (..) on anything that isn't XML, even if it has descendants property 2023-08-06 10:51:25 +02:00
michiel2005 690ce110d8
avm1: reference displayObjects parents if parent is a button (#12541) 2023-08-05 20:32:03 +00:00
sleepycatcoding aac1931569 avm1: Prevent panic when close is called in event handler
Also adds a test case for this.
2023-08-05 14:42:09 +02:00
sleepycatcoding d8ae2ce6b9 avm1: Fix only one message arriving when multiple are sent in the same packet
Test case has been improved to cover this.
2023-08-05 14:42:09 +02:00
sleepycatcoding cec74242cf core: Socket subsystem fixes
Clears the read and write buffer of Socket before returning to ActionScript, this could potentially be problematic
when a SWF reuses the same Socket to connect.

Also remove the handle from Arena when server closes the connection, this fixes
connected still returning true after server disconnection.
2023-08-05 14:42:09 +02:00
sleepycatcoding 0a1f645177 tests: Add onData test for XMLSocket 2023-08-05 14:42:09 +02:00
sleepycatcoding 43e1e72258 tests: Add AVM1 XMLSocket test 2023-08-05 14:42:09 +02:00
sleepycatcoding 1c0426a747 tests: Expand test case as per review 2023-08-05 14:17:02 +02:00
sleepycatcoding e8bc47a569 avm2: Return correct error if Event.clone() returns null 2023-08-05 14:17:02 +02:00
sleepycatcoding 925ed2e82b avm2: Clone event if it has been dispatched before 2023-08-05 14:17:02 +02:00
Nathan Adams fc54c111c3 tests: Port avmplus as3 AMF test 2023-08-04 16:29:27 +02:00
Nathan Adams 5f200dc2a9 avm2: Use correct error in write ops when reading past bounds 2023-08-03 16:28:25 +02:00
Nathan Adams af46301020 avm2: Use correct error in Li ops when reading past bounds 2023-08-03 16:28:25 +02:00
Nathan Adams 3d76953574 avm2: Use correct error when accessing domain memory out of bounds 2023-08-03 16:28:25 +02:00
Nathan Adams c3a283e23d tests: Port avmplus MOPS tests 2023-08-03 16:28:25 +02:00
sleepycatcoding 85db727f17 avm2: Implement XMLSocket 2023-08-02 22:16:16 +02:00
Nathan Adams 3834462abf avm2: Hook up XMLDocument.ignoreWhite 2023-08-02 15:55:08 +02:00
Nathan Adams 6f2420d983 avm2: Implement ignoreComments/ignoreProcessingInstructions/ignoreWhitespace 2023-08-02 15:55:08 +02:00
Nathan Adams da7ee01730 avm2: Implement XML.settings/XML.setSettings/XML.defaultSettings, and add appropriate properties to XML class 2023-08-02 15:55:08 +02:00
Nathan Adams 10e59067d0 avm2: Rewrote XMLDocument/XMLNode to be more correct 2023-08-02 15:55:08 +02:00
Lord-McSweeney 84e4215ece avm2+tests: Various Vector-related fixes; activate now-passing Vector tests 2023-08-02 15:26:53 +02:00
relrelb 006393c581 chore: Appease nightly clippy 2023-08-01 22:44:00 +03:00
TÖRÖK Attila f036fd7aff tests/visual: Also test DisplacementMapFilter with componentX or componentY of 0 2023-08-01 12:54:56 +02:00
Adrian Wielgosik 2621dd78ee avm2: Vector doesn't support propertyIsEnumerable 2023-08-01 00:13:46 +02:00
Adrian Wielgosik b61e92ee12 avm2: Fix property_is_enumerable on arrays 2023-08-01 00:13:46 +02:00
sleepycatcoding a40e8d8ac4 tests: Split read/writeObject off into a separate test 2023-07-31 22:32:03 +02:00