Commit Graph

40 Commits

Author SHA1 Message Date
relrelb e01b613a78 web: Fix another instance of "Unable to lock Ruffle core"
After a panic, `Ruffle::renderer_debug_info()` cannot be called since
it tries to immutably borrow the underlying `Player`, but `Ruffle::tick()`
already holds it mutably.

As a fix, simply use the `_cachedDebugInfo` which is fetched in
advance, before any panic occurs. Rename it to just `rendererDebugInfo`
(without "cache" in its name), because now it's mandated.
2023-05-11 08:33:33 +03:00
Kornelius Rohrschneider 27738a492e web: Implement suggested changes in PR to navigate_to_url handling
The suggested changes to the navigate_to_url handling in the feedback to
the pull request have been implemented.
Therefore, this commit consists of multiple smaller changes:

1. The allow_javascript_calls variable has been removed (as a CLI
argument and in the navigator). Javascript calls are now always denied
on desktop. This is because setting the argument was useless; no
javascript was executed in any case, at most, just a browser tab opened.
Therefore, it makes no sense to include this option.
2. The NavigateWebsiteHandlingMode default value has been provisionally
changed from Confirm to Allow. In the future (after a GUI toolkit has
been added), the default confirmation windows should include a "Save
this preference" checkbox.
3. The NetworkingRestrictionMode enum has been renamed to
NetworkingAccessMode since the previous naming was counter-intuitive.
4. The NavigateWebsiteHandlingMode enum (and variables related to it)
have been renamed to OpenURLMode to simplify the name.
5. The documentation has been improved.
2023-05-02 17:13:42 +02:00
Kornelius Rohrschneider 809a9f6907 web: Add and partially implement networking API restrictions
The networking API restrictions imposed by the allowNetworking parameter
& attribute have been added and partially implemented.

A new NetworkingRestrictionMode enum has been added to Ruffle (in Rust
and Typescript). It contains the values "All", "Internal" and "None" and
models the possible values of the allowNetworking parameter / attribute.
All means that all networking APIs are permitted in the SWF file,
Internal means that the SWF file may not call browser navigation or
browser interaction APIs and None means the same and that the SWF file
cannot use any SWF-to-SWF communication APIs either.
A respective allowNetworking variable has been added to the JS config.
Its default value is All.
Ruffle now recognises the allowNetworking parameter and attribute in the
SWF HTML object and parses it and sets the config variable
correspondingly if it's recognised.
Only if the variable is set to All, the external interface (responsible
for javascript calls in AS3) is created. Additionally, the variable is
given to the WebNavigatorBackend and saved in it. The navigator denies
all navigate_to_url calls if the variable hasn't been set to All.
Therefore, the API restrictions imposed by setting allowNetworking to
internal or none have been partially implemented.

Formatting has been improved.
2023-05-02 17:13:42 +02:00
nosamu 569e822044 extension: Reduce code duplication 2023-04-25 08:48:59 +03:00
relrelb 140e1fcfee web: Use `@tsconfig/strictest` 2023-02-22 21:39:12 +02:00
David Wendt 85f544a6cc web: Break out all the Flash identifier strings into a separate module and make `plugin-polyfill.ts` only import that. 2023-02-15 21:27:14 -07:00
nosamu c83ae114b2 web: Move MIME type check to its own function 2022-08-29 02:49:23 -07: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
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
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 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
Toad06 7f317bca49 web: Don't polyfill files meant to be used as fallback content 2021-10-17 11:44:15 -07:00
Daniel Jacobs 5ac9796ffd web: Support salign, quality, & scale embed/object attributes (part of #4258) 2021-09-08 16:25:47 -07:00
Daniel Jacobs 3982f3af98 web: Support menu embed/object attribute (part of #4258) 2021-08-28 14:56:35 +02:00
Tal Hayon 8cb5cf0252 web: Adds support for base embed/object attribute (Part of #4258) 2021-08-19 21:22:47 +02:00
Toad06 b62ca3d589
web: Move `allowScriptAccess` to `BaseLoadOptions` 2021-01-30 16:59:58 -08:00
Mike Welsh 9bb36885bb web: Add backgroundColor option and support bgcolor attribute
Add `backgroundColor` setting to the config options, allowing
a user to override the background color of an SWF. The polyfill
will now look for the `bgcolor` HTML attribute on the embed
and fill in this setting appropriately.
2021-01-13 11:57:19 -08:00
Toad06 201d014edb web: Read the `allowScriptAccess` property from `embed` tags 2021-01-04 13:08:02 -08:00
Toad06 5d55a60924
web: Avoid double polyfilling object-inside-object
* web: Avoid double polyfilling object-inside-object
* tests: Add polyfill test for object inside object
2020-12-10 13:36:40 -08:00
Toad06 fc565e2cd6 web: Don't polyfill an object tag if it already contains a ruffle-embed 2020-11-28 14:43:39 -08:00
Mike Welsh e66fc6f6a1 web: Avoid double polyfilling embed-inside-object 2020-11-26 18:19:57 -08:00
Nathan Adams 797dd83766 web: Merge streamSwfUrl and streamSwfData into load 2020-11-25 11:33:51 -08:00
Nathan Adams 10db305988 web: Enforce (sensible) documentation 2020-11-24 16:36:33 -08:00
Nathan Adams ca96553cf0 web: Rename register_element to registerElement 2020-11-24 16:36:33 -08:00
Nathan Adams 976ef86da7 web: Rename variables in RuffleObject to camelCase 2020-11-24 16:36:33 -08:00
Nathan Adams 9f8dd465ae web: Rename RuffleObject.from_native_object_element to
RuffleObject.fromNativeObjectElement
2020-11-24 16:36:33 -08:00
Nathan Adams 9633073c1f web: Rename RuffleObject.is_interdictable to
RuffleObject.isInterdictable
2020-11-24 16:36:33 -08:00
Nathan Adams 68ffc95348 web: Move RuffleObject.params_of to paramsOf (no longer a static member) 2020-11-24 16:36:33 -08:00
Nathan Adams 3faf09696d web: Move RuffleObject.find_case_insensitive to findCaseInsensitive (no
longer a static member)
2020-11-24 16:36:33 -08:00
Nathan Adams f44f2ea9db web: Fix documentation and warnings in RuffleObject 2020-11-24 16:36:33 -08:00
Nathan Adams 6e191f2893 web: Rename RufflePlayer.allow_script_access to
RufflePlayer.allowScriptAccess
2020-11-24 16:36:33 -08:00
Nathan Adams 1371a89d1a web: Rename RufflePlayer.is_swf_filename to RufflePlayer.isSwfFilename 2020-11-24 16:36:33 -08:00
Nathan Adams 2e83dad798 web: Rename RufflePlayer.debug_player_info to
RufflePlayer.debugPlayerInfo
2020-11-24 16:36:33 -08:00
Nathan Adams 95a22c486d web: Rename RufflePlayer.copy_element to RufflePlayer.copyElement 2020-11-24 16:36:33 -08:00
Nathan Adams 4f297948d0 web: Rename RufflePlayer.stream_swf_url to RufflePlayer.streamSwfUrl 2020-11-24 16:36:33 -08:00
Nathan Adams 5ff7168fe9 web: Switched core package from javascript to typescript 2020-11-24 16:36:33 -08:00