Commit Graph

7393 Commits

Author SHA1 Message Date
Adrian Wielgosik 4ab0910bff core: Optimize BMD.fillRect() 2024-09-16 21:06:43 +02:00
Mads Marquart a3d58f0815 chore: Make macOS specific things also work on iOS 2024-09-16 21:03:57 +02:00
Aaron Hill 514b5ad774 core: Replace `on_exit_frame` with iteration over Loaders
This removes the need to traverse the entire display object tree -
we instead just try to fire events (when ready) on corresponding
`MovieClip`s for our `Loader::Movie` instances
2024-09-15 18:10:46 -04:00
Yaman Kassir c457fba947
core: Strip BOM in URLLoader text data (#17513) 2024-09-15 17:39:52 +00:00
Aaron Hill 6898485466 avm2: Use RefLock for BytecodeMethod.verified_info 2024-09-14 20:25:37 -04:00
wsxarcher 7d1373368b core,web: Add the ability to load TTF/OTF/OTC as default fonts for the extension 2024-09-13 22:22:38 +02:00
Moulins e6e92dd175 avm2: Also use avmplus' qsort in `Vector.sort`
This was forgotten in #17846.
2024-09-13 21:29:43 +02:00
Kamil Jarosz cbb1af7825 core: Use proper sandbox type per SWF
It's the first step of implementing the security sandbox and its
filesystem/network separation policy.
Before that Ruffle assigned `localTrusted` sandbox type for
all movies except web, where `remote` was used.
The sandbox type also was assigned to the player,
and not SWFs as it should.
This patch does not introduce any sandbox policies based
on the sandbox type, just the proper sandbox type detection.
It is also not possible to specify trusted movies,
and AIR applications don't use the `application` type yet.
2024-09-13 17:30:31 +02:00
Kamil Jarosz 41446f07d8 core: Add SandboxType::Application for AIR apps 2024-09-13 17:30:31 +02:00
Kamil Jarosz 6053fc586d core: Move SandboxType from avm1 to sandbox module 2024-09-13 17:30:31 +02:00
Lord-McSweeney f1da1457eb avm2: Return actual VerifyErrors for constant pool errors
This requires passing around an Activation
2024-09-12 16:45:51 -07:00
TÖRÖK Attila 131ec73782 chore: Bump `jpegxr`, `coreaudio-sys` and `bindgen` dependencies
Thereby dropping `which`, `lazycell`, and a duplicated `itertools` version.
2024-09-12 16:48:52 +02:00
Moulins 725d887ceb avm2: replace Rust's sort by avmplus' for `Array` sorts; unblocks #17812
Replace the use of Rust's standard sort in `Array.sort` and `sortOn` by
a port of avmplus' QuickSort algorithm. This avoid panics on Rust >=1.81
when `Array.sort` is called with a non-Ord comparison function, and will
always produce the same result as Flash Player.
2024-09-11 21:58:34 +02:00
Lord-McSweeney 42b44901fc avm2: Add `get_ascii_char` to `AvmStringInterner` and use it 2024-09-11 11:31:58 -07:00
Lord-McSweeney b3769aa6f2 avm2: Use interned "*" character in `PropertyClass::get_name` and `Multiname::to_qualified_name_or_star` 2024-09-11 09:33:51 -07:00
Lord-McSweeney 3438966a04 avm2: Add `any` field to `CommonMultinames` and use it
This should reduce Gc allocations when loading multiname index 0 from the cpool
2024-09-11 09:33:51 -07:00
Lord-McSweeney 4a43ec0548 avm2: Put some more Multinames behind a Gc 2024-09-11 09:33:51 -07:00
TÖRÖK Attila 490c02bb58 core,desktop: Update to `winit` `v0.30.5` and latest `egui` from git 2024-09-11 13:24:14 +02:00
Lord-McSweeney 0adbf65490 avm2: Remove "Display object container has no child with name" warning 2024-09-10 22:46:42 -07:00
Lord-McSweeney c9a994fb47 core: Remove "Registering export for non-movie clip" warning log 2024-09-10 22:46:42 -07:00
Adrian Wielgosik aded790672 xml: Cache regex in custom_unescape 2024-09-10 18:04:25 +02:00
Adrian Wielgosik 176b70b1cd avm2: Cache method body index on Method 2024-09-09 23:45:33 +02:00
Lord-McSweeney ee996cd433 avm2: Use SystemClassDefs to look up builtin classes in a few more places 2024-09-08 14:46:28 -07:00
Lord-McSweeney 96a8fe65b3 avm2: Move some graphics classes from SystemClasses to SystemClassDefs 2024-09-08 14:46:28 -07:00
Aaron Hill 51f004f171 core: Allow clicking on a non-interactive AVM2 child of a Loader 2024-09-08 12:01:49 -04:00
Mestery b616f559e7 avm2: Stub desktop AIR APIs 2024-09-08 10:38:54 +02:00
Adrian Wielgosik 7d07eb2b52 avm2: Skip attempting to serialize methods 2024-09-07 13:36:25 +02:00
Tom Schuster 9fb669a343 avm2: Implement Date using ActionScript 2024-09-06 17:32:00 +02:00
TÖRÖK Attila b4c1f57f25 core: fix: Revert an accidental condition negation in AVM2 stub reporting 2024-09-06 07:24:59 -07:00
Crowdin Bot 92686b10b2 chore: Update translations from Crowdin 2024-09-06 09:02:25 +02:00
Moulins 5550443fdb avm2: Do not allocate for `Namespace::any()`
`Namespace` now holds a `Option<Gc<_>>` internally, with `None`
representing the Any namespace.
2024-09-05 19:23:09 +02:00
TÖRÖK Attila 9e18f66125 chore: Bump `rust-flash-lso` dependency to latest `master`
To pull in https://github.com/ruffle-rs/rust-flash-lso/pull/66.
2024-09-05 13:43:38 +02:00
Kamil Jarosz 8dac02bf95 chore: Fix clippy errors on beta 2024-09-05 08:14:14 +02:00
Lord-McSweeney 2e4085fcb3 avm2: Test for namespace in E4X equality check 2024-09-04 14:00:38 -07:00
Lord-McSweeney 243c6b8ba5 avm2: Remove redundant traits parameter of VTable::init_vtable 2024-09-04 14:00:38 -07:00
Lord-McSweeney 8d25be4639 avm2: Some fixes to Vector.concat
- Properly error when passing non-Objects to Vector.concat
- Implement SWFv10 behavior
- Properly error when appending Vector.<A> to Vector.<B> where A and B are both subclasses of Object
2024-09-04 14:00:38 -07:00
Kamil Jarosz a80a0ab525 core: Fix failing doctests 2024-09-04 22:28:12 +02:00
Nathan Adams 0fb5640e5d core: Truncate socket host by null bytes 2024-09-04 21:48:22 +02:00
TÖRÖK Attila 1b17cbb9b9 core: Recompute next tick time of timers when they are reset 2024-09-04 21:18:50 +02:00
Crowdin Bot 5efe609dbc chore: Update translations from Crowdin 2024-09-03 17:44:43 +02:00
dependabot[bot] 2006171721 build(deps): bump the cargo-minor group with 4 updates
Bumps the cargo-minor group with 4 updates: [bytemuck](https://github.com/Lokathor/bytemuck), [tokio](https://github.com/tokio-rs/tokio), [indexmap](https://github.com/indexmap-rs/indexmap) and [syn](https://github.com/dtolnay/syn).


Updates `bytemuck` from 1.17.0 to 1.17.1
- [Changelog](https://github.com/Lokathor/bytemuck/blob/main/changelog.md)
- [Commits](https://github.com/Lokathor/bytemuck/compare/v1.17.0...v1.17.1)

Updates `tokio` from 1.39.3 to 1.40.0
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.39.3...tokio-1.40.0)

Updates `indexmap` from 2.4.0 to 2.5.0
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.4.0...2.5.0)

Updates `syn` from 2.0.76 to 2.0.77
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.76...2.0.77)

---
updated-dependencies:
- dependency-name: bytemuck
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-minor
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 15:21:27 +02:00
Tom Schuster 7de9135a3b avm2: Throw special XML parsing error for empty namespace prefixes 2024-09-02 08:25:50 +02:00
TÖRÖK Attila 52eb5d6614 avm2: Add new feature tracy_avm, which emits tracy spans for AVM2 methods 2024-09-02 02:19:15 +02:00
Aaron Hill a889bd85e5 avm2: Make Sprite.startDrag/stopDrag available to SWF 9
The versioning in playerglobal is incorrect - Flash Player
actually exposes this to SWF 9
2024-09-01 17:22:40 -04:00
Kamil Jarosz 898db260a3 core: Add support for wider range of key codes
This patch changes the definition of KeyCode from an enum,
which was constraining the possible key codes, to a struct with
a u32 field, which covers all possible cases of a key code.

Key codes in Flash are not related to the physical buttons,
but rather to logical button values.
For instance, typing a non-ASCII key produces a key code related
to that character, and using a non-ANSI keyboard or a layout different
from US QWERTY also produces results matching that assumption.
2024-09-01 21:02:34 +02:00
Lord-McSweeney ad0d3f8fbf avm2: Pass `arguments` to QName native initializer
avmplus test `e4x/QName/e13_3_2` now passes
2024-08-31 14:22:12 -07:00
Lord-McSweeney b4b9c75118 avm2: Rename native instance initializer to super initializer 2024-08-31 14:22:12 -07:00
Lord-McSweeney fc820b7710 avm2: Make several slot operations faster
- `get_slot` and `set_slot_no_coerce` now panic instead of returning Err
- `get_slot` is now inlined
2024-08-31 13:16:05 -07:00
Lord-McSweeney 7214440418 avm2: Switch `ScriptObjectData.slots` from `RefLock<Vec<Value>>` to `Vec<Lock<Value>>` 2024-08-31 13:16:05 -07:00
Lord-McSweeney 52e8534aba avm2: Ensure global object always has correct vtable 2024-08-31 13:16:05 -07:00