diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 26859be7..23b1d427 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: fail-fast: false matrix: # TODO(srujzs): Replace with stable when 3.3 is out. - sdk: [beta] + sdk: [dev, 3.3] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 @@ -46,8 +46,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - # TODO(srujzs): Add back stable when 3.3 is out. - sdk: [dev, beta] + sdk: [dev, 3.3] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 @@ -68,7 +67,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - sdk: [main, dev] + sdk: [dev] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 diff --git a/CHANGELOG.md b/CHANGELOG.md index 46644a03..a6dcdcd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.5.1-wip + +- Add [`TrustedTypes`](https://web.dev/trusted-types) members. + ## 0.5.0 - Redeprecate APIs that were deprecated in `0.4.1` but undeprecated in `0.4.2`. diff --git a/lib/src/dom.dart b/lib/src/dom.dart index a426364e..a0f35986 100644 --- a/lib/src/dom.dart +++ b/lib/src/dom.dart @@ -91,6 +91,7 @@ export 'dom/streams.dart'; export 'dom/svg.dart'; export 'dom/svg_animations.dart'; export 'dom/touch_events.dart'; +export 'dom/trusted_types.dart'; export 'dom/uievents.dart'; export 'dom/url.dart'; export 'dom/user_timing.dart'; diff --git a/lib/src/dom/html.dart b/lib/src/dom/html.dart index 4bc99a51..f3fd6edb 100644 --- a/lib/src/dom/html.dart +++ b/lib/src/dom/html.dart @@ -38,6 +38,7 @@ import 'selection_api.dart'; import 'service_workers.dart'; import 'speech_api.dart'; import 'storage.dart'; +import 'trusted_types.dart'; import 'uievents.dart'; import 'vibration.dart'; import 'web_locks.dart'; @@ -3094,6 +3095,7 @@ extension type Window._(JSObject _) implements EventTarget, JSObject { external bool get isSecureContext; external bool get crossOriginIsolated; external CacheStorage get caches; + external TrustedTypePolicyFactory get trustedTypes; external Storage get sessionStorage; external Storage get localStorage; } @@ -3745,6 +3747,7 @@ extension type WorkerGlobalScope._(JSObject _) external bool get isSecureContext; external bool get crossOriginIsolated; external CacheStorage get caches; + external TrustedTypePolicyFactory get trustedTypes; } extension type DedicatedWorkerGlobalScope._(JSObject _) implements WorkerGlobalScope, JSObject { diff --git a/lib/src/dom/trusted_types.dart b/lib/src/dom/trusted_types.dart new file mode 100644 index 00000000..5d5e60ed --- /dev/null +++ b/lib/src/dom/trusted_types.dart @@ -0,0 +1,82 @@ +// Copyright (c) 2024, 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. + +// Generated from Web IDL definitions. + +@JS() +library; + +import 'dart:js_interop'; + +typedef HTMLString = String; +typedef ScriptString = String; +typedef ScriptURLString = String; +typedef TrustedType = JSObject; +typedef CreateHTMLCallback = JSFunction; +typedef CreateScriptCallback = JSFunction; +typedef CreateScriptURLCallback = JSFunction; +extension type TrustedHTML._(JSObject _) implements JSObject { + external static TrustedHTML fromLiteral(JSObject templateStringsArray); + external String toJSON(); +} +extension type TrustedScript._(JSObject _) implements JSObject { + external static TrustedScript fromLiteral(JSObject templateStringsArray); + external String toJSON(); +} +extension type TrustedScriptURL._(JSObject _) implements JSObject { + external static TrustedScriptURL fromLiteral(JSObject templateStringsArray); + external String toJSON(); +} +extension type TrustedTypePolicyFactory._(JSObject _) implements JSObject { + external TrustedTypePolicy createPolicy( + String policyName, [ + TrustedTypePolicyOptions policyOptions, + ]); + external bool isHTML(JSAny? value); + external bool isScript(JSAny? value); + external bool isScriptURL(JSAny? value); + external String? getAttributeType( + String tagName, + String attribute, [ + String elementNs, + String attrNs, + ]); + external String? getPropertyType( + String tagName, + String property, [ + String elementNs, + ]); + external TrustedHTML get emptyHTML; + external TrustedScript get emptyScript; + external TrustedTypePolicy? get defaultPolicy; +} +extension type TrustedTypePolicy._(JSObject _) implements JSObject { + external TrustedHTML createHTML( + String input, + JSAny? arguments, + ); + external TrustedScript createScript( + String input, + JSAny? arguments, + ); + external TrustedScriptURL createScriptURL( + String input, + JSAny? arguments, + ); + external String get name; +} +extension type TrustedTypePolicyOptions._(JSObject _) implements JSObject { + external factory TrustedTypePolicyOptions({ + CreateHTMLCallback createHTML, + CreateScriptCallback createScript, + CreateScriptURLCallback createScriptURL, + }); + + external set createHTML(CreateHTMLCallback value); + external CreateHTMLCallback get createHTML; + external set createScript(CreateScriptCallback value); + external CreateScriptCallback get createScript; + external set createScriptURL(CreateScriptURLCallback value); + external CreateScriptURLCallback get createScriptURL; +} diff --git a/pubspec.yaml b/pubspec.yaml index 3f3e17cd..7e3614da 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,10 +1,10 @@ name: web -version: 0.5.0 +version: 0.5.1-wip description: Lightweight browser API bindings built around JS static interop. repository: https://github.com/dart-lang/web environment: - sdk: ^3.3.0-76.0.dev + sdk: ^3.3.0 dev_dependencies: analyzer: ^6.3.0 diff --git a/tool/generator/translator.dart b/tool/generator/translator.dart index fde22cb6..dcfab8bd 100644 --- a/tool/generator/translator.dart +++ b/tool/generator/translator.dart @@ -976,6 +976,7 @@ class Translator { 'touch-events', 'vibration', 'webrtc-stats', + 'trusted-types', }; if (allowList.contains(name)) { return true;