Commit Graph

297 Commits

Author SHA1 Message Date
Toad06 1cb2678013 web: Add `has` and `ownKeys` methods to the `Reflect` polyfill 2022-11-14 21:31:08 +02:00
relrelb acdb5ccb52 web: Remove `RufflePlayer` element existence-checks
They should always be present.
2022-10-14 11:56:44 +03:00
relrelb 29b661b366 web: Avoid deprecated `HTMLDocument` type
As suggested, use `Document` instead.
2022-10-14 11:56:44 +03:00
relrelb a8f869329e web: Fix config with `serde-wasm-bindgen`
Since `serde-wasm-bindgen` doesn't support `#[serde(default)]` (https://github.com/cloudflare/serde-wasm-bindgen/issues/20),
we no longer able to deserialize a partial `Config` object. As a solution,
take care to pass a full object from the TypeScript side.
2022-09-26 17:23:32 +03:00
Nathan Adams 97110cbecd web: Add renderer type to player debug/panic info 2022-09-04 18:55:13 -07:00
TÖRÖK Attila 8bb6e77525 web: Also enable the "reference-types" feature in the build with WASM extensions 2022-09-02 13:36:20 -07:00
Daniel Jacobs d9da45d0f2 web: Don't show loading bar when wasm Content-Length does not exist 2022-09-01 21:43:53 +03:00
nosamu c5c619abbd web: Correct IANA Flash MIME type 2022-08-29 02:49:23 -07:00
nosamu c83ae114b2 web: Move MIME type check to its own function 2022-08-29 02:49:23 -07:00
Daniel Jacobs 29bdd138d5 web: Don't add debug info to context menu in insecure context
It won't work anyway, since the Clipboard API doesn't work in insecure contexts.
2022-08-28 20:18:46 -07:00
EmperorBale f8289b47d8
avm2: Implement call stack & stack traces (#7564)
* avm2: Implement call stack

* avm2: Class traits should have a special prefix

* avm2: Stack tracebacks should also contain error message

* avm2: Move method naming to Executable

* avm2: Handle getter and setter methods in tracebacks

* chore: Formatting

* chore: Add comments

* avm2: Make full_name write to a string, instead of creating a new one

* core: Make GcArena publicly accessible

* core: Add Deref impl for Either type

* desktop: Add AVM2 call stack to panic message

* avm2: Prefix native methods with a `/`

* chore: Appease clippy

* avm2: Check if method actually contains bytecode instead of unwrapping

* web: Add AVM2 stack trace to panic message

* chore: Formatting

* chore: Clippy

* avm2: Fix stack traces for free standing functions

* core: Remove global data from context

* core: Rename GcGlobalData to GcCallstack

* core: Introduce StaticCallstack, make GcArena private again

Co-authored-by: Adrian Wielgosik <4729533+adrian17@users.noreply.github.com>
2022-08-28 18:30:20 +02:00
relrelb e3831d2228 web: Disallow imports not used as values
Configure [`importsNotUsedAsValues`](https://www.typescriptlang.org/tsconfig#importsNotUsedAsValues)
to `error`, and switch from `import` to `import type` where needed.
Also remove the `strict` configuration, as it's inherited from
`@tsconfig/recommended`.
2022-08-26 17:27:29 -07:00
Daniel Jacobs c008cc4dea web: Add debug info context menu item 2022-08-26 16:13:55 -07:00
Adrian Wielgosik b18329c8fe web: Allow modifying player volume via JS 2022-08-20 11:53:42 -07:00
Daniel Jacobs 7105c1e803 web: Clarify uncompressed length is in bytes in metadata 2022-08-03 09:17:24 +03:00
Daniel Jacobs ce95f01de3 web: Include uncompressed length of SWF in metadata 2022-08-03 09:17:24 +03:00
Mike Welsh 9fb46c71ad web: Use `AudioBufferSourceNode` for web audio
On web:
 * Mix audio on the Rust side, piping to `AudioBufferSourceNode`.
 * Decode MP3 using `symphonia`.
2022-07-28 21:25:33 -07:00
relrelb 1accf2d8f9 web: Make `SourceAPI` a singleton
As a first step towards a simpler Web API, convert `SourceAPI` from
a class to a constant object, under the assumption that `SourceAPI`
isn't a public Ruffle API and as such is safe to be changed.

As a result the different `ruffle-core` users don't need to construct
a new `SourceAPI` instance before calling `PublicAPI.negotiate()`.
2022-07-23 10:37:33 -07:00
nosamu 01c8c38762 web: Hide loading screen when root movie download fails 2022-07-20 19:55:12 +03:00
Daniel Jacobs 56adcc5665
web: Add a loading screen (#7396)
* web: Add a loading screen

* web: Workaround sometimes overwitten remove method

* web: Completely remove exact px values from preloader

* web: Add meaningless loading animation to preloader

* web: Make preloader position relative

* web: Minor preloader CSS changes

* web: Don't change autoplay/unmuteOverlay showing logic

* demo: Use preloader-background for demo

* web: Don't fully remove preloader

* web: Hide preloader loading bar if there's no content-length

* web: Fix typo in load-ruffle

* web: Show/hide playButton and unmuteOverlay based on preloader state

* web: Address preloader feedback

* web: Revert ESLint change

* web: Remove unneeded optional chaining

* web: Change load option from hasPreloader to preloader

* web: Address some preloader feedback

* web: Change margin-bottom for preloader loading anim

* web: Simplify preloader conditional

* web: Show/hide full container when hiding/showing preloader

* web: Make preloader full-size
2022-07-19 22:20:53 +03:00
nosamu a31dd2e101 Revert "web: Add a loading screen"
This reverts commit bec0710175.
2022-07-11 19:05:52 +02:00
nosamu 47d9c5220a Revert "web: Workaround sometimes overwitten remove method"
This reverts commit ed4f0b98b2.
2022-07-11 19:05:52 +02:00
nosamu 478c69f846 Revert "web: Completely remove exact px values from preloader"
This reverts commit 2c067fe5dd.
2022-07-11 19:05:52 +02:00
nosamu d79e45e49e Revert "web: Add meaningless loading animation to preloader"
This reverts commit c48ca2874b.
2022-07-11 19:05:52 +02:00
nosamu 7c522f2d66 Revert "web: Make preloader position relative"
This reverts commit ded77ab46a.
2022-07-11 19:05:52 +02:00
Daniel Jacobs ded77ab46a web: Make preloader position relative 2022-07-10 13:30:42 -07:00
Daniel Jacobs c48ca2874b web: Add meaningless loading animation to preloader 2022-07-10 13:30:42 -07:00
Daniel Jacobs 2c067fe5dd web: Completely remove exact px values from preloader 2022-07-10 13:30:42 -07:00
Daniel Jacobs ed4f0b98b2 web: Workaround sometimes overwitten remove method 2022-07-10 13:30:42 -07:00
Daniel Jacobs bec0710175 web: Add a loading screen 2022-07-10 13:30:42 -07:00
nosamu 7fa35f2a82 web: Construct relative SWF URLs using document base 2022-07-07 08:58:04 +03:00
Toad06 d53af46c76 web: Disable "Report bug" link if build is outdated 2022-05-30 20:50:15 +03:00
Robert Setter 6114f14fe0
Updating the verbiage for the AS3 warnings to try and reduce the number of support questions about it. (#7106)
* Updating AS3 warning verbiage.

* Updating AS3 verbiage

* Increase root font size

* Refining font size.

* correcting font size in .message
2022-05-29 15:08:46 +03:00
relrelb 4f05d1852d web: Prefer using `Element` over `HTMLElement`
`Element` is a slightly more general type, which is more common than
`HTMLElement`, and it satisfies our needs in most cases.
2022-05-09 15:00:14 -07:00
relrelb 4ae5e89ea7 web: Enforce ESLint's `eqeqeq` rule 2022-05-06 10:40:58 -07:00
GhostlyDark 27c9637ed8 web: Don't use inline CSS attributes 2022-05-01 13:08:58 -07:00
nosamu e8d5274a18 web: Fix compatibility with Rocket Loader
Cloudflare's Rocket Loader script [prevents the DOMContentLoaded event from firing](https://dev.to/hollowman6/solution-to-missing-domcontentloaded-event-when-enabling-both-html-auto-minify-and-rocket-loader-in-cloudflare-5ch8), which was preventing Ruffle's public API from initializing. Work around this by also listening for the `load` event.

Fixes #2254 and #6583.
2022-04-23 19:46:32 -07:00
Mike Welsh 91c1a408fb web: Don't set container bgcolor in transparent wmode
If a Flash embed set both the `bgcolor` param and transparent
`wmode`, the Ruffle polyfill would incorrectly set the container
to use the background color. Keep the background transparent instead.
2022-04-19 01:57:15 -07:00
Mike Welsh 3305ac69c4 web: Support wmode parameter 2022-04-17 08:33:51 -07:00
Daniel Jacobs d3118b5e23 web: Youtube objects on Firefox without data attribute don't work with the rewrite by default 2022-04-10 19:25:26 -07:00
Daniel Jacobs 1d4a2fd5c6 web: Make notreallyyoutube.com use Ruffle 2022-04-10 19:25:26 -07:00
Daniel Jacobs 958b4e7291 web: Workaround mixed-content issues for YouTube Flash embeds 2022-04-10 19:25:26 -07:00
Daniel Jacobs 907b59222a web: Don't polyfill YouTube Flash embeds 2022-04-10 19:25:26 -07:00
Toad06 2c79a5e3d8 web: Only polyfill `<object>` with `classid` when it doesn't contain another polyfillable `<object>` tag 2022-04-03 10:15:19 -07:00
Mike Welsh dd45dc81a0 web: Fix hangs on Safari by avoiding getOutputTimestamp
`AudioContext.getOutputTimestamp` returns incorrect values in
Safari 15.1+, and this would cause movies with 'stream' sounds to
soft-lock because the calculated audio position would barely
progress.

See:
https://developer.apple.com/forums/thread/696356

Change the output timestamp calculation to use
`AudioContext.currentTime` instead.
2022-03-19 15:13:49 -07:00
elliot 355bd35935
web: Add specific error message for disabled WASM on Microsoft Edge (#6423)
* web: Add specific error message for disabled WASM on Microsoft Edge

Related to #6395

* web: Update Microsoft Edge WASM error message conditional

Co-Authored-By: Daniel Jacobs <danielhunterjacobs@gmail.com>

* web: Update "More Information" link for Microsoft Edge WASM error

Co-authored-by: Daniel Jacobs <danielhunterjacobs@gmail.com>
2022-03-09 23:12:21 +02:00
Chris Midgley cf7b6b2515
web: Don't include query parameters in downloaded SWF name (#6368)
* fix: don't include query parameters in downloaded SWF name

* refactor: store swfUrl as URL
2022-02-28 22:27:56 +02:00
elliot 2b162e8532
web: Add `isPlaying` property to `RufflePlayer` (#6294) 2022-02-28 21:28:19 +02:00
Toad06 c14569e3d4 web: Add `refresh` method to `navigator.plugins` 2022-01-26 18:53:33 -08:00
relrelb 479719f425 web: De-duplicate TypeScript ESLint rules
Pull them to the root config, using the `overrides` feature:
https://eslint.org/docs/user-guide/configuring/configuration-files#configuration-based-on-glob-patterns
2022-01-16 11:07:00 -08:00