David Wendt
ac0f62d475
avm2: Implement `MouseEvent.stageX`/`stageY`
2022-01-22 19:58:32 -08:00
David Wendt
9ee263160a
avm2: Implement `MouseEvent.relatedObject`
2022-01-22 19:58:32 -08:00
David Wendt
477b8fb87f
avm2: Implement `MouseEvent.movementX`/`movementY`
2022-01-22 19:58:32 -08:00
David Wendt
b612980ace
avm2: Impl `MouseEvent.localX`/`localY`
2022-01-22 19:58:32 -08:00
David Wendt
948b591378
avm2: Stub `MouseEvent.isRelatedObjectInaccessible`
2022-01-22 19:58:32 -08:00
David Wendt
a3c48c5e29
avm2: Implement `MouseEvent.delta`
2022-01-22 19:58:32 -08:00
David Wendt
22638f4aae
avm2: Impl `MouseEvent.buttonDown`
2022-01-22 19:58:32 -08:00
David Wendt
d790b138b0
avm2: Implement accessor methods for `altKey`, `commandKey`, `controlKey`/`ctrlKey`, and `shiftKey`.
2022-01-22 19:58:32 -08:00
David Wendt
d9bbafb0bb
avm2: Make `MouseEvent`'s constructor set event data based on it's parameters.
2022-01-22 19:58:32 -08:00
David Wendt
016cd6ccc0
avm2: Make event construction take an `EventData` parameter.
...
This also necessitated the introduction of a `FullScreenEvent` data type.
2022-01-22 19:58:32 -08:00
David Wendt
43161976c7
avm2: Add a new field to store mouse event data on dispatched events.
2022-01-22 19:58:32 -08:00
relrelb
164e1a38c0
core: Remove unnecessary parameter from `post_instantiation`
...
`display_object` was always equivalent to `self`, there's no need to
pass both.
2022-01-22 11:37:33 -08:00
Mike Welsh
e11e1e870f
avm1: Improve Object comparisons in SWFv5
...
SWFv5 always calls `Object.valueOf` at least once and sometimes
twice in the Equals2 op, even when comparing two Objects.
For example, `Object(1) == Object(1)` is true in SWFv5 but false
in SWFv6.
2022-01-21 16:40:19 -08:00
Mike Welsh
bf599d9107
avm1: Clean up Value::abstract_eq
...
Consolidate several cases and fix some issues:
* Object-to-primitive comparison always goes through `valueOf`.
* `Object(undefined) == undefined` is true; this will coerce
to a bare object with no `valueOf`, resulting in
`undefined==undefined`.
* `{valueOf:function() { return NaN; }} == NaN` is true.
2022-01-21 16:40:19 -08:00
Mike Welsh
4d8db1e64d
avm1: Fix function closures inside `with`
...
When creating a scope for a closure, any `with` scopes were being
filtered out, but this was incorrect; `with` scopes are still on
the scope chain when the function is called.
2022-01-19 20:29:26 -08:00
relrelb
1de284dc5b
html: Fix handling of end tag mismatch
...
Flash ignores mismatched end tags (i.e. end tags with a missing/different
corresponding start tag). `quick-xml` checks end tag mismatches by
default, but it cannot recover after encountering one.
Commit 7e20543578
already disabled
`quick-xml`'s check, but that caused mismatched `Event::End` to be
handled, which may empty `format_stack` and later panic on
`format_stack.last().unwrap()`.
Thus, check for mismatched end tags ourselves, in a similar manner
of `quick-xml`, but in a recoverable way.
2022-01-18 13:50:26 -08:00
David Wendt
57acf47a10
avm2: Allow access to stage properties without a valid root movie clip.
2022-01-18 11:06:23 -08:00
David Wendt
df25d1ca8b
avm2: Children of the root inherit their parent's `loaderInfo`
2022-01-18 11:06:23 -08:00
David Wendt
f041cced72
avm2: The stage's loader info object allows access to `url`, `bytes`, and `parameters`.
2022-01-18 11:06:23 -08:00
Mike Welsh
b181debff6
swf: Use bitflags for `avm1::GetUrl2`
2022-01-17 21:35:57 -08:00
Mike Welsh
4c3e14eae5
core: Clean up `DefineFunction` action
...
* Have `DefineFunction` and `DefineFunction2` go through the same
code path by implementing `From<DefineFunction>` for
`DefineFunction2`.
* Change `register` to a `Option<NonZeroU8>` for size optimization.
* Add `function::Param` to store param info instead of a tuple.
2022-01-17 21:35:57 -08:00
Mike Welsh
c618a12d14
core: Remove _ pattern in `avm1::Activation::do_action`
...
The match is exhaustive, so replace `_` with `Action::Unknown`.
2022-01-17 21:35:57 -08:00
Mike Welsh
2b2346b65e
swf: Add `avm1::Action::End`
...
Returning an `Action::End` instead of `None` when reading the end
of an action.
2022-01-17 21:35:57 -08:00
Mike Welsh
9141451ca1
swf: Use structs for avm1 `Action` variants
...
Use a struct for all variants of `avm1::Action`.
This makes the style more consistent instead of using a mix of
struct and tuple variants, and allows the data to be easily passed
around.
2022-01-17 21:35:57 -08:00
Adrian Wielgosik
5358940774
avm2: Support basic string.replace
...
Supports:
- string.replace(string, string)
- string.replace(regex, simple_string)
Does not support:
- string.replace(regex, string_with_replacement_codes)
- string.replace(any, function)
2022-01-17 20:10:20 -08:00
relrelb
3b25a3b901
avm1: Correct `MovieClipLoader.getProgress`
...
Handle strings, numbers and DisplayObject targets.
Return compressed length rather than uncompressed length.
2022-01-15 13:08:01 -08:00
relrelb
eb23f19fad
avm1: Correct `MovieClipLoader.unloadClip`
...
Handle strings, numbers and DisplayObject targets.
2022-01-15 13:08:01 -08:00
relrelb
0da8e504ab
avm1: Correct `MovieClipLoader.loadClip`
...
Handle strings, numbers and DisplayObject targets (not just MovieClips).
To support non-MovieClip targets, turn `clip.as_movie_clip().unwrap()`
to `if let Some(mc) = clip.as_movie_clip()` in `Loader`.
2022-01-15 13:08:01 -08:00
relrelb
e9607cfcbb
chore: Appease clippy
2022-01-15 11:16:24 -08:00
relrelb
25722e7abe
avm1: Fix `onLoadInit` event order
...
`onLoadInit` is queued after all `DoAction`s of the loaded clips.
That is, if clip1, clip2, clip3 are loaded in the same frame
(in this order), then actions will be executed as follows:
* `DoAction` of clip3
* `DoAction` of clip2
* `DoAction` of clip1
* `onLoadInit` of clip3
* `onLoadInit` of clip2
* `onLoadInit` of clip1
Previously, those were incorrectly executed as follows:
* `DoAction` of clip3
* `onLoadInit` of clip3
* `DoAction` of clip2
* `onLoadInit` of clip2
* `DoAction` of clip1
* `onLoadInit` of clip1
2022-01-14 17:27:14 -08:00
TÖRÖK Attila
12f9bec194
chore: Bump h263-rs git reference
...
To make use of https://github.com/ruffle-rs/h263-rs/pull/17
2022-01-14 17:09:39 -08:00
Mike Welsh
232f1dd120
chore: Appease clippy
2022-01-10 23:37:11 -08:00
dependabot[bot]
8f53449762
build(deps): bump indexmap from 1.7.0 to 1.8.0
...
Bumps [indexmap](https://github.com/bluss/indexmap ) from 1.7.0 to 1.8.0.
- [Release notes](https://github.com/bluss/indexmap/releases )
- [Changelog](https://github.com/bluss/indexmap/blob/master/RELEASES.rst )
- [Commits](https://github.com/bluss/indexmap/compare/1.7.0...1.8.0 )
---
updated-dependencies:
- dependency-name: indexmap
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-01-10 22:08:19 -08:00
dependabot[bot]
491cc05a79
build(deps): bump syn from 1.0.84 to 1.0.85
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.84 to 1.0.85.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.84...1.0.85 )
---
updated-dependencies:
- dependency-name: syn
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-01-10 22:07:29 -08:00
relrelb
b39ab9034c
core: Remove `Player::is_mouse_down`
...
Now that `InputManager` tracks the mouse button, it can be used
instead.
2022-01-10 01:18:49 -08:00
relrelb
573aa89c9a
core: Handle mouse events in `InputManager::handle_event`
2022-01-10 01:18:49 -08:00
relrelb
82b4c6ef27
core: Support mouse buttons in `KeyCode`
...
Add `MouseLeft`, `MouseRight` and `MouseMiddle` to `KeyCode` for
AVM1's `Key.isDown()` function.
2022-01-10 01:18:49 -08:00
relrelb
6396c21bc0
core: Rename `PlayerEvent::MouseLeft` to `MouseLeave`
...
So it's not consfusing with `KeyCode::MouseLeft`.
2022-01-10 01:18:49 -08:00
relrelb
c00532aed2
core: Cleanup mouse update logic
...
Move code that is exclusive to mouse events from
`Player::update_mouse_state` to `Player::handle_event`.
2022-01-10 01:18:49 -08:00
Adrian Wielgosik
86210363f0
avm2: Remove Object::derive() machinery for AS3 prototypes
2022-01-09 18:23:10 -08:00
relrelb
b79144c122
avm1: Remove `TextFormatObject::set_text_format`
...
Use `text_format_mut` instead.
2022-01-10 00:26:33 +02:00
Mike Welsh
2653c5f5c3
audio: Handle gaps in MP3 SoundStreamBlock tags ( fix #3817 )
...
An MP3 "stream" sound can sometimes have frames without a
SoundStreamBlock tag, despite the SWF spec saying there should
at least be a tag with 0 samples on each frame. Ruffle would
stop the sound in this case, but the Flash Player may or may not
stop thje sound in the audio depending on the number of "empty"
frames. This could cause the audio to stutter as it continuously
stopped and restarted.
Handle this by keeping track of how many samples we've encountered
in MP3 blocks, and deducting the amount of samples consumed by each
timeline frame. Stop the sound if we run out of samples, as opposed
to when we hit a frame without a SoundStreamBlock.
Fixes #3817 .
2022-01-07 13:23:53 -08:00
Mike Welsh
b2f7c98f88
audio: Sync animation with embedded audio streams
...
This is a first pass at syncing animation and audio playback when
and embedded audio stream is playing.
Fixes #3020 , #3663 , #3958 .
2022-01-07 13:23:53 -08:00
relrelb
8c736b9756
avm1: Fix `MovieClipLoader` event arguments
...
The first argument of all events is the target MovieClip. It was
incorrect.
Also, `onLoadComplete` accepts an additional `httpStatus` argument.
Stub it to 0.
2022-01-07 10:39:16 -08:00
relrelb
e045a9502b
core: Small cleanup in `Loader`
...
Remove unnecessary calls to `introduce_loader_handle`, which are
dominated by `add_loader` that already calls it. As a result, `add_loader`
remained the only function to call `introduce_loader_handle`, so inline
it there.
2022-01-07 10:39:16 -08:00
relrelb
c05ff4cbc8
core: Unify `Loader::Xml` into `Loader::LoadVars`
...
Since they are identical (they both load the URL as a string, then
fire the `onHTTPStatus` and `onData` events). In fact, AVM1's
`XML.prototype.load` and `LoadVars.prototype.load` functions are
both defined as `ASnative(301, 0)`, so they invoke the same native
code under the hood.
2022-01-07 09:51:27 -08:00
dependabot[bot]
a9e86a73cf
build(deps): bump serde from 1.0.132 to 1.0.133
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.132 to 1.0.133.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.132...v1.0.133 )
---
updated-dependencies:
- dependency-name: serde
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-01-03 23:28:57 +02:00
dependabot[bot]
6533511994
build(deps): bump quote from 1.0.10 to 1.0.14
...
Bumps [quote](https://github.com/dtolnay/quote ) from 1.0.10 to 1.0.14.
- [Release notes](https://github.com/dtolnay/quote/releases )
- [Commits](https://github.com/dtolnay/quote/compare/1.0.10...1.0.14 )
---
updated-dependencies:
- dependency-name: quote
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-01-03 22:50:58 +02:00
Mike Welsh
34ed9cbbaa
core: Fix incorrect closing of paths in drawing API ( fix #5598 )
...
The path starting position was not being set correctly after a
moveTo command, which could cause stray strokes to appear in the
drawing.
Fixes #5598 , #5768 , #5957 .
2022-01-01 22:24:08 -08:00
relrelb
655adedc1c
xml: Remove `XmlNode::is_as2_compatible`
...
Now all `XmlNodeData` types are AS2-compatible, so `is_as2_compatible`
always returns `true`.
2022-01-02 07:36:49 +02:00
relrelb
30cd2aa4f1
xml: Remove `XmlNodeData::DocType`
...
`XmlNode::is_as2_compatible` returns `false` for `XmlNodeData::DocType`
nodes, which means they are not included in string representations of
XML documents, and they cannot be traversed using the DOM methods.
So don't create those when parsing an XML from string, but still
store the `DOCTYPE` declaration string on the `XmlDocument`, which
is accissible through the `.docTypeDecl` property.
2022-01-02 07:36:49 +02:00
relrelb
827bb6e48e
xml: Remove `XmlNodeData::Comment`
...
`XmlNode::is_as2_compatible` returns `false` for `XmlNodeData::Comment`
nodes, which means they are not included in string representations of
XML documents, and they cannot be traversed using the DOM methods.
So simply don't create those when parsing an XML from string.
2022-01-02 07:36:49 +02:00
relrelb
e477fca9e4
xml: Use OR patterns
...
This results in a slightly shorter code, and avoids some duplication.
2021-12-31 19:00:12 +02:00
relrelb
8bd144ec88
xml: Make `XmlDocumentData::root` non-`Option`
...
Since `XmlNode::document` doesn't exist anymore, so as the circular-
reference between `XmlDocument` and `XmlNode`.
2021-12-31 19:00:12 +02:00
relrelb
3676db47a3
xml: Remove unused `XmlNode::document`
2021-12-31 19:00:12 +02:00
relrelb
f7e80e3fb9
xml: Inline `XmlDocument::add_child_to_tree`
...
Include the XML root node itself as part of the stack, so appending
children to it is no longer considered a special case.
2021-12-31 09:35:09 +02:00
relrelb
e1198bd30c
xml: Inline `XmlDocument::process_event`
...
Now that `replace_with_str` is defined in `XmlDocument`, there is
no need anymore for a separate function that handles nodes which have
document-wide implications.
2021-12-31 09:35:09 +02:00
relrelb
7d148fb61d
xml: Move `XmlNode::replace_with_str` to `XmlDocument`
...
It only makes sense to call this method on document roots.
2021-12-31 09:35:09 +02:00
Adrian Wielgosik
fcab60de7e
core: register non-ascii fonts lazily
2021-12-31 01:10:48 +01:00
relrelb
0bab5f6d91
avm1: Use `XmlObject`
...
Previously Ruffle's AVM1 runtime incorrectly permitted calling `XML`
functions on `XMLNode` objects. For example:
```as
var xml = new XML("<a><b></b></a>");
trace(XML.prototype.createElement.call(xml.firstChild, "aaa")); // traces "undefined" in Flash, but "<aaa />" in Ruffle before this commit.
```
Disallow this by using the newly-reintroduced `XmlObject` for `XML` objects
(rather than `XmlNodeObject` that represents also `XMLNode` object), and check
for it in all `XML` builtins.
2021-12-30 22:13:14 +02:00
relrelb
b501b4697a
avm1: Re-introduce `XmlObject`
...
The newly-reintroduced `XmlObject` will represent `XML` document objects.
Currently it's unused, but the following commit will make use of it.
2021-12-30 22:13:14 +02:00
TÖRÖK Attila
09ca48e389
chore: Bump h263-rs git reference
2021-12-30 16:22:27 +01:00
TÖRÖK Attila
6f68938591
video/vp6: Fix keyframe detection on Vp6WithAlpha videos
2021-12-29 11:28:05 +01:00
dependabot[bot]
56b340ebf5
build(deps): bump syn from 1.0.82 to 1.0.84
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.82 to 1.0.84.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.82...1.0.84 )
---
updated-dependencies:
- dependency-name: syn
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-12-27 22:32:21 +02:00
relrelb
e547fd710d
xml: Remove `XmlName`
...
Instead use a much simpler approach using `XmlNode::local_name` and
`XmlNode::prefix`.
2021-12-27 20:53:34 +02:00
relrelb
6ca1ac05da
avm1: Rename `XmlObject` to `XmlNodeObject`
...
The name `XmlObject` will be re-used in a future PR for `XML`
document objects.
2021-12-27 20:53:34 +02:00
Moulins
74ab24c0c3
core: fix wide string handling in html::text_format
...
Closes #5839
2021-12-21 22:19:13 +02:00
Adrian Wielgosik
4230d1f19f
avm2: Add Mouse.hide(), Mouse.show()
2021-12-21 17:32:57 +01:00
dependabot[bot]
fd816f3a0a
build(deps): bump serde from 1.0.131 to 1.0.132
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.131 to 1.0.132.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.131...v1.0.132 )
---
updated-dependencies:
- dependency-name: serde
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-12-21 08:35:54 +02:00
relrelb
b1151b2ab2
html: Rewrite `FormatSpans::to_html`
...
The new implementation doesn't use the `xml` crate, nor `quick-xml`,
but rather just iterates the `TextSpan`s and builds the formatted HTML
string.
2021-12-20 08:31:59 +02:00
relrelb
2ad5c644b0
avm1: Make `ArrayObject` proto non-`Option`
...
It was always passed as `Some`, so there's no reason for allowing
`None`.
2021-12-18 13:39:22 +02:00
relrelb
9d87a34f25
html: Ignore tag errors
...
Flash stops parsing the XML in such cases, but still returns the
partially-processed text.
2021-12-18 11:34:31 +02:00
relrelb
c1404f6a3e
html: Expand empty elements
...
`quick-xml` has a feature to split empty elements into an `Open` and
a `Close` event. Use it to avoid duplicated code.
2021-12-18 11:34:31 +02:00
relrelb
7e20543578
html: Don't check end names
...
Flash permits mismatched closing tags (e.g. `<mytag></different_tag>`),
so turn-off this check.
2021-12-18 11:34:31 +02:00
Adrian Wielgosik
5d81a0ce64
avm2: Remove .clone() calls now that Index is Copy
2021-12-17 21:09:40 -07:00
Adrian Wielgosik
a8fb1c2b16
avm2: pass Multiname to resolve_type() by reference
2021-12-17 21:09:40 -07:00
Adrian Wielgosik
22a0711d85
avm2: Use TU's method cache for callstatic, newfunction opcodes
2021-12-17 21:09:40 -07:00
Adrian Wielgosik
4b23f4dfb7
avm2: Set correct value type in op_convert_u/i
2021-12-17 21:06:33 -07:00
TÖRÖK Attila
0a2767fcb4
video: Wire up DefineVideoStream smoothing flag to the renderer
...
With all the weird logic for when it actually takes effect
2021-12-17 21:03:57 -07:00
David Wendt
2aee3555ab
chore: Fix all new clippy lints added in latest Rust nightly
2021-12-17 20:53:26 -07:00
relrelb
07c5330456
core: Introduce `InputManager`
...
`InputManager` encapsulates the common logic that previously the
`UiBackend`s used to implement.
2021-12-15 14:20:30 -08:00
Adrian Wielgosik
726ec47f19
avm2: Support inheritance of protected traits
2021-12-15 22:26:41 +01:00
Adrian Wielgosik
11534a4b34
avm2: Implement parseInt, parseFloat
2021-12-15 22:16:49 +01:00
Adrian Wielgosik
49feb23649
avm2: Move toplevel functions to separate file
2021-12-15 22:16:49 +01:00
TÖRÖK Attila
95665bdc47
video: Extract software decoders (or glue) into their own modules, add screenvideo feature
2021-12-14 19:41:17 -07:00
TÖRÖK Attila
fdc448533d
video: Add Flash Screen Video (V1 only) decoder
...
Thanks a lot for the code and the help, Kostya!
2021-12-14 19:41:17 -07:00
Toad06
db98f0b42f
avm1: Use inner SWFs version number
2021-12-14 19:39:30 -07:00
dependabot[bot]
c6dfcb4e37
build(deps): bump serde from 1.0.130 to 1.0.131
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.130 to 1.0.131.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.130...v1.0.131 )
---
updated-dependencies:
- dependency-name: serde
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-12-13 23:23:13 +02:00
dependabot[bot]
b8ff8bb185
build(deps): bump jpeg-decoder from 0.2.0 to 0.2.1
...
Bumps [jpeg-decoder](https://github.com/image-rs/jpeg-decoder ) from 0.2.0 to 0.2.1.
- [Release notes](https://github.com/image-rs/jpeg-decoder/releases )
- [Changelog](https://github.com/image-rs/jpeg-decoder/blob/master/CHANGELOG.md )
- [Commits](https://github.com/image-rs/jpeg-decoder/compare/v0.2.0...v0.2.1 )
---
updated-dependencies:
- dependency-name: jpeg-decoder
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-12-13 23:23:01 +02:00
dependabot[bot]
ef679d25c7
build(deps): bump encoding_rs from 0.8.29 to 0.8.30
...
Bumps [encoding_rs](https://github.com/hsivonen/encoding_rs ) from 0.8.29 to 0.8.30.
- [Release notes](https://github.com/hsivonen/encoding_rs/releases )
- [Commits](https://github.com/hsivonen/encoding_rs/compare/v0.8.29...v0.8.30 )
---
updated-dependencies:
- dependency-name: encoding_rs
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-12-13 23:22:28 +02:00
EmperorBale
30f2e0f8b1
avm2: Implement JSON ( #5172 )
...
* avm2: Implement JSON.parse
* avm2: Add AvmSerializer for serializing AVM values to JSON
* avm2: Add support for replacer objects
* avm2: use *const ObjectPtr for object stack
* avm2: Add support for space parameter is JSON.stringify
* avm2: Refactor AvmSerializer design
* avm2: Restrict spaces to a maximum of 10
* avm2: Refactor map_value
* tests: Add JSON.parse test
* chore: Appease clippy
* avm2: Check if value is undefined before inserting
* tests: Add test for JSON.stringify
* tests: Improve JSON.stringify test
* chore: Replace map_or with explicit match statements
* chore: Use QName::dynamic_name
* avm2: Use Object<'gc> instead of ObjectPtr
* chore: Use explicit match in deserialize_value
* Rebase fixes
Co-authored-by: Adrian Wielgosik <adrian.wielgosik@gmail.com>
2021-12-13 18:32:04 +01:00
Adrian Wielgosik
ad1442dbaa
avm2: Add a basic ContextMenu stub
2021-12-13 18:31:03 +01:00
Adrian Wielgosik
1f5979f168
chore: clippy
2021-12-11 20:48:09 +01:00
Adrian Wielgosik
1311b0a3d0
avm2: refactor Domain::get_defining_script
2021-12-11 20:48:09 +01:00
Adrian Wielgosik
0fb075a309
chore: cargo fmt
2021-12-11 20:48:09 +01:00
Adrian Wielgosik
3d8f611651
avm2: Update comments.
2021-12-11 20:48:09 +01:00
Adrian Wielgosik
b747541709
avm2: Panic upon encountering CallMethod opcode
2021-12-11 20:48:09 +01:00
Adrian Wielgosik
1d8c556944
avm2: Handle TODOs, throw errors where applicable
2021-12-11 20:48:09 +01:00
Adrian Wielgosik
24247dff0b
avm2: install_const_late always appends slots
2021-12-11 20:48:09 +01:00
Adrian Wielgosik
4bd12ae4b3
avm2: Get prototypes from classes without get_property()
2021-12-11 20:48:09 +01:00
Adrian Wielgosik
49d16dea8b
avm2: Rip out `receiver` from get/set/call_property
2021-12-11 20:48:09 +01:00
Adrian Wielgosik
ee0798b258
avm2: Cleanup slots/global initialization some more
2021-12-11 20:48:09 +01:00
Adrian Wielgosik
21865edf9b
avm2: Support const slots, fill some TODOs
2021-12-11 20:48:09 +01:00
Adrian Wielgosik
b272d8722e
avm2: Reword slot/disp_id assignment, remove Slot.
2021-12-11 20:48:09 +01:00
Adrian Wielgosik
4d8999c012
avm2: Make all prototypes ScriptObjects; also cleanup vector enumeration, Proxy
2021-12-11 20:48:09 +01:00
Adrian Wielgosik
3706db86d2
avm2: move properties from instances to vtable
2021-12-11 20:48:09 +01:00
relrelb
d3fe4ea59a
avm1: Split `XML` and `XMLNode` definitions
...
This reduces the file size of the previous `xml.rs` file, and makes
the code a bit more organized.
2021-12-11 20:28:37 +02:00
Adrian Wielgosik
6594d4159d
avm2: Use Vec instead of HashMap for loaded constants
2021-12-11 10:03:29 +01:00
relrelb
ca3b215561
chore: Appease clippy
2021-12-10 21:06:38 +02:00
relrelb
7966d850dd
core: Normalize `\r` to `\n` in `avm_trace`
...
Fixes #3120 .
2021-12-10 19:54:35 +02:00
relrelb
eacf34d80a
avm1: Remove `Function.prototype.toString`
...
`Function.prototype` doesn't have its own `toString` method, but
rather inherts it from `Object.prototype`. So remove `Function.prototype.toString`
and move its logic to `Object.prototype.toString`.
2021-12-10 11:36:39 +02:00
relrelb
ce2eff8b25
render: Stub L16 JPEG pixel format
...
16-bit luminance (grayscale) images are very rare, so it's hard to
tell what the expected behavior should be.
2021-12-10 00:28:45 +02:00
dependabot[bot]
8007f21ffe
build(deps): bump jpeg-decoder from 0.1.22 to 0.2.0
...
Bumps [jpeg-decoder](https://github.com/image-rs/jpeg-decoder ) from 0.1.22 to 0.2.0.
- [Release notes](https://github.com/image-rs/jpeg-decoder/releases )
- [Changelog](https://github.com/image-rs/jpeg-decoder/blob/master/CHANGELOG.md )
- [Commits](https://github.com/image-rs/jpeg-decoder/compare/v0.1.22...v0.2.0 )
---
updated-dependencies:
- dependency-name: jpeg-decoder
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-12-10 00:28:45 +02:00
Adrian Wielgosik
d28dd3bd05
avm1: Fix up attributes of some builtins' protos
2021-12-10 00:28:21 +02:00
EmperorBale
0a25ebbc32
chore: Remove more explicit clones
2021-12-08 22:14:45 +01:00
EmperorBale
d6b7d0c915
chore: Fix formatting
2021-12-08 22:14:45 +01:00
EmperorBale
a192fbb113
chore: Remove explicit clones in avm2
2021-12-08 22:14:45 +01:00
EmperorBale
847a4fb61a
chore: Remove explicit clones in value
2021-12-08 22:14:45 +01:00
EmperorBale
1709ea94e7
chore: Remove explicit clones in object
2021-12-08 22:14:45 +01:00
EmperorBale
8ea41bc151
chore: Remove explicit clones in slot
2021-12-08 22:14:45 +01:00
EmperorBale
15378bcfde
chore: Remove explicit clones from vector
2021-12-08 22:14:45 +01:00
EmperorBale
2f71360c3b
chore: Remove explicit clones from primitive_object
2021-12-08 22:14:45 +01:00
EmperorBale
a7f86e679c
chore: Remove explicit clones from uint
2021-12-08 22:14:45 +01:00
EmperorBale
0a8b964754
chore: Remove explicit clones from number
2021-12-08 22:14:45 +01:00
EmperorBale
8f27196356
chore: Remove explicit clones in int
2021-12-08 22:14:45 +01:00
EmperorBale
a0bbc96b4a
chore: Remove explicit clones in function
2021-12-08 22:14:45 +01:00
EmperorBale
7027046588
chore: Remove explicit clones in shape
2021-12-08 22:14:45 +01:00
EmperorBale
51f909691f
chore: Remove explicit clones in movieclip
2021-12-08 22:14:45 +01:00
EmperorBale
96eb14fdab
chore: Remove explicit clones in boolean
2021-12-08 22:14:45 +01:00
EmperorBale
60fc4cd0c0
chore: Remove explicit clones in activation
2021-12-08 22:14:45 +01:00
EmperorBale
002158a1b0
chore: Remove explicit clones in array
2021-12-08 22:14:45 +01:00
EmperorBale
7fce022293
avm2: Derive Copy for Value
2021-12-08 22:14:45 +01:00
Adrian Wielgosik
685911a77c
swf: Box ShapeRecord::StyleChange variant
2021-12-08 22:14:17 +01:00
Moulins
3ff0c3d737
string: Correctly return None in `WStr::offset_in` for overlapping WStrs
2021-12-08 22:12:11 +01:00
relrelb
da4b5986b1
chore: Appease clippy
2021-12-08 22:36:55 +02:00
relrelb
5de81d4729
html: Handle attribute errors gracefully
...
`quick-xml` returns an `Err` for invalid attributes (e.g. unquoted).
Handle such errors by ignoring the HTML completely and return an
empty string instead, as Flash does.
Fix #5789 .
2021-12-05 08:40:04 +02:00
relrelb
7f7ecda8a9
core: Unify `define_bits_jpeg_3` and `define_bits_jpeg_4`
...
The only difference is the deblocking field, which is now read only
for DefineBitsJpeg4.
2021-12-04 21:32:16 +02:00
relrelb
00accf3e2a
render: Rename `register_bitmap_jpeg_3` to `register_bitmap_jpeg_3_or_4`
...
It's actually used by both DefineBitsJpeg3 and DefineBitsJpeg4 tags.
2021-12-04 21:32:16 +02:00
dependabot[bot]
963fa78f29
build(deps): bump weak-table from 0.3.0 to 0.3.2
...
Bumps [weak-table](https://github.com/tov/weak-table-rs ) from 0.3.0 to 0.3.2.
- [Release notes](https://github.com/tov/weak-table-rs/releases )
- [Changelog](https://github.com/tov/weak-table-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/tov/weak-table-rs/compare/0.3.0...v0.3.2 )
---
updated-dependencies:
- dependency-name: weak-table
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-12-04 16:50:42 +02:00
relrelb
03aa31ec68
core: Fix a bug in `MorphShapeStatic::register_ratio`
...
The comparsion `start_change.move_to != end_change.move_to` doesn't
make sense, because even if they are identical, the positions need
to be updated.
Fix #2886 .
2021-12-04 13:46:02 +02:00
relrelb
fab4103932
chore: Appease clippy
2021-12-04 13:45:37 +02:00
David Wendt
54fcfde1cc
core: String equality should short-circuit on pointer equality
2021-12-02 16:33:56 -07:00
David Wendt
29d2df5f07
core: Hash the whole (byte-oriented) WStr without iterating it.
2021-12-02 16:33:56 -07:00
David Wendt
dbecd03110
core: When hashing `WString`, optimize for the common case (bytestrings)
2021-12-02 16:33:56 -07:00
David Wendt
9f30a9d4a6
avm2: When passing namespaces around, use a `SmallVec` of one element for memory savings.
2021-12-02 16:30:21 -07:00
David Wendt
1302ea9986
avm2: Pass everything around as `SmallVec`s.
2021-12-02 16:30:21 -07:00
David Wendt
5e03382f5d
avm2: Smallvec the property maps.
2021-12-02 16:30:21 -07:00
David Wendt
a18faeb047
avm2: Also put definition scripts in a `PropertyMap` and query them the same way we do objects
2021-12-02 16:30:21 -07:00
David Wendt
92697c9f1e
avm2: Use FNV hashing for all other parts of the VM.
2021-12-02 16:30:21 -07:00
David Wendt
3329e2a965
avm2: Use FNV hashes for property lookup.
2021-12-02 16:30:21 -07:00