mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Introduce unit tests and refactor web dart:ui into "package" (flutter/engine#8346)
This commit is contained in:
parent
9a54dbc65a
commit
2df6e9157a
@ -246,21 +246,21 @@ FILE: ../../../flutter/lib/io/dart_io.cc
|
||||
FILE: ../../../flutter/lib/io/dart_io.h
|
||||
FILE: ../../../flutter/lib/snapshot/libraries.json
|
||||
FILE: ../../../flutter/lib/snapshot/snapshot.h
|
||||
FILE: ../../../flutter/lib/stub_ui/compositing.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/geometry.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/hash_codes.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/hooks.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/isolate_name_server.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lerp.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/natives.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/painting.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/plugins.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/pointer.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/semantics.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/text.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/ui.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/versions.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/window.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lib/compositing.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lib/geometry.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lib/hash_codes.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lib/hooks.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lib/isolate_name_server.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lib/lerp.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lib/natives.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lib/painting.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lib/plugins.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lib/pointer.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lib/semantics.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lib/text.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lib/ui.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lib/versions.dart
|
||||
FILE: ../../../flutter/lib/stub_ui/lib/window.dart
|
||||
FILE: ../../../flutter/lib/ui/compositing.dart
|
||||
FILE: ../../../flutter/lib/ui/compositing/scene.cc
|
||||
FILE: ../../../flutter/lib/ui/compositing/scene.h
|
||||
@ -751,6 +751,7 @@ FILE: ../../../flutter/web_sdk/flutter_kernel_sdk.dart
|
||||
FILE: ../../../flutter/web_sdk/libraries.dart
|
||||
FILE: ../../../flutter/web_sdk/libraries.json
|
||||
FILE: ../../../flutter/web_sdk/make_combined_sdk.dart
|
||||
FILE: ../../../flutter/web_sdk/sdk_rewriter.dart
|
||||
----------------------------------------------------------------------------------------------------
|
||||
Copyright 2013 The Flutter Authors. All rights reserved.
|
||||
|
||||
|
||||
@ -9,21 +9,21 @@ sdk_dill = "$root_out_dir/flutter_web_sdk/kernel/flutter_ddc_sdk.dill"
|
||||
sdk_libraries_json = "$flutter_root/web_sdk/libraries.json"
|
||||
|
||||
web_ui_sources = [
|
||||
"$flutter_root/lib/stub_ui/compositing.dart",
|
||||
"$flutter_root/lib/stub_ui/geometry.dart",
|
||||
"$flutter_root/lib/stub_ui/hash_codes.dart",
|
||||
"$flutter_root/lib/stub_ui/hooks.dart",
|
||||
"$flutter_root/lib/stub_ui/isolate_name_server.dart",
|
||||
"$flutter_root/lib/stub_ui/lerp.dart",
|
||||
"$flutter_root/lib/stub_ui/natives.dart",
|
||||
"$flutter_root/lib/stub_ui/painting.dart",
|
||||
"$flutter_root/lib/stub_ui/plugins.dart",
|
||||
"$flutter_root/lib/stub_ui/pointer.dart",
|
||||
"$flutter_root/lib/stub_ui/semantics.dart",
|
||||
"$flutter_root/lib/stub_ui/text.dart",
|
||||
"$flutter_root/lib/stub_ui/ui.dart",
|
||||
"$flutter_root/lib/stub_ui/versions.dart",
|
||||
"$flutter_root/lib/stub_ui/window.dart",
|
||||
"$flutter_root/lib/stub_ui/lib/compositing.dart",
|
||||
"$flutter_root/lib/stub_ui/lib/geometry.dart",
|
||||
"$flutter_root/lib/stub_ui/lib/hash_codes.dart",
|
||||
"$flutter_root/lib/stub_ui/lib/hooks.dart",
|
||||
"$flutter_root/lib/stub_ui/lib/isolate_name_server.dart",
|
||||
"$flutter_root/lib/stub_ui/lib/lerp.dart",
|
||||
"$flutter_root/lib/stub_ui/lib/natives.dart",
|
||||
"$flutter_root/lib/stub_ui/lib/painting.dart",
|
||||
"$flutter_root/lib/stub_ui/lib/plugins.dart",
|
||||
"$flutter_root/lib/stub_ui/lib/pointer.dart",
|
||||
"$flutter_root/lib/stub_ui/lib/semantics.dart",
|
||||
"$flutter_root/lib/stub_ui/lib/text.dart",
|
||||
"$flutter_root/lib/stub_ui/lib/ui.dart",
|
||||
"$flutter_root/lib/stub_ui/lib/versions.dart",
|
||||
"$flutter_root/lib/stub_ui/lib/window.dart",
|
||||
]
|
||||
|
||||
group("web_sdk") {
|
||||
@ -33,12 +33,23 @@ group("web_sdk") {
|
||||
]
|
||||
}
|
||||
|
||||
copy("web_ui_sources") {
|
||||
sources = web_ui_sources
|
||||
prebuilt_dart_action("web_ui_sources") {
|
||||
inputs = web_ui_sources + [ "sdk_rewriter.dart" ]
|
||||
|
||||
packages = "//third_party/dart/.packages"
|
||||
script = "sdk_rewriter.dart"
|
||||
output_dir = rebase_path("$root_out_dir/flutter_web_sdk/lib/ui/")
|
||||
|
||||
args = [ "--output-dir=$output_dir" ]
|
||||
|
||||
outputs = [
|
||||
"$root_out_dir/flutter_web_sdk/lib/ui/{{source_file_part}}",
|
||||
"$root_out_dir/flutter_web_sdk_stamp",
|
||||
]
|
||||
|
||||
foreach(source_file, web_ui_sources) {
|
||||
path = rebase_path(source_file)
|
||||
args += [ "--input=$path" ]
|
||||
}
|
||||
}
|
||||
|
||||
copy("web_ui_library") {
|
||||
|
||||
41
engine/src/flutter/web_sdk/sdk_rewriter.dart
Normal file
41
engine/src/flutter/web_sdk/sdk_rewriter.dart
Normal file
@ -0,0 +1,41 @@
|
||||
// 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.
|
||||
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:args/args.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
|
||||
final ArgParser argParser = ArgParser()
|
||||
..addOption('output-dir')
|
||||
..addMultiOption('input');
|
||||
|
||||
const Pattern packageLibraryName = 'library ui;';
|
||||
const Pattern packagePartName = 'part of ui;';
|
||||
const Pattern coreLibraryName = 'library dart.ui;';
|
||||
const Pattern corePartName = 'part of dart.ui;';
|
||||
|
||||
// Rewrites the "package"-style web ui library into a dart:ui implementation.
|
||||
// So far this only requires a replace of the library declarations.
|
||||
void main(List<String> arguments) {
|
||||
final ArgResults results = argParser.parse(arguments);
|
||||
final Directory directory = Directory(results['output-dir']);
|
||||
if (!directory.existsSync()) {
|
||||
directory.createSync(recursive: true);
|
||||
}
|
||||
for (String inputFilePath in results['input']) {
|
||||
final File inputFile = File(inputFilePath);
|
||||
final String fileName = path.split(inputFilePath).last;
|
||||
final File outputFile = File(path.join(directory.path, fileName))
|
||||
..createSync();
|
||||
String source;
|
||||
if (fileName == 'ui.dart') {
|
||||
source = inputFile.readAsStringSync().replaceFirst(packageLibraryName, coreLibraryName);
|
||||
outputFile.writeAsStringSync(source);
|
||||
} else {
|
||||
source = inputFile.readAsStringSync().replaceFirst(packagePartName, corePartName);
|
||||
}
|
||||
outputFile.writeAsStringSync(source);
|
||||
}
|
||||
}
|
||||
@ -8,7 +8,7 @@ int main() {
|
||||
// These files just contain imports to the part files;
|
||||
final CompilationUnit uiUnit = parseDartFile('lib/ui/ui.dart',
|
||||
parseFunctionBodies: false, suppressErrors: false);
|
||||
final CompilationUnit webUnit = parseDartFile('lib/stub_ui/ui.dart',
|
||||
final CompilationUnit webUnit = parseDartFile('lib/stub_ui/lib/ui.dart',
|
||||
parseFunctionBodies: false, suppressErrors: false);
|
||||
final Map<String, ClassDeclaration> uiClasses = <String, ClassDeclaration>{};
|
||||
final Map<String, ClassDeclaration> webClasses = <String, ClassDeclaration>{};
|
||||
@ -16,7 +16,7 @@ int main() {
|
||||
// Gather all public classes from each library. For now we are skiping
|
||||
// other top level members.
|
||||
_collectPublicClasses(uiUnit, uiClasses, 'lib/ui/');
|
||||
_collectPublicClasses(webUnit, webClasses, 'lib/stub_ui/');
|
||||
_collectPublicClasses(webUnit, webClasses, 'lib/stub_ui/lib/');
|
||||
|
||||
if (uiClasses.isEmpty || webClasses.isEmpty) {
|
||||
print('Warning: did not resolve any classes.');
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user