-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
Closes #25324 requestFullscreen returns a Promise and takes in an options parameter. It also can be accessed either via `requestFullscreen` or `webkitFullscreen` (only necessary for Safari). The bindings should be updated to reflect this behavior. Change-Id: I9401b6a1c8b3f9ac370aad8caac8295e0ee358b8 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/229381 Reviewed-by: Sigmund Cherem <sigmund@google.com> Commit-Queue: Srujan Gaddam <srujzs@google.com>
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13989,6 +13989,40 @@ class Element extends Node | |
|
||
int get scrollWidth => JS<num>('num', '#.scrollWidth', this).round(); | ||
|
||
/** | ||
* Displays this element fullscreen. | ||
* | ||
* ## Other resources | ||
* | ||
* * [Fullscreen | ||
* API](https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API) | ||
* from MDN. | ||
* * [Fullscreen specification](http://www.w3.org/TR/fullscreen/) from W3C. | ||
*/ | ||
@SupportedBrowser(SupportedBrowser.CHROME) | ||
@SupportedBrowser(SupportedBrowser.SAFARI) | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
mnordine
Contributor
|
||
Future<void> requestFullscreen([Map? options]) { | ||
var retValue; | ||
if (options != null) { | ||
retValue = JS( | ||
'', | ||
'(#.requestFullscreen||#.webkitRequestFullscreen).call(#, #)', | ||
this, | ||
this, | ||
this, | ||
convertDartToNative_Dictionary(options)); | ||
} else { | ||
retValue = JS( | ||
'', | ||
'(#.requestFullscreen||#.webkitRequestFullscreen).call(#)', | ||
this, | ||
this, | ||
this); | ||
} | ||
if (retValue != null) return promiseToFuture(retValue); | ||
return Future<void>.value(); | ||
} | ||
|
||
// To suppress missing implicit constructor warnings. | ||
factory Element._() { | ||
throw new UnsupportedError("Not supported"); | ||
|
@@ -14896,21 +14930,6 @@ class Element extends Node | |
|
||
void setPointerCapture(int pointerId) native; | ||
|
||
@JSName('webkitRequestFullscreen') | ||
/** | ||
* Displays this element fullscreen. | ||
* | ||
* ## Other resources | ||
* | ||
* * [Fullscreen | ||
* API](https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API) | ||
* from MDN. | ||
* * [Fullscreen specification](http://www.w3.org/TR/fullscreen/) from W3C. | ||
*/ | ||
@SupportedBrowser(SupportedBrowser.CHROME) | ||
@SupportedBrowser(SupportedBrowser.SAFARI) | ||
void requestFullscreen() native; | ||
|
||
// From ChildNode | ||
|
||
void after(Object nodes) native; | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file | ||
// for details. All rights reserved. Use of this source code is governed by a | ||
// BSD-style license that can be found in the LICENSE file. | ||
|
||
import 'dart:html'; | ||
|
||
void main() async { | ||
var documentElement = document.documentElement!; | ||
|
||
// `requestFullscreen` requires user interaction to succeed, so this just | ||
// tests that the bindings and type work. | ||
await documentElement.requestFullscreen().catchError((_) {}); | ||
// Try it with an options argument. | ||
await documentElement | ||
.requestFullscreen({'navigationUI': 'show'}).catchError((_) {}); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file | ||
// for details. All rights reserved. Use of this source code is governed by a | ||
// BSD-style license that can be found in the LICENSE file. | ||
|
||
import 'dart:html'; | ||
|
||
void main() async { | ||
var documentElement = document.documentElement!; | ||
|
||
// `requestFullscreen` requires user interaction to succeed, so this just | ||
// tests that the bindings and type work. | ||
await documentElement.requestFullscreen().catchError((_) {}); | ||
// Try it with an options argument. | ||
await documentElement | ||
.requestFullscreen({'navigationUI': 'show'}).catchError((_) {}); | ||
} |
@srujzs Why not Firefox? Or am I misunderstanding? Shouldn't you be doing a check to see if
requestFullscreen
exists, instead of relying on a prefixed function name that's only supported in 2 browsers?https://fullscreen.spec.whatwg.org/#ref-for-dom-element-requestfullscreen%E2%91%A0