Commit Graph

2820 Commits

Author SHA1 Message Date
dependabot-preview[bot] 30b910554a build(deps-dev): bump prettier from 2.1.1 to 2.1.2 in /web
Bumps [prettier](https://github.com/prettier/prettier) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.1.1...2.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-15 22:41:52 -07:00
dependabot-preview[bot] 1919a027cc build(deps-dev): bump sign-addon from 3.0.0 to 3.1.0 in /web
Bumps [sign-addon](https://github.com/mozilla/sign-addon) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/mozilla/sign-addon/releases)
- [Commits](https://github.com/mozilla/sign-addon/compare/3.0.0...3.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-15 22:20:33 -07:00
Mike Welsh 4190b1fc14 render: Backends use shape_utils::swf_glyph_to_shape 2020-09-15 02:34:32 -07:00
Mike Welsh 3cc43265bf core: Always recurse down into movieclips when mouse picking
Was only consdering the world bounds, but buttons can have separate
hit areas that don't actually affect the bounds of the parent clip.
(TODO: Could have keep track of a separate mouse_bounds instead.)

Fixes regression in Mini-Putt 2 (#1120).
2020-09-15 02:34:32 -07:00
Mike Welsh 4593320d36 tests: Add more tests to hittest_shapeflag test 2020-09-15 02:34:32 -07:00
Mike Welsh fe3bf5cb59 core: Implement hit_test_shape for MorphShape 2020-09-15 02:34:32 -07:00
Mike Welsh 4d26ebe9b4 core: Implement hit_test_shape for EditText 2020-09-15 02:34:32 -07:00
Mike Welsh e9a2ef5d82 core: DisplayObject::hit_test_shape now takes UpdateContext
Make default implementation the same as hit_test_bounds.
2020-09-15 02:34:32 -07:00
Mike Welsh 0d111ca92f avm1: _target of root should be /
Also, levels other than 0 should be appened in slash syntax, e.g
_level1/clip
2020-09-15 02:20:24 -07:00
David Wendt f2380d828a chore: Don't capitalize our type arguments. 2020-09-15 02:20:11 -07:00
David Wendt 7e91c45950 avm2: Move trait methods into the AS3 namespace.
`toString`, `toLocaleString`, and `valueOf` are still `public`, because they're not supposed to be trait methods at all.
2020-09-15 02:20:11 -07:00
David Wendt 27eda5cdf1 avm2: Remove `ArrayIterator` trait.
I originally added this with the anticipation that `impl` return syntax only allowed one trait plus OIBITs. This was prior experience in Rust but apparantly the compiler accepts this just fine, so I suppose my defensive coding practice was a bad/outdated idea.
2020-09-15 02:20:11 -07:00
David Wendt de0bc93839 Fix `hasOwnProperty` yielding false on populated non-hole array indicies. 2020-09-15 02:20:11 -07:00
David Wendt e581704559 avm2: `new Array()` should reject negative and `NaN` length arguments as errors. 2020-09-15 02:20:11 -07:00
David Wendt 582df3bd7d avm2: Misc perf fixes and nits in Array globals. 2020-09-15 02:20:11 -07:00
David Wendt 07e14463e2 avm2: Array `join` and `toString` treat `undefined` and `null` as empty strings. 2020-09-15 02:20:11 -07:00
David Wendt 3b7922d222 avm2: Implement `Array.sortOn` 2020-09-15 02:20:11 -07:00
David Wendt 0aa2c50118 avm2: Implement `Array.sort` 2020-09-15 02:20:11 -07:00
David Wendt bb19699739 avm2: Add convenience method for converting a `Value` into an `EnumSet`. 2020-09-15 02:20:11 -07:00
David Wendt a653a62a93 avm2: Add array sorting constants. 2020-09-15 02:20:11 -07:00
David Wendt ca4982029b avm2: Impl `Array.toLocaleString`. 2020-09-15 02:20:11 -07:00
David Wendt 2ae3b6445b avm2: Partially implement `toLocaleString` insamuch as is necessary to run Array tests on it.
This appears to work almost like it's own TObject method; you can run `Object.prototype.toLocaleString` on all sorts of things and it has separate behavior to what the class method for it might be. I have attempted to match Flash Player as best as I can.
2020-09-15 02:20:11 -07:00
David Wendt dbaef812fa avm2: Impl `Array.splice`. 2020-09-15 02:20:11 -07:00
David Wendt 53b564bb52 avm2: Implement `Array.slice`. 2020-09-15 02:20:11 -07:00
David Wendt 685fbc12e0 tests: `Array.reverse`'s test should also include a check for holes. 2020-09-15 02:20:11 -07:00
David Wendt 036f7cbb90 avm2: Implement `Array.shift` and `Array.unshift`.
This also updates `Array.push` to support it's ability to push multiple arguments at once.
2020-09-15 02:20:11 -07:00
David Wendt 879aff3669 avm2: Implement `Array.reverse` 2020-09-15 02:20:11 -07:00
David Wendt 1ce78388a3 avm2: Implement `Array.push` and `Array.pop` 2020-09-15 02:20:11 -07:00
David Wendt 0ece924877 avm2: Implement `indexOf` and `lastIndexOf` 2020-09-15 02:20:11 -07:00
David Wendt 7aa1ab82e4 avm2: Avoid locking the array when running user code.
The array being iterated is explicitly handed to all callbacks, and it is legal for the callback to mutate the array. Hence, we can't actually hold a `Ref` to the array storage when we call user code. Instead, we implement a custom `Iterator` which iterates over the object like user code would.

This actually can't be an `Iterator` impl due to limitations of the underlying trait. Hence, we have to `while let` instead of `for`.
2020-09-15 02:20:11 -07:00
David Wendt 832bbdd711 avm2: Implement `forEach`, `map`, `filter`, `every`, and `some` on `Array`.
This also comes with some refactoring: building the resulting array object and resolving holes is now done in helper methods.
2020-09-15 02:20:11 -07:00
David Wendt 0eeee72be6 avm2: Implement `Array.join`, `Array.toString`, and `Array.valueOf` (w/tests) 2020-09-15 02:20:11 -07:00
David Wendt 79df789028 tests: Add test for `Array.concat`. 2020-09-15 02:20:11 -07:00
David Wendt 75e6018607 tests: Add test for `newarray`. 2020-09-15 02:20:11 -07:00
David Wendt 505018c3b8 avm2: Implement `newarray`. 2020-09-15 02:20:11 -07:00
David Wendt 27793092c2 tests: Add `array_holes` test. 2020-09-15 02:20:11 -07:00
David Wendt 3d37fda1ef tests: Add tests for `deleteproperty` on arrays. 2020-09-15 02:20:11 -07:00
David Wendt 04828663e8 avm2: `deleteproperty` should only ever yield `false` when attempting to delete unknown properties on a sealed class object. 2020-09-15 02:20:11 -07:00
David Wendt 6d9b9c9218 avm2: Attempts to get unknown properties on dynamic objects should yield `undefined`. 2020-09-15 02:20:11 -07:00
David Wendt 966dfc3902 avm2: Add method to get at the `Class` of non-class objects with a prototype.
The only unclassed objects should be bare objects, which are hard to get at.
2020-09-15 02:20:11 -07:00
David Wendt cac1717780 avm2: Add utility method `is_sealed` for `Class`. 2020-09-15 02:20:11 -07:00
David Wendt 1a8f041b77 tests: Add `array_storage` test. 2020-09-15 02:20:11 -07:00
David Wendt 34ba1643dd tests: Add test for reading properties of an array 2020-09-15 02:20:11 -07:00
David Wendt 5a29b781ec avm2: Ensure `ArrayObject` offers access to it's array properties for reading and writing. 2020-09-15 02:20:11 -07:00
David Wendt e054456286 avm2: Add method to check if a particular namespace is the public namespace. 2020-09-15 02:20:11 -07:00
David Wendt 1d3f5d80be tests: Add test for `new Array`'s arguments. 2020-09-15 02:20:11 -07:00
David Wendt a09ba9d263 avm2: Implement `length`. 2020-09-15 02:20:11 -07:00
David Wendt aaf586e3a7 avm2: `define_instance_trait` should actually define instance traits. 2020-09-15 02:20:11 -07:00
David Wendt 45c95cae02 avm2: Impl `Array.concat` 2020-09-15 02:20:11 -07:00
David Wendt 1092bf2bc5 avm2: Add the ability to wrap an already-constructed array in an object. 2020-09-15 02:20:11 -07:00