Version 2.17.0-55.0.dev Merge commit '4c64181d73bdbb36d365c135d82556b722aafd28' into 'dev'
diff --git a/DEPS b/DEPS index 2d8c940..b448946 100644 --- a/DEPS +++ b/DEPS
@@ -110,7 +110,7 @@ "dart_style_rev": "6f894c0ca33686122be9085f06e5b9bf6ad55262", "dartdoc_rev" : "f9cfab1b84176873c80b89e7c8b54c669344f9ed", - "devtools_rev" : "013958fbd45351e5975068756b7b9114465a7f98", + "devtools_rev" : "f265c3028d5ed9a454762532bed144fa36b2e4d5", "ffi_rev": "4dd32429880a57b64edaf54c9d5af8a9fa9a4ffb", "fixnum_rev": "848341f061359ef7ddc0cad472c2ecbb036b28ac", "file_rev": "0e09370f581ab6388d46fda4cdab66638c0171a1",
diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart index 182872b..9a9f029 100644 --- a/sdk/lib/html/dart2js/html_dart2js.dart +++ b/sdk/lib/html/dart2js/html_dart2js.dart
@@ -13989,6 +13989,40 @@ 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 @@ 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;
diff --git a/tests/lib/html/request_fullscreen_test.dart b/tests/lib/html/request_fullscreen_test.dart new file mode 100644 index 0000000..2138e2d --- /dev/null +++ b/tests/lib/html/request_fullscreen_test.dart
@@ -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((_) {}); +}
diff --git a/tests/lib_2/html/request_fullscreen_test.dart b/tests/lib_2/html/request_fullscreen_test.dart new file mode 100644 index 0000000..2138e2d --- /dev/null +++ b/tests/lib_2/html/request_fullscreen_test.dart
@@ -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((_) {}); +}
diff --git a/tools/VERSION b/tools/VERSION index 3a2798d..a4cf01a 100644 --- a/tools/VERSION +++ b/tools/VERSION
@@ -27,5 +27,5 @@ MAJOR 2 MINOR 17 PATCH 0 -PRERELEASE 54 +PRERELEASE 55 PRERELEASE_PATCH 0 \ No newline at end of file
diff --git a/tools/dom/idl/dart/dart.idl b/tools/dom/idl/dart/dart.idl index 699473c..ac5b337 100644 --- a/tools/dom/idl/dart/dart.idl +++ b/tools/dom/idl/dart/dart.idl
@@ -523,8 +523,10 @@ [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);
diff --git a/tools/dom/templates/html/impl/impl_Element.darttemplate b/tools/dom/templates/html/impl/impl_Element.darttemplate index 046addf..6f5d05c 100644 --- a/tools/dom/templates/html/impl/impl_Element.darttemplate +++ b/tools/dom/templates/html/impl/impl_Element.darttemplate
@@ -1584,6 +1584,40 @@ 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 }