Commit Graph

1608 Commits

Author SHA1 Message Date
Aaron Hill dc03f541db avm2: Match Flash behavior for DoAbc/SymbolClass script initializers
Flash Player handles SymbolClass tags and eager (non-lazy) DoAbc2 tags in an unusual way:
During the first time that a given frame is executed:
1. All SymbolClass tags are processed in order, triggering ClassObject loading (and the associated
   script initializer execution, if it hasn't already been run)
2. All eager (non-lazy) DoAbc/DoAbc2 tags have their *final* script initializer executed.

To implement this, we now cache the needed `Script` and symbol class
data during preloading. The first time we execute a frame, we run
the symbolclass class lookup and assignment, followed by the final
script initializer for each DoAbc2 tag in the frame.

This fixes 'minidash' (and probably other crossbridge games as well).
2024-06-21 16:57:06 +02:00
Kamil Jarosz f046263002 tests: Add avm2/graphics_draw_triangles test
This test verifies the behavior of drawing triangles using Graphics.
However, it will have to be updated when support for winding behavior
gets added.
2024-06-19 23:24:55 +02:00
Nathan Adams 4d12e0e5b4 core: Implement LocalConnection 2024-06-19 21:54:25 +02:00
Kamil Jarosz 0a2528b4f9 tests: Add avm2/graphics_draw_path test
This test verifies the behavior of drawing paths using Graphics.
2024-06-19 20:58:33 +02:00
Lord-McSweeney e8339088a7 tests: Add a test case for setting `dataFormat` after calling `load` 2024-06-18 20:56:50 +02:00
Adrian Wielgosik cacfb5a6a4 avm2: Fix and unify converting SWF's 1-based to 0-based slot indexing 2024-06-16 16:11:17 -07:00
Tom Schuster ff322eb19a avm2: Test more namespace related properties/methods in XMLNode
We skip the weird xml: namespace special case for now.
2024-06-15 22:26:57 +02:00
Tom Schuster 4463a69c87 avm2: Implement namespace support for flash.xml 2024-06-15 22:26:57 +02:00
Lord-McSweeney 5ce882da9c tests: Add a test for calling `newclass` twice on the same `Class` 2024-06-13 23:49:52 +02:00
dependabot[bot] 52404bc3aa build(deps): bump the cargo-minor group with 6 updates
Bumps the cargo-minor group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [clap](https://github.com/clap-rs/clap) | `4.5.4` | `4.5.7` |
| [url](https://github.com/servo/rust-url) | `2.5.0` | `2.5.1` |
| [linkme](https://github.com/dtolnay/linkme) | `0.3.26` | `0.3.27` |
| [regex](https://github.com/rust-lang/regex) | `1.10.4` | `1.10.5` |
| [zip](https://github.com/zip-rs/zip2) | `2.1.2` | `2.1.3` |


Updates `clap` from 4.5.4 to 4.5.7
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.4...v4.5.7)

Updates `url` from 2.5.0 to 2.5.1
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/v2.5.0...v2.5.1)

Updates `linkme` from 0.3.26 to 0.3.27
- [Release notes](https://github.com/dtolnay/linkme/releases)
- [Commits](https://github.com/dtolnay/linkme/compare/0.3.26...0.3.27)

Updates `regex` from 1.10.4 to 1.10.5
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.10.4...1.10.5)

Updates `zip` from 2.1.2 to 2.1.3
- [Release notes](https://github.com/zip-rs/zip2/releases)
- [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zip-rs/zip2/compare/v2.1.2...v2.1.3)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: url
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: linkme
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: quick-xml
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: zip
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-13 01:05:26 +02:00
Nathan Adams c9b111996f web: Make serde (more-)optional in core 2024-06-13 00:22:33 +02:00
Nathan Adams 7eef31046b render: Make serde optional 2024-06-13 00:22:33 +02:00
Kamil Jarosz b7ca9178fd tests: Add avm1/focus_mouse_rollout test 2024-06-12 23:49:06 +02:00
Kamil Jarosz 439f3f6d62 tests: Add filters/any_blur_scales_with_screen test
This test verifies how the blur scales when the screen is scaled.
The test includes all known filters which have a blur,
but some of them (gradient filters) are disabled (made invisible)
because they are not yet fully implemented in Ruffle.
They can be made visible when they are functional
so that this test also covers them.
2024-06-10 18:50:43 +02:00
Kamil Jarosz 88a9c74ee0 swf: Fix blur scaling in filters
The blur of 1.0 is invariant, so that it should be preserved when scaling.
Using `blur * scale` also scales the invariant, which is wrong.
Tests show that `(blur - 1) * scale + 1` matches FP's behavior.
2024-06-10 18:50:43 +02:00
Kamil Jarosz f994c69805 tests: Add edittext_password_copy test
This test verifies how FP behaves with regard to
copying or cutting text from a password text field.
2024-06-09 15:38:35 +02:00
Kamil Jarosz b50db4255c tests: Add edittext_paste_empty test
This test verifies how FP behaves when pasting with an empty clipboard.
2024-06-09 15:38:35 +02:00
Adrian Wielgosik 2955add845 avm2: In Array.sortOn, behave better in presence of nonsense args 2024-06-09 11:11:57 +02:00
Kamil Jarosz 7e0f2ded9d tests: Add tab_ordering_stage_tab_children_remove_root
This test verifies how Stage.tabChildren behaves
when the root movie is removed.
2024-06-08 00:12:53 +02:00
Kamil Jarosz 0e3a8c33e6 tests: Add avm2/tab_ordering_stage_tab_children test
This test verifies the behavior of Stage.tabChildren.
2024-06-08 00:12:53 +02:00
Tom Schuster 26f4126840 tests: Improve the test for XML.namespace() 2024-06-06 20:14:40 +02:00
Kamil Jarosz 0c50083c8e tests: Add avm1/movieclip_create_text_field test
This test verifies the behavior of MovieClip.createTextField's params.
2024-06-06 17:08:52 +02:00
Kamil Jarosz 091aa2361f tests: Add avm2/focus_root_movie test
This test verifies the behavior of focus and focusrect
on the root movie clip.
2024-06-05 02:08:13 +02:00
Kamil Jarosz b0eb0ef1d9 tests: Add avm1/focus_root_movie test
This test verifies the behavior of focusing
and tabbing into the root movie.
2024-06-05 02:08:13 +02:00
Kamil Jarosz cc70686592 tests: Add avm1/focus_mouse test
This test verifies how FP handles focus changes on mouse clicks.
2024-06-04 19:39:20 +02:00
Tom Schuster 432dd0a37c tests: Update XML.setName tests 2024-06-04 18:50:49 +02:00
Tom Schuster 35ec0b9e92 tests: Add tests from Dinnerbone 2024-06-04 00:22:42 +02:00
Tom Schuster 0b446d7cc6 avm2: Implement XML.setNamespace 2024-06-04 00:22:42 +02:00
Tom Schuster 2f7dfd8051 avm2: Implement XML.namespaceDeclarations 2024-06-04 00:22:42 +02:00
Tom Schuster f20f57c6f1 avm2: Implement XML.namespace 2024-06-04 00:22:42 +02:00
dependabot[bot] b9d246b2a5 build(deps): bump the cargo-minor group with 4 updates
Bumps the cargo-minor group with 4 updates: [proc-macro2](https://github.com/dtolnay/proc-macro2), [toml_edit](https://github.com/toml-rs/toml), [zip](https://github.com/zip-rs/zip2) and [toml](https://github.com/toml-rs/toml).


Updates `proc-macro2` from 1.0.84 to 1.0.85
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.84...1.0.85)

Updates `toml_edit` from 0.22.13 to 0.22.14
- [Commits](https://github.com/toml-rs/toml/compare/v0.22.13...v0.22.14)

Updates `zip` from 2.1.1 to 2.1.2
- [Release notes](https://github.com/zip-rs/zip2/releases)
- [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zip-rs/zip2/compare/v2.1.1...v2.1.2)

Updates `toml` from 0.8.13 to 0.8.14
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.13...toml-v0.8.14)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: toml_edit
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: zip
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-03 23:21:12 +02:00
Adrian Wielgosik 6a75def83a avm2: Fix panic on substr(i, len>usize::MAX) 2024-06-02 23:00:23 +02:00
TÖRÖK Attila 925e92c2be chore: Run `cargo update`, but carefully 2024-06-02 17:26:23 +02:00
sleepycatcoding 83cc8cf294 avm2: Implement a few avmplus XML edge cases 2024-06-02 01:52:52 +03:00
Tom Schuster cdbc6d289c avm2: Implement the abstract equality comparison for QName 2024-06-01 20:52:17 +02:00
Kamil Jarosz f0c41cdc4f tests: Rename cache_as_bitmap/edittext_selection_filters
The _filters prefix is superfluous, as we are already
in the cache_as_bitmap directory.
2024-05-31 22:24:34 +02:00
Kamil Jarosz a561945fae tests: Add cache_as_bitmap/edittext_scroll test
This test verifies that the edittext is scrollable when cached as bitmap.
2024-05-31 22:24:34 +02:00
Kamil Jarosz 4b8d6f5990 tests: Add AutomatedEvent::MouseWheel
This event allows testing mouse scrolling.
2024-05-31 22:24:34 +02:00
sleepycatcoding 2fd5dfde9c avm2: Implement XMLList.normalize 2024-05-31 22:09:17 +02:00
Tom Schuster 0b2881c8a6 tests: A simple test for ToXMLString with namespaces 2024-05-30 21:14:06 +02:00
TÖRÖK Attila 42ea1331c1 tests: Add a visual test for H.264 video decoding
Featuring the legendary Big Buck Bunny.
2024-05-30 20:22:33 +02:00
TÖRÖK Attila b7a100337e tests: Make H.264 videos work in visual tests 2024-05-30 20:22:33 +02:00
sleepycatcoding 007a532717 avm2: Implement XMLList.contains 2024-05-30 00:43:45 +03:00
Daniel Jacobs bb00d7a8ab chore: Remove inaccurate syntax comment from another AS file 2024-05-29 09:36:04 -04:00
Daniel Jacobs 7a36473f0f chore: Remove inaccurate syntax comment from AS file 2024-05-29 09:36:04 -04:00
Kamil Jarosz fe4e180adf tests: Add attach_movie_stop test
This test verifies that stop() works properly for a movie clip
attached with attachMovie in DoInitAction.
2024-05-28 23:57:13 +02:00
Kamil Jarosz 2ee5d522bf tests: Add focus_visibility_change test
This test verifies the behavior of focus when its visibility is changed.
2024-05-28 23:01:12 +02:00
Kamil Jarosz 133ea462ba tests: Update focus_remove test
Make sure that focus change is logged even if the focus is removed.
That additionally verifies that handlers are properly called.
2024-05-28 23:01:12 +02:00
sleepycatcoding cd24b91a82 avm2: Implement XMLList to XML proxy methods 2024-05-27 21:47:22 +02:00
sleepycatcoding ab0792904b avm2: Stub XML.add/set/removeNamespace 2024-05-27 21:47:22 +02:00