Skip to content
This repository has been archived by the owner on Feb 22, 2023. It is now read-only.

[camera_web] Add support for device orientation #4219

Merged
merged 9 commits into from Aug 7, 2021
Merged

[camera_web] Add support for device orientation #4219

merged 9 commits into from Aug 7, 2021

Conversation

bselwe
Copy link
Contributor

@bselwe bselwe commented Aug 6, 2021

Adds support for device orientation to the web camera platform.

  • Added OrientationType representing a screen orientation type of the browser (ScreenOrientation.type).
  • Added lockCaptureOrientation implementation.
    • Requests the full-screen mode as it may be required to modify the device orientation (Interaction with Fullscreen API).
    • Locks the orientation to the given device orientation with ScreenOrientation.lock.
    • Throws a PlatformException when the screen orientation API is not supported.
  • Added unlockCaptureOrientation implementation.
  • Added onDeviceOrientationChanged implementation.

Part of flutter/flutter#45297.

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. (Note that unlike the flutter/flutter repo, the flutter/plugins repo does use dart format.)
  • I signed the CLA.
  • The title of the PR starts with the name of the plugin 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.
  • I updated CHANGELOG.md to add a description of the change.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test exempt.
  • All existing and new tests are passing.

@bselwe
Copy link
Contributor Author

bselwe commented Aug 6, 2021

@ditman @felangel

Copy link
Member

@ditman ditman left a comment

Choose a reason for hiding this comment

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

It's a shame that the Device Orientation API is not supported at all in Safari/Safari IOS. This should definitely be part of the documentation of the plugin, otherwise we're going to receive a lot of complaints :)

Other than that, LGTM!

if (orientation != null && documentElement != null) {
// Full-screen mode may be required to modify the device orientation.
// See: https://w3c.github.io/screen-orientation/#interaction-with-fullscreen-api
documentElement.requestFullscreen();
Copy link
Member

Choose a reason for hiding this comment

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

If the orientation is locked, do we need to requestFullscreen? Wouldn't this already be in fullscreen?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good point, this can be skipped here. Will remove it.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Removed in #4226.

throw UnimplementedError(
'onDeviceOrientationChanged() is not implemented.',
);
final orientation = window?.screen?.orientation;
Copy link
Member

Choose a reason for hiding this comment

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

I'm surprised these are not breaking analysis, we used to require to specify types in these definitions.

@ditman ditman added the waiting for tree to go green (Use "autosubmit") This PR is approved and tested, but waiting for the tree to be green to land. label Aug 7, 2021
@fluttergithubbot fluttergithubbot merged commit acc3202 into flutter:master Aug 7, 2021
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Aug 13, 2021
fotiDim pushed a commit to fotiDim/plugins that referenced this pull request Sep 13, 2021
amantoux pushed a commit to amantoux/plugins that referenced this pull request Sep 27, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
cla: yes p: camera platform-web waiting for tree to go green (Use "autosubmit") This PR is approved and tested, but waiting for the tree to be green to land.
Projects
None yet
3 participants