Commit Graph

7453 Commits

Author SHA1 Message Date
TÖRÖK Attila 8306ad08e6 test: Add a test for `flash.geom.Vector3D` 2022-08-08 22:15:09 +03:00
TÖRÖK Attila 5e2804f992 avm2: Implement `flash.geom.Vector3D` 2022-08-08 22:15:09 +03:00
CUB3D 05bfa3770e chore: Fix warnings with cargo doc 2022-08-08 20:20:18 +03:00
relrelb 761759c4b3 wgpu: Pull out more code to `mask_render_state` 2022-08-07 10:18:48 +03:00
relrelb e42a6b62e6 core: Require `target` in `NavigatorBackend::navigate_to_url`
Make the `target` parameter just a `String` instead of an `Option<String>`.
`None` is not needed as it's totally equivalent to an empty string.
2022-08-06 11:20:03 +03:00
relrelb ee89010dd9 scanner: Fix update of `indicatif`
Use `ProgressStyle::with_template` as demonstrated in `indicatif`'s
examples, alongside some nearby cleanups.
2022-08-06 10:52:42 +03:00
relrelb c6cd48c184 exporter: Fix update of `indicatif`
Use `ProgressStyle::with_template` as demonstrated in `indicatif`'s
examples.
2022-08-06 10:52:42 +03:00
dependabot[bot] 6a4825f68d build(deps): bump indicatif from 0.16.2 to 0.17.0
Bumps [indicatif](https://github.com/console-rs/indicatif) from 0.16.2 to 0.17.0.
- [Release notes](https://github.com/console-rs/indicatif/releases)
- [Commits](https://github.com/console-rs/indicatif/compare/0.16.2...0.17.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-06 10:52:42 +03:00
Aaron Hill 2f8dde86af
avm2: Include class name in ScriptObject debug (#7512)
* avm2: Include class name in ScriptObject debug

Currently, the `ScriptObject` debug impl is almost useless -
while you determine if two printed objects are the same
by comparing the pointer value, you'll have no idea what
kind of object it actually is.

This PR now formats the `ScriptObject` output as a struct,
printing a (fake) "class" field containing the class name.

Before/after:

```
[ERROR ruffle_core::avm2::activation] AVM2 error: Cannot coerce Object(ScriptObject(ScriptObject(GcCell(Gc { ptr: 0x55f863936db8 })))) to an QName { ns: Private("Test.as$38"), name: "Second" }
[ERROR ruffle_core::avm2::activation] AVM2 error: Cannot coerce Object(ScriptObject(ScriptObject { class: "Object", ptr: 0x55ee0ad161e0 })) to an QName { ns: Private("Test.as$38"), name: "Second" }
```

Getting access to the class name from a `Debug` impl is tricky:

Developers can (and should be able to) insert logging statements
whereever they want, so any `GcCell` may be mutably borrowed.
Panics in debug impls are extremely frustrating to deal with,
so I've ensured that we only use `try_borrow` at each step.
If any of the attempted borrows fail, we print out an error message
in the "class_name" field, but we're still able to print the
rest of the `ScriptObject`.

Additionally, we have no access to a `MutationContext`, so we
cannot allocate a new `AvmString`. To get around this,
I've created a new method `QName::to_qualified_name_no_mc`,
which uses an `Either` to return a `WString` instead of allocating
an `AvmString`. This is more cumbersome to work with than the
nrmal `QName::to_qualified_name`, so we'll only want to use
it when we have no other choice.
2022-08-04 22:13:00 -07:00
Aaron Hill 2383e6850f avm2: Continue to process event when a handler produces an error
An exception thrown by one event handler shoud not prevent other event
handlers from running on this same event. Some SWFs like Wonderputt
depend on this behavior, as they have buggy event handlers that throw
errors.
2022-08-03 22:29:41 +03:00
Aaron Hill ad19c29c03 Remove `null` from `getChildByName` for missing child
This matches the behavior of Flash - no error is produced.
2022-08-03 21:45:59 +03:00
Daniel Jacobs 992e34764e web: Fix metadata test by adding uncompressedLength 2022-08-03 09:17:24 +03:00
Daniel Jacobs 7105c1e803 web: Clarify uncompressed length is in bytes in metadata 2022-08-03 09:17:24 +03:00
Daniel Jacobs ce95f01de3 web: Include uncompressed length of SWF in metadata 2022-08-03 09:17:24 +03:00
relrelb 7040397c3d web: Fix `sign-addon` upgrade
`sign-addon` 5.0.0 switched to ES Modules. Therefore, it no longer
can be `require`d. As a workaround, use `await import` instead.
In the long-term, it might be worth to convert the `sign_xpi.js`
script itself to ES Modules.
2022-08-03 00:44:03 +03:00
dependabot[bot] 039f33228e build(deps-dev): bump sign-addon from 4.1.0 to 5.0.0 in /web
Bumps [sign-addon](https://github.com/mozilla/sign-addon) from 4.1.0 to 5.0.0.
- [Release notes](https://github.com/mozilla/sign-addon/releases)
- [Commits](https://github.com/mozilla/sign-addon/compare/4.1.0...5.0.0)

---
updated-dependencies:
- dependency-name: sign-addon
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-03 00:44:03 +03:00
dependabot[bot] dcf6243c47 build(deps): bump rfd from 0.9.1 to 0.10.0
Bumps [rfd](https://github.com/PolyMeilex/rfd) from 0.9.1 to 0.10.0.
- [Release notes](https://github.com/PolyMeilex/rfd/releases)
- [Changelog](https://github.com/PolyMeilex/rfd/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PolyMeilex/rfd/compare/0.9.1...0.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 23:52:23 +03:00
dependabot[bot] d0535f4cb8 build(deps): bump clap from 3.2.15 to 3.2.16
Bumps [clap](https://github.com/clap-rs/clap) from 3.2.15 to 3.2.16.
- [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/v3.2.15...v3.2.16)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 23:06:07 +03:00
dependabot[bot] f7f84418f9 build(deps): bump proc-macro2 from 1.0.41 to 1.0.42
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.41 to 1.0.42.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.41...1.0.42)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 22:37:35 +03:00
dependabot[bot] bb96025800 build(deps): bump enum-map from 2.4.0 to 2.4.1
Bumps [enum-map](https://github.com/xfix/enum-map) from 2.4.0 to 2.4.1.
- [Release notes](https://github.com/xfix/enum-map/releases)
- [Changelog](https://github.com/xfix/enum-map/blob/master/CHANGELOG.md)
- [Commits](https://github.com/xfix/enum-map/compare/v2.4.0...v2.4.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 20:34:41 +03:00
dependabot[bot] 3b7f6976a4 build(deps): bump serde from 1.0.140 to 1.0.141
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.140 to 1.0.141.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.140...v1.0.141)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 19:34:44 +03:00
dependabot[bot] 9a90466bb2 build(deps-dev): bump @wdio/spec-reporter from 7.19.5 to 7.20.8 in /web
Bumps [@wdio/spec-reporter](https://github.com/webdriverio/webdriverio) from 7.19.5 to 7.20.8.
- [Release notes](https://github.com/webdriverio/webdriverio/releases)
- [Changelog](https://github.com/webdriverio/webdriverio/blob/v7.20.8/CHANGELOG.md)
- [Commits](https://github.com/webdriverio/webdriverio/compare/v7.19.5...v7.20.8)

---
updated-dependencies:
- dependency-name: "@wdio/spec-reporter"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 18:54:42 +03:00
dependabot[bot] 0597ee3999 build(deps-dev): bump @typescript-eslint/parser in /web
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.30.3 to 5.32.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.32.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 17:46:11 +03:00
dependabot[bot] 2a47857c1a build(deps-dev): bump eslint from 8.18.0 to 8.21.0 in /web
Bumps [eslint](https://github.com/eslint/eslint) from 8.18.0 to 8.21.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.18.0...v8.21.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 16:12:30 +03:00
dependabot[bot] ce932c83a5 build(deps-dev): bump typedoc from 0.23.3 to 0.23.10 in /web
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.23.3 to 0.23.10.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.23.3...v0.23.10)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 15:05:09 +03:00
dependabot[bot] 1a5a253be8 build(deps-dev): bump @typescript-eslint/eslint-plugin in /web
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.27.1 to 5.32.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.32.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 14:30:09 +03:00
dependabot[bot] 9d7651af28 build(deps-dev): bump eslint-plugin-jsdoc from 39.3.2 to 39.3.4 in /web
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 39.3.2 to 39.3.4.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v39.3.2...v39.3.4)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 12:15:35 +03:00
dependabot[bot] 5279f5f52b build(deps-dev): bump prettier from 2.6.2 to 2.7.1 in /web
Bumps [prettier](https://github.com/prettier/prettier) from 2.6.2 to 2.7.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.6.2...2.7.1)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 09:21:13 +03:00
dependabot[bot] a71fbc97b3 build(deps-dev): bump @wdio/static-server-service in /web
Bumps [@wdio/static-server-service](https://github.com/webdriverio/webdriverio) from 7.20.3 to 7.20.7.
- [Release notes](https://github.com/webdriverio/webdriverio/releases)
- [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webdriverio/webdriverio/compare/v7.20.3...v7.20.7)

---
updated-dependencies:
- dependency-name: "@wdio/static-server-service"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 09:01:01 +03:00
dependabot[bot] 2ba82c92bc build(deps-dev): bump @wdio/mocha-framework in /web
Bumps [@wdio/mocha-framework](https://github.com/webdriverio/webdriverio) from 7.20.3 to 7.20.7.
- [Release notes](https://github.com/webdriverio/webdriverio/releases)
- [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webdriverio/webdriverio/compare/v7.20.3...v7.20.7)

---
updated-dependencies:
- dependency-name: "@wdio/mocha-framework"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 23:17:27 +03:00
Adrian Wielgosik e214dd5ce5 avm2: Implement BitmapData.scroll/copyPixels, stub lock() 2022-08-01 22:31:42 +03:00
Adrian Wielgosik 17f090d1d5 avm2: Stub Loader.contentLoaderInfo 2022-08-01 22:31:42 +03:00
TÖRÖK Attila 820196d066 audio: Handle AudioCompression::UncompressedUnknownEndian in AudioMixer::make_seekable_decoder()
The same way as it is done in decoders::make_decoder().
2022-08-01 21:39:01 +03:00
relrelb 6f35d90146 ci: Run cargo in locked mode
As a follow-up for #7010, run cargo in locked mode on Web CI as well,
in order to validate that `Cargo.lock` is up-to-date and gain a slight
speed-up.
2022-08-01 19:46:21 +03:00
Aaron Hill 2ce6679643
avm2: Store PropertyClass in `VtableData`
Calling `get_trait` copies the returned `Property`, so the caching
we performed in `PropertyClass` was never actually getting used.

Instead, we now store our `PropertyClass` values in a `Vec`
indexed by slot id. `set_property` and `init_property` now perform
coercions by going through the `VTable,` which writes the updated
`PropertyClass` back into the array.
2022-07-30 17:58:50 -07:00
Calvin304 01a0d702af avm2: Fix parsing of methods with more than 127 arguments
this change follows section 4.5 of https://www.adobe.com/content/dam/acom/en/devnet/pdf/avm2overview.pdf (dead link, use an archive)
2022-07-30 16:52:56 -07:00
Adrian Wielgosik 5be7f425f0 avm2: Migrate all Events to AS, remove EventData. 2022-07-30 12:34:12 -07:00
Mike Welsh 9e96b075d1 ci: Build web tests with --all-features 2022-07-30 19:07:39 +02:00
Mike Welsh 8c4dcf29ee web: Rollback to web-sys 0.3.58 2022-07-30 19:07:39 +02:00
Mike Welsh d092861c15 chore: Appease clippy
Fix `assertions_on_result_states` lints.
2022-07-29 19:32:41 -07:00
relrelb e500885a37 tests: Add `biturshift`
Also add a SWF8 variant to test its special behavior.
2022-07-29 14:44:21 -07:00
relrelb d01a03b4ca avm1: Correct `ActionURShift`
In SWF8 and SWF9, unsigned right shift actually has a signed result.
2022-07-29 14:44:21 -07:00
Ali MJ Al-Nasrawy 67fbc84ba3 don't rely on a rustc bug
context: https://github.com/rust-lang/rust/pull/98835
2022-07-29 15:27:46 -05:00
Aaron Hill 0d3e046b0e
avm2: Allow classes to reference their own type from a static variable
FP allows code like
`class Foo { static var INSTANCE: Foo = new Foo(); }`

However, this breaks our current property type coercion setup -
we cannot resolve the type `Foo` when setting the property `INSTANCE`,
since `Foo` is still being constructed.

Fortunately, we can perform this 'coercion' by just checking if
the object's class name and domain match the type name and domain
of the property.
2022-07-29 13:24:37 -07:00
relrelb 286dccc274 wgpu: Introduce `create_shape_pipeline`
It is essentially a unification of `create_color_pipeline`, `create_bitmap_pipeline`
and `create_gradient_pipeline`.
2022-07-29 11:00:48 -07:00
relrelb 2827be1f80 web: Remove some unused dependencies
Both `byteorder` and `fnv` are no longer used since #4273.
2022-07-29 09:42:04 -07:00
relrelb 79f36964b4 web: Bump wasm-bindgen to 0.2.82
As usual, also bump its helper crates (`js-sys`, `web-sys` and
`wasm-bindgen-futures`) to the latest versions.
2022-07-29 09:40:14 -07:00
Mike Welsh 30b185cbd4 audio: Reset symphonia decoder on loop 2022-07-28 21:25:33 -07:00
TÖRÖK Attila 7249db9052 audio: Fix crash/gap at the end of MP3 loops 2022-07-28 21:25:33 -07:00
Mike Welsh ffb57467eb audio: Add `AudioBackend::position_resolution`
This returns the approximate interval that the audio backend
updates the sound position information. This is used for syncing
animation to embedded "stream" audio tracks, and fixes some
stuttering in cases where the syncing was being too strict.
2022-07-28 21:25:33 -07:00