Jon Pacheco
48c65f02a1
avm1: Implement Error object (see #251 )
2020-07-02 20:58:01 -07:00
Mike Welsh
b05da5ef0f
avm1: CastOp fails for primitive values
2020-07-01 17:30:56 -07:00
Nathan Adams
d86761db5d
avm1: Implement try {..} catch {..} finally {..} - #731
2020-07-01 17:30:56 -07:00
Nathan Adams
7c0b0a7a57
avm1: Fix instanceof checks with primitives
2020-07-01 16:36:54 -07:00
Nathan Adams
d1732dd3d6
avm1: Returning from with{} should return from the parent activation
2020-07-01 16:21:43 -07:00
Nathan Adams
8bc3eedc43
avm1: Rename StackFrame to Activation now that they're merged
2020-07-02 00:09:43 +02:00
Nathan Adams
9b66b496d0
avm1: Fix double-borrow when calling a getter that calls another method
2020-07-01 18:53:16 +02:00
Nathan Adams
987375299b
avm1: Replace 'run_in_avm' with just building a StackFrame object, letting Rust borrowchecker do our stack management for us
2020-06-30 21:57:51 +02:00
Nathan Adams
47a806a5ee
avm1: Removed errors that are no longer possible to run into
2020-06-30 21:28:32 +02:00
Nathan Adams
a989aa235a
avm1: We don't need to lock StackFrames anymore, the borrow checker will steer us right
2020-06-30 21:26:57 +02:00
Nathan Adams
2288919663
avm1: We don't need to store data in StackFrame, it's only used when actually running data
2020-06-30 21:24:46 +02:00
Nathan Adams
45c3967deb
avm1: Merge Activation into StackFrame
2020-06-30 21:08:42 +02:00
Nathan Adams
d889b98043
avm1: Merge Activation::from_function and Activation::from_action as they're identical
2020-06-30 20:34:05 +02:00
Nathan Adams
6e4dd506da
avm1: Activation doesn't need to be in a GcCell
2020-06-30 20:31:49 +02:00
Nathan Adams
4d24bc7f09
avm1: Removed pc from Activation, it's no longer needed
2020-06-30 19:42:18 +02:00
Nathan Adams
3e9c380ba1
avm1: Remove is_function from Activation, it's no longer needed
2020-06-30 19:40:21 +02:00
Nathan Adams
ec4affcf10
avm1: Use child activations when already running from another activation
2020-06-29 10:13:59 +02:00
Nathan Adams
aaa082fb60
avm1: Replace run_with_stack_frame with run_in_avm
2020-06-29 10:13:57 +02:00
Nathan Adams
0dd2ece371
avm1: Introduce parents to StackFrame, and move run_activation from avm1 to StackFrame
2020-06-29 10:12:17 +02:00
Nathan Adams
9b630bd305
avm1: Remove ReturnValue, it's no longer needed
2020-06-29 10:12:16 +02:00
Nathan Adams
ab4304d634
avm1: Properly and more explicitly work around the double-borrow issue in setters
2020-06-29 10:10:38 +02:00
Nathan Adams
f85684fec0
avm1: Move current_swf_version and is_case_sensitive from avm1 to stackframe
2020-06-29 10:10:11 +02:00
Nathan Adams
d470c52aea
avm1: Move root_object, target_clip_or_root, target_clip and base_clip from avm1 to StackFrame
2020-06-29 10:09:57 +02:00
Nathan Adams
ca305684db
avm1: Removed unused return_value on Activation
2020-06-29 10:09:40 +02:00
Nathan Adams
da8ca1379f
avm1: Change from 'avm, context' to 'activation, context' and restructured to support this
2020-06-29 10:09:38 +02:00
Nathan Adams
a841743962
avm1: Make current_stack_frame return a Result for easy chaining
2020-06-29 10:07:48 +02:00
Nathan Adams
cdfd58d619
avm1: Move register get/setting from avm1 to StackFrame
2020-06-29 10:07:31 +02:00
Nathan Adams
63e66c29eb
avm1: We already have our stack frame, don't refetch it in actions
2020-06-29 10:07:14 +02:00
Nathan Adams
3a093dddbd
avm1: Run activations immediate, not queued up for some-time-later
2020-06-29 10:07:12 +02:00
Nathan Adams
10b8f4abaf
avm1: Handle stack poping in avm
2020-06-29 08:55:50 +02:00
Nathan Adams
84a5fae43f
avm1: Only perform stack-frame adjustments in one place, not scattered throughout actions
2020-06-29 08:51:34 +02:00
Nathan Adams
9109d89daa
avm1: Allow for frame control in StackFrame from any action
2020-06-29 08:51:34 +02:00
Nathan Adams
329716bfe7
avm1: Don't refetch activation.data every action
2020-06-29 08:51:33 +02:00
Nathan Adams
af72f68f0f
avm1: Run entire stack frames at once
2020-06-29 08:51:33 +02:00
Nathan Adams
c6b9de883f
avm1: Add Activation to StackFrame, removing lots of get-and-unwraps
2020-06-29 08:51:33 +02:00
Nathan Adams
4d76e8b24d
avm1: Move all actions from Avm1 to a new StackFrame
2020-06-29 08:51:33 +02:00
Mike Welsh
3bc3d4acb2
text: Fix bindings being incorrectly cleared in StageObject
...
Call to `Vec::retain` was backwards, causing bindings to be
incorrectly cleared/not cleared when a text field was removed.
2020-06-28 23:38:58 -07:00
Mike Welsh
7eeda7d93e
chore: clippy
2020-06-28 18:36:10 -07:00
Mike Welsh
b40f9d4c1a
avm1: Implement TextField.html
2020-06-28 18:36:10 -07:00
Mike Welsh
618fa11acb
avm1: Implement text field variable binding
2020-06-28 18:36:10 -07:00
Mike Welsh
12fca71b21
avm1: Move StageObjectData behind a GC pointer
2020-06-28 18:36:10 -07:00
Mike Welsh
a922fd559f
avm1: Add EditText variable property
...
Add `EditText::variable` as well as `TextField.variable` property.
This commit only adds the getter/setter and does not yet add the
binding functionality.
2020-06-28 18:36:10 -07:00
Mike Welsh
ccf33eedf6
avm1: Array indices are enumerable
2020-06-27 20:25:45 -07:00
Mike Welsh
ecc54d01f7
avm1: Disallow setting "" property
...
object[""] has no effect.
2020-06-27 20:25:45 -07:00
Mike Welsh
ef82fc472e
avm1: Object.hasOwnProperty should coerce_to_string
2020-06-27 20:25:45 -07:00
Nathan Adams
463b79f063
avm1: Implement Action::Throw
2020-06-25 02:03:15 -07:00
Nathan Adams
70e4a40f01
avm1: Allow for user errors inside avm1::error::Error
2020-06-25 02:03:15 -07:00
Mike Welsh
81d75c6256
text: Text formatting for EditText fields (merge #615 )
...
First implementation of HTML parsing and formatting for text fields.
2020-06-24 23:06:11 -07:00
Mike Welsh
5d9701313e
text: Fix TextField.embedFonts setter
2020-06-24 22:46:59 -07:00
David Wendt
d281452fe1
Expose the device font flag to AVM1 code.
2020-06-24 22:55:50 -04:00
Mike Welsh
5a7012923b
avm1: Move TextField methods into functions
2020-06-24 11:11:00 -07:00
Mike Welsh
d2702464a5
avm1: TextField properties are emumerable and deletable
2020-06-24 11:02:21 -07:00
CUB3D
a5b0a196cc
core: Update to use updated value conversion functions
2020-06-24 01:57:15 +01:00
CUB3D
f03093528c
core: Add shared object cache and saving on exit
...
On the desktop player, shared objects will now be flushed on quit.
Attempting to retrieve an existing shared object will now return a
reference to the existing one.
2020-06-24 01:46:42 +01:00
CUB3D
166cb60d89
chore: Clean up useage of unwrap
2020-06-24 01:46:07 +01:00
CUB3D
fce8e8b7de
chore: Fix build
2020-06-24 01:46:07 +01:00
CUB3D
8a65ac764b
chore: Clean up comments
2020-06-24 01:46:07 +01:00
CUB3D
8e28bab159
chore: Fix clippy lints, refactor storage to use data_local_dir
2020-06-24 01:46:07 +01:00
CUB3D
0122d65a09
core: Refactor SharedObject
2020-06-24 01:46:07 +01:00
CUB3D
1b130ccd47
chore: Refactor storage access
2020-06-24 01:46:06 +01:00
CUB3D
0c6a7b3b4c
core: Add SharedObject object type
2020-06-24 01:46:05 +01:00
CUB3D
752ffc5cca
chore: Fix clippy lints and tests
2020-06-24 01:44:07 +01:00
CUB3D
eff06d3d4d
core: Add stub listener methods for SharedObject
2020-06-24 01:43:25 +01:00
CUB3D
d3ae6a3a40
core: Fix data property of SharedObject
2020-06-24 01:43:25 +01:00
CUB3D
48693e4a7a
core: Add inital storage backend implementation
...
Currently SharedObjects are encoded and decoded from JSON via the
StorageBackend, also provided is a basic in-memory implementation
2020-06-24 01:43:23 +01:00
CUB3D
539b4b0f63
core: Add stub for SharedObject
2020-06-24 01:42:19 +01:00
David Wendt
40ea58c1c0
Since we cannot parse `<br>` properly yet, replace them and `<sbr>` with newlines before parsing so that we don't get spurious parse errors.
2020-06-22 18:00:51 -04:00
Nathan Adams
cea2c9520d
chore: Ignore new 'unnested_or_patterns' clippy lint as we the suggested behaviour doesn't exist outside of nightly
2020-06-21 04:18:44 -07:00
David Wendt
c1ad37a0f6
Implement text span raising, sans list items.
...
During the raising process, we maintain a list of pointers to the lowest-most `textformat`, `p`, `font`, `a`, `b`, `i`, and `u` in the document that we are appending to. When we get a new one of any of those elements, we clear the rest off the stack. This forces us to add HTML in the same order Flash does.
LIs are not yet supported because they require us to process text line-by-line which doesn't mesh with this model.
There's also a test but the XML DOM generates HTML strings with the wrong attribute order, so the test fails spuriously.
2020-06-20 20:14:57 -04:00
David Wendt
88fcb98913
Allow disabling entity processing when parsing XML.
...
This necessitated a change to edittext_bullet, which turns out is accidentally an entity test, too. It now no longer uses entities so that it won't spuriously fail due to an entity related problem.
2020-06-20 20:06:21 -04:00
David Wendt
fa2da492a7
Allow ActionScript to control text field borders.
2020-06-20 19:55:58 -04:00
David Wendt
045a81e79e
Implement `html` and `htmlText`... sort of.
...
There are several problems, first off:
1. I'm not entirely sure what I'm supposed to be changing on the text field when someone writes `html`.
2. We're using the XML parser for HTML (both `htmlText` and SWF tag parsing) which causes problems. Notably, `<br>` issues an AVM1 error (!!!) because the XML parser doesn't like unclosed tags.
3. Reading `htmlText` should not return the same HTML tree (at least, not until we implement stylesheets). It should instead regenerate an HTML tree from text spans.
2020-06-20 19:55:52 -04:00
David Wendt
7a62a8e9ce
Programmatically created text fields get a biased depth.
2020-06-20 19:53:34 -04:00
David Wendt
dc46885021
Implement `autoSize`.
...
This doesn't work right yet because the resulting width doesn't apply correctly to the field. This is because `EditText`'s `_width` and `_height` change it's intrinsic bounds rather than it's X and Y scale (like it would with a button or a movie clip).
2020-06-20 19:48:00 -04:00
David Wendt
467fd9db80
Implement `TextField.length` in AVM1.
2020-06-20 19:26:44 -04:00
David Wendt
fde5e13358
Expose `replaceText` to AVM1 code.
2020-06-20 19:26:42 -04:00
David Wendt
a8a1b985a3
Expose `getTextFormat` and `setTextFormat` to AVM1.
2020-06-20 19:26:41 -04:00
David Wendt
a2836a0b92
Tie `EditText` into the new layout system, which is currently unfinished.
...
This should *significantly* regress `EditText` layout.
2020-06-20 19:26:37 -04:00
David Wendt
a3f4509d63
Store all text internally as an HTML tree, alongside the existing strings.
...
We're reusing the XML machinery to handle HTML - this is probably not 100% correct, but writing a new HTML parser to cover just `EditText` will be rather complicated.
2020-06-20 19:16:11 -04:00
David Wendt
ac9cd0cf87
Move `TextFormat` over to a new `html` module, which will hold all the stuff necessary for rendering HTML in an `EditText`.
...
`TextFormat` is owned data and should be collectable as static.
2020-06-20 19:16:10 -04:00
Nathan Adams
2e7ebbf258
avm1: Fatal errors will halt the AVM and prevent further execution
2020-06-20 15:02:00 -07:00
Nathan Adams
f5da954b32
avm1: Merge avm1::Error and avm1::ExecutionError for now. It's plausible that nested inside actions we can encounter an ExecutionError, so at that point it doesn't make sense to have a separation.
2020-06-20 15:02:00 -07:00
Nathan Adams
a36e2105a3
avm1: Made avm1::Error an actual error type, and removed all calls that throw incorrect errors in avm1
2020-06-20 15:02:00 -07:00
Nathan Adams
ad07520af3
avm1: Add avm1::ExecutionError
2020-06-20 15:02:00 -07:00
Nathan Adams
c8f0753da4
core: Rename Value::as_number to Value::coerce_to_f64
2020-06-19 12:48:28 -07:00
Nathan Adams
67042b255c
core: Replace Value::as_* numeric methods in favour of coerce_to_* or manual matching
2020-06-19 12:48:28 -07:00
Nathan Adams
270f63b2f3
core: Made Object::to_string return a Cow<str>
2020-06-19 12:48:28 -07:00
Nathan Adams
f4b4d0ebb7
core: Replace Value::into_string in favour of coerce_to_string or manual matching
2020-06-19 12:48:28 -07:00
Nathan Adams
5662b2d4d9
core: Make Value::coerce_to_string return a Cow<str>`
2020-06-19 12:48:28 -07:00
Nathan Adams
9633dc71c3
core: Replace Value::as_string in favour of coerce_to_string or manual matching
2020-06-19 12:48:28 -07:00
Nathan Adams
e44568c31c
core: Remove Value::call_method, you must box the value first
2020-06-19 12:48:28 -07:00
Nathan Adams
5dd1a1e509
core: Remove Value::get, you must box the value first
2020-06-19 12:48:28 -07:00
Nathan Adams
fc18c2fce5
core: Rename Value::as_object to Value::coerce_to_object
2020-06-19 12:48:28 -07:00
Nathan Adams
b2b57c1540
core: Make Value::as_object always return a (possibly boxed) object
2020-06-19 12:48:28 -07:00
Mike Welsh
62cfeb3754
core: Assign default name to unnamed clips ( fix #66 )
2020-06-18 16:26:36 -07:00
Mike Welsh
83feeefeeb
audio: Don't panic on unimplemented codecs
...
Remove `unimplemented` calls when encountring unsupported codecs
such as Nellymoser. Instead, return an Error that can be
gracefully handled.
2020-06-17 12:14:08 -07:00
Mike Welsh
77cb186357
avm1: Constructors queue to run after a goto
...
If a class is registered to a clip that is placed on the timeline
during a goto, that constructor should run after the frame is
completely constructed. In order to tell whether to run the
constructor immediately, add a parameter to `post_instantiation`
to indicate if the clip is instantiated from the AVM or via a
standard timeline seek.
2020-06-16 14:53:44 -07:00
CUB3D
fa11ef1e81
core: Add remaining capabilities
2020-06-09 23:57:46 +01:00
CUB3D
dd5d2976ea
core: Add missing functions to System.security
2020-06-09 23:03:13 +01:00
CUB3D
07d4f3a8eb
core: Fix build
2020-06-09 22:41:11 +01:00