diff --git a/ci/licenses_golden/excluded_files b/ci/licenses_golden/excluded_files index 2d0dbbe4c1f55..717861a002dd6 100644 --- a/ci/licenses_golden/excluded_files +++ b/ci/licenses_golden/excluded_files @@ -408,6 +408,7 @@ ../../../flutter/third_party/web_locale_keymap/README.md ../../../flutter/third_party/web_locale_keymap/pubspec.yaml ../../../flutter/third_party/web_locale_keymap/test +../../../flutter/third_party/web_sdk_version/pubspec.yaml ../../../flutter/third_party/web_test_fonts/pubspec.yaml ../../../flutter/third_party/web_unicode/README.md ../../../flutter/third_party/web_unicode/pubspec.yaml diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index e0abd2eea3a4c..377e52850658f 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -680,6 +680,7 @@ LIBRARY: engine LIBRARY: spring_animation LIBRARY: tonic LIBRARY: txt +LIBRARY: web_sdk_version LIBRARY: web_test_fonts LIBRARY: web_unicode ORIGIN: ../../../flutter/LICENSE @@ -3168,6 +3169,8 @@ ORIGIN: ../../../flutter/third_party/txt/src/txt/platform_fuchsia.cc + ../../../ ORIGIN: ../../../flutter/third_party/txt/src/txt/platform_linux.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/third_party/txt/src/txt/platform_mac.mm + ../../../flutter/LICENSE ORIGIN: ../../../flutter/third_party/txt/src/txt/platform_windows.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/third_party/web_sdk_version/lib/web_sdk_version.dart + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/third_party/web_sdk_version/lib/web_sdk_version/web_sdk_version.dart + ../../../flutter/LICENSE ORIGIN: ../../../flutter/third_party/web_test_fonts/lib/web_test_fonts.dart + ../../../flutter/LICENSE ORIGIN: ../../../flutter/third_party/web_test_fonts/lib/web_test_fonts/web_test_fonts.dart + ../../../flutter/LICENSE ORIGIN: ../../../flutter/third_party/web_unicode/lib/web_unicode.dart + ../../../flutter/LICENSE @@ -5717,6 +5720,8 @@ FILE: ../../../flutter/third_party/txt/src/txt/platform_fuchsia.cc FILE: ../../../flutter/third_party/txt/src/txt/platform_linux.cc FILE: ../../../flutter/third_party/txt/src/txt/platform_mac.mm FILE: ../../../flutter/third_party/txt/src/txt/platform_windows.cc +FILE: ../../../flutter/third_party/web_sdk_version/lib/web_sdk_version.dart +FILE: ../../../flutter/third_party/web_sdk_version/lib/web_sdk_version/web_sdk_version.dart FILE: ../../../flutter/third_party/web_test_fonts/lib/web_test_fonts.dart FILE: ../../../flutter/third_party/web_test_fonts/lib/web_test_fonts/web_test_fonts.dart FILE: ../../../flutter/third_party/web_unicode/lib/web_unicode.dart diff --git a/lib/web_ui/lib/src/engine/configuration.dart b/lib/web_ui/lib/src/engine/configuration.dart index e153286f711f8..1307073277d44 100644 --- a/lib/web_ui/lib/src/engine/configuration.dart +++ b/lib/web_ui/lib/src/engine/configuration.dart @@ -46,14 +46,11 @@ library configuration; import 'package:js/js.dart'; import 'package:meta/meta.dart'; +import 'package:web_sdk_version/web_sdk_version.dart'; + import 'canvaskit/renderer.dart'; import 'dom.dart'; -/// The version of CanvasKit used by the web engine by default. -// DO NOT EDIT THE NEXT LINE OF CODE MANUALLY -// See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. -const String _canvaskitVersion = '0.38.0'; - /// The Web Engine configuration for the current application. FlutterConfiguration get configuration => _configuration ??= FlutterConfiguration.legacy(_jsConfiguration); @@ -182,7 +179,7 @@ class FlutterConfiguration { String get canvasKitBaseUrl => _configuration?.canvasKitBaseUrl ?? _defaultCanvasKitBaseUrl; static const String _defaultCanvasKitBaseUrl = String.fromEnvironment( 'FLUTTER_WEB_CANVASKIT_URL', - defaultValue: 'https://unpkg.com/canvaskit-wasm@$_canvaskitVersion/bin/', + defaultValue: 'https://gstatic.com/flutter-canvaskit/$flutterWebSdkVersion/' ); /// The variant of CanvasKit to download. diff --git a/lib/web_ui/pubspec.yaml b/lib/web_ui/pubspec.yaml index f35dafac5ca0f..f3f239f86e55c 100644 --- a/lib/web_ui/pubspec.yaml +++ b/lib/web_ui/pubspec.yaml @@ -17,6 +17,9 @@ dependencies: web_test_fonts: path: ../../third_party/web_test_fonts + web_sdk_version: + path: ../../third_party/web_sdk_version + dev_dependencies: analyzer: 5.2.0 archive: 3.1.2 diff --git a/third_party/web_sdk_version/BUILD.gn b/third_party/web_sdk_version/BUILD.gn new file mode 100644 index 0000000000000..5cb367593894b --- /dev/null +++ b/third_party/web_sdk_version/BUILD.gn @@ -0,0 +1,43 @@ +import("//flutter/shell/version.gni") +import("//third_party/dart/build/dart/dart_action.gni") + +dart_sdk_package_config = "//third_party/dart/.dart_tool/package_config.json" + +prebuilt_dart_action("web_sdk_version") { + packages = dart_sdk_package_config + pool = "//flutter/build/dart:dart_pool" + + script = "version_writer.dart" + inputs = [ "version_writer.dart" ] + + stamp_location = "$target_gen_dir/$target_name.stamp" + outputs = [ + stamp_location, + invoker.output_dir, + ] + + input_dir = rebase_path(invoker.input_dir) + output_dir = rebase_path(invoker.output_dir) + + args = [ + "--output-dir=$output_dir", + "--input-dir=$input_dir", + "--stamp", + rebase_path(stamp_location, root_build_dir), + ] + if (ui) { + args += [ "--ui" ] + } else { + library_name = invoker.library_name + api_file = rebase_path(invoker.api_file) + args += [ + "--library-name=$library_name", + "--api-file=$api_file", + ] + } + + foreach(source_file, source_dart_files) { + path = rebase_path(source_file) + args += [ "--source-file=$path" ] + } +} diff --git a/third_party/web_sdk_version/lib/web_sdk_version.dart b/third_party/web_sdk_version/lib/web_sdk_version.dart new file mode 100644 index 0000000000000..fe6c9c5ebe5e0 --- /dev/null +++ b/third_party/web_sdk_version/lib/web_sdk_version.dart @@ -0,0 +1,7 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +library web_sdk_version; + +export 'web_sdk_version/web_sdk_version.dart'; diff --git a/third_party/web_sdk_version/lib/web_sdk_version/web_sdk_version.dart b/third_party/web_sdk_version/lib/web_sdk_version/web_sdk_version.dart new file mode 100644 index 0000000000000..b4b52c57d5ab9 --- /dev/null +++ b/third_party/web_sdk_version/lib/web_sdk_version/web_sdk_version.dart @@ -0,0 +1,10 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// NOTE: This file is just a stub. The actual file is generated at build time +// with the actual current Git commit SHA. This stub is just here for local +// development. + +/// The Git SHA of the Flutter Engine. +const String flutterWebSdkVersion = 'IF YOU SEE THIS, FILE A BUG: https://github.com/flutter/flutter/issues/new?assignees=&labels=&template=2_bug.md&title='; diff --git a/third_party/web_sdk_version/pubspec.yaml b/third_party/web_sdk_version/pubspec.yaml new file mode 100644 index 0000000000000..102ae4aef7f27 --- /dev/null +++ b/third_party/web_sdk_version/pubspec.yaml @@ -0,0 +1,6 @@ +name: web_sdk_version + +publish_to: none + +environment: + sdk: ">=2.12.0-0 <3.0.0" diff --git a/web_sdk/BUILD.gn b/web_sdk/BUILD.gn index 957510f08ef93..86931fd239b29 100644 --- a/web_sdk/BUILD.gn +++ b/web_sdk/BUILD.gn @@ -4,6 +4,7 @@ import("//flutter/build/zip_bundle.gni") import("//flutter/common/config.gni") +import("//flutter/shell/version/version.gni") import("//third_party/dart/build/dart/dart_action.gni") dart_sdk_package_config = "//third_party/dart/.dart_tool/package_config.json" @@ -24,6 +25,7 @@ web_engine_libraries = [ ":web_unicode_library", ":web_test_fonts_library", ":web_locale_keymap_library", + ":web_sdk_version_library", ] group("web_sdk") { @@ -151,6 +153,14 @@ sdk_rewriter("web_locale_keymap_library") { output_dir = "$root_out_dir/flutter_web_sdk/lib/_web_locale_keymap/" } +generated_file("web_sdk_version_library") { + outputs = [ + "$root_out_dir/flutter_web_sdk/lib/_web_sdk_version/web_sdk_version.dart", + ] + + contents = "// Copyright 2013 The Flutter Authors. All rights reserved.$0x0A// Use of this source code is governed by a BSD-style license that can be$0x0A// found in the LICENSE file.$0x0A$0x0A@JS()$0x0Alibrary dart._web_sdk_version;$0x0A$0x0Aimport 'dart:_js_annotations';$0x0A$0x0Aconst String flutterWebSdkVersion = '$engine_version';$0x0A" +} + copy("web_ui_library") { sources = [ "//flutter/web_sdk/libraries.json" ] @@ -314,6 +324,8 @@ template("_compile_platform") { "dart:_web_unicode", "--source", "dart:_web_locale_keymap", + "--source", + "dart:_web_sdk_version", ] if (flutter_prebuilt_dart_sdk) { args += [ diff --git a/web_sdk/libraries.json b/web_sdk/libraries.json index b55cd2bac65eb..66e04eb053801 100644 --- a/web_sdk/libraries.json +++ b/web_sdk/libraries.json @@ -26,6 +26,9 @@ }, "_web_test_fonts": { "uri": "lib/_web_test_fonts/web_test_fonts.dart" + }, + "_web_sdk_version": { + "uri": "lib/_web_sdk_version/web_sdk_version.dart" } } }, @@ -54,6 +57,9 @@ }, "_web_test_fonts": { "uri": "lib/_web_test_fonts/web_test_fonts.dart" + }, + "_web_sdk_version": { + "uri": "lib/_web_sdk_version/web_sdk_version.dart" } } }, @@ -82,6 +88,9 @@ }, "_web_test_fonts": { "uri": "lib/_web_test_fonts/web_test_fonts.dart" + }, + "_web_sdk_version": { + "uri": "lib/_web_sdk_version/web_sdk_version.dart" } } } diff --git a/web_sdk/libraries.yaml b/web_sdk/libraries.yaml index d447436aea738..765068efde506 100644 --- a/web_sdk/libraries.yaml +++ b/web_sdk/libraries.yaml @@ -36,6 +36,9 @@ dartdevc: _web_test_fonts: uri: "lib/_web_test_fonts/web_test_fonts.dart" + _web_sdk_version: + uri: "lib/_web_sdk_version/web_sdk_version.dart" + dart2js: include: - {path: "../dart-sdk/lib/libraries.json", target: dart2js} @@ -59,6 +62,9 @@ dart2js: _web_test_fonts: uri: "lib/_web_test_fonts/web_test_fonts.dart" + _web_sdk_version: + uri: "lib/_web_sdk_version/web_sdk_version.dart" + wasm: include: - {path: "../dart-sdk/lib/libraries.json", target: wasm} @@ -81,3 +87,6 @@ wasm: _web_test_fonts: uri: "lib/_web_test_fonts/web_test_fonts.dart" + + _web_sdk_version: + uri: "lib/_web_sdk_version/web_sdk_version.dart" diff --git a/web_sdk/sdk_rewriter.dart b/web_sdk/sdk_rewriter.dart index 77339f913667f..421fd037b81c8 100644 --- a/web_sdk/sdk_rewriter.dart +++ b/web_sdk/sdk_rewriter.dart @@ -96,6 +96,7 @@ final Map extraImportsMap = { 'web_unicode': "import 'dart:_web_unicode';", 'web_test_fonts': "import 'dart:_web_test_fonts';", 'web_locale_keymap': "import 'dart:_web_locale_keymap' as locale_keymap;", + 'web_sdk_version': "import 'dart:_web_sdk_version';", }; // Rewrites the "package"-style web ui library into a dart:ui implementation. diff --git a/web_sdk/test/sdk_rewriter_test.dart b/web_sdk/test/sdk_rewriter_test.dart index 5602bb5679f41..fc65627ff0532 100644 --- a/web_sdk/test/sdk_rewriter_test.dart +++ b/web_sdk/test/sdk_rewriter_test.dart @@ -132,18 +132,21 @@ void printSomething() { "import 'dart:_web_unicode';", "import 'dart:_web_test_fonts';", "import 'dart:_web_locale_keymap' as locale_keymap;", + "import 'dart:_web_sdk_version';", ]); expect(getExtraImportsForLibrary('skwasm_stub'), [ "import 'dart:_engine';", "import 'dart:_web_unicode';", "import 'dart:_web_test_fonts';", "import 'dart:_web_locale_keymap' as locale_keymap;", + "import 'dart:_web_sdk_version';", ]); expect(getExtraImportsForLibrary('skwasm_impl'), [ "import 'dart:_engine';", "import 'dart:_web_unicode';", "import 'dart:_web_test_fonts';", "import 'dart:_web_locale_keymap' as locale_keymap;", + "import 'dart:_web_sdk_version';", "import 'dart:ffi';", ]); @@ -151,5 +154,6 @@ void printSomething() { expect(getExtraImportsForLibrary('web_unicode'), isEmpty); expect(getExtraImportsForLibrary('web_test_fonts'), isEmpty); expect(getExtraImportsForLibrary('web_locale_keymap'), isEmpty); + expect(getExtraImportsForLibrary('web_sdk_version'), isEmpty); }); }