mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 22:19:49 +00:00
[dart:html] Fix requestFullscreen bindings and type
Closes https://github.com/dart-lang/sdk/issues/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>
This commit is contained in:
parent
e72363c72d
commit
4c64181d73
|
@ -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)
|
||||
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;
|
||||
|
|
16
tests/lib/html/request_fullscreen_test.dart
Normal file
16
tests/lib/html/request_fullscreen_test.dart
Normal file
|
@ -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((_) {});
|
||||
}
|
16
tests/lib_2/html/request_fullscreen_test.dart
Normal file
16
tests/lib_2/html/request_fullscreen_test.dart
Normal file
|
@ -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((_) {});
|
||||
}
|
|
@ -523,8 +523,10 @@ interface AudioScheduledSourceNode {
|
|||
|
||||
[DartSupplemental]
|
||||
interface Element : Node {
|
||||
// Remove operation requestFullscreen only use webKitRequestFullscreen.
|
||||
// Use template implementation that looks for both the non-prefixed and
|
||||
// prefixed `requestFullscreen` instead.
|
||||
[DartSuppress] void requestFullscreen();
|
||||
[DartSuppress] void webkitRequestFullscreen();
|
||||
// setAttribute and setAttributeNS can take in non-string values that are
|
||||
// then converted to strings.
|
||||
[DartSuppress] void setAttribute(DOMString name, DOMString value);
|
||||
|
|
|
@ -1584,6 +1584,40 @@ $endif
|
|||
|
||||
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)
|
||||
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();
|
||||
}
|
||||
|
||||
$!MEMBERS
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue