Commit Graph

6612 Commits

Author SHA1 Message Date
Lord-McSweeney dbc1015ef5 avm2: Resolve review comments and fix verifier brokenness 2024-01-29 22:48:00 -08:00
Lord-McSweeney 8b29ceaafa avm2: Write a `make_error_1032` function and use it 2024-01-29 22:48:00 -08:00
Lord-McSweeney c1c3351654 avm2: `Op::Coerce` should not accept a 0-index `Multiname` 2024-01-29 22:48:00 -08:00
Lord-McSweeney fcf83d7dd9 avm2: Properly verify constant pool lookups for `Op::Coerce` and `Op::AsType` 2024-01-29 22:48:00 -08:00
Lord-McSweeney 442391ea60 avm2: Fix a minor bug where `CoerceD` was removed after `Inc`/`DecLocal` 2024-01-29 22:48:00 -08:00
Lord-McSweeney 7b853a8cd9 avm2: One more lazy multiname fix 2024-01-29 22:48:00 -08:00
Lord-McSweeney ce41362b1e avm2: Fix some potentially-failing unwraps and broken code in the verifier 2024-01-29 22:48:00 -08:00
Lord-McSweeney 50b752c35b avm2: Add longer comment to logic to determine register types 2024-01-29 22:48:00 -08:00
Lord-McSweeney dd35e4862f avm2: Fix crash when `Coerce`/`AsType` used a lazy multiname 2024-01-29 22:48:00 -08:00
Lord-McSweeney dd82126448 avm2: Optimize unnecessary `Coerce` when it comes after `PushString`, `NewArray`, and `NewFunction` 2024-01-29 22:48:00 -08:00
Lord-McSweeney f99c5621ee avm2: Add more ops that are guaranteed to not throw errors to `verify::ops_can_throw_error`
This requires a minor change to `Activation::op_lookup_switch`
2024-01-29 22:48:00 -08:00
Lord-McSweeney 6be4918d77 avm2: Resolve reviews 2024-01-29 22:48:00 -08:00
Lord-McSweeney e6c5ba51e4 avm2: Optimize `Coerce` out when it comes right after another `Coerce` pointing to the same cpool entry 2024-01-29 22:48:00 -08:00
Lord-McSweeney 28edee498b avm2: Make `verify_code_starting_from` use a worklist instead of running recursively
This fixes a stack overflow on one test.
2024-01-29 22:48:00 -08:00
Lord-McSweeney b4f016c1cd avm2: Add `CoerceU` op optimizations 2024-01-29 22:48:00 -08:00
Lord-McSweeney 30f99bcd19 avm2: Add optimizations for `Coerce` and `AsType` after `PushNull`, fix `optimize` panicking when out-of-bounds local registers are mentioned 2024-01-29 22:48:00 -08:00
Lord-McSweeney 3f76b248e9 avm2: Remove `Label` op since it is only relevant to the verifier, inline `CoerceA` and `Nop` 2024-01-29 22:48:00 -08:00
Lord-McSweeney 8e997f0131 avm2: Optimize a GetProperty after a GetLocal0 to GetSlot or CallMethod 2024-01-29 22:48:00 -08:00
Lord-McSweeney 8d3847b216 avm2: Add default xml namespace handling opcodes since several SWFs mention them but don't actually use them 2024-01-29 22:48:00 -08:00
Lord-McSweeney c4a3b3f49f avm2: Implement simple Op::CoerceX optimizations 2024-01-29 22:48:00 -08:00
Lord-McSweeney f9fb739460 avm2: Record all possible jump targets, remove Convert-B/D/I/U opcodes since those are equivalent to the corresponding CoerceX opcodes 2024-01-29 22:48:00 -08:00
Lord-McSweeney 2022321a03 avm2: Add an `Op` enum to AVM2; pre-pool double/uint/ints for `pushX` opcodes 2024-01-29 22:48:00 -08:00
Lord-McSweeney 65848104a6 avm2: Implement verifier based off Adrian's initial work 2024-01-29 22:48:00 -08:00
Aaron Hill 1cf669c75e avm2: Convert invalid rectangle to zero rectangle in getBounds 2024-01-29 13:25:16 -05:00
Aaron Hill f31d9bc491 avm2: Make Math.random() more closely match Flash Player
See the comments for details. Our previous implementation
was 'too good', and broke Bloons Tower Defense 5 by
generating `Number`s that Flash Player would never generate.
2024-01-28 22:46:19 -05:00
Fancy2209 f2880975ba
avm2: Report OS as Windows instead of Linux for now (#14985) 2024-01-28 22:10:54 +00:00
Aaron Hill 5b685d411f chore: Fix nightly Clippy lints 2024-01-28 16:03:29 -05:00
Tom Schuster b8d8aafe89 avm2: Implement the remaining flash.net.FileReference properties 2024-01-28 17:14:10 +01:00
Adrian Wielgosik 4981cbd89b avm2: Avoid double lookup in setPropertyIsEnumerable 2024-01-27 16:51:17 +01:00
Crowdin Bot 4769a45999 chore: Update translations from Crowdin 2024-01-26 22:54:04 +01:00
Tom Schuster 7a73dd0661 avm2: Only use embedded CFF fonts for TLF 2024-01-26 21:57:48 +01:00
sleepycatcoding 36fc30e283 debug_ui: Do not render container as collapsible if it has no children 2024-01-26 20:34:49 +01:00
Moulins ac7086528f avm1: Implement proper behavior for Gradient***Filter array setters
Among other things:
- resizing `colors` should also resize `alphas` and `ratios`
- shrinking `ratios` should also shrink `colors` and `alphas`, but
  growing it doesn't change the size
2024-01-26 18:40:06 +01:00
Moulins 19ff294e60 avm1: Follow FP 32 (not FP 11) behavior for ColorMatrix/ConvolutionFilter 2024-01-26 18:40:06 +01:00
Moulins bd2165bd0f swf: Properly read/write ConvolutionFilters; these contain f32s, not Fixed16s 2024-01-26 18:40:06 +01:00
Moulins 659917bff2 avm1: Fix inaccuracies in DisplacementMapFilter
- `mode` should reject non-lowercased values
- `mapPoint` should reset to `(0, 0)` when set to an invalid value
2024-01-26 18:40:06 +01:00
Moulins 5ef911abc9 avm1: Don't overwrite alpha when setting the color field on BitmapFilters 2024-01-26 18:40:06 +01:00
Kamil Jarosz ec345d20a5 core: Improve HTML handling for EditText and add support for SWF 6,7
This patch improves the logic of parsing and formatting HTML
for EditText, and adds support for SWF versions 6 and 7.

Examples of bugs fixed:
* invalid HTML: When generating HTML, Ruffle sometimes generated
  mismatched tags, e.g. tried to close a tag which was never opened.
* text outside of tags: sometimes, especially in case of multiline
  fields with multiple paragraphs, Ruffle generated proper tags,
  but the text was placed outside of them.
* BR/SBR closing issues: When opened, Ruffle waited for a close tag
  and ignored every other closing tag. BR/SBR do not need to be closed,
  so Ruffle often waited indefinitely.
* P/LI behavior: P and LI have a very peculiar behavior, but a very
  important one, because it influences the number of paragraphs/bullets
  and thus newlines for multiline fields.

Support for SWF 6,7:
* whitespace in SWF 6,7: SWF versions 6,7 ignore witespace-only text.
  This significantly influences the behavior of newlines and paragraphs.
* kerning in SWF 6,7: Enabling kerning in `<font>` works only for SWF 8+.
* multiline in SWF 6: FP 6 defines the `multiline` property, but it
  completely ignores it, and the field behaves as if it's always multiline.
2024-01-26 18:20:06 +01:00
Kamil Jarosz 5422792eb7 core: Add font and style structures for TextSpan
They make operating on text spans more natural, e.g. easy comparison.
2024-01-26 18:20:06 +01:00
Daniel Jacobs 119a093c27
web: Add allowFullscreen embed/object option (part of #4258) 2024-01-26 10:06:29 +00:00
Kamil Jarosz 62a46c7b60 core: Ignore font style in default TextFormat for HTML fields
It seems that font styles in the default text format
are ignored when dealing with an HTML field.

This patch revisits the fix from feacbdc1 (#13615),
which assumed that `<font>` resets font style.
That does not seem to be the case, but rather the bug
was caused by the invalid default text format,
which forced the text to be bold, due to the bold
variant of the font being linked to the text field.

This patch reverts 2f84d468 (#1201), which assumed that
the default color for a text span has 100% alpha.
The test added here contradicts it and it seems that
the default color is in fact rgba(0,0,0,0).
Testing the original SWF suggests that the underlying problem
has been fixed since that time.
2024-01-26 08:37:24 +01:00
David Wendt 4031659c9e core: Use the last processed tag time for stream time in case of buffer underruns. 2024-01-25 23:24:09 -07:00
David Wendt 56c14be708 core: Buffer overruns should not pause the stream unless we are actually at the end of the video. 2024-01-25 23:24:09 -07:00
David Wendt 14dec5dcce avm1: `bytesTotal` should actually get `bytesTotal` 2024-01-25 23:24:09 -07:00
David Wendt 092e20a1be core: Adding data to the buffer should reactivate the stream. 2024-01-25 23:24:09 -07:00
David Wendt 899e02fd82 core: Inform `NetStream` of the expected stream length.
`NetStream` uses this information to reserve stream buffer capacity. It also exposes this information to AVM via `bytesTotal`.
2024-01-25 23:24:09 -07:00
David Wendt 006c3af4b8 core: Add backend method for getting the expected length of a response. 2024-01-25 23:24:09 -07:00
David Wendt 08ee3ea638 core: Load all `NetStream` data in chunks. 2024-01-25 23:24:09 -07:00
David Wendt 91dd9563bb core: Add method to read downloads in chunks instead of all-at-once. 2024-01-25 23:24:09 -07:00
David Wendt 06eb2e1ee8 core: `Request` is now a trait. Body download is deferred to a second async method. 2024-01-25 23:24:09 -07:00