Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[video_player_web] Listen to loadedmetadata event from video element. #5289

Merged
merged 4 commits into from
Nov 1, 2023

Conversation

ditman
Copy link
Member

@ditman ditman commented Nov 1, 2023

This PR configures the underlying HTMLVideoElement used by the plugin so it triggers a VideoEventType.initialized both for canplay (current behavior) and loadedmetadata events (fixes iOS 17).

It also sets src as the last configuration value when creating the VideoElement, which is common practice when listening to events from HTMLElements, like img or even iframes.

Issues

Tests

  • Added a small integration test to ensure loadedmetadata triggers the expected VideoPlayer event.
  • Deployed changes to: https://dit-videoplayer-tests.web.app for manual verification on an actual iOS device.

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the relevant style guides and ran the auto-formatter. (Unlike the flutter/flutter repo, the flutter/packages repo does use dart format.)
  • I signed the CLA.
  • The title of the PR starts with the name of the package surrounded by square brackets, e.g. [shared_preferences]
  • I listed at least one issue that this PR fixes in the description above.
  • I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.
  • I updated CHANGELOG.md to add a description of the change, following repository CHANGELOG style.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is test-exempt.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Copy link
Contributor

@stuartmorgan stuartmorgan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM with comment nits.

@ditman ditman force-pushed the video-player-listen-ios17-events branch from c1f24cc to 1230c99 Compare November 1, 2023 20:27
@ditman ditman added the autosubmit Merge PR when tree becomes green via auto submit App label Nov 1, 2023
@auto-submit auto-submit bot merged commit 9f0e92f into flutter:main Nov 1, 2023
79 checks passed
@ditman ditman deleted the video-player-listen-ios17-events branch November 1, 2023 21:10
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 2, 2023
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Nov 2, 2023
flutter/packages@6ad40b9...33c2b4e

2023-11-02 ditman@gmail.com [google_sign_in] Enable FedCM for web. Use token expiration. (flutter/packages#5225)
2023-11-01 ditman@gmail.com [video_player_web] Listen to loadedmetadata event from video element. (flutter/packages#5289)
2023-11-01 stuartmorgan@google.com [local_auth] Update iOS to Pigeon 13 (flutter/packages#5269)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com,rmistry@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
sybrands-place pushed a commit to sybrands-place/packages that referenced this pull request Nov 8, 2023
* main: (59 commits)
  [pointer_interceptor] Move pointer_interceptor to sub folder (flutter#5291)
  [webview_flutter] Update iOS to Pigeon 13 (flutter#5271)
  [repo] Adjust error message layout for repo checks (flutter#5241)
  [in_app_pur]: Bump org.json:json from 20230618 to 20231013 in /packages/in_app_purchase/in_app_purchase/example/android/app (flutter#5153)
  Roll Flutter from f5a9835 to 5a6a322 (15 revisions) (flutter#5345)
  [google_sign_in_ios] Upgrade GoogleSignIn iOS SDK to 7.0 (flutter#5240)
  Roll Flutter from 29b2516 to f5a9835 (101 revisions) (flutter#5341)
  [pigeon]: Bump org.jetbrains.kotlin:kotlin-gradle-plugin from 1.9.10 to 1.9.20 in /packages/pigeon/platform_tests/test_plugin/android (flutter#5334)
  [flutter_markdown] Strip leading whitespace from list items (flutter#5294)
  [two_dimensional_scrollables] Add borderRadius support to TableSpanDecoration (flutter#5184)
  [go_router] Adds an ability to add a custom codec for serializing/des… (flutter#5288)
  [go_router] Fixes crashes when dynamically updates routing tables wit… (flutter#5242)
  [camerax] Fix `_getResolutionSelectorFromPreset` NPE (flutter#5287)
  [go_router]Fixes the problem what pathParameters is null in redirect when the Router is recreated. (flutter#5258)
  [google_sign_in] Fix Obj-C formatting bug (flutter#5310)
  Fix mounted checks (flutter#5305)
  [flutter_image] [flutter_markdown] Do not use dynamic in an == operator override (flutter#5298)
  [google_sign_in] Enable FedCM for web. Use token expiration. (flutter#5225)
  [video_player_web] Listen to loadedmetadata event from video element. (flutter#5289)
  [local_auth] Update iOS to Pigeon 13 (flutter#5269)
  ...

# Conflicts:
#	packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFWebViewHostApi.m
HugoOlthof pushed a commit to moneybird/packages that referenced this pull request Dec 13, 2023
…flutter#5289)

This PR configures the underlying HTMLVideoElement used by the plugin so it triggers a `VideoEventType.initialized` both for `canplay` (current behavior) and `loadedmetadata` events (fixes iOS 17).

It also sets `src` as the last configuration value when creating the VideoElement, which is common practice when listening to events from HTMLElements, like `img` or even `iframe`s.

### Issues

* Fixes: **P1** flutter/flutter#137023

### Tests

* Added a small integration test to ensure `loadedmetadata` triggers the expected VideoPlayer event.
* Deployed changes to: https://dit-videoplayer-tests.web.app for manual verification on an actual iOS device.
@reidbaker reidbaker mentioned this pull request Jan 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
autosubmit Merge PR when tree becomes green via auto submit App p: video_player platform-web
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[video_player] [web] Videos are not working on iOS 17, both Safari and Chrome
2 participants