Commit Graph

1653 Commits

Author SHA1 Message Date
Adrian Wielgosik 48db0e23c4 core: Fix panic on unsetting self-referential masker 2024-07-12 22:35:07 +02:00
Kamil Jarosz 92a16b5095 tests: Remove an obsolete comment from edittext_html_swf8 2024-07-12 16:30:21 +02:00
Kamil Jarosz 77d89bbf42 tests: Add avm2/mouse_click_events test 2024-07-12 15:41:08 +02:00
Kamil Jarosz cb958fd2c3 tests: Add possibility to assert on whether the event has been handled 2024-07-12 15:41:08 +02:00
Kamil Jarosz 4e3b59b360 tests: Add focus_highlight_empty_clip test 2024-07-12 14:44:49 +02:00
Kamil Jarosz 5d30c9368e tests: Add focusrect_focuslost test
This test verifies the behavior of the current focus and focusrect
when the player loses focus.
2024-07-12 14:20:35 +02:00
Kamil Jarosz 6a9f88d060 tests: Add FocusLost, FocusGained automated events 2024-07-12 14:20:35 +02:00
Kamil Jarosz f71e63379d tests: Add avm2/edittext_html_condensewhite test 2024-07-12 14:01:24 +02:00
Kamil Jarosz 2a667d713d tests: Add avm1/edittext_html_condensewhite_swf7 test 2024-07-12 14:01:24 +02:00
Kamil Jarosz 25caca16f1 tests: Add avm1/edittext_html_condensewhite_swf8 test 2024-07-12 14:01:24 +02:00
Kamil Jarosz f54087143f tests: Assert on newlines in HTML tests 2024-07-12 14:01:24 +02:00
Tom Schuster 393ffe05ef tests: Test for flash.events.NetFilterEvent 2024-07-12 00:20:16 +02:00
Tom Schuster eec5e908ad tests: Test mismatched E4X tags 2024-07-09 01:01:15 +02:00
Lord-McSweeney 953a02533f avm2: Fix created receiver value when constructing function 2024-07-08 12:59:15 +03:00
Lord-McSweeney 13ee356b8c avm2: Fix function prototype 2024-07-08 12:59:15 +03:00
Kamil Jarosz 9d7629e486 tests: Add avm2/edittext_mouse_selection test
This test verifies the behavior of selecting text using mouse.
It takes into account normal, word, and line selection.
Example use cases covered by this test:
1. selecting characters,
2. selecting words by double-clicking,
3. selecting multiple words by double-clicking and dragging,
4. selecting lines by triple-clicking,
5. selecting multiple lines by triple-clicking and dragging,
6. double-clicking at word boundaries,
7. double-clicking between spaces,
8. changing the underlying text while clicking and dragging,
9. trying to select while the text field is not selectable.
2024-07-06 18:32:10 +02:00
Kamil Jarosz 44f222a611 tests: Add click index to AutomatedEvent::MouseDown 2024-07-06 18:32:10 +02:00
Kamil Jarosz 9f9d462381 core: Add click index to PlayerEvent::MouseDown 2024-07-06 18:32:10 +02:00
Tom Schuster 2dda941ecf tests: Test AMF serialization of dynamic Proxy 2024-07-04 18:43:01 +02:00
Aaron Hill c65033aa37 avm2: Ignore errors when setting properties in amf deserializer
Flash Player *traces* any errors that occur during setting properties
on the newly-constructed object durting AMf deserialization, and
continues deserializing.
2024-07-03 17:42:02 -04:00
Kamil Jarosz 5aaff966aa text: Render caret using lines
This patch makes the caret be drawn using lines.
This ensures that the width of the caret is always 1px.

Additionally, it improves caret positioning, so that it's closer to FP.
2024-07-03 15:09:31 +02:00
Kamil Jarosz 03518e5d9b tests: Add FIXME to text/auto_size/return
This test produces vastly different results compared to FP.
2024-07-02 23:40:50 +02:00
Kamil Jarosz bfbb6c6f83 tests: Add visual/edittext/edittext_border_transform test 2024-07-02 23:40:50 +02:00
Kamil Jarosz 5ed2dc1880 tests: Add visual/edittext/edittext_background_basic_scale2 test
This test verifies the basic rendering of text field's backgrounds
at zoom 200%.
2024-07-02 23:40:50 +02:00
Kamil Jarosz 289b5a72e6 tests: Add visual/edittext/edittext_background_basic test
This test verifies the basic rendering of text field's backgrounds.
2024-07-02 23:40:50 +02:00
Kamil Jarosz 111e081906 tests: Add visual/edittext/edittext_border_filters test
This test checks whether text fields with filters are rendered correctly.
2024-07-02 23:40:50 +02:00
Kamil Jarosz 465e7b4f42 tests: Add visual/edittext/edittext_border_basic_scale2 test
This test checks whether text field borders are rendered properly
at zoom 200%.
2024-07-02 23:40:50 +02:00
Kamil Jarosz ec22df0407 tests: Add visual/edittext/edittext_border_basic test
This test checks whether text field borders are rendered properly.
2024-07-02 23:40:50 +02:00
Kamil Jarosz 59c0bcf073 core: Improve EditText's border and background rendering
This patch removes the drawing used for rendering the border and
the background and renders them using primitives instead.

It provides two methods for drawing the border and the background:
* draw_device_text_box -- when device fonts are used,
* draw_text_box -- when fonts are embedded.

Updated expected images in tests as they are closer to FP now:
* text/auto_size/height,
* text/auto_size/return,
* text/auto_size/width,
* visual/shumway_acid_tests/acid_color_0.

For the test avm2/stage3d_texture it's hard to say whether the current
output is closer to FP or not, as FP renders it with a different scale.
However, I have confirmed that there exists a scale at which FP renders
the text fields exactly as Ruffle after this patch.
2024-07-02 23:40:50 +02:00
Aaron Hill 617cb3330d avm2: Ignore ClassObject call receiver
This allows a class to be used with `callproplex`
2024-07-02 07:18:22 -04:00
Lord-McSweeney 0c4080386d tests: Add test for reusing Loader 2024-07-02 06:58:37 +03:00
dependabot[bot] 28aa2e65a9 build(deps): bump the cargo-minor group across 1 directory with 7 updates
Bumps the cargo-minor group with 7 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [clap](https://github.com/clap-rs/clap) | `4.5.7` | `4.5.8` |
| [bitflags](https://github.com/bitflags/bitflags) | `2.5.0` | `2.6.0` |
| [log](https://github.com/rust-lang/log) | `0.4.21` | `0.4.22` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.117` | `1.0.120` |
| [num-bigint](https://github.com/rust-num/num-bigint) | `0.4.5` | `0.4.6` |
| [id3](https://github.com/polyfloyd/rust-id3) | `1.13.1` | `1.14.0` |
| [either](https://github.com/rayon-rs/either) | `1.12.0` | `1.13.0` |



Updates `clap` from 4.5.7 to 4.5.8
- [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.7...v4.5.8)

Updates `bitflags` from 2.5.0 to 2.6.0
- [Release notes](https://github.com/bitflags/bitflags/releases)
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bitflags/bitflags/compare/2.5.0...2.6.0)

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

Updates `serde_json` from 1.0.117 to 1.0.120
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.117...v1.0.120)

Updates `num-bigint` from 0.4.5 to 0.4.6
- [Changelog](https://github.com/rust-num/num-bigint/blob/master/RELEASES.md)
- [Commits](https://github.com/rust-num/num-bigint/compare/num-bigint-0.4.5...num-bigint-0.4.6)

Updates `id3` from 1.13.1 to 1.14.0
- [Changelog](https://github.com/polyfloyd/rust-id3/blob/main/CHANGELOG.md)
- [Commits](https://github.com/polyfloyd/rust-id3/compare/v1.13.1...v1.14.0)

Updates `either` from 1.12.0 to 1.13.0
- [Commits](https://github.com/rayon-rs/either/compare/1.12.0...1.13.0)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: bitflags
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: log
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: num-bigint
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: id3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: either
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-02 01:04:52 +02:00
TÖRÖK Attila be65fbaef6 tests: No longer mark the Error1090XmlElementMalformed AVMPlus test as a known failure 2024-06-30 11:17:38 +02:00
Kamil Jarosz 3ff48e9e92 tests: Add avm2/edittext_html_font_size_swf13 test 2024-06-29 22:57:55 +02:00
Kamil Jarosz 156fda9a40 tests: Add avm2/edittext_html_font_size_swf12 test 2024-06-29 22:57:55 +02:00
Kamil Jarosz fd051c1b34 tests: Add avm2/edittext_html test 2024-06-29 22:57:55 +02:00
Kamil Jarosz 5c41e80d0c tests: Add avm2/text_run test 2024-06-29 22:57:55 +02:00
Kamil Jarosz b10e9fbe59 tests: Add focus_highlight_avm2_button_bounds test 2024-06-29 22:42:25 +02:00
Kamil Jarosz dd9698e8cc tests: Add edittext_at_point_methods_basic test
This test verifies the basic behavior of getCharIndexAtPoint
and getLineIndexAtPoint methods of TextField.
2024-06-29 22:28:16 +02:00
Kamil Jarosz 13c23664cc tests: Add avm2/edittext_get_line_index_of_char test
Verifies the behavior of TextField.getLineIndexOfChar().
2024-06-29 11:29:02 +02:00
Kamil Jarosz 1d41d23332 tests: Add avm2/edittext_line_methods test
This test verifies the behavior of line-related methods of TextField:
* getLineLength(),
* getLineOffset(), and
* getLineText().
2024-06-27 22:02:41 +02:00
Kamil Jarosz 4f457da07b tests: Remove avm2/textfield_getlinetext test
The output.txt of this test was invalid,
because it skipped a carriage return after one of the lines.
This has of course something to do with the whole CR/LF/CRLF newline
madness, as the trailing CR formed a CRLF with the "real" newline
character LF, and (I suspect) git replaced it with LF ignoring
CR completely, which badly influenced the current implementation.

This test will be replaced with a proper test when
the implementation is fixed.
2024-06-27 22:02:41 +02:00
Aaron Hill 8bea6d4ef9 avm2: Parse and load DoAbc/DoAbc2 tags during frame execution
Parsing and loading the definitions from an DoAbc/DoAbc2 tag
is visible to ActionScript - any definitions will become accessible,
and the script initializer will be run when accessing any of those
definitions.

We now delay the actual parsing/loading traits from DoAbc2 tags.
This is run before we process any SymbolClass tags, and only runs
the first time that we execute a frame.

This also fixes an issue where we would incorrectly produce a
`VerifyError` during preloading when trying to load a superclass
for a `Class` for a tag in a future frame. That frame might require
other class definitions to be populated first (e.g. by a `Loader`
in the first frame).
2024-06-27 21:44:40 +02:00
Kornelius Rohrschneider 76d3cd95a4 tests: Add form loader encoding tests
Several form loader encoding tests have been added. They test whether
the form loader uses the correct encoding to decode text files with
different SWF versions and settings.
One test has been marked as known failure as it tests how Flash decodes
invalid UTF-8 characters (when decoding as UTF-8), which is not yet
implemented in Ruffle.
2024-06-26 02:37:44 +02:00
Kornelius Rohrschneider 0b30b7fdda core: Use HTTP response encoding if existing
If System#useCodepage has been set to true, the form loader now uses the
encoding specified in the HTTP response content type field, if existing,
to decode remote text files. chardetng is now (only) used if the HTTP
response doesn't specify any encoding or if the file is local.
2024-06-26 02:37:44 +02:00
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