Commit Graph

569 Commits

Author SHA1 Message Date
Moulins e36b03bce9 core::html: correctly encode text in FormatSpans::to_html
Fixes issue #9327
2023-01-29 11:19:16 -06:00
CUB3D f829157deb avm1: Defining a local that already exists on the target of a with scope, defines it on the target not the parent 2023-01-29 18:05:25 +01:00
Nathan Adams 7b1c101c81 wgpu: Fix repeat & reflect gradients 2023-01-29 17:17:44 +01:00
Nathan Adams 85dc100ee9 avm2: Implement Sprite.dropTarget - though it's wrong right now 2023-01-29 00:52:52 +01:00
Nathan Adams d918d47f66 tests: Temporarily remove EditText from text_blocks_clicks as it's broken in ruffle atm 2023-01-29 00:39:06 +01:00
Nathan Adams 8108e64bfa tests: Add avm1 text_blocks_clicks test 2023-01-29 00:39:06 +01:00
Aaron Hill 184734267d tests: Deny unknown fields when deserializing test.toml files
This will catch typos and misplaced options when modifying tests.
2023-01-28 16:27:43 -06:00
Nathan Adams b14831417a tests: Added avm2 click_test test from #9287, ignored as it fails 2023-01-28 13:13:37 -07:00
Nathan Adams 666a55e503 tests: Added avm1 click_test test from #9287, ignored as it fails 2023-01-28 13:13:37 -07:00
Aaron Hill daeb132e53 tests: Handle trailing newlines more consistently
Previously, we would strip trailing newlines from the contents
of 'output.txt' files, and skip adding a trailing newline after
the final recorded `trace` call.

To reduce the amount of processing we do of expected/ruffle output,
and to make fpcompare tests easier, I've removed the special handling
of newlines. When recording `trace` calls, we now build up a single
large `String`, with a newline after every `trace` message. When
reading in an 'output.txt' file, we do not strip any newlines.

This required adding trailings newlines to lots of 'output.txt' files,
to match the behavior of Ruffle and Flash (the last 'trace' message
ends with a newline, just like every other 'trace' message).
2023-01-28 13:59:00 -06:00
Nathan Adams 48c9cdd5ad tests: Ported visual tests from ruffle-rs/visual-tests repo 2023-01-28 12:15:59 -07:00
Nathan Adams a6c6ae13fe tests: Adjust tolerance of existing image tests 2023-01-28 12:15:59 -07:00
Nathan Adams 051927775c tests: Clippy lint 2023-01-28 12:15:59 -07:00
Nathan Adams 9c4190b20b tests: Readd suffix to actual/difference files 2023-01-28 12:15:59 -07:00
Nathan Adams 67ec70d960 tests: Set default log filter to warn for wgpu 2023-01-28 12:15:59 -07:00
Nathan Adams cdb2c5fe04 tests: Allow image tolerance & max_outliers on image comparison tests. Changed all existing image tests to use 1 sample count since this changes them all anyway 2023-01-28 12:15:59 -07:00
Nathan Adams d70d9067ec tests: Fix clippy lints 2023-01-28 12:15:59 -07:00
Nathan Adams 4ef88eaaa0 tests: Fix imgchecks feature compiling 2023-01-28 12:15:59 -07:00
Nathan Adams c73aa5b9d5 tests: Add sample_count to render options 2023-01-28 12:15:59 -07:00
Nathan Adams cbe17c4455 tests: Filter early to avoid creating test info (and thus wgpu) for tests that won't run 2023-01-28 12:15:59 -07:00
Nathan Adams 9b43836d1d tests: Allow executing of with_renderer tests always, but image comparison is still gated 2023-01-28 12:15:59 -07:00
Nathan Adams 836468b6dd tests: Add player_options.with_renderer option, automatically set when image = true 2023-01-28 12:15:59 -07:00
Nathan Adams 6acf6009ef tests: Made PlayerOptions non optional (just empty default), and it works with a PlayerBuilder instead of a Player 2023-01-28 12:15:59 -07:00
Nathan Adams e614f788af tests: Refactor code so all testing goes through Test::test(), allows for approximations with custom hooks 2023-01-28 12:15:59 -07:00
Nathan Adams 8b02045c6b tests: Readd custom assert_eq 2023-01-28 12:15:59 -07:00
Nathan Adams a340318486 tests: Refactor runner methods to take in &Test and not direct values 2023-01-28 12:15:59 -07:00
Nathan Adams 56bc2b5051 tests: Added Test::should_run() 2023-01-28 12:15:59 -07:00
Nathan Adams dda8debadc tests: Move shared object tests to their own file 2023-01-28 12:15:59 -07:00
Nathan Adams 792d68d370 tests: Move TestLogBackend to runner 2023-01-28 12:15:59 -07:00
Nathan Adams 99da686822 tests: Move external interface tests to their own file 2023-01-28 12:15:59 -07:00
Nathan Adams ccc7c0a424 tests: Move ExternalInterfaceTestProvider to its own mod 2023-01-28 12:15:59 -07:00
Nathan Adams c5ab440083 tests: Move run_test(test) to Test::run() 2023-01-28 12:15:59 -07:00
Nathan Adams 6384034e47 tests: Move test_swf_with_hooks to util/runner 2023-01-28 12:15:59 -07:00
Nathan Adams ce8cb9501b tests: Move test_swf_approx to util/runner 2023-01-28 12:15:59 -07:00
Nathan Adams 818897b74e tests: Move run_swf to util/runner 2023-01-28 12:15:59 -07:00
Nathan Adams 4418431bfe tests: Move assert_eq to utils 2023-01-28 12:15:59 -07:00
Nathan Adams a741f373b4 tests: Take in a &Path for various paths 2023-01-28 12:15:59 -07:00
Nathan Adams 83af3e6b4e tests: Extract Test struct that contains all the info for a test 2023-01-28 12:15:59 -07:00
Nathan Adams ff8506d351 tests: Extract TestOptions::read() for parsing a file 2023-01-28 12:15:59 -07:00
Nathan Adams 316df5b415 tests: Extract TestOptions into its own file 2023-01-28 12:15:59 -07:00
Nathan Adams 7d234956eb tests: Move tests away from giant macro to individual test.toml files that describe the test 2023-01-27 13:53:43 +01:00
Aaron Hill 6fe7af58d5 Move back to upstream wgpu repository
We're relying on unreleased changes, so we depend on the latest commit
from their repository.
2023-01-23 11:31:04 +01:00
EmperorBale 954a7513f8 tests: Update date tests 2023-01-16 21:48:00 +01:00
Nathan Adams 8db8e4669a wgpu: Implement Multiply blend mode as a trivial blend 2023-01-12 10:54:03 -05:00
Nathan Adams 09608c2abc wgpu: Implement Screen blend mode as a trivial blend 2023-01-12 10:54:03 -05:00
dependabot[bot] b7986406a8 build(deps): bump regex from 1.7.0 to 1.7.1
Bumps [regex](https://github.com/rust-lang/regex) from 1.7.0 to 1.7.1.
- [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.7.0...1.7.1)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-12 14:27:19 +02:00
MrCheeze d1b01c9db7 tests: Update AVM2 currentLabels test for case insensitivity 2023-01-10 11:28:56 -05:00
CUB3D ea6ea8074a tests: Add tests for BitmapData.threshold, fix issues found as a result 2023-01-10 13:59:06 +01:00
MrCheeze c2ad376e2c tests: Add test for AVM2 hitTestPoint (without shapeFlag) and hitTestObject.
This is a port of a similar regression test written for AVM1.
AVM1 also has a test for hitTestPoint with shapeFlag=true, but it can't
be ported for now, because the implementation of AVM2 hit testing is not
yet accurate enough for it.
2023-01-10 12:53:20 +01:00
Nathan Adams 7a9e8b4771 core: Made NullNavigatorBackend no longer use unwraps 2023-01-10 11:10:46 +01:00
CUB3D 84d0111a14 avm1: Add test for with scope nesting 2023-01-10 10:34:10 +01:00
CUB3D ca82ff65de avm1: Defining a local in a with scope should actually define it on the parent scope 2023-01-10 10:34:10 +01:00
Aaron Hill 40d8751d67 avm2: Implement clipRect parameter for BitmapData.draw 2023-01-08 16:11:55 -05:00
Aaron Hill 1b71e288fd Remove 'gc_context lifetime
The latest `gc-arena` makes this unnecessary - we can just
use our `'a` lifetime for `MutationContext`
2023-01-06 19:20:39 -05:00
MrCheeze 41df7fdc59 avm2: For old swf versions, invalid goto labels jump to frame 1 (fix #8954)
The regression test for this was edited directly in JPEXS, so there is
no corresponding fla to compile into the swf.
2023-01-03 17:10:06 -07:00
MrCheeze 77104ca473 avm2: Improve accuracy of gotoAndPlay / gotoAndStop (partially fix #8954)
Partially based on AVM1 implementation, partially based on the new
regression tests added in this commit.
2023-01-03 17:10:06 -07:00
nosamu 664a86161a avm2: Fix `for each..in` loops over Dictionary values 2023-01-03 16:52:15 -07:00
Nathan Adams c6045a4f24 wgpu: Multiply can't be trivial blend mode because of 0 alpha 2023-01-03 03:39:13 +01:00
Nathan Adams df8ead3f96 tests: New multiply blend mode image 2023-01-03 03:39:13 +01:00
Nathan Adams 81f4741300 wgpu: Default msaa on mobiles to 2x, same as webgl backend 2023-01-03 03:39:13 +01:00
Nathan Adams 864f404f2f tests: Add blendmode visual tests 2023-01-03 03:39:13 +01:00
Nathan Adams 45339e037e tests: Added new output of bitmapdata_draw tests for github agents. Seems visually identical. 2023-01-03 03:39:13 +01:00
EmperorBale 0e2fbe4cf7 tests: Update date tests 2023-01-02 11:43:03 -08:00
EmperorBale 8b9bae8ca6 tests: Add test for LoaderContext.applicationDomain 2022-12-28 17:25:11 -05:00
dependabot[bot] 6f430bb40d build(deps): bump serde from 1.0.151 to 1.0.152
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.151 to 1.0.152.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.151...v1.0.152)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-28 10:55:35 +02:00
David Wendt 54bae0265b tests: `instantiation_on_enterframe_gotoandstop` is missing a line of output 2022-12-27 20:15:49 -07:00
David Wendt 534f1cf06c tests: Adrian's tests look like they want 2 frames of execution 2022-12-27 20:15:49 -07:00
Adrian Wielgosik 825613ec8c tests: Add tests for various PlaceObject situations we didn't catch before.
There is no source as these SWFs were handmade in JPEXS.
2022-12-27 20:15:49 -07:00
dependabot[bot] c7ba2d4e87 build(deps): bump serde_json from 1.0.89 to 1.0.91
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.89 to 1.0.91.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.89...v1.0.91)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-20 08:35:32 +02:00
dependabot[bot] 9db6ace65f build(deps): bump serde from 1.0.150 to 1.0.151
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.150 to 1.0.151.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.150...v1.0.151)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-20 00:48:45 +01:00
CUB3D acfb149316 tests: Add tests for button hittests, update hitTestPoint with onStage tests 2022-12-18 13:32:24 -07:00
Mike Welsh 696c9062d3 chore: Inherit cargo metadata from workspace
Use workspace inheritance added in Rust 1.64 to de-duplicate
various settings across all packages.
2022-12-16 15:53:59 -08:00
Adrian Wielgosik 7df920b255 avm2: Support indexing with QNames 2022-12-16 14:40:22 -08:00
Adrian Wielgosik d2dfdb9a0b avm2: Collapse PackageNamespace to Namespace 2022-12-16 12:51:01 -08:00
relrelb bd9078addf chore: Fix `clippy::uninlined_format_args` lints 2022-12-15 08:59:38 +02:00
dependabot[bot] b1c4e6f143 build(deps): bump serde from 1.0.149 to 1.0.150
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.149 to 1.0.150.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.149...v1.0.150)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-12 21:21:45 +01:00
Adrian Wielgosik 7b64fcf5fa avm2: Fix indirect event dispatching 2022-12-06 00:44:17 +01:00
dependabot[bot] 3b285f8cf2 build(deps): bump serde from 1.0.148 to 1.0.149
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.148 to 1.0.149.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.148...v1.0.149)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 22:35:48 +01:00
kmeisthax f79208c75f
avm2: Fix no-op gotos (#8667)
* tests: Add a test for issue #8630

* core: No-op gotos in AS3 do not actually do anything, even though they emit events

Fixes issue #8630

* tests: Add more tests for various #8630-adjacent cases

* tests: Ignore the tests with script removal as they expect MovieClip children to be nulled upon removal

* chore: Case sensitive filesystem fix

Co-authored-by: Adrian Wielgosik <adrian.wielgosik@gmail.com>
2022-12-05 18:19:29 +01:00
wsxarcher c8e39da1e0 avm2: Implement filefilter filereference 2022-12-04 15:10:48 +01:00
Adrian Wielgosik 0861153626 swf: make Clippy happy 2022-12-03 22:18:22 +01:00
Marco Bartoli f2080e6d57
avm2: implement get and set of displayobject filters (#8623) 2022-12-01 02:31:35 +01:00
dependabot[bot] 83487ae5d1 build(deps): bump serde from 1.0.147 to 1.0.148
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.147 to 1.0.148.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.147...v1.0.148)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-30 10:04:26 +01:00
Marco Grassi ad81b3bf14 upgrade lock and toml dependencies 2022-11-26 14:04:59 -05:00
Aaron Hill b8745f0ff1 avm2: Partially implement Stage3D for wgpu backend
This PR implements core 'stage3D' APIs. We are now able
to render at least two demos from the Context3D docs - a simple
triangle render, and a rotating cube.

Implemented in this PR:
* Stage3D access and Context3D creation
* IndexBuffer3D and VertexBuffer3D creation, uploading, and usage
* Program3D uploading and usage (via `naga-agal`)
* Context3D: configureBackBuffer, clear, drawTriangles, and present

Not yet implemented:
* Any 'dispose()' methods
* Depth and stencil buffers
* Context3D texture apis
* Scissor rectangle

General implementation strategy:

A new `Object` variant is added for each of the Stage3D objects
(VertexBuffer3D, Program3D, etc). This stores a handle to the
parent `Context3D`, and (depending on the object) a handle
to the underlying native resource, via `Rc<dyn
SomeRenderBackendTrait>`).

Calling methods on Context3D does not usually result in an immediate
call to a `wgpu` method. Instead, we queue up commands in our
`Context3D` instance, and execute them all on a call to `present`.
This avoids some nasty wgpu lifetime issues, and is very similar
to the approah we use for normal rendering.

The actual rendering happens on a `Texture`, with dimensions
determined by `createBackBuffer`. During 'Stage' rendering,
we render all of these Stage3D textures *behind* the normal
stage (but in front of the overall stage background color).
2022-11-25 21:43:00 -07:00
Aaron Hill 4b8cd45f4b
avm2: Partially implement StaticText (#8343)
This is linked to the legacy DisplayObject::Text, which can
only be created by Flash CS6 (but is allowed in AVM2 swfs).

The 'StaticText' class cannot be constructed from ActionScript.
To support this, I've added support for native initializers to
playerglobal. This allows us to throw an exception in the
ActionScript constructor in Test.as, and do nothing in the native
intiializer (so that we can construct it from a DisplayObject).

I've left StaticText.text unimplemented for now, since it will require
dealing with Glyphs

Co-authored-by: kmeisthax <dcrkid@yahoo.com>
2022-11-23 18:30:47 -05:00
dependabot[bot] cf8217f2ff build(deps): bump serde_json from 1.0.87 to 1.0.88
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.87 to 1.0.88.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.87...v1.0.88)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-21 16:31:02 -07:00
David Wendt 4c0099c39c tests: Reduce the epsilons on `as3_edittext_getlinemetrics` and `gettextextent` to more reasonable values 2022-11-20 17:13:48 -07:00
David Wendt 728b198c9d tests: Re-run the `gettextextent` in an environment that actually sees Noto Sans as a system font. 2022-11-20 17:13:48 -07:00
David Wendt 51d8a196a4 tests: `gettextextent` should be an approx test.
Also, yes, `TextFormat.getTextExtent` returns a bare object.
2022-11-20 17:13:48 -07:00
David Wendt 6590f58efe tests: Make `edittext_getlinemetrics` an approximate test with a tolerance of a quarter pixel. 2022-11-20 17:13:48 -07:00
David Wendt 1952870ed1 tests: Include tests for empty newlines in the `as3_edittext_getlinemetrics` test. 2022-11-20 17:13:48 -07:00
David Wendt c0b6496b96 tests: Add tests for AVM1 `gettextextent` and AVM2 `TextField.getLineMetrics`. 2022-11-20 17:13:48 -07:00
dependabot[bot] 4c34fa361d build(deps): bump image from 0.24.4 to 0.24.5
Bumps [image](https://github.com/image-rs/image) from 0.24.4 to 0.24.5.
- [Release notes](https://github.com/image-rs/image/releases)
- [Changelog](https://github.com/image-rs/image/blob/master/CHANGES.md)
- [Commits](https://github.com/image-rs/image/compare/v0.24.4...v0.24.5)

---
updated-dependencies:
- dependency-name: image
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-15 08:12:38 +02:00
dependabot[bot] 8f214ff9a3 build(deps): bump regex from 1.6.0 to 1.7.0
Bumps [regex](https://github.com/rust-lang/regex) from 1.6.0 to 1.7.0.
- [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.6.0...1.7.0)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-07 23:37:56 +02:00
dependabot[bot] 52f692c0e1 build(deps): bump env_logger from 0.9.1 to 0.9.3
Bumps [env_logger](https://github.com/env-logger-rs/env_logger) from 0.9.1 to 0.9.3.
- [Release notes](https://github.com/env-logger-rs/env_logger/releases)
- [Changelog](https://github.com/env-logger-rs/env_logger/blob/main/CHANGELOG.md)
- [Commits](https://github.com/env-logger-rs/env_logger/compare/v0.9.1...v0.9.3)

---
updated-dependencies:
- dependency-name: env_logger
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-07 23:02:47 +02:00
Aaron Hill 68471723b3 core: Fix clippy format string lint 2022-10-27 08:49:39 +03:00
dependabot[bot] 01967e4865 build(deps): bump serde_json from 1.0.86 to 1.0.87
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.86 to 1.0.87.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.86...v1.0.87)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 10:59:40 +03:00
dependabot[bot] d589130634 build(deps): bump serde from 1.0.145 to 1.0.147
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.145 to 1.0.147.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.145...v1.0.147)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 09:54:26 +03:00
dependabot[bot] 3c7e9235f6 build(deps): bump futures from 0.3.24 to 0.3.25
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.24 to 0.3.25.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.24...0.3.25)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 09:19:27 +03:00