From c3f4c1a0851cd80369c8c336eef5bb8084d46e57 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Sat, 22 Feb 2020 12:59:35 -0800 Subject: [PATCH 001/521] Migrate Path to AssociateWithDartWrapper (#16753) --- lib/ui/painting.dart | 32 ++++++++++++++++----------- lib/ui/painting/path.cc | 18 +++++++-------- lib/ui/painting/path.h | 19 +++++++++++----- lib/ui/painting/path_measure.cc | 39 +++++++++++++++++---------------- lib/ui/painting/path_measure.h | 15 +++++++------ 5 files changed, 68 insertions(+), 55 deletions(-) diff --git a/lib/ui/painting.dart b/lib/ui/painting.dart index 2d3b230d2ecb0..8497cb065834c 100644 --- a/lib/ui/painting.dart +++ b/lib/ui/painting.dart @@ -1893,20 +1893,20 @@ class Path extends NativeFieldWrapperClass2 { Path() { _constructor(); } void _constructor() native 'Path_constructor'; - // Workaround for tonic, which expects classes with native fields to have a - // private constructor. - // TODO(dnfield): rework this to use ClaimNativeField - https://github.com/flutter/flutter/issues/50997 - @pragma('vm:entry-point') - Path._() { _constructor(); } + /// Avoids creating a new native backing for the path for methods that will + /// create it later, such as [Path.from], [shift] and [transform]. + Path._(); /// Creates a copy of another [Path]. /// /// This copy is fast and does not require additional memory unless either /// the `source` path or the path returned by this constructor are modified. factory Path.from(Path source) { - return source._clone(); + final Path clonedPath = Path._(); + source._clone(clonedPath); + return clonedPath; } - Path _clone() native 'Path_clone'; + void _clone(Path outPath) native 'Path_clone'; /// Determines how the interior of this path is calculated. /// @@ -2169,17 +2169,21 @@ class Path extends NativeFieldWrapperClass2 { /// sub-path translated by the given offset. Path shift(Offset offset) { assert(_offsetIsValid(offset)); - return _shift(offset.dx, offset.dy); + final Path path = Path._(); + _shift(path, offset.dx, offset.dy); + return path; } - Path _shift(double dx, double dy) native 'Path_shift'; + void _shift(Path outPath, double dx, double dy) native 'Path_shift'; /// Returns a copy of the path with all the segments of every /// sub-path transformed by the given matrix. Path transform(Float64List matrix4) { assert(_matrix4IsValid(matrix4)); - return _transform(matrix4); + final Path path = Path._(); + _transform(path, matrix4); + return path; } - Path _transform(Float64List matrix4) native 'Path_transform'; + void _transform(Path outPath, Float64List matrix4) native 'Path_transform'; /// Computes the bounding rectangle for this path. /// @@ -2455,9 +2459,11 @@ class _PathMeasure extends NativeFieldWrapperClass2 { Path extractPath(int contourIndex, double start, double end, {bool startWithMoveTo = true}) { assert(contourIndex <= currentContourIndex, 'Iterator must be advanced before index $contourIndex can be used.'); - return _extractPath(contourIndex, start, end, startWithMoveTo: startWithMoveTo); + final Path path = Path._(); + _extractPath(path, contourIndex, start, end, startWithMoveTo: startWithMoveTo); + return path; } - Path _extractPath(int contourIndex, double start, double end, {bool startWithMoveTo = true}) native 'PathMeasure_getSegment'; + void _extractPath(Path outPath, int contourIndex, double start, double end, {bool startWithMoveTo = true}) native 'PathMeasure_getSegment'; bool isClosed(int contourIndex) { assert(contourIndex <= currentContourIndex, 'Iterator must be advanced before index $contourIndex can be used.'); diff --git a/lib/ui/painting/path.cc b/lib/ui/painting/path.cc index e9f74255b5b9a..0c053c558d332 100644 --- a/lib/ui/painting/path.cc +++ b/lib/ui/painting/path.cc @@ -20,7 +20,7 @@ namespace flutter { typedef CanvasPath Path; static void Path_constructor(Dart_NativeArguments args) { - DartCallConstructor(&CanvasPath::Create, args); + DartCallConstructor(&CanvasPath::CreateNew, args); } IMPLEMENT_WRAPPERTYPEINFO(ui, Path); @@ -262,17 +262,16 @@ bool CanvasPath::contains(double x, double y) { return path_.contains(x, y); } -fml::RefPtr CanvasPath::shift(double dx, double dy) { - fml::RefPtr path = CanvasPath::Create(); +void CanvasPath::shift(Dart_Handle path_handle, double dx, double dy) { + fml::RefPtr path = CanvasPath::Create(path_handle); path_.offset(dx, dy, &path->path_); - return path; } -fml::RefPtr CanvasPath::transform(tonic::Float64List& matrix4) { - fml::RefPtr path = CanvasPath::Create(); +void CanvasPath::transform(Dart_Handle path_handle, + tonic::Float64List& matrix4) { + fml::RefPtr path = CanvasPath::Create(path_handle); path_.transform(ToSkMatrix(matrix4), &path->path_); matrix4.Release(); - return path; } tonic::Float32List CanvasPath::getBounds() { @@ -289,12 +288,11 @@ bool CanvasPath::op(CanvasPath* path1, CanvasPath* path2, int operation) { return Op(path1->path(), path2->path(), (SkPathOp)operation, &path_); } -fml::RefPtr CanvasPath::clone() { - fml::RefPtr path = CanvasPath::Create(); +void CanvasPath::clone(Dart_Handle path_handle) { + fml::RefPtr path = CanvasPath::Create(path_handle); // per Skia docs, this will create a fast copy // data is shared until the source path or dest path are mutated path->path_ = path_; - return path; } } // namespace flutter diff --git a/lib/ui/painting/path.h b/lib/ui/painting/path.h index c7be3c83b9f87..7deb50e4e7d7c 100644 --- a/lib/ui/painting/path.h +++ b/lib/ui/painting/path.h @@ -23,12 +23,19 @@ class CanvasPath : public RefCountedDartWrappable { public: ~CanvasPath() override; - static fml::RefPtr Create() { + static fml::RefPtr CreateNew(Dart_Handle path_handle) { return fml::MakeRefCounted(); } - static fml::RefPtr CreateFrom(const SkPath& src) { - fml::RefPtr path = CanvasPath::Create(); + static fml::RefPtr Create(Dart_Handle path_handle) { + auto path = fml::MakeRefCounted(); + path->AssociateWithDartWrapper(path_handle); + return path; + } + + static fml::RefPtr CreateFrom(Dart_Handle path_handle, + const SkPath& src) { + fml::RefPtr path = CanvasPath::Create(path_handle); path->path_ = src; return path; } @@ -95,11 +102,11 @@ class CanvasPath : public RefCountedDartWrappable { void close(); void reset(); bool contains(double x, double y); - fml::RefPtr shift(double dx, double dy); - fml::RefPtr transform(tonic::Float64List& matrix4); + void shift(Dart_Handle path_handle, double dx, double dy); + void transform(Dart_Handle path_handle, tonic::Float64List& matrix4); tonic::Float32List getBounds(); bool op(CanvasPath* path1, CanvasPath* path2, int operation); - fml::RefPtr clone(); + void clone(Dart_Handle path_handle); const SkPath& path() const { return path_; } diff --git a/lib/ui/painting/path_measure.cc b/lib/ui/painting/path_measure.cc index d195485d83652..2bc35cab4479c 100644 --- a/lib/ui/painting/path_measure.cc +++ b/lib/ui/painting/path_measure.cc @@ -65,26 +65,26 @@ void CanvasPathMeasure::setPath(const CanvasPath* path, bool isClosed) { path_measure_->reset(skPath, isClosed); } -float CanvasPathMeasure::getLength(int contourIndex) { +float CanvasPathMeasure::getLength(int contour_index) { if (static_cast>::size_type>( - contourIndex) < measures_.size()) { - return measures_[contourIndex]->length(); + contour_index) < measures_.size()) { + return measures_[contour_index]->length(); } return -1; } -tonic::Float32List CanvasPathMeasure::getPosTan(int contourIndex, +tonic::Float32List CanvasPathMeasure::getPosTan(int contour_index, float distance) { tonic::Float32List posTan(Dart_NewTypedData(Dart_TypedData_kFloat32, 5)); posTan[0] = 0; // dart code will check for this for failure if (static_cast>::size_type>( - contourIndex) >= measures_.size()) { + contour_index) >= measures_.size()) { return posTan; } SkPoint pos; SkVector tan; - bool success = measures_[contourIndex]->getPosTan(distance, &pos, &tan); + bool success = measures_[contour_index]->getPosTan(distance, &pos, &tan); if (success) { posTan[0] = 1; // dart code will check for this for success @@ -97,28 +97,29 @@ tonic::Float32List CanvasPathMeasure::getPosTan(int contourIndex, return posTan; } -fml::RefPtr CanvasPathMeasure::getSegment(int contourIndex, - float startD, - float stopD, - bool startWithMoveTo) { +void CanvasPathMeasure::getSegment(Dart_Handle path_handle, + int contour_index, + float start_d, + float stop_d, + bool start_with_move_to) { if (static_cast>::size_type>( - contourIndex) >= measures_.size()) { - return CanvasPath::Create(); + contour_index) >= measures_.size()) { + CanvasPath::Create(path_handle); } SkPath dst; - bool success = - measures_[contourIndex]->getSegment(startD, stopD, &dst, startWithMoveTo); + bool success = measures_[contour_index]->getSegment(start_d, stop_d, &dst, + start_with_move_to); if (!success) { - return CanvasPath::Create(); + CanvasPath::Create(path_handle); } else { - return CanvasPath::CreateFrom(dst); + CanvasPath::CreateFrom(path_handle, dst); } } -bool CanvasPathMeasure::isClosed(int contourIndex) { +bool CanvasPathMeasure::isClosed(int contour_index) { if (static_cast>::size_type>( - contourIndex) < measures_.size()) { - return measures_[contourIndex]->isClosed(); + contour_index) < measures_.size()) { + return measures_[contour_index]->isClosed(); } return false; } diff --git a/lib/ui/painting/path_measure.h b/lib/ui/painting/path_measure.h index f73a1b941002d..85a967919ed69 100644 --- a/lib/ui/painting/path_measure.h +++ b/lib/ui/painting/path_measure.h @@ -32,13 +32,14 @@ class CanvasPathMeasure : public RefCountedDartWrappable { bool forceClosed); void setPath(const CanvasPath* path, bool isClosed); - float getLength(int contourIndex); - tonic::Float32List getPosTan(int contourIndex, float distance); - fml::RefPtr getSegment(int contourIndex, - float startD, - float stopD, - bool startWithMoveTo); - bool isClosed(int contourIndex); + float getLength(int contour_index); + tonic::Float32List getPosTan(int contour_index, float distance); + void getSegment(Dart_Handle path_handle, + int contour_index, + float start_d, + float stop_d, + bool start_with_move_to); + bool isClosed(int contour_index); bool nextContour(); static void RegisterNatives(tonic::DartLibraryNatives* natives); From d0c2418dfed3e828c1a003ff8ac4a1baaf5e7ae8 Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Sat, 22 Feb 2020 23:04:04 +0100 Subject: [PATCH 002/521] Add support for Increase Contrast on iOS (#15343) --- lib/ui/window.dart | 8 ++++++++ lib/ui/window/window.h | 1 + lib/web_ui/lib/src/ui/window.dart | 9 +++++++++ .../darwin/ios/framework/Source/FlutterViewController.mm | 7 +++++++ 4 files changed, 25 insertions(+) diff --git a/lib/ui/window.dart b/lib/ui/window.dart index 36c0fc282b9d2..c830b6f4c215c 100644 --- a/lib/ui/window.dart +++ b/lib/ui/window.dart @@ -1212,6 +1212,7 @@ class AccessibilityFeatures { static const int _kDisableAnimationsIndex = 1 << 2; static const int _kBoldTextIndex = 1 << 3; static const int _kReduceMotionIndex = 1 << 4; + static const int _kHighContrastIndex = 1 << 5; // A bitfield which represents each enabled feature. final int _index; @@ -1239,6 +1240,11 @@ class AccessibilityFeatures { /// Only supported on iOS. bool get reduceMotion => _kReduceMotionIndex & _index != 0; + /// The platform is requesting that UI be rendered with darker colors. + /// + /// Only supported on iOS. + bool get highContrast => _kHighContrastIndex & _index != 0; + @override String toString() { final List features = []; @@ -1252,6 +1258,8 @@ class AccessibilityFeatures { features.add('boldText'); if (reduceMotion) features.add('reduceMotion'); + if (highContrast) + features.add('highContrast'); return 'AccessibilityFeatures$features'; } diff --git a/lib/ui/window/window.h b/lib/ui/window/window.h index bddcb70f3150f..fac2861a43e40 100644 --- a/lib/ui/window/window.h +++ b/lib/ui/window/window.h @@ -44,6 +44,7 @@ enum class AccessibilityFeatureFlag : int32_t { kDisableAnimations = 1 << 2, kBoldText = 1 << 3, kReduceMotion = 1 << 4, + kHighContrast = 1 << 5, }; class WindowClient { diff --git a/lib/web_ui/lib/src/ui/window.dart b/lib/web_ui/lib/src/ui/window.dart index c22e101491390..d143c504696c4 100644 --- a/lib/web_ui/lib/src/ui/window.dart +++ b/lib/web_ui/lib/src/ui/window.dart @@ -996,6 +996,7 @@ class AccessibilityFeatures { static const int _kDisableAnimationsIndex = 1 << 2; static const int _kBoldTextIndex = 1 << 3; static const int _kReduceMotionIndex = 1 << 4; + static const int _kHighContrastIndex = 1 << 5; // A bitfield which represents each enabled feature. final int _index; @@ -1023,6 +1024,11 @@ class AccessibilityFeatures { /// Only supported on iOS. bool get reduceMotion => _kReduceMotionIndex & _index != 0; + /// The platform is requesting that UI be rendered with darker colors. + /// + /// Only supported on iOS. + bool get highContrast => _kHighContrastIndex & _index != 0; + @override String toString() { final List features = []; @@ -1041,6 +1047,9 @@ class AccessibilityFeatures { if (reduceMotion) { features.add('reduceMotion'); } + if (highContrast) { + features.add('highContrast'); + } return 'AccessibilityFeatures$features'; } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index a94f6b657fa38..5b04408ec9d2c 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -298,6 +298,11 @@ - (void)setupNotificationCenterObservers { name:UIAccessibilityBoldTextStatusDidChangeNotification object:nil]; + [center addObserver:self + selector:@selector(onAccessibilityStatusChanged:) + name:UIAccessibilityDarkerSystemColorsStatusDidChangeNotification + object:nil]; + [center addObserver:self selector:@selector(onUserSettingsChanged:) name:UIContentSizeCategoryDidChangeNotification @@ -962,6 +967,8 @@ - (void)onAccessibilityStatusChanged:(NSNotification*)notification { flags |= static_cast(flutter::AccessibilityFeatureFlag::kReduceMotion); if (UIAccessibilityIsBoldTextEnabled()) flags |= static_cast(flutter::AccessibilityFeatureFlag::kBoldText); + if (UIAccessibilityDarkerSystemColorsEnabled()) + flags |= static_cast(flutter::AccessibilityFeatureFlag::kHighContrast); #if TARGET_OS_SIMULATOR // There doesn't appear to be any way to determine whether the accessibility // inspector is enabled on the simulator. We conservatively always turn on the From 6d2cbb2dbbf2a8d4dc85ab827cec1369bcc499f8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 22 Feb 2020 17:09:04 -0500 Subject: [PATCH 003/521] Roll src/third_party/skia bf5cb0f539e7..46f5c5f08b61 (2 commits) (#16732) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b1d1b59c771a1..ed10f7110bfcc 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'bf5cb0f539e7b7485bda9c1377f663d6c444d2f4', + 'skia_revision': '46f5c5f08b619a039104aff7aec342bd22619e45', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c71f3d69654c0..f1ceaa3c311f6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 73afdc4dd53614d3bfc3fa4ca775a418 +Signature: 8528ab1e026569ddcc9970f0d52a4eb7 UNUSED LICENSES: @@ -5649,6 +5649,7 @@ FILE: ../../../third_party/skia/gm/skbug_9819.cpp FILE: ../../../third_party/skia/gm/strokerect_anisotropic.cpp FILE: ../../../third_party/skia/gm/verifiers/gmverifier.cpp FILE: ../../../third_party/skia/gm/verifiers/gmverifier.h +FILE: ../../../third_party/skia/include/core/SkM44.h FILE: ../../../third_party/skia/include/gpu/d3d/GrD3DBackendContext.h FILE: ../../../third_party/skia/include/private/SkDDLTmpRedirect.h FILE: ../../../third_party/skia/include/private/SkM44.h From f758eb97cccd2f921dbbbc7bcc9b4d364aef28ec Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 22 Feb 2020 17:09:08 -0500 Subject: [PATCH 004/521] Roll fuchsia/sdk/core/linux-amd64 from -u-iU... to 3rB22... (#16752) --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ed10f7110bfcc..4ba15f46ad90a 100644 --- a/DEPS +++ b/DEPS @@ -562,7 +562,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': '-u-iUg5akSSE1VGOIoH1y6O4Hn3hMBU9ouKg0NimwyEC' + 'version': '3rB22YMyAd1ydaVuAlIP8UmI6hyTCKl3cele7FKP5_QC' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 62ac4b40071b2..536fdd6587660 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: 3c6334fa1834da348a24a8ef79fc184e +Signature: 18d82d5954f2e4290b2c48848954059d UNUSED LICENSES: From a4a1f4f6bca814852fb2ed53b3330401f0997838 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 22 Feb 2020 17:14:11 -0500 Subject: [PATCH 005/521] Roll fuchsia/sdk/core/mac-amd64 from iYYAH... to 5B5jq... (#16744) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 4ba15f46ad90a..9267413db45cd 100644 --- a/DEPS +++ b/DEPS @@ -542,7 +542,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'iYYAHUbw6tk0dhITfClGvr7wlhnlrAF8MlqqbOzsfc0C' + 'version': '5B5jqQZB8ZY9nIcf9_YMqHww1MWBdRkpOYG_yumdhFYC' } ], 'condition': 'host_os == "mac"', From 8caf6d1d3f2b1d52b1d8ac7333212bfd71864537 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 22 Feb 2020 18:44:03 -0500 Subject: [PATCH 006/521] Roll src/third_party/skia 46f5c5f08b61..9e8f60534464 (29 commits) (#16754) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index 9267413db45cd..503393e8aeb51 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '46f5c5f08b619a039104aff7aec342bd22619e45', + 'skia_revision': '9e8f60534464df9597d189159d26c2f24f221d8e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f1ceaa3c311f6..39893cf7471da 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8528ab1e026569ddcc9970f0d52a4eb7 +Signature: be6c19483a4658977e6c92d871ad8bb1 UNUSED LICENSES: @@ -1007,6 +1007,7 @@ FILE: ../../../third_party/skia/infra/bots/assets/cmake_mac/VERSION FILE: ../../../third_party/skia/infra/bots/assets/gcloud_linux/VERSION FILE: ../../../third_party/skia/infra/bots/assets/go/VERSION FILE: ../../../third_party/skia/infra/bots/assets/go_win/VERSION +FILE: ../../../third_party/skia/infra/bots/assets/ios-dev-image-11.4/VERSION FILE: ../../../third_party/skia/infra/bots/assets/linux_vulkan_sdk/VERSION FILE: ../../../third_party/skia/infra/bots/assets/lottie-samples/VERSION FILE: ../../../third_party/skia/infra/bots/assets/mesa_intel_driver_linux/VERSION @@ -1143,6 +1144,7 @@ FILE: ../../../third_party/skia/infra/bots/recipe_modules/flavor/examples/full.e FILE: ../../../third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/exceptions.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/failed_infra_step.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/failed_read_version.json +FILE: ../../../third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/ios_rerun_with_debug.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/retry_adb_command.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/retry_adb_command_retries_exhausted.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/retry_ios_install.json @@ -3694,6 +3696,7 @@ FILE: ../../../third_party/skia/include/atlastext/SkAtlasTextFont.h FILE: ../../../third_party/skia/include/atlastext/SkAtlasTextRenderer.h FILE: ../../../third_party/skia/include/atlastext/SkAtlasTextTarget.h FILE: ../../../third_party/skia/include/codec/SkEncodedOrigin.h +FILE: ../../../third_party/skia/include/core/SkDeferredDisplayList.h FILE: ../../../third_party/skia/include/core/SkDeferredDisplayListRecorder.h FILE: ../../../third_party/skia/include/core/SkExecutor.h FILE: ../../../third_party/skia/include/core/SkFontArguments.h @@ -3712,7 +3715,6 @@ FILE: ../../../third_party/skia/include/gpu/GrBackendSurface.h FILE: ../../../third_party/skia/include/gpu/mock/GrMockTypes.h FILE: ../../../third_party/skia/include/gpu/mtl/GrMtlTypes.h FILE: ../../../third_party/skia/include/private/GrSharedEnums.h -FILE: ../../../third_party/skia/include/private/SkDeferredDisplayList.h FILE: ../../../third_party/skia/include/private/SkImageInfoPriv.h FILE: ../../../third_party/skia/include/private/SkMalloc.h FILE: ../../../third_party/skia/include/private/SkShadowFlags.h @@ -6375,7 +6377,6 @@ ORIGIN: ../../../third_party/skia/modules/canvaskit/canvaskit/LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/NotoSerif-Regular.ttf FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/Roboto-Regular.ttf -FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/Roboto-Regular.woff FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/example.html FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/extra.html FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/node.example.js From 340f85559cd0b471d90d915fdd66c41e416d246c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 23 Feb 2020 06:24:03 -0500 Subject: [PATCH 007/521] Roll fuchsia/sdk/core/mac-amd64 from 5B5jq... to g1vJn... (#16755) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 503393e8aeb51..25cb1faae3fd6 100644 --- a/DEPS +++ b/DEPS @@ -542,7 +542,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': '5B5jqQZB8ZY9nIcf9_YMqHww1MWBdRkpOYG_yumdhFYC' + 'version': 'g1vJnYax6EgbkkxPD3CYlkkh-W6rB12XPFJZv0C4QtUC' } ], 'condition': 'host_os == "mac"', From 9a9abb78f66108e7c0dc8c816fc5915971e9079d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 23 Feb 2020 17:37:19 -0500 Subject: [PATCH 008/521] Roll src/third_party/skia 9e8f60534464..d1c90e10f0ca (1 commits) (#16757) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 25cb1faae3fd6..6ad0f56f21b73 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '9e8f60534464df9597d189159d26c2f24f221d8e', + 'skia_revision': 'd1c90e10f0ca59ced5ede9db8f2ef4c78662b304', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the From 2e12cdc90d9b91bf258d2b97aef00a25d23b8f90 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 23 Feb 2020 19:51:03 -0500 Subject: [PATCH 009/521] Roll src/third_party/skia d1c90e10f0ca..998066127e0d (1 commits) (#16759) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6ad0f56f21b73..e2925b33364b0 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'd1c90e10f0ca59ced5ede9db8f2ef4c78662b304', + 'skia_revision': '998066127e0d236d77131278bb7ac03644201fd0', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 39893cf7471da..250c64e3aecbd 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: be6c19483a4658977e6c92d871ad8bb1 +Signature: dbe8abff5617ea993e05b7784a5db1d4 UNUSED LICENSES: From 566cfae1b589def601d5c690f53d7285ed2775a3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 24 Feb 2020 02:41:03 -0500 Subject: [PATCH 010/521] Roll src/third_party/skia 998066127e0d..57bc977e124c (3 commits) (#16762) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e2925b33364b0..220ff64f2f991 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '998066127e0d236d77131278bb7ac03644201fd0', + 'skia_revision': '57bc977e124cb20258268157e5010e9c787c6fe0', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 250c64e3aecbd..bad3d9a131076 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: dbe8abff5617ea993e05b7784a5db1d4 +Signature: 3a2abee2c789153df3b9b6d50dec25d7 UNUSED LICENSES: From 73fdff1e2b6a0daae9983221fce8198439561763 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 24 Feb 2020 04:11:02 -0500 Subject: [PATCH 011/521] Roll fuchsia/sdk/core/linux-amd64 from 3rB22... to PGfiE... (#16763) --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 220ff64f2f991..6bb3c3825c27c 100644 --- a/DEPS +++ b/DEPS @@ -562,7 +562,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': '3rB22YMyAd1ydaVuAlIP8UmI6hyTCKl3cele7FKP5_QC' + 'version': 'PGfiEKdkfh4C8tQ2WjlBgpqJfUAmNif7Q-QrdcNQeB0C' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 536fdd6587660..154992881cd00 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: 18d82d5954f2e4290b2c48848954059d +Signature: c5e44f38c4389e02d4ab4df04b41b079 UNUSED LICENSES: @@ -465,6 +465,7 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.castsetup/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.castsysteminfo/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.cobalt/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component/meta.json +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.data/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.deprecatedtimezone/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.developer.tiles/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.factory/meta.json @@ -1371,6 +1372,7 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.castsysteminfo/cast_system_info.fi FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.castsysteminfo/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.cobalt/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component/meta.json +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.data/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.deprecatedtimezone/deprecated_time_service.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.deprecatedtimezone/deprecated_time_zone.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.deprecatedtimezone/meta.json @@ -2182,6 +2184,7 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.castsetup/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.castsysteminfo/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.cobalt/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component/meta.json +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.data/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.deprecatedtimezone/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.developer.tiles/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.factory/meta.json @@ -2628,6 +2631,7 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.bluetooth/nullables.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.camera/camera.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.camera/manager.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.cobalt/cobalt.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.data/data.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.developer.tiles/tiles.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.hardware.ethernet/ethernet.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.images/encoded_image.fidl From ecca1750d82b3acb95f6a8deb14f6e8320f9afe6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 24 Feb 2020 04:51:03 -0500 Subject: [PATCH 012/521] Roll fuchsia/sdk/core/mac-amd64 from g1vJn... to mcI8X... (#16764) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 6bb3c3825c27c..ceaa806c99f19 100644 --- a/DEPS +++ b/DEPS @@ -542,7 +542,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'g1vJnYax6EgbkkxPD3CYlkkh-W6rB12XPFJZv0C4QtUC' + 'version': 'mcI8XmdRQvt7Ir8e9I0zqr8UwsqO1hqWeLvCo0OeCmEC' } ], 'condition': 'host_os == "mac"', From 4d505170aff1e5000a8d4a620cd0a4a333463041 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 24 Feb 2020 09:26:03 -0500 Subject: [PATCH 013/521] Roll src/third_party/skia 57bc977e124c..cc5415a8ce36 (1 commits) (#16767) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ceaa806c99f19..14eb28d2707ab 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '57bc977e124cb20258268157e5010e9c787c6fe0', + 'skia_revision': 'cc5415a8ce36c4f129e56adb8f18adf220407e8e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index bad3d9a131076..99f195df6dfaf 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 3a2abee2c789153df3b9b6d50dec25d7 +Signature: 5f29ffacb0033394f097f6078047c59f UNUSED LICENSES: @@ -6377,6 +6377,8 @@ ORIGIN: ../../../third_party/skia/modules/canvaskit/canvaskit/LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/NotoSerif-Regular.ttf FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/Roboto-Regular.ttf +FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/brickwork-texture.jpg +FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/brickwork_normal-map.jpg FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/example.html FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/extra.html FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/node.example.js From 237ddb1bec1a8f8abee82ff30ed774cc55abf95c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 24 Feb 2020 11:11:03 -0500 Subject: [PATCH 014/521] Roll src/third_party/skia cc5415a8ce36..1cec4d5e3d92 (2 commits) (#16769) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 14eb28d2707ab..ad6a5238ecf9a 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'cc5415a8ce36c4f129e56adb8f18adf220407e8e', + 'skia_revision': '1cec4d5e3d92f82f6ed9920d9c45def5a46b98b3', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 99f195df6dfaf..77016d5b29763 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5f29ffacb0033394f097f6078047c59f +Signature: d7131dc2ca45637e76ba9e4466582131 UNUSED LICENSES: From 8da64e067cbed496c0b4e6e2ba580f2754ef9acd Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 24 Feb 2020 12:41:04 -0500 Subject: [PATCH 015/521] Roll src/third_party/dart 5829fc7829d5..c75256299280 (43 commits) (#16770) --- DEPS | 4 +- ci/licenses_golden/licenses_third_party | 3 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++------------ 3 files changed, 123 insertions(+), 128 deletions(-) diff --git a/DEPS b/DEPS index ad6a5238ecf9a..5755833b851c8 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '5829fc7829d577a84e1296118bc3aa18deda670b', + 'dart_revision': 'c752562992803421fb2fff69390e2fd109a29a56', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -71,7 +71,7 @@ vars = { 'dart_mustache_tag': '5e81b12215566dbe2473b2afd01a8a8aedd56ad9', 'dart_oauth2_tag': '1.2.1', 'dart_observatory_pub_packages_rev': '0894122173b0f98eb08863a7712e78407d4477bc', - 'dart_package_config_tag': '3401e2897b3cf46e64966e2ba19ed7032501cf41', + 'dart_package_config_tag': '87a8b5184020ebcc13b34ee95dde58f851b68ca3', 'dart_package_resolver_tag': '1.0.10', 'dart_path_tag': '1.6.2', 'dart_pedantic_tag': 'v1.8.0', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index a697d0b99d719..7221237fb2275 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 0c1aa0f89b3c71cfa512e0c9846df1a2 +Signature: 8919adf005426aeec78e894ce4e2276f UNUSED LICENSES: @@ -7474,7 +7474,6 @@ FILE: ../../../third_party/dart/sdk/lib/html/html_common/conversions_dart2js.dar FILE: ../../../third_party/dart/sdk/lib/html/html_common/html_common.dart FILE: ../../../third_party/dart/sdk/lib/libraries.json FILE: ../../../third_party/dart/sdk/lib/vmservice_libraries.json -FILE: ../../../third_party/dart/sdk_nnbd/lib/dart2js_migration_libraries.json FILE: ../../../third_party/dart/sdk_nnbd/lib/html/html_common/conversions_dart2js.dart FILE: ../../../third_party/dart/sdk_nnbd/lib/html/html_common/html_common.dart FILE: ../../../third_party/dart/sdk_nnbd/lib/libraries.json diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 51f4a37524611..6cdcbe8cb194f 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 0d87160bdf5a05c13506efaffcc72bde7251b65e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 24 Feb 2020 12:46:07 -0500 Subject: [PATCH 016/521] Roll src/third_party/skia 1cec4d5e3d92..7d252302268a (2 commits) (#16771) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 5755833b851c8..c6d89d565b00c 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '1cec4d5e3d92f82f6ed9920d9c45def5a46b98b3', + 'skia_revision': '7d252302268add4fe618a8eb5cc8f189765184be', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 77016d5b29763..98a5f59bc99ef 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d7131dc2ca45637e76ba9e4466582131 +Signature: 3bb13f9740937dedb8491ced13c8eff3 UNUSED LICENSES: From 1aef7a43692a9f98f14aa9aa7ce0f84f678e2a2d Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Mon, 24 Feb 2020 11:11:03 -0800 Subject: [PATCH 017/521] Delete FlutterAppDelegate_Internal.h (#16772) --- ci/licenses_golden/licenses_flutter | 1 - shell/platform/darwin/ios/BUILD.gn | 1 - .../framework/Source/FlutterAppDelegate_Internal.h | 12 ------------ 3 files changed, 14 deletions(-) delete mode 100644 shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Internal.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index f8cba6e7c66a6..e8d25ab3f92e9 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -818,7 +818,6 @@ FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterPlugin FILE: ../../../flutter/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Info.plist FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm -FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Internal.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.h FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelay.mm FILE: ../../../flutter/shell/platform/darwin/ios/framework/Source/FlutterBinaryMessengerRelayTest.mm diff --git a/shell/platform/darwin/ios/BUILD.gn b/shell/platform/darwin/ios/BUILD.gn index 9b1b39b386d5b..014b51c90ed30 100644 --- a/shell/platform/darwin/ios/BUILD.gn +++ b/shell/platform/darwin/ios/BUILD.gn @@ -46,7 +46,6 @@ shared_library("create_flutter_framework_dylib") { sources = [ "framework/Source/FlutterAppDelegate.mm", - "framework/Source/FlutterAppDelegate_Internal.h", "framework/Source/FlutterBinaryMessengerRelay.mm", "framework/Source/FlutterCallbackCache.mm", "framework/Source/FlutterCallbackCache_Internal.h", diff --git a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Internal.h deleted file mode 100644 index 6d9389fc7599a..0000000000000 --- a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate_Internal.h +++ /dev/null @@ -1,12 +0,0 @@ -// 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. - -#include "flutter/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h" - -@interface FlutterAppDelegate () - -@property(readonly, nonatomic) NSMutableArray* pluginDelegates; -@property(readonly, nonatomic) NSMutableDictionary* pluginPublications; - -@end From b87bb0a161b5cc5d079ff937f97080d8d7882159 Mon Sep 17 00:00:00 2001 From: Ferhat Date: Mon, 24 Feb 2020 11:19:47 -0800 Subject: [PATCH 018/521] =?UTF-8?q?[web]=20Fix=20canvas=20leak=20when=20dp?= =?UTF-8?q?i=20changes.=20Evict=20from=20BitmapCanvas=20cache=20under?= =?UTF-8?q?=E2=80=A6=20(#16721)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix canvas leak when dpi changes. Evict from BitmapCanvas cache under memory pressure. * optimized _reduceCanvasMemoryUsage * Addressed review comments --- .../lib/src/engine/surface/picture.dart | 57 +++++++++++++------ .../src/engine/surface/recording_canvas.dart | 17 +++++- 2 files changed, 54 insertions(+), 20 deletions(-) diff --git a/lib/web_ui/lib/src/engine/surface/picture.dart b/lib/web_ui/lib/src/engine/surface/picture.dart index 2138dd2653327..c95559691be61 100644 --- a/lib/web_ui/lib/src/engine/surface/picture.dart +++ b/lib/web_ui/lib/src/engine/surface/picture.dart @@ -19,6 +19,15 @@ const int _kCanvasCacheSize = 30; /// Canvases available for reuse, capped at [_kCanvasCacheSize]. final List _recycledCanvases = []; +/// Reduces recycled canvas list by 50% to reduce bitmap canvas memory use. +void _reduceCanvasMemoryUsage() { + final int canvasCount = _recycledCanvases.length; + for (int i = 0; i < canvasCount; i++) { + _recycledCanvases[i].dispose(); + } + _recycledCanvases.clear(); +} + /// A request to repaint a canvas. /// /// Paint requests are prioritized such that the larger pictures go first. This @@ -42,22 +51,27 @@ class _PaintRequest { List<_PaintRequest> _paintQueue = <_PaintRequest>[]; void _recycleCanvas(EngineCanvas canvas) { - if (canvas is BitmapCanvas && canvas.isReusable()) { - _recycledCanvases.add(canvas); - if (_recycledCanvases.length > _kCanvasCacheSize) { - final BitmapCanvas removedCanvas = _recycledCanvases.removeAt(0); - removedCanvas.dispose(); + if (canvas is BitmapCanvas) { + if (canvas.isReusable()) { + _recycledCanvases.add(canvas); + if (_recycledCanvases.length > _kCanvasCacheSize) { + final BitmapCanvas removedCanvas = _recycledCanvases.removeAt(0); + removedCanvas.dispose(); + if (_debugShowCanvasReuseStats) { + DebugCanvasReuseOverlay.instance.disposedCount++; + } + } if (_debugShowCanvasReuseStats) { - DebugCanvasReuseOverlay.instance.disposedCount++; + DebugCanvasReuseOverlay.instance.inRecycleCount = + _recycledCanvases.length; } - } - if (_debugShowCanvasReuseStats) { - DebugCanvasReuseOverlay.instance.inRecycleCount = - _recycledCanvases.length; + } else { + canvas.dispose(); } } } + /// Signature of a function that instantiates a [PersistedPicture]. typedef PersistedPictureFactory = PersistedPicture Function( double dx, @@ -272,7 +286,6 @@ class PersistedStandardPicture extends PersistedPicture { final ui.Size canvasSize = bounds.size; BitmapCanvas bestRecycledCanvas; double lastPixelCount = double.infinity; - for (int i = 0; i < _recycledCanvases.length; i++) { final BitmapCanvas candidate = _recycledCanvases[i]; if (!candidate.isReusable()) { @@ -286,13 +299,21 @@ class PersistedStandardPicture extends PersistedPicture { final bool fits = candidate.doesFitBounds(bounds); final bool isSmaller = candidatePixelCount < lastPixelCount; if (fits && isSmaller) { - bestRecycledCanvas = candidate; - lastPixelCount = candidatePixelCount; - final bool fitsExactly = candidateSize.width == canvasSize.width && - candidateSize.height == canvasSize.height; - if (fitsExactly) { - // No need to keep looking any more. - break; + // [isTooSmall] is used to make sure that a small picture doesn't + // reuse and hold onto memory of a large canvas. + final double requestedPixelCount = bounds.width * bounds.height; + final bool isTooSmall = isSmaller && + requestedPixelCount > 1 && + (candidatePixelCount / requestedPixelCount) > 4; + if (!isTooSmall) { + bestRecycledCanvas = candidate; + lastPixelCount = candidatePixelCount; + final bool fitsExactly = candidateSize.width == canvasSize.width && + candidateSize.height == canvasSize.height; + if (fitsExactly) { + // No need to keep looking any more. + break; + } } } } diff --git a/lib/web_ui/lib/src/engine/surface/recording_canvas.dart b/lib/web_ui/lib/src/engine/surface/recording_canvas.dart index 4209efe638e80..92ce62b93e303 100644 --- a/lib/web_ui/lib/src/engine/surface/recording_canvas.dart +++ b/lib/web_ui/lib/src/engine/surface/recording_canvas.dart @@ -183,8 +183,6 @@ class RecordingCanvas { } void drawColor(ui.Color color, ui.BlendMode blendMode) { - _hasArbitraryPaint = true; - _didDraw = true; _paintBounds.grow(_paintBounds.maxPaintBounds); _commands.add(PaintDrawColor(color, blendMode)); } @@ -315,6 +313,21 @@ class RecordingCanvas { } void drawPath(ui.Path path, SurfacePaint paint) { + if (paint.shader == null) { + // For Rect/RoundedRect paths use drawRect/drawRRect code paths for + // DomCanvas optimization. + SurfacePath sPath = path; + final ui.Rect rect = sPath.webOnlyPathAsRect; + if (rect != null) { + drawRect(rect, paint); + return; + } + final ui.RRect rrect = sPath.webOnlyPathAsRoundedRect; + if (rrect != null) { + drawRRect(rrect, paint); + return; + } + } _hasArbitraryPaint = true; _didDraw = true; ui.Rect pathBounds = path.getBounds(); From e0e24f57987e12a284c3417968fdefbcc72431d0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 24 Feb 2020 14:31:04 -0500 Subject: [PATCH 019/521] Roll src/third_party/skia 7d252302268a..03b8ab225fd7 (8 commits) (#16773) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 14 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++++++--------------- 3 files changed, 133 insertions(+), 127 deletions(-) diff --git a/DEPS b/DEPS index c6d89d565b00c..0887deb8d1a80 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '7d252302268add4fe618a8eb5cc8f189765184be', + 'skia_revision': '03b8ab225fd782d2023f17e40185476ce865914e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 98a5f59bc99ef..3300abbb5f2f7 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 3bb13f9740937dedb8491ced13c8eff3 +Signature: e621a385e2d0738e29459c84ecbce417 UNUSED LICENSES: @@ -1004,6 +1004,7 @@ FILE: ../../../third_party/skia/infra/bots/assets/clang_linux/VERSION FILE: ../../../third_party/skia/infra/bots/assets/clang_win/VERSION FILE: ../../../third_party/skia/infra/bots/assets/cmake_linux/VERSION FILE: ../../../third_party/skia/infra/bots/assets/cmake_mac/VERSION +FILE: ../../../third_party/skia/infra/bots/assets/cockroachdb/VERSION FILE: ../../../third_party/skia/infra/bots/assets/gcloud_linux/VERSION FILE: ../../../third_party/skia/infra/bots/assets/go/VERSION FILE: ../../../third_party/skia/infra/bots/assets/go_win/VERSION @@ -3974,7 +3975,13 @@ TYPE: LicenseType.bsd FILE: ../../../third_party/skia/bench/GrQuadBench.cpp FILE: ../../../third_party/skia/gm/crbug_1041204.cpp FILE: ../../../third_party/skia/gm/crbug_224618.cpp +FILE: ../../../third_party/skia/include/gpu/d3d/GrD3D12.h +FILE: ../../../third_party/skia/include/gpu/d3d/GrD3DBackendContext.h FILE: ../../../third_party/skia/src/core/SkVM_fwd.h +FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DCaps.cpp +FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DCaps.h +FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DGpu.cpp +FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DGpu.h FILE: ../../../third_party/skia/src/sksl/SkSLInterpreter.h FILE: ../../../third_party/skia/src/sksl/SkSLSPIRVtoHLSL.cpp FILE: ../../../third_party/skia/src/sksl/SkSLSPIRVtoHLSL.h @@ -5652,7 +5659,6 @@ FILE: ../../../third_party/skia/gm/strokerect_anisotropic.cpp FILE: ../../../third_party/skia/gm/verifiers/gmverifier.cpp FILE: ../../../third_party/skia/gm/verifiers/gmverifier.h FILE: ../../../third_party/skia/include/core/SkM44.h -FILE: ../../../third_party/skia/include/gpu/d3d/GrD3DBackendContext.h FILE: ../../../third_party/skia/include/private/SkDDLTmpRedirect.h FILE: ../../../third_party/skia/include/private/SkM44.h FILE: ../../../third_party/skia/modules/skottie/src/Adapter.h @@ -5682,10 +5688,6 @@ FILE: ../../../third_party/skia/src/core/SkM44.cpp FILE: ../../../third_party/skia/src/gpu/GrDynamicAtlas.cpp FILE: ../../../third_party/skia/src/gpu/GrDynamicAtlas.h FILE: ../../../third_party/skia/src/gpu/GrEagerVertexAllocator.h -FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DCaps.cpp -FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DCaps.h -FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DGpu.cpp -FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DGpu.h FILE: ../../../third_party/skia/src/gpu/tessellate/GrDrawAtlasPathOp.cpp FILE: ../../../third_party/skia/src/gpu/tessellate/GrDrawAtlasPathOp.h FILE: ../../../third_party/skia/src/gpu/tessellate/GrPathParser.cpp diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 6cdcbe8cb194f..51f4a37524611 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,66 +5143,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5234,66 +5174,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5690,6 +5570,130 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 38dc2ea67cc7f3f68e843162cc511ed7836bda45 Mon Sep 17 00:00:00 2001 From: Filip Filmar Date: Mon, 24 Feb 2020 11:44:30 -0800 Subject: [PATCH 020/521] [i18n] Deprecates fuchsia.timezone.Timezone (#16700) The FIDL interface `fuchsia.timezone.Timezone` does not exist for quite a while now. Instead, a transitional `fuchsia.timezone.Timezone` should be used. Fixes flutter/flutter#51087 --- .../fuchsia/dart_runner/meta/dart_aot_product_runner.cmx | 2 +- shell/platform/fuchsia/dart_runner/meta/dart_aot_runner.cmx | 2 +- .../fuchsia/dart_runner/meta/dart_jit_product_runner.cmx | 2 +- shell/platform/fuchsia/dart_runner/meta/dart_jit_runner.cmx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/shell/platform/fuchsia/dart_runner/meta/dart_aot_product_runner.cmx b/shell/platform/fuchsia/dart_runner/meta/dart_aot_product_runner.cmx index 5539713b9a19f..629c352e01ae3 100644 --- a/shell/platform/fuchsia/dart_runner/meta/dart_aot_product_runner.cmx +++ b/shell/platform/fuchsia/dart_runner/meta/dart_aot_product_runner.cmx @@ -9,13 +9,13 @@ "root-ssl-certificates" ], "services": [ + "fuchsia.deprecatedtimezone.Timezone", "fuchsia.feedback.CrashReporter", "fuchsia.intl.PropertyProvider", "fuchsia.logger.LogSink", "fuchsia.net.NameLookup", "fuchsia.netstack.Netstack", "fuchsia.posix.socket.Provider", - "fuchsia.timezone.Timezone", "fuchsia.tracing.provider.Registry" ] } diff --git a/shell/platform/fuchsia/dart_runner/meta/dart_aot_runner.cmx b/shell/platform/fuchsia/dart_runner/meta/dart_aot_runner.cmx index 5539713b9a19f..629c352e01ae3 100644 --- a/shell/platform/fuchsia/dart_runner/meta/dart_aot_runner.cmx +++ b/shell/platform/fuchsia/dart_runner/meta/dart_aot_runner.cmx @@ -9,13 +9,13 @@ "root-ssl-certificates" ], "services": [ + "fuchsia.deprecatedtimezone.Timezone", "fuchsia.feedback.CrashReporter", "fuchsia.intl.PropertyProvider", "fuchsia.logger.LogSink", "fuchsia.net.NameLookup", "fuchsia.netstack.Netstack", "fuchsia.posix.socket.Provider", - "fuchsia.timezone.Timezone", "fuchsia.tracing.provider.Registry" ] } diff --git a/shell/platform/fuchsia/dart_runner/meta/dart_jit_product_runner.cmx b/shell/platform/fuchsia/dart_runner/meta/dart_jit_product_runner.cmx index f8a61ac927144..af80333bb2c6c 100644 --- a/shell/platform/fuchsia/dart_runner/meta/dart_jit_product_runner.cmx +++ b/shell/platform/fuchsia/dart_runner/meta/dart_jit_product_runner.cmx @@ -9,6 +9,7 @@ "root-ssl-certificates" ], "services": [ + "fuchsia.deprecatedtimezone.Timezone", "fuchsia.feedback.CrashReporter", "fuchsia.intl.PropertyProvider", "fuchsia.logger.LogSink", @@ -17,7 +18,6 @@ "fuchsia.posix.socket.Provider", "fuchsia.process.Launcher", "fuchsia.process.Resolver", - "fuchsia.timezone.Timezone", "fuchsia.tracing.provider.Registry" ] } diff --git a/shell/platform/fuchsia/dart_runner/meta/dart_jit_runner.cmx b/shell/platform/fuchsia/dart_runner/meta/dart_jit_runner.cmx index f8a61ac927144..af80333bb2c6c 100644 --- a/shell/platform/fuchsia/dart_runner/meta/dart_jit_runner.cmx +++ b/shell/platform/fuchsia/dart_runner/meta/dart_jit_runner.cmx @@ -9,6 +9,7 @@ "root-ssl-certificates" ], "services": [ + "fuchsia.deprecatedtimezone.Timezone", "fuchsia.feedback.CrashReporter", "fuchsia.intl.PropertyProvider", "fuchsia.logger.LogSink", @@ -17,7 +18,6 @@ "fuchsia.posix.socket.Provider", "fuchsia.process.Launcher", "fuchsia.process.Resolver", - "fuchsia.timezone.Timezone", "fuchsia.tracing.provider.Registry" ] } From 92abb22c64d17a210f228ef323c93afbac948585 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Mon, 24 Feb 2020 11:48:32 -0800 Subject: [PATCH 021/521] Reland "Lift restriction that embedders may not trample the render thread OpenGL context in composition callbacks." (#16711) This reverts commit ef9e7b1a1365c07ab0df2e2016c4442c3963c2c7 with the following changes to accommodate an embedder for whom the original optimizations caused issues: * Ensure stable order in the backing stores presented to the embedder. This is a pessimization that will be reverted when the embedder migrates. Tracked in https://github.com/flutter/flutter/issues/51228 * Forego the optimization where the unused layers would be collected before allocation of new layers needs to happen. This is a pessimization that will be reverted when the embedder migrates. Tracked in https://github.com/flutter/flutter/issues/51229 More context in b/146142979. --- ci/licenses_golden/licenses_flutter | 7 + fml/BUILD.gn | 2 + fml/hash_combine.h | 38 ++ fml/hash_combine_unittests.cc | 23 ++ shell/common/canvas_spy.h | 6 +- shell/platform/embedder/BUILD.gn | 5 + .../embedder/embedder_external_view.cc | 107 ++++++ .../embedder/embedder_external_view.h | 126 +++++++ .../embedder_external_view_embedder.cc | 337 +++++++++--------- .../embedder_external_view_embedder.h | 51 +-- shell/platform/embedder/embedder_include2.c | 9 + shell/platform/embedder/embedder_layers.cc | 3 +- .../embedder/embedder_render_target_cache.cc | 73 ++++ .../embedder/embedder_render_target_cache.h | 60 ++++ shell/platform/embedder/fixtures/main.dart | 40 +++ .../tests/embedder_test_compositor.cc | 62 +++- .../embedder/tests/embedder_test_compositor.h | 26 +- .../embedder/tests/embedder_unittests.cc | 249 +++++++++++-- 18 files changed, 955 insertions(+), 269 deletions(-) create mode 100644 fml/hash_combine.h create mode 100644 fml/hash_combine_unittests.cc create mode 100644 shell/platform/embedder/embedder_external_view.cc create mode 100644 shell/platform/embedder/embedder_external_view.h create mode 100644 shell/platform/embedder/embedder_include2.c create mode 100644 shell/platform/embedder/embedder_render_target_cache.cc create mode 100644 shell/platform/embedder/embedder_render_target_cache.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index e8d25ab3f92e9..dd6d06e26c285 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -126,6 +126,8 @@ FILE: ../../../flutter/fml/file_unittest.cc FILE: ../../../flutter/fml/gpu_thread_merger.cc FILE: ../../../flutter/fml/gpu_thread_merger.h FILE: ../../../flutter/fml/gpu_thread_merger_unittests.cc +FILE: ../../../flutter/fml/hash_combine.h +FILE: ../../../flutter/fml/hash_combine_unittests.cc FILE: ../../../flutter/fml/icu_util.cc FILE: ../../../flutter/fml/icu_util.h FILE: ../../../flutter/fml/log_level.h @@ -912,15 +914,20 @@ FILE: ../../../flutter/shell/platform/embedder/embedder_engine.cc FILE: ../../../flutter/shell/platform/embedder/embedder_engine.h FILE: ../../../flutter/shell/platform/embedder/embedder_external_texture_gl.cc FILE: ../../../flutter/shell/platform/embedder/embedder_external_texture_gl.h +FILE: ../../../flutter/shell/platform/embedder/embedder_external_view.cc +FILE: ../../../flutter/shell/platform/embedder/embedder_external_view.h FILE: ../../../flutter/shell/platform/embedder/embedder_external_view_embedder.cc FILE: ../../../flutter/shell/platform/embedder/embedder_external_view_embedder.h FILE: ../../../flutter/shell/platform/embedder/embedder_include.c +FILE: ../../../flutter/shell/platform/embedder/embedder_include2.c FILE: ../../../flutter/shell/platform/embedder/embedder_layers.cc FILE: ../../../flutter/shell/platform/embedder/embedder_layers.h FILE: ../../../flutter/shell/platform/embedder/embedder_platform_message_response.cc FILE: ../../../flutter/shell/platform/embedder/embedder_platform_message_response.h FILE: ../../../flutter/shell/platform/embedder/embedder_render_target.cc FILE: ../../../flutter/shell/platform/embedder/embedder_render_target.h +FILE: ../../../flutter/shell/platform/embedder/embedder_render_target_cache.cc +FILE: ../../../flutter/shell/platform/embedder/embedder_render_target_cache.h FILE: ../../../flutter/shell/platform/embedder/embedder_safe_access.h FILE: ../../../flutter/shell/platform/embedder/embedder_surface.cc FILE: ../../../flutter/shell/platform/embedder/embedder_surface.h diff --git a/fml/BUILD.gn b/fml/BUILD.gn index b218025f2450f..d8c7a95d682ef 100644 --- a/fml/BUILD.gn +++ b/fml/BUILD.gn @@ -26,6 +26,7 @@ source_set("fml") { "file.h", "gpu_thread_merger.cc", "gpu_thread_merger.h", + "hash_combine.h", "icu_util.cc", "icu_util.h", "log_level.h", @@ -232,6 +233,7 @@ executable("fml_unittests") { "command_line_unittest.cc", "file_unittest.cc", "gpu_thread_merger_unittests.cc", + "hash_combine_unittests.cc", "memory/ref_counted_unittest.cc", "memory/weak_ptr_unittest.cc", "message_loop_task_queues_merge_unmerge_unittests.cc", diff --git a/fml/hash_combine.h b/fml/hash_combine.h new file mode 100644 index 0000000000000..e06f7d33f7c13 --- /dev/null +++ b/fml/hash_combine.h @@ -0,0 +1,38 @@ +// 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. + +#ifndef FLUTTER_FML_HASH_COMBINE_H_ +#define FLUTTER_FML_HASH_COMBINE_H_ + +#include + +namespace fml { + +template +constexpr void HashCombineSeed(std::size_t& seed, Type arg) { + seed ^= std::hash{}(arg) + 0x9e3779b9 + (seed << 6) + (seed >> 2); +} + +template +constexpr void HashCombineSeed(std::size_t& seed, + Type arg, + Rest... other_args) { + HashCombineSeed(seed, arg); + HashCombineSeed(seed, other_args...); +} + +constexpr std::size_t HashCombine() { + return 0xdabbad00; +} + +template +constexpr std::size_t HashCombine(Type... args) { + std::size_t seed = HashCombine(); + HashCombineSeed(seed, args...); + return seed; +} + +} // namespace fml + +#endif // FLUTTER_FML_HASH_COMBINE_H_ diff --git a/fml/hash_combine_unittests.cc b/fml/hash_combine_unittests.cc new file mode 100644 index 0000000000000..230e35c04dc52 --- /dev/null +++ b/fml/hash_combine_unittests.cc @@ -0,0 +1,23 @@ +// 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. + +#include "flutter/fml/hash_combine.h" +#include "flutter/testing/testing.h" + +namespace fml { +namespace testing { + +TEST(HashCombineTest, CanHash) { + ASSERT_EQ(HashCombine(), HashCombine()); + ASSERT_EQ(HashCombine("Hello"), HashCombine("Hello")); + ASSERT_NE(HashCombine("Hello"), HashCombine("World")); + ASSERT_EQ(HashCombine("Hello", "World"), HashCombine("Hello", "World")); + ASSERT_NE(HashCombine("World", "Hello"), HashCombine("Hello", "World")); + ASSERT_EQ(HashCombine(12u), HashCombine(12u)); + ASSERT_NE(HashCombine(12u), HashCombine(12.0f)); + ASSERT_EQ(HashCombine('a'), HashCombine('a')); +} + +} // namespace testing +} // namespace fml diff --git a/shell/common/canvas_spy.h b/shell/common/canvas_spy.h index e9b721e3912be..bc9da2bd72ae2 100644 --- a/shell/common/canvas_spy.h +++ b/shell/common/canvas_spy.h @@ -26,8 +26,8 @@ class CanvasSpy { public: CanvasSpy(SkCanvas* target_canvas); - //------------------------------------------------------------------------------ - /// @brief Returns true if any non trasnparent content has been drawn + //---------------------------------------------------------------------------- + /// @brief Returns true if any non transparent content has been drawn /// into /// the spying canvas. Note that this class does tries to detect /// empty canvases but in some cases may return true even for @@ -35,7 +35,7 @@ class CanvasSpy { /// canvas). bool DidDrawIntoCanvas(); - //------------------------------------------------------------------------------ + //---------------------------------------------------------------------------- /// @brief The returned canvas delegate all operations to the target /// canvas /// while spying on them. diff --git a/shell/platform/embedder/BUILD.gn b/shell/platform/embedder/BUILD.gn index 7c49cc2b681f3..7215622912c76 100644 --- a/shell/platform/embedder/BUILD.gn +++ b/shell/platform/embedder/BUILD.gn @@ -29,15 +29,20 @@ template("embedder_source_set") { "embedder_engine.h", "embedder_external_texture_gl.cc", "embedder_external_texture_gl.h", + "embedder_external_view.cc", + "embedder_external_view.h", "embedder_external_view_embedder.cc", "embedder_external_view_embedder.h", "embedder_include.c", + "embedder_include2.c", "embedder_layers.cc", "embedder_layers.h", "embedder_platform_message_response.cc", "embedder_platform_message_response.h", "embedder_render_target.cc", "embedder_render_target.h", + "embedder_render_target_cache.cc", + "embedder_render_target_cache.h", "embedder_safe_access.h", "embedder_surface.cc", "embedder_surface.h", diff --git a/shell/platform/embedder/embedder_external_view.cc b/shell/platform/embedder/embedder_external_view.cc new file mode 100644 index 0000000000000..e5ca23d0fb130 --- /dev/null +++ b/shell/platform/embedder/embedder_external_view.cc @@ -0,0 +1,107 @@ +// 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. + +#include "flutter/shell/platform/embedder/embedder_external_view.h" +#include "flutter/fml/trace_event.h" +#include "flutter/shell/common/canvas_spy.h" + +namespace flutter { + +static SkISize TransformedSurfaceSize(const SkISize& size, + const SkMatrix& transformation) { + const auto source_rect = SkRect::MakeWH(size.width(), size.height()); + const auto transformed_rect = transformation.mapRect(source_rect); + return SkISize::Make(transformed_rect.width(), transformed_rect.height()); +} + +EmbedderExternalView::EmbedderExternalView( + const SkISize& frame_size, + const SkMatrix& surface_transformation) + : EmbedderExternalView(frame_size, surface_transformation, {}, nullptr) {} + +EmbedderExternalView::EmbedderExternalView( + const SkISize& frame_size, + const SkMatrix& surface_transformation, + ViewIdentifier view_identifier, + std::unique_ptr params) + : render_surface_size_( + TransformedSurfaceSize(frame_size, surface_transformation)), + surface_transformation_(surface_transformation), + view_identifier_(view_identifier), + embedded_view_params_(std::move(params)), + recorder_(std::make_unique()), + canvas_spy_(std::make_unique( + recorder_->beginRecording(frame_size.width(), frame_size.height()))) { +} + +EmbedderExternalView::~EmbedderExternalView() = default; + +EmbedderExternalView::RenderTargetDescriptor +EmbedderExternalView::CreateRenderTargetDescriptor() const { + return {view_identifier_, render_surface_size_}; +} + +SkCanvas* EmbedderExternalView::GetCanvas() const { + return canvas_spy_->GetSpyingCanvas(); +} + +SkISize EmbedderExternalView::GetRenderSurfaceSize() const { + return render_surface_size_; +} + +bool EmbedderExternalView::IsRootView() const { + return !HasPlatformView(); +} + +bool EmbedderExternalView::HasPlatformView() const { + return view_identifier_.platform_view_id.has_value(); +} + +bool EmbedderExternalView::HasEngineRenderedContents() const { + return canvas_spy_->DidDrawIntoCanvas(); +} + +EmbedderExternalView::ViewIdentifier EmbedderExternalView::GetViewIdentifier() + const { + return view_identifier_; +} + +const EmbeddedViewParams* EmbedderExternalView::GetEmbeddedViewParams() const { + return embedded_view_params_.get(); +} + +bool EmbedderExternalView::Render(const EmbedderRenderTarget& render_target) { + TRACE_EVENT0("flutter", "EmbedderExternalView::Render"); + + FML_DCHECK(HasEngineRenderedContents()) + << "Unnecessarily asked to render into a render target when there was " + "nothing to render."; + + auto picture = recorder_->finishRecordingAsPicture(); + if (!picture) { + return false; + } + + auto surface = render_target.GetRenderSurface(); + if (!surface) { + return false; + } + + FML_DCHECK(SkISize::Make(surface->width(), surface->height()) == + render_surface_size_); + + auto canvas = surface->getCanvas(); + if (!canvas) { + return false; + } + + canvas->setMatrix(surface_transformation_); + canvas->clear(SK_ColorTRANSPARENT); + canvas->drawPicture(picture); + canvas->flush(); + + return true; +} + +} // namespace flutter diff --git a/shell/platform/embedder/embedder_external_view.h b/shell/platform/embedder/embedder_external_view.h new file mode 100644 index 0000000000000..261d4db2b135c --- /dev/null +++ b/shell/platform/embedder/embedder_external_view.h @@ -0,0 +1,126 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_EXTERNAL_VIEW_H_ +#define FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_EXTERNAL_VIEW_H_ + +#include +#include +#include + +#include "flutter/flow/embedded_views.h" +#include "flutter/fml/hash_combine.h" +#include "flutter/fml/macros.h" +#include "flutter/shell/common/canvas_spy.h" +#include "flutter/shell/platform/embedder/embedder_render_target.h" +#include "third_party/skia/include/core/SkPictureRecorder.h" + +namespace flutter { + +class EmbedderExternalView { + public: + using PlatformViewID = int64_t; + struct ViewIdentifier { + std::optional platform_view_id; + + ViewIdentifier() {} + + ViewIdentifier(PlatformViewID view_id) : platform_view_id(view_id) {} + + struct Hash { + constexpr std::size_t operator()(const ViewIdentifier& desc) const { + if (!desc.platform_view_id.has_value()) { + return fml::HashCombine(); + } + + return fml::HashCombine(desc.platform_view_id.value()); + } + }; + + struct Equal { + constexpr bool operator()(const ViewIdentifier& lhs, + const ViewIdentifier& rhs) const { + return lhs.platform_view_id == rhs.platform_view_id; + } + }; + }; + + struct RenderTargetDescriptor { + ViewIdentifier view_identifier; + SkISize surface_size; + + RenderTargetDescriptor(ViewIdentifier p_view_identifier, + SkISize p_surface_size) + : view_identifier(p_view_identifier), surface_size(p_surface_size) {} + + struct Hash { + constexpr std::size_t operator()( + const RenderTargetDescriptor& desc) const { + return fml::HashCombine(desc.surface_size.width(), + desc.surface_size.height(), + ViewIdentifier::Hash{}(desc.view_identifier)); + } + }; + + struct Equal { + bool operator()(const RenderTargetDescriptor& lhs, + const RenderTargetDescriptor& rhs) const { + return lhs.surface_size == rhs.surface_size && + ViewIdentifier::Equal{}(lhs.view_identifier, + rhs.view_identifier); + } + }; + }; + + using ViewIdentifierSet = std::unordered_set; + + using PendingViews = std::unordered_map, + ViewIdentifier::Hash, + ViewIdentifier::Equal>; + + EmbedderExternalView(const SkISize& frame_size, + const SkMatrix& surface_transformation); + + EmbedderExternalView(const SkISize& frame_size, + const SkMatrix& surface_transformation, + ViewIdentifier view_identifier, + std::unique_ptr params); + + ~EmbedderExternalView(); + + bool IsRootView() const; + + bool HasPlatformView() const; + + bool HasEngineRenderedContents() const; + + ViewIdentifier GetViewIdentifier() const; + + const EmbeddedViewParams* GetEmbeddedViewParams() const; + + RenderTargetDescriptor CreateRenderTargetDescriptor() const; + + SkCanvas* GetCanvas() const; + + SkISize GetRenderSurfaceSize() const; + + bool Render(const EmbedderRenderTarget& render_target); + + private: + const SkISize render_surface_size_; + const SkMatrix surface_transformation_; + ViewIdentifier view_identifier_; + std::unique_ptr embedded_view_params_; + std::unique_ptr recorder_; + std::unique_ptr canvas_spy_; + + FML_DISALLOW_COPY_AND_ASSIGN(EmbedderExternalView); +}; + +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_EXTERNAL_VIEW_H_ diff --git a/shell/platform/embedder/embedder_external_view_embedder.cc b/shell/platform/embedder/embedder_external_view_embedder.cc index fae78b67d7dc7..5e77073e7ff47 100644 --- a/shell/platform/embedder/embedder_external_view_embedder.cc +++ b/shell/platform/embedder/embedder_external_view_embedder.cc @@ -8,6 +8,7 @@ #include "flutter/shell/platform/embedder/embedder_layers.h" #include "flutter/shell/platform/embedder/embedder_render_target.h" +#include "third_party/skia/include/gpu/GrContext.h" namespace flutter { @@ -36,9 +37,7 @@ SkMatrix EmbedderExternalViewEmbedder::GetSurfaceTransformation() const { } void EmbedderExternalViewEmbedder::Reset() { - pending_recorders_.clear(); - pending_canvas_spies_.clear(); - pending_params_.clear(); + pending_views_.clear(); composition_order_.clear(); } @@ -47,25 +46,6 @@ void EmbedderExternalViewEmbedder::CancelFrame() { Reset(); } -static FlutterBackingStoreConfig MakeBackingStoreConfig( - const SkISize& backing_store_size) { - FlutterBackingStoreConfig config = {}; - - config.struct_size = sizeof(config); - - config.size.width = backing_store_size.width(); - config.size.height = backing_store_size.height(); - - return config; -} - -static SkISize TransformedSurfaceSize(const SkISize& size, - const SkMatrix& transformation) { - const auto source_rect = SkRect::MakeWH(size.width(), size.height()); - const auto transformed_rect = transformation.mapRect(source_rect); - return SkISize::Make(transformed_rect.width(), transformed_rect.height()); -} - // |ExternalViewEmbedder| void EmbedderExternalViewEmbedder::BeginFrame(SkISize frame_size, GrContext* context, @@ -76,212 +56,213 @@ void EmbedderExternalViewEmbedder::BeginFrame(SkISize frame_size, pending_device_pixel_ratio_ = device_pixel_ratio; pending_surface_transformation_ = GetSurfaceTransformation(); - const auto surface_size = TransformedSurfaceSize( - pending_frame_size_, pending_surface_transformation_); - - // Decide if we want to discard the previous root render target. - if (root_render_target_) { - auto surface = root_render_target_->GetRenderSurface(); - // This is unlikely to happen but the embedder could have given the - // rasterizer a render target the previous frame that Skia could not - // materialize into a renderable surface. Discard the target and try again. - if (!surface) { - root_render_target_ = nullptr; - } else { - auto last_surface_size = - SkISize::Make(surface->width(), surface->height()); - if (surface_size != last_surface_size) { - root_render_target_ = nullptr; - } - } - } + static const auto kRootViewIdentifier = + EmbedderExternalView::ViewIdentifier{}; - // If there is no root render target, create one now. - // TODO(43778): This should now be moved to be later in the submit call. - if (!root_render_target_) { - root_render_target_ = create_render_target_callback_( - context, MakeBackingStoreConfig(surface_size)); - } - - root_picture_recorder_ = std::make_unique(); - root_picture_recorder_->beginRecording(pending_frame_size_.width(), - pending_frame_size_.height()); + pending_views_[kRootViewIdentifier] = std::make_unique( + pending_frame_size_, pending_surface_transformation_); + composition_order_.push_back(kRootViewIdentifier); } // |ExternalViewEmbedder| void EmbedderExternalViewEmbedder::PrerollCompositeEmbeddedView( int view_id, std::unique_ptr params) { - FML_DCHECK(pending_recorders_.count(view_id) == 0); - FML_DCHECK(pending_canvas_spies_.count(view_id) == 0); - FML_DCHECK(pending_params_.count(view_id) == 0); - FML_DCHECK(std::find(composition_order_.begin(), composition_order_.end(), - view_id) == composition_order_.end()); - - pending_recorders_[view_id] = std::make_unique(); - SkCanvas* recording_canvas = pending_recorders_[view_id]->beginRecording( - pending_frame_size_.width(), pending_frame_size_.height()); - pending_canvas_spies_[view_id] = - std::make_unique(recording_canvas); - pending_params_[view_id] = *params; + FML_DCHECK(pending_views_.count(view_id) == 0); + + pending_views_[view_id] = std::make_unique( + pending_frame_size_, // frame size + pending_surface_transformation_, // surface xformation + view_id, // view identifier + std::move(params) // embedded view params + ); composition_order_.push_back(view_id); } +// |ExternalViewEmbedder| +SkCanvas* EmbedderExternalViewEmbedder::GetRootCanvas() { + auto found = pending_views_.find(EmbedderExternalView::ViewIdentifier{}); + if (found == pending_views_.end()) { + FML_DLOG(WARNING) + << "No root canvas could be found. This is extremely unlikely and " + "indicates that the external view embedder did not receive the " + "notification to begin the frame."; + return nullptr; + } + return found->second->GetCanvas(); +} + // |ExternalViewEmbedder| std::vector EmbedderExternalViewEmbedder::GetCurrentCanvases() { std::vector canvases; - for (const auto& spy : pending_canvas_spies_) { - canvases.push_back(spy.second->GetSpyingCanvas()); + for (const auto& view : pending_views_) { + const auto& external_view = view.second; + // This method (for legacy reasons) expects non-root current canvases. + if (!external_view->IsRootView()) { + canvases.push_back(external_view->GetCanvas()); + } } return canvases; } // |ExternalViewEmbedder| SkCanvas* EmbedderExternalViewEmbedder::CompositeEmbeddedView(int view_id) { - auto found = pending_canvas_spies_.find(view_id); - if (found == pending_canvas_spies_.end()) { + auto found = pending_views_.find(view_id); + if (found == pending_views_.end()) { FML_DCHECK(false) << "Attempted to composite a view that was not " "pre-rolled."; return nullptr; } - return found->second->GetSpyingCanvas(); + return found->second->GetCanvas(); } -bool EmbedderExternalViewEmbedder::RenderPictureToRenderTarget( - sk_sp picture, - const EmbedderRenderTarget* render_target) const { - if (!picture || render_target == nullptr) { - return false; - } - - auto render_surface = render_target->GetRenderSurface(); - - if (!render_surface) { - return false; - } - - auto render_canvas = render_surface->getCanvas(); +static FlutterBackingStoreConfig MakeBackingStoreConfig( + const SkISize& backing_store_size) { + FlutterBackingStoreConfig config = {}; - if (render_canvas == nullptr) { - return false; - } + config.struct_size = sizeof(config); - render_canvas->setMatrix(pending_surface_transformation_); - render_canvas->clear(SK_ColorTRANSPARENT); - render_canvas->drawPicture(picture); - render_canvas->flush(); + config.size.width = backing_store_size.width(); + config.size.height = backing_store_size.height(); - return true; + return config; } // |ExternalViewEmbedder| bool EmbedderExternalViewEmbedder::SubmitFrame(GrContext* context) { - Registry render_targets_used; - EmbedderLayers presented_layers(pending_frame_size_, - pending_device_pixel_ratio_, - pending_surface_transformation_); - - if (!root_render_target_) { - FML_LOG(ERROR) - << "Could not acquire the root render target from the embedder."; - return false; - } - - // Copy the contents of the root picture recorder onto the root surface. - if (!RenderPictureToRenderTarget( - root_picture_recorder_->finishRecordingAsPicture(), - root_render_target_.get())) { - FML_LOG(ERROR) << "Could not render into the root render target."; - return false; - } - // The root picture recorder will be reset when a new frame begins. - root_picture_recorder_.reset(); - - { - // The root surface is expressed as a layer. - presented_layers.PushBackingStoreLayer( - root_render_target_->GetBackingStore()); - } - - const auto surface_size = TransformedSurfaceSize( - pending_frame_size_, pending_surface_transformation_); - - for (const auto& view_id : composition_order_) { - FML_DCHECK(pending_recorders_.count(view_id) == 1); - FML_DCHECK(pending_canvas_spies_.count(view_id) == 1); - FML_DCHECK(pending_params_.count(view_id) == 1); - - const auto& params = pending_params_.at(view_id); - auto& recorder = pending_recorders_.at(view_id); - - auto picture = recorder->finishRecordingAsPicture(); - if (!picture) { - FML_LOG(ERROR) << "Could not finish recording into the picture before " - "on-screen composition."; - return false; - } - - // Tell the embedder that a platform view layer is present at this point. - presented_layers.PushPlatformViewLayer(view_id, params); - - if (!pending_canvas_spies_.at(view_id)->DidDrawIntoCanvas()) { - // Nothing was drawn into the overlay canvas, we don't need to tell the - // embedder to composite it. + auto [matched_render_targets, pending_keys] = + render_target_cache_.GetExistingTargetsInCache(pending_views_); + + // This is where unused render targets will be collected. Control may flow to + // the embedder. Here, the embedder has the opportunity to trample on the + // OpenGL context. + // + // For optimum performance, we should tell the render target cache to clear + // its unused entries before allocating new ones. This collection step before + // allocating new render targets ameliorates peak memory usage within the + // frame. But, this causes an issue in a known internal embedder. To work + // around this issue while that embedder migrates, collection of render + // targets is deferred after the presentation. + // + // @warning: Embedder may trample on our OpenGL context here. + auto deferred_cleanup_render_targets = + render_target_cache_.ClearAllRenderTargetsInCache(); + + for (const auto& pending_key : pending_keys) { + const auto& external_view = pending_views_.at(pending_key); + + // If the external view does not have engine rendered contents, it makes no + // sense to ask to embedder to create a render target for us as we don't + // intend to render into it and ask the embedder for presentation anyway. + // Save some memory. + if (!external_view->HasEngineRenderedContents()) { continue; } - const auto backing_store_config = MakeBackingStoreConfig(surface_size); - - RegistryKey registry_key(view_id, backing_store_config); - - auto found_render_target = registry_.find(registry_key); - - // Find a cached render target in the registry. If none exists, ask the - // embedder for a new one. - std::shared_ptr render_target; - if (found_render_target == registry_.end()) { - render_target = - create_render_target_callback_(context, backing_store_config); - } else { - render_target = found_render_target->second; - } + // This is the size of render surface we want the embedder to create for + // us. As or right now, this is going to always be equal to the frame size + // post transformation. But, in case optimizations are applied that make + // it so that embedder rendered into surfaces that aren't full screen, + // this assumption will break. So it's just best to ask view for its size + // directly. + const auto render_surface_size = external_view->GetRenderSurfaceSize(); + + const auto backing_store_config = + MakeBackingStoreConfig(render_surface_size); + + // This is where the embedder will create render targets for us. Control + // flow to the embedder makes the engine susceptible to having the embedder + // trample on the OpenGL context. Before any Skia operations are performed, + // the context must be reset. + // + // @warning: Embedder may trample on our OpenGL context here. + auto render_target = + create_render_target_callback_(context, backing_store_config); if (!render_target) { - FML_LOG(ERROR) << "Could not acquire external render target for " - "on-screen composition."; + FML_LOG(ERROR) << "Embedder did not return a valid render target."; return false; } + matched_render_targets[pending_key] = std::move(render_target); + } - render_targets_used[registry_key] = render_target; + // The OpenGL context could have been trampled by the embedder at this point + // as it attempted to collect old render targets and create new ones. Tell + // Skia to not rely on existing bindings. + if (context) { + context->resetContext(kAll_GrBackendState); + } - if (!RenderPictureToRenderTarget(picture, render_target.get())) { - FML_LOG(ERROR) << "Could not render into the render target for platform " - "view of identifier " - << view_id; + // Scribble embedder provide render targets. The order in which we scribble + // into the buffers is irrelevant to the presentation order. + for (const auto& render_target : matched_render_targets) { + if (!pending_views_.at(render_target.first) + ->Render(*render_target.second)) { + FML_LOG(ERROR) + << "Could not render into the embedder supplied render target."; return false; } + } - // Indicate a layer for the backing store containing contents rendered by - // Flutter. - presented_layers.PushBackingStoreLayer(render_target->GetBackingStore()); + // We are going to be transferring control back over to the embedder there the + // context may be trampled upon again. Flush all operations to the underlying + // rendering API. + // + // @warning: Embedder may trample on our OpenGL context here. + if (context) { + context->flush(); } - // Flush the layer description down to the embedder for presentation. - presented_layers.InvokePresentCallback(present_callback_); + // Submit the scribbled layer to the embedder for presentation. + // + // @warning: Embedder may trample on our OpenGL context here. + { + EmbedderLayers presented_layers(pending_frame_size_, + pending_device_pixel_ratio_, + pending_surface_transformation_); + // In composition order, submit backing stores and platform views to the + // embedder. + for (const auto& view_id : composition_order_) { + // If the external view has a platform view, ask the emebdder to place it + // before the Flutter rendered contents for that interleaving level. + const auto& external_view = pending_views_.at(view_id); + if (external_view->HasPlatformView()) { + presented_layers.PushPlatformViewLayer( + external_view->GetViewIdentifier() + .platform_view_id.value(), // view id + *external_view->GetEmbeddedViewParams() // view params + ); + } - // Keep the previously used render target around in case they are required - // next frame. - registry_ = std::move(render_targets_used); + // If the view has engine rendered contents, ask the embedder to place + // Flutter rendered contents for this interleaving level on top of a + // platform view. + if (external_view->HasEngineRenderedContents()) { + const auto& exteral_render_target = matched_render_targets.at(view_id); + presented_layers.PushBackingStoreLayer( + exteral_render_target->GetBackingStore()); + } + } - return true; -} + // Flush the layer description down to the embedder for presentation. + // + // @warning: Embedder may trample on our OpenGL context here. + presented_layers.InvokePresentCallback(present_callback_); + } -// |ExternalViewEmbedder| -SkCanvas* EmbedderExternalViewEmbedder::GetRootCanvas() { - if (!root_picture_recorder_) { - return nullptr; + // See why this is necessary in the comment where this collection in realized. + // + // @warning: Embedder may trample on our OpenGL context here. + deferred_cleanup_render_targets.clear(); + + // Hold all rendered layers in the render target cache for one frame to + // see if they may be reused next frame. + for (auto& render_target : matched_render_targets) { + render_target_cache_.CacheRenderTarget(render_target.first, + std::move(render_target.second)); } - return root_picture_recorder_->getRecordingCanvas(); + + return true; } } // namespace flutter diff --git a/shell/platform/embedder/embedder_external_view_embedder.h b/shell/platform/embedder/embedder_external_view_embedder.h index 16f4a5893843e..7000d2cde04cd 100644 --- a/shell/platform/embedder/embedder_external_view_embedder.h +++ b/shell/platform/embedder/embedder_external_view_embedder.h @@ -9,10 +9,10 @@ #include #include "flutter/flow/embedded_views.h" +#include "flutter/fml/hash_combine.h" #include "flutter/fml/macros.h" -#include "flutter/shell/common/canvas_spy.h" -#include "flutter/shell/platform/embedder/embedder_render_target.h" -#include "third_party/skia/include/core/SkPictureRecorder.h" +#include "flutter/shell/platform/embedder/embedder_external_view.h" +#include "flutter/shell/platform/embedder/embedder_render_target_cache.h" namespace flutter { @@ -95,59 +95,20 @@ class EmbedderExternalViewEmbedder final : public ExternalViewEmbedder { SkCanvas* GetRootCanvas() override; private: - using ViewIdentifier = int64_t; - struct RegistryKey { - ViewIdentifier view_identifier = 0; - SkISize size = SkISize::Make(0, 0); - - RegistryKey(ViewIdentifier view_identifier, - const FlutterBackingStoreConfig& config) - : view_identifier(view_identifier), - size(SkISize::Make(config.size.width, config.size.height)) {} - - struct Hash { - constexpr std::size_t operator()(RegistryKey const& key) const { - return key.view_identifier; - }; - }; - - struct Equal { - constexpr bool operator()(const RegistryKey& lhs, - const RegistryKey& rhs) const { - return lhs.view_identifier == rhs.view_identifier && - lhs.size == rhs.size; - } - }; - }; - const CreateRenderTargetCallback create_render_target_callback_; const PresentCallback present_callback_; SurfaceTransformationCallback surface_transformation_callback_; - using Registry = std::unordered_map, - RegistryKey::Hash, - RegistryKey::Equal>; - SkISize pending_frame_size_ = SkISize::Make(0, 0); double pending_device_pixel_ratio_ = 1.0; SkMatrix pending_surface_transformation_; - std::map> - pending_recorders_; - std::map> pending_canvas_spies_; - std::map pending_params_; - std::vector composition_order_; - std::shared_ptr root_render_target_; - std::unique_ptr root_picture_recorder_; - Registry registry_; + EmbedderExternalView::PendingViews pending_views_; + std::vector composition_order_; + EmbedderRenderTargetCache render_target_cache_; void Reset(); SkMatrix GetSurfaceTransformation() const; - bool RenderPictureToRenderTarget( - sk_sp picture, - const EmbedderRenderTarget* render_target) const; - FML_DISALLOW_COPY_AND_ASSIGN(EmbedderExternalViewEmbedder); }; diff --git a/shell/platform/embedder/embedder_include2.c b/shell/platform/embedder/embedder_include2.c new file mode 100644 index 0000000000000..f03500b4308c1 --- /dev/null +++ b/shell/platform/embedder/embedder_include2.c @@ -0,0 +1,9 @@ +// 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. + +#include "flutter/shell/platform/embedder/embedder.h" + +// This file is the same as embedder_include.c and ensures that static methods +// don't end up in public API header. This will cause duplicate symbols when the +// header in imported in the multiple translation units in the embedder. diff --git a/shell/platform/embedder/embedder_layers.cc b/shell/platform/embedder/embedder_layers.cc index d9e86ca1e049c..3b634235f820a 100644 --- a/shell/platform/embedder/embedder_layers.cc +++ b/shell/platform/embedder/embedder_layers.cc @@ -195,9 +195,8 @@ void EmbedderLayers::PushPlatformViewLayer( layer.size.height = transformed_layer_bounds.height(); presented_layers_.push_back(layer); -} // namespace flutter +} -/// @note Procedure doesn't copy all closures. void EmbedderLayers::InvokePresentCallback( const PresentCallback& callback) const { std::vector presented_layers_pointers; diff --git a/shell/platform/embedder/embedder_render_target_cache.cc b/shell/platform/embedder/embedder_render_target_cache.cc new file mode 100644 index 0000000000000..17a1f2f5b9a2a --- /dev/null +++ b/shell/platform/embedder/embedder_render_target_cache.cc @@ -0,0 +1,73 @@ +// 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. + +#include "flutter/shell/platform/embedder/embedder_render_target_cache.h" + +namespace flutter { + +EmbedderRenderTargetCache::EmbedderRenderTargetCache() = default; + +EmbedderRenderTargetCache::~EmbedderRenderTargetCache() = default; + +std::pair +EmbedderRenderTargetCache::GetExistingTargetsInCache( + const EmbedderExternalView::PendingViews& pending_views) { + RenderTargets resolved_render_targets; + EmbedderExternalView::ViewIdentifierSet unmatched_identifiers; + + for (const auto& view : pending_views) { + const auto& external_view = view.second; + if (!external_view->HasEngineRenderedContents()) { + continue; + } + auto& compatible_targets = + cached_render_targets_[external_view->CreateRenderTargetDescriptor()]; + if (compatible_targets.size() == 0) { + unmatched_identifiers.insert(view.first); + } else { + std::unique_ptr target = + std::move(compatible_targets.top()); + compatible_targets.pop(); + resolved_render_targets[view.first] = std::move(target); + } + } + return {std::move(resolved_render_targets), std::move(unmatched_identifiers)}; +} + +std::set> +EmbedderRenderTargetCache::ClearAllRenderTargetsInCache() { + std::set> cleared_targets; + for (auto& targets : cached_render_targets_) { + auto& targets_stack = targets.second; + while (!targets_stack.empty()) { + cleared_targets.emplace(std::move(targets_stack.top())); + targets_stack.pop(); + } + } + cached_render_targets_.clear(); + return cleared_targets; +} + +void EmbedderRenderTargetCache::CacheRenderTarget( + EmbedderExternalView::ViewIdentifier view_identifier, + std::unique_ptr target) { + if (target == nullptr) { + return; + } + auto surface = target->GetRenderSurface(); + auto desc = EmbedderExternalView::RenderTargetDescriptor{ + view_identifier, SkISize::Make(surface->width(), surface->height())}; + cached_render_targets_[desc].push(std::move(target)); +} + +size_t EmbedderRenderTargetCache::GetCachedTargetsCount() const { + size_t count = 0; + for (const auto& targets : cached_render_targets_) { + count += targets.second.size(); + } + return count; +} + +} // namespace flutter diff --git a/shell/platform/embedder/embedder_render_target_cache.h b/shell/platform/embedder/embedder_render_target_cache.h new file mode 100644 index 0000000000000..3c595da9bdb17 --- /dev/null +++ b/shell/platform/embedder/embedder_render_target_cache.h @@ -0,0 +1,60 @@ +// 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. + +#ifndef FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_RENDER_TARGET_CACHE_H_ +#define FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_RENDER_TARGET_CACHE_H_ + +#include +#include +#include +#include + +#include "flutter/fml/macros.h" +#include "flutter/shell/platform/embedder/embedder_external_view.h" + +namespace flutter { + +//------------------------------------------------------------------------------ +/// @brief A cache used to reference render targets that are owned by the +/// embedder but needed by th engine to render a frame. +/// +class EmbedderRenderTargetCache { + public: + EmbedderRenderTargetCache(); + + ~EmbedderRenderTargetCache(); + + using RenderTargets = + std::unordered_map, + EmbedderExternalView::ViewIdentifier::Hash, + EmbedderExternalView::ViewIdentifier::Equal>; + + std::pair + GetExistingTargetsInCache( + const EmbedderExternalView::PendingViews& pending_views); + + std::set> + ClearAllRenderTargetsInCache(); + + void CacheRenderTarget(EmbedderExternalView::ViewIdentifier view_identifier, + std::unique_ptr target); + + size_t GetCachedTargetsCount() const; + + private: + using CachedRenderTargets = + std::unordered_map>, + EmbedderExternalView::RenderTargetDescriptor::Hash, + EmbedderExternalView::RenderTargetDescriptor::Equal>; + + CachedRenderTargets cached_render_targets_; + + FML_DISALLOW_COPY_AND_ASSIGN(EmbedderRenderTargetCache); +}; + +} // namespace flutter + +#endif // FLUTTER_SHELL_PLATFORM_EMBEDDER_EMBEDDER_RENDER_TARGET_CACHE_H_ diff --git a/shell/platform/embedder/fixtures/main.dart b/shell/platform/embedder/fixtures/main.dart index 6368c25afc913..95c25aaefb6c1 100644 --- a/shell/platform/embedder/fixtures/main.dart +++ b/shell/platform/embedder/fixtures/main.dart @@ -689,3 +689,43 @@ void objects_can_be_posted() { signalNativeCount(port.sendPort.nativePort); } +@pragma('vm:entry-point') +void empty_scene_posts_zero_layers_to_compositor() { + window.onBeginFrame = (Duration duration) { + SceneBuilder builder = SceneBuilder(); + // Should not render anything. + builder.pushClipRect(Rect.fromLTRB(0.0, 0.0, 300.0, 200.0)); + window.render(builder.build()); + }; + window.scheduleFrame(); +} + +@pragma('vm:entry-point') +void compositor_can_post_only_platform_views() { + window.onBeginFrame = (Duration duration) { + SceneBuilder builder = SceneBuilder(); + builder.addPlatformView(42, width: 300.0, height: 200.0); + builder.addPlatformView(24, width: 300.0, height: 200.0); + window.render(builder.build()); + }; + window.scheduleFrame(); +} + +@pragma('vm:entry-point') +void render_targets_are_recycled() { + int frame_count = 0; + window.onBeginFrame = (Duration duration) { + SceneBuilder builder = SceneBuilder(); + for (int i = 0; i < 10; i++) { + builder.addPicture(Offset(0.0, 0.0), CreateGradientBox(Size(30.0, 20.0))); + builder.addPlatformView(42 + i, width: 30.0, height: 20.0); + } + window.render(builder.build()); + window.scheduleFrame(); + frame_count++; + if (frame_count == 8) { + signalNativeTest(); + } + }; + window.scheduleFrame(); +} diff --git a/shell/platform/embedder/tests/embedder_test_compositor.cc b/shell/platform/embedder/tests/embedder_test_compositor.cc index 153e5df4d6f80..843132643b4b2 100644 --- a/shell/platform/embedder/tests/embedder_test_compositor.cc +++ b/shell/platform/embedder/tests/embedder_test_compositor.cc @@ -24,6 +24,14 @@ void EmbedderTestCompositor::SetRenderTargetType(RenderTargetType type) { type_ = type; } +static void InvokeAllCallbacks(const std::vector& callbacks) { + for (const auto& callback : callbacks) { + if (callback) { + callback(); + } + } +} + bool EmbedderTestCompositor::CreateBackingStore( const FlutterBackingStoreConfig* config, FlutterBackingStore* backing_store_out) { @@ -43,7 +51,8 @@ bool EmbedderTestCompositor::CreateBackingStore( return false; } if (success) { - backing_stores_count_++; + backing_stores_created_++; + InvokeAllCallbacks(on_create_render_target_callbacks_); } return success; } @@ -54,7 +63,8 @@ bool EmbedderTestCompositor::CollectBackingStore( // stores. Our user_data is just the canvas from that backing store and does // not need to be explicitly collected. Embedders might have some other state // they want to collect though. - backing_stores_count_--; + backing_stores_collected_++; + InvokeAllCallbacks(on_collect_render_target_callbacks_); return true; } @@ -162,12 +172,15 @@ bool EmbedderTestCompositor::Present(const FlutterLayer** layers, // If the test has asked to access the layers and renderers being presented. // Access the same and present it to the test for its test assertions. - if (next_present_callback_) { - auto callback = next_present_callback_; - next_present_callback_ = nullptr; + if (present_callback_) { + auto callback = present_callback_; + if (present_callback_is_one_shot_) { + present_callback_ = nullptr; + } callback(layers, layers_count); } + InvokeAllCallbacks(on_present_callbacks_); return true; } @@ -185,7 +198,6 @@ bool EmbedderTestCompositor::CreateFramebufferRenderSurface( kBottomLeft_GrSurfaceOrigin, // surface origin nullptr, // surface properties false // mipmaps - ); if (!surface) { @@ -307,8 +319,15 @@ bool EmbedderTestCompositor::CreateSoftwareRenderSurface( void EmbedderTestCompositor::SetNextPresentCallback( const PresentCallback& next_present_callback) { - FML_CHECK(!next_present_callback_); - next_present_callback_ = next_present_callback; + SetPresentCallback(next_present_callback, true); +} + +void EmbedderTestCompositor::SetPresentCallback( + const PresentCallback& present_callback, + bool one_shot) { + FML_CHECK(!present_callback_); + present_callback_ = present_callback; + present_callback_is_one_shot_ = one_shot; } void EmbedderTestCompositor::SetNextSceneCallback( @@ -322,8 +341,31 @@ void EmbedderTestCompositor::SetPlatformViewRendererCallback( platform_view_renderer_callback_ = callback; } -size_t EmbedderTestCompositor::GetBackingStoresCount() const { - return backing_stores_count_; +size_t EmbedderTestCompositor::GetPendingBackingStoresCount() const { + FML_CHECK(backing_stores_created_ >= backing_stores_collected_); + return backing_stores_created_ - backing_stores_collected_; +} + +size_t EmbedderTestCompositor::GetBackingStoresCreatedCount() const { + return backing_stores_created_; +} + +size_t EmbedderTestCompositor::GetBackingStoresCollectedCount() const { + return backing_stores_collected_; +} + +void EmbedderTestCompositor::AddOnCreateRenderTargetCallback( + fml::closure callback) { + on_create_render_target_callbacks_.push_back(callback); +} + +void EmbedderTestCompositor::AddOnCollectRenderTargetCallback( + fml::closure callback) { + on_collect_render_target_callbacks_.push_back(callback); +} + +void EmbedderTestCompositor::AddOnPresentCallback(fml::closure callback) { + on_present_callbacks_.push_back(callback); } } // namespace testing diff --git a/shell/platform/embedder/tests/embedder_test_compositor.h b/shell/platform/embedder/tests/embedder_test_compositor.h index 418b179e18e9e..ded5cc24b8b08 100644 --- a/shell/platform/embedder/tests/embedder_test_compositor.h +++ b/shell/platform/embedder/tests/embedder_test_compositor.h @@ -7,6 +7,7 @@ #include +#include "flutter/fml/closure.h" #include "flutter/fml/macros.h" #include "flutter/shell/platform/embedder/embedder.h" #include "third_party/skia/include/gpu/GrContext.h" @@ -52,23 +53,40 @@ class EmbedderTestCompositor { /// void SetNextPresentCallback(const PresentCallback& next_present_callback); + void SetPresentCallback(const PresentCallback& present_callback, + bool one_shot); + using NextSceneCallback = std::function image)>; void SetNextSceneCallback(const NextSceneCallback& next_scene_callback); sk_sp GetLastComposition(); - size_t GetBackingStoresCount() const; + size_t GetPendingBackingStoresCount() const; + + size_t GetBackingStoresCreatedCount() const; + + size_t GetBackingStoresCollectedCount() const; + + void AddOnCreateRenderTargetCallback(fml::closure callback); + + void AddOnCollectRenderTargetCallback(fml::closure callback); + + void AddOnPresentCallback(fml::closure callback); private: const SkISize surface_size_; sk_sp context_; RenderTargetType type_ = RenderTargetType::kOpenGLFramebuffer; PlatformViewRendererCallback platform_view_renderer_callback_; - PresentCallback next_present_callback_; + bool present_callback_is_one_shot_ = false; + PresentCallback present_callback_; NextSceneCallback next_scene_callback_; sk_sp last_composition_; - // The number of currently allocated backing stores (created - collected). - size_t backing_stores_count_ = 0; + size_t backing_stores_created_ = 0; + size_t backing_stores_collected_ = 0; + std::vector on_create_render_target_callbacks_; + std::vector on_collect_render_target_callbacks_; + std::vector on_present_callbacks_; bool UpdateOffscrenComposition(const FlutterLayer** layers, size_t layers_count); diff --git a/shell/platform/embedder/tests/embedder_unittests.cc b/shell/platform/embedder/tests/embedder_unittests.cc index 3f128e2e56a88..8e2cd17e05170 100644 --- a/shell/platform/embedder/tests/embedder_unittests.cc +++ b/shell/platform/embedder/tests/embedder_unittests.cc @@ -1793,7 +1793,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderWithPlatformLayerOnBottom) { ASSERT_TRUE(ImageMatchesFixture( "compositor_with_platform_layer_on_bottom.png", scene_image)); - ASSERT_EQ(context.GetCompositor().GetBackingStoresCount(), 1u); + ASSERT_EQ(context.GetCompositor().GetPendingBackingStoresCount(), 1u); } //------------------------------------------------------------------------------ @@ -2397,26 +2397,11 @@ TEST_F(EmbedderTest, VerifyB141980393) { context.GetCompositor().SetNextPresentCallback( [&](const FlutterLayer** layers, size_t layers_count) { - ASSERT_EQ(layers_count, 2u); + ASSERT_EQ(layers_count, 1u); // Layer Root { - FlutterLayer layer = {}; - FlutterBackingStore backing_store = *layers[0]->backing_store; - layer.backing_store = &backing_store; - layer.struct_size = sizeof(layer); - layer.type = kFlutterLayerContentTypeBackingStore; - - // Our root surface has been rotated. - layer.size = FlutterSizeMake(600.0, 800.0); - layer.offset = FlutterPointMake(0.0, 0.0); - - ASSERT_EQ(*layers[0], layer); - } - - // Layer 1 - { - FlutterPlatformView platform_view = *layers[1]->platform_view; + FlutterPlatformView platform_view = *layers[0]->platform_view; platform_view.struct_size = sizeof(platform_view); platform_view.identifier = 1337; @@ -2458,7 +2443,7 @@ TEST_F(EmbedderTest, VerifyB141980393) { layer.size = FlutterSizeMake(xformed_platform_view_rect.width(), xformed_platform_view_rect.height()); - ASSERT_EQ(*layers[1], layer); + ASSERT_EQ(*layers[0], layer); } latch.Signal(); @@ -3544,10 +3529,10 @@ TEST_F(EmbedderTest, ClipsAreCorrectlyCalculated) { fml::AutoResetWaitableEvent latch; context.GetCompositor().SetNextPresentCallback( [&](const FlutterLayer** layers, size_t layers_count) { - ASSERT_EQ(layers_count, 3u); + ASSERT_EQ(layers_count, 2u); { - FlutterPlatformView platform_view = *layers[1]->platform_view; + FlutterPlatformView platform_view = *layers[0]->platform_view; platform_view.struct_size = sizeof(platform_view); platform_view.identifier = 42; @@ -3558,16 +3543,16 @@ TEST_F(EmbedderTest, ClipsAreCorrectlyCalculated) { layer.size = FlutterSizeMake(300.0, 400.0); layer.offset = FlutterPointMake(0.0, 0.0); - ASSERT_EQ(*layers[1], layer); + ASSERT_EQ(*layers[0], layer); bool clip_assertions_checked = false; // The total transformation on the stack upto the platform view. const auto total_xformation = - GetTotalMutationTransformationMatrix(layers[1]->platform_view); + GetTotalMutationTransformationMatrix(layers[0]->platform_view); FilterMutationsByType( - layers[1]->platform_view, + layers[0]->platform_view, kFlutterPlatformViewMutationTypeClipRect, [&](const auto& mutation) { FlutterRect clip = mutation.clip_rect; @@ -3621,10 +3606,10 @@ TEST_F(EmbedderTest, ComplexClipsAreCorrectlyCalculated) { fml::AutoResetWaitableEvent latch; context.GetCompositor().SetNextPresentCallback( [&](const FlutterLayer** layers, size_t layers_count) { - ASSERT_EQ(layers_count, 3u); + ASSERT_EQ(layers_count, 2u); { - FlutterPlatformView platform_view = *layers[1]->platform_view; + FlutterPlatformView platform_view = *layers[0]->platform_view; platform_view.struct_size = sizeof(platform_view); platform_view.identifier = 42; @@ -3635,7 +3620,7 @@ TEST_F(EmbedderTest, ComplexClipsAreCorrectlyCalculated) { layer.size = FlutterSizeMake(600.0, 1024.0); layer.offset = FlutterPointMake(0.0, -256.0); - ASSERT_EQ(*layers[1], layer); + ASSERT_EQ(*layers[0], layer); const auto** mutations = platform_view.mutations; @@ -4006,5 +3991,215 @@ TEST_F(EmbedderTest, CanPostTaskToAllNativeThreads) { ASSERT_FALSE(engine.is_valid()); } +TEST_F(EmbedderTest, CompositorCanPostZeroLayersForPresentation) { + auto& context = GetEmbedderContext(); + + EmbedderConfigBuilder builder(context); + builder.SetOpenGLRendererConfig(SkISize::Make(300, 200)); + builder.SetCompositor(); + builder.SetDartEntrypoint("empty_scene_posts_zero_layers_to_compositor"); + context.GetCompositor().SetRenderTargetType( + EmbedderTestCompositor::RenderTargetType::kOpenGLTexture); + + fml::AutoResetWaitableEvent latch; + + context.GetCompositor().SetNextPresentCallback( + [&](const FlutterLayer** layers, size_t layers_count) { + ASSERT_EQ(layers_count, 0u); + latch.Signal(); + }); + + auto engine = builder.LaunchEngine(); + + FlutterWindowMetricsEvent event = {}; + event.struct_size = sizeof(event); + event.width = 300; + event.height = 200; + event.pixel_ratio = 1.0; + ASSERT_EQ(FlutterEngineSendWindowMetricsEvent(engine.get(), &event), + kSuccess); + ASSERT_TRUE(engine.is_valid()); + latch.Wait(); + + ASSERT_EQ(context.GetCompositor().GetPendingBackingStoresCount(), 0u); +} + +TEST_F(EmbedderTest, CompositorCanPostOnlyPlatformViews) { + auto& context = GetEmbedderContext(); + + EmbedderConfigBuilder builder(context); + builder.SetOpenGLRendererConfig(SkISize::Make(300, 200)); + builder.SetCompositor(); + builder.SetDartEntrypoint("compositor_can_post_only_platform_views"); + context.GetCompositor().SetRenderTargetType( + EmbedderTestCompositor::RenderTargetType::kOpenGLTexture); + + fml::AutoResetWaitableEvent latch; + + context.GetCompositor().SetNextPresentCallback( + [&](const FlutterLayer** layers, size_t layers_count) { + ASSERT_EQ(layers_count, 2u); + + // Layer 0 + { + FlutterPlatformView platform_view = *layers[0]->platform_view; + platform_view.struct_size = sizeof(platform_view); + platform_view.identifier = 42; + FlutterLayer layer = {}; + layer.struct_size = sizeof(layer); + layer.type = kFlutterLayerContentTypePlatformView; + layer.platform_view = &platform_view; + layer.size = FlutterSizeMake(300.0, 200.0); + layer.offset = FlutterPointMake(0.0, 0.0); + + ASSERT_EQ(*layers[0], layer); + } + + // Layer 1 + { + FlutterPlatformView platform_view = *layers[1]->platform_view; + platform_view.struct_size = sizeof(platform_view); + platform_view.identifier = 24; + FlutterLayer layer = {}; + layer.struct_size = sizeof(layer); + layer.type = kFlutterLayerContentTypePlatformView; + layer.platform_view = &platform_view; + layer.size = FlutterSizeMake(300.0, 200.0); + layer.offset = FlutterPointMake(0.0, 0.0); + + ASSERT_EQ(*layers[1], layer); + } + latch.Signal(); + }); + + auto engine = builder.LaunchEngine(); + + FlutterWindowMetricsEvent event = {}; + event.struct_size = sizeof(event); + event.width = 300; + event.height = 200; + event.pixel_ratio = 1.0; + ASSERT_EQ(FlutterEngineSendWindowMetricsEvent(engine.get(), &event), + kSuccess); + ASSERT_TRUE(engine.is_valid()); + latch.Wait(); + + ASSERT_EQ(context.GetCompositor().GetPendingBackingStoresCount(), 0u); +} + +TEST_F(EmbedderTest, CompositorRenderTargetsAreRecycled) { + auto& context = GetEmbedderContext(); + + EmbedderConfigBuilder builder(context); + builder.SetOpenGLRendererConfig(SkISize::Make(300, 200)); + builder.SetCompositor(); + builder.SetDartEntrypoint("render_targets_are_recycled"); + context.GetCompositor().SetRenderTargetType( + EmbedderTestCompositor::RenderTargetType::kOpenGLTexture); + + fml::CountDownLatch latch(2); + + context.AddNativeCallback("SignalNativeTest", + CREATE_NATIVE_ENTRY([&](Dart_NativeArguments args) { + latch.CountDown(); + })); + + context.GetCompositor().SetNextPresentCallback( + [&](const FlutterLayer** layers, size_t layers_count) { + ASSERT_EQ(layers_count, 20u); + latch.CountDown(); + }); + + auto engine = builder.LaunchEngine(); + ASSERT_TRUE(engine.is_valid()); + + FlutterWindowMetricsEvent event = {}; + event.struct_size = sizeof(event); + event.width = 300; + event.height = 200; + event.pixel_ratio = 1.0; + ASSERT_EQ(FlutterEngineSendWindowMetricsEvent(engine.get(), &event), + kSuccess); + + latch.Wait(); + ASSERT_EQ(context.GetCompositor().GetPendingBackingStoresCount(), 10u); + ASSERT_EQ(context.GetCompositor().GetBackingStoresCreatedCount(), 10u); + ASSERT_EQ(context.GetCompositor().GetBackingStoresCollectedCount(), 0u); + // Killing the engine should immediately collect all pending render targets. + engine.reset(); + ASSERT_EQ(context.GetCompositor().GetPendingBackingStoresCount(), 0u); + ASSERT_EQ(context.GetCompositor().GetBackingStoresCreatedCount(), 10u); + ASSERT_EQ(context.GetCompositor().GetBackingStoresCollectedCount(), 10u); +} + +TEST_F(EmbedderTest, CompositorRenderTargetsAreInStableOrder) { + auto& context = GetEmbedderContext(); + + EmbedderConfigBuilder builder(context); + builder.SetOpenGLRendererConfig(SkISize::Make(300, 200)); + builder.SetCompositor(); + builder.SetDartEntrypoint("render_targets_are_recycled"); + context.GetCompositor().SetRenderTargetType( + EmbedderTestCompositor::RenderTargetType::kOpenGLTexture); + + fml::CountDownLatch latch(2); + + context.AddNativeCallback("SignalNativeTest", + CREATE_NATIVE_ENTRY([&](Dart_NativeArguments args) { + latch.CountDown(); + })); + + size_t frame_count = 0; + std::vector first_frame_backing_store_user_data; + context.GetCompositor().SetPresentCallback( + [&](const FlutterLayer** layers, size_t layers_count) { + ASSERT_EQ(layers_count, 20u); + + if (first_frame_backing_store_user_data.size() == 0u) { + for (size_t i = 0; i < layers_count; ++i) { + if (layers[i]->type == kFlutterLayerContentTypeBackingStore) { + first_frame_backing_store_user_data.push_back( + layers[i]->backing_store->user_data); + } + } + return; + } + + ASSERT_EQ(first_frame_backing_store_user_data.size(), 10u); + + frame_count++; + std::vector backing_store_user_data; + for (size_t i = 0; i < layers_count; ++i) { + if (layers[i]->type == kFlutterLayerContentTypeBackingStore) { + backing_store_user_data.push_back( + layers[i]->backing_store->user_data); + } + } + + ASSERT_EQ(backing_store_user_data.size(), 10u); + + ASSERT_EQ(first_frame_backing_store_user_data, backing_store_user_data); + + if (frame_count == 20) { + latch.CountDown(); + } + }, + false // one shot + ); + + auto engine = builder.LaunchEngine(); + ASSERT_TRUE(engine.is_valid()); + + FlutterWindowMetricsEvent event = {}; + event.struct_size = sizeof(event); + event.width = 300; + event.height = 200; + event.pixel_ratio = 1.0; + ASSERT_EQ(FlutterEngineSendWindowMetricsEvent(engine.get(), &event), + kSuccess); + + latch.Wait(); +} + } // namespace testing } // namespace flutter From 971122b314f1d403b1466fe9c1fedd3a1e385c8b Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Mon, 24 Feb 2020 14:21:04 -0800 Subject: [PATCH 022/521] [web] Reduce the usage of unnecessary lists in pointer binding (#16745) --- .../lib/src/engine/pointer_binding.dart | 192 ++++++++---------- .../lib/src/engine/pointer_converter.dart | 33 +++ .../test/engine/pointer_binding_test.dart | 2 +- 3 files changed, 117 insertions(+), 110 deletions(-) diff --git a/lib/web_ui/lib/src/engine/pointer_binding.dart b/lib/web_ui/lib/src/engine/pointer_binding.dart index 5f7eed8e9dbf7..6b6726f3b6ce7 100644 --- a/lib/web_ui/lib/src/engine/pointer_binding.dart +++ b/lib/web_ui/lib/src/engine/pointer_binding.dart @@ -308,7 +308,7 @@ class _ButtonSanitizer { return _htmlButtonsToFlutterButtons(buttons); } - List<_SanitizedDetails> sanitizeDownEvent({ + _SanitizedDetails sanitizeDownEvent({ @required int button, @required int buttons, }) { @@ -319,15 +319,13 @@ class _ButtonSanitizer { } _pressedButtons = _inferDownFlutterButtons(button, buttons); - return <_SanitizedDetails>[ - _SanitizedDetails( - change: ui.PointerChange.down, - buttons: _pressedButtons, - ) - ]; + return _SanitizedDetails( + change: ui.PointerChange.down, + buttons: _pressedButtons, + ); } - List<_SanitizedDetails> sanitizeMoveEvent({@required int buttons}) { + _SanitizedDetails sanitizeMoveEvent({@required int buttons}) { final int newPressedButtons = _htmlButtonsToFlutterButtons(buttons); // This could happen when the context menu is active and the user clicks // RMB somewhere else. The browser sends a down event with `buttons:0`. @@ -335,56 +333,50 @@ class _ButtonSanitizer { // In this case, we keep the old `buttons` value so we don't confuse the // framework. if (_pressedButtons != 0 && newPressedButtons == 0) { - return <_SanitizedDetails>[ - _SanitizedDetails( - change: ui.PointerChange.move, - buttons: _pressedButtons, - ) - ]; + return _SanitizedDetails( + change: ui.PointerChange.move, + buttons: _pressedButtons, + ); } // This could happen when the user clicks RMB then moves the mouse quickly. // The brower sends a move event with `buttons:2` even though there's no // buttons down yet. if (_pressedButtons == 0 && newPressedButtons != 0) { - return <_SanitizedDetails>[ - _SanitizedDetails( - change: ui.PointerChange.hover, - buttons: _pressedButtons, - ) - ]; + return _SanitizedDetails( + change: ui.PointerChange.hover, + buttons: _pressedButtons, + ); } _pressedButtons = newPressedButtons; - return <_SanitizedDetails>[ - _SanitizedDetails( - change: _pressedButtons == 0 - ? ui.PointerChange.hover - : ui.PointerChange.move, - buttons: _pressedButtons, - ) - ]; + return _SanitizedDetails( + change: _pressedButtons == 0 + ? ui.PointerChange.hover + : ui.PointerChange.move, + buttons: _pressedButtons, + ); } - List<_SanitizedDetails> sanitizeUpEvent() { + _SanitizedDetails sanitizeUpEvent() { // The pointer could have been released by a `pointerout` event, in which // case `pointerup` should have no effect. if (_pressedButtons == 0) { - return <_SanitizedDetails>[]; + return null; } _pressedButtons = 0; - return <_SanitizedDetails>[_SanitizedDetails( + return _SanitizedDetails( change: ui.PointerChange.up, buttons: _pressedButtons, - )]; + ); } - List<_SanitizedDetails> sanitizeCancelEvent() { + _SanitizedDetails sanitizeCancelEvent() { _pressedButtons = 0; - return <_SanitizedDetails>[_SanitizedDetails( + return _SanitizedDetails( change: ui.PointerChange.cancel, buttons: _pressedButtons, - )]; + ); } } @@ -415,13 +407,9 @@ class _PointerAdapter extends _BaseAdapter with _WheelEventListenerMixin { return sanitizer; } - void _removePointerIfUnhoverable(List<_SanitizedDetails> details, html.PointerEvent event) { + void _removePointerIfUnhoverable(html.PointerEvent event) { if (event.pointerType == 'touch') { _sanitizers.remove(event.pointerId); - details.add(_SanitizedDetails( - buttons: 0, - change: ui.PointerChange.remove, - )); } } @@ -437,12 +425,12 @@ class _PointerAdapter extends _BaseAdapter with _WheelEventListenerMixin { _addPointerEventListener('pointerdown', (html.PointerEvent event) { final int device = event.pointerId; final List pointerData = []; - final List<_SanitizedDetails> detailsList = + final _SanitizedDetails details = _ensureSanitizer(device).sanitizeDownEvent( button: event.button, buttons: event.buttons, ); - _convertEventsToPointerData(data: pointerData, event: event, detailsList: detailsList); + _convertEventsToPointerData(data: pointerData, event: event, details: details); _callback(pointerData); }); @@ -450,19 +438,23 @@ class _PointerAdapter extends _BaseAdapter with _WheelEventListenerMixin { final int device = event.pointerId; final _ButtonSanitizer sanitizer = _ensureSanitizer(device); final List pointerData = []; - final Iterable<_SanitizedDetails> detailsList = _expandEvents(event).expand( + final Iterable<_SanitizedDetails> detailsList = _expandEvents(event).map( (html.PointerEvent expandedEvent) => sanitizer.sanitizeMoveEvent(buttons: expandedEvent.buttons), ); - _convertEventsToPointerData(data: pointerData, event: event, detailsList: detailsList); + for (_SanitizedDetails details in detailsList) { + _convertEventsToPointerData(data: pointerData, event: event, details: details); + } _callback(pointerData); }); _addPointerEventListener('pointerup', (html.PointerEvent event) { final int device = event.pointerId; final List pointerData = []; - final List<_SanitizedDetails> detailsList = _getSanitizer(device).sanitizeUpEvent(); - _removePointerIfUnhoverable(detailsList, event); - _convertEventsToPointerData(data: pointerData, event: event, detailsList: detailsList); + final _SanitizedDetails details = _getSanitizer(device).sanitizeUpEvent(); + _removePointerIfUnhoverable(event); + if (details != null) { + _convertEventsToPointerData(data: pointerData, event: event, details: details); + } _callback(pointerData); }); @@ -471,9 +463,9 @@ class _PointerAdapter extends _BaseAdapter with _WheelEventListenerMixin { _addPointerEventListener('pointercancel', (html.PointerEvent event) { final int device = event.pointerId; final List pointerData = []; - final List<_SanitizedDetails> detailsList = _getSanitizer(device).sanitizeCancelEvent(); - _removePointerIfUnhoverable(detailsList, event); - _convertEventsToPointerData(data: pointerData, event: event, detailsList: detailsList); + final _SanitizedDetails details = _getSanitizer(device).sanitizeCancelEvent(); + _removePointerIfUnhoverable(event); + _convertEventsToPointerData(data: pointerData, event: event, details: details); _callback(pointerData); }); @@ -490,15 +482,15 @@ class _PointerAdapter extends _BaseAdapter with _WheelEventListenerMixin { } // For each event that is de-coalesced from `event` and described in - // `detailsList`, convert it to pointer data and store in `data`. + // `details`, convert it to pointer data and store in `data`. void _convertEventsToPointerData({ @required List data, @required html.PointerEvent event, - @required Iterable<_SanitizedDetails> detailsList, + @required _SanitizedDetails details, }) { assert(data != null); assert(event != null); - assert(detailsList != null); + assert(details != null); final ui.PointerDeviceKind kind = _pointerTypeToDeviceKind(event.pointerType); // We force `device: _mouseDeviceId` on mouse pointers because Wheel events // might come before any PointerEvents, and since wheel events don't contain @@ -506,23 +498,21 @@ class _PointerAdapter extends _BaseAdapter with _WheelEventListenerMixin { final int device = kind == ui.PointerDeviceKind.mouse ? _mouseDeviceId : event.pointerId; final double tilt = _computeHighestTilt(event); final Duration timeStamp = _BaseAdapter._eventTimeStampToDuration(event.timeStamp); - for (_SanitizedDetails details in detailsList) { - _pointerDataConverter.convert( - data, - change: details.change, - timeStamp: timeStamp, - kind: kind, - signalKind: ui.PointerSignalKind.none, - device: device, - physicalX: event.client.x * ui.window.devicePixelRatio, - physicalY: event.client.y * ui.window.devicePixelRatio, - buttons: details.buttons, - pressure: event.pressure, - pressureMin: 0.0, - pressureMax: 1.0, - tilt: tilt, - ); - } + _pointerDataConverter.convert( + data, + change: details.change, + timeStamp: timeStamp, + kind: kind, + signalKind: ui.PointerSignalKind.none, + device: device, + physicalX: event.client.x * ui.window.devicePixelRatio, + physicalY: event.client.y * ui.window.devicePixelRatio, + buttons: details.buttons, + pressure: event.pressure, + pressureMin: 0.0, + pressureMax: 1.0, + tilt: tilt, + ); } List _expandEvents(html.PointerEvent event) { @@ -530,7 +520,7 @@ class _PointerAdapter extends _BaseAdapter with _WheelEventListenerMixin { // using the original event. if (js_util.hasProperty(event, 'getCoalescedEvents')) { final List coalescedEvents = - event.getCoalescedEvents(); + event.getCoalescedEvents().cast(); // Some events don't perform coalescing, so they return an empty list. In // that case, we also fallback to using the original event. if (coalescedEvents.isNotEmpty) { @@ -639,13 +629,6 @@ class _TouchAdapter extends _BaseAdapter { pressed: false, timeStamp: timeStamp, ); - _convertEventToPointerData( - data: pointerData, - change: ui.PointerChange.remove, - touch: touch, - pressed: false, - timeStamp: timeStamp, - ); } } _callback(pointerData); @@ -665,13 +648,6 @@ class _TouchAdapter extends _BaseAdapter { pressed: false, timeStamp: timeStamp, ); - _convertEventToPointerData( - data: pointerData, - change: ui.PointerChange.remove, - touch: touch, - pressed: false, - timeStamp: timeStamp, - ); } } _callback(pointerData); @@ -742,29 +718,29 @@ class _MouseAdapter extends _BaseAdapter with _WheelEventListenerMixin { void setup() { _addMouseEventListener('mousedown', (html.MouseEvent event) { final List pointerData = []; - final List<_SanitizedDetails> sanitizedDetails = + final _SanitizedDetails sanitizedDetails = _sanitizer.sanitizeDownEvent( button: event.button, buttons: event.buttons, ); - _convertEventsToPointerData(data: pointerData, event: event, detailsList: sanitizedDetails); + _convertEventsToPointerData(data: pointerData, event: event, details: sanitizedDetails); _callback(pointerData); }); _addMouseEventListener('mousemove', (html.MouseEvent event) { final List pointerData = []; - final List<_SanitizedDetails> sanitizedDetails = _sanitizer.sanitizeMoveEvent(buttons: event.buttons); - _convertEventsToPointerData(data: pointerData, event: event, detailsList: sanitizedDetails); + final _SanitizedDetails sanitizedDetails = _sanitizer.sanitizeMoveEvent(buttons: event.buttons); + _convertEventsToPointerData(data: pointerData, event: event, details: sanitizedDetails); _callback(pointerData); }); _addMouseEventListener('mouseup', (html.MouseEvent event) { final List pointerData = []; final bool isEndOfDrag = event.buttons == 0; - final List<_SanitizedDetails> sanitizedDetails = isEndOfDrag ? + final _SanitizedDetails sanitizedDetails = isEndOfDrag ? _sanitizer.sanitizeUpEvent() : _sanitizer.sanitizeMoveEvent(buttons: event.buttons); - _convertEventsToPointerData(data: pointerData, event: event, detailsList: sanitizedDetails); + _convertEventsToPointerData(data: pointerData, event: event, details: sanitizedDetails); _callback(pointerData); }); @@ -785,26 +761,24 @@ class _MouseAdapter extends _BaseAdapter with _WheelEventListenerMixin { void _convertEventsToPointerData({ @required List data, @required html.MouseEvent event, - @required Iterable<_SanitizedDetails> detailsList, + @required _SanitizedDetails details, }) { assert(data != null); assert(event != null); - assert(detailsList != null); - for (_SanitizedDetails details in detailsList) { - _pointerDataConverter.convert( - data, - change: details.change, - timeStamp: _BaseAdapter._eventTimeStampToDuration(event.timeStamp), - kind: ui.PointerDeviceKind.mouse, - signalKind: ui.PointerSignalKind.none, - device: _mouseDeviceId, - physicalX: event.client.x * ui.window.devicePixelRatio, - physicalY: event.client.y * ui.window.devicePixelRatio, - buttons: details.buttons, - pressure: 1.0, - pressureMin: 0.0, - pressureMax: 1.0, - ); - } + assert(details != null); + _pointerDataConverter.convert( + data, + change: details.change, + timeStamp: _BaseAdapter._eventTimeStampToDuration(event.timeStamp), + kind: ui.PointerDeviceKind.mouse, + signalKind: ui.PointerSignalKind.none, + device: _mouseDeviceId, + physicalX: event.client.x * ui.window.devicePixelRatio, + physicalY: event.client.y * ui.window.devicePixelRatio, + buttons: details.buttons, + pressure: 1.0, + pressureMin: 0.0, + pressureMax: 1.0, + ); } } diff --git a/lib/web_ui/lib/src/engine/pointer_converter.dart b/lib/web_ui/lib/src/engine/pointer_converter.dart index cda223d092b4a..f08ef76c0c937 100644 --- a/lib/web_ui/lib/src/engine/pointer_converter.dart +++ b/lib/web_ui/lib/src/engine/pointer_converter.dart @@ -534,6 +534,39 @@ class PointerDataConverter { scrollDeltaY: scrollDeltaY, ) ); + if (kind == ui.PointerDeviceKind.touch) { + // The browser sends a new device ID for each touch gesture. To + // avoid memory leaks, we send a "remove" event when the gesture is + // over (i.e. when "up" or "cancel" is received). + result.add( + _synthesizePointerData( + timeStamp: timeStamp, + change: ui.PointerChange.remove, + kind: kind, + device: device, + physicalX: physicalX, + physicalY: physicalY, + buttons: 0, + obscured: obscured, + pressure: 0.0, + pressureMin: pressureMin, + pressureMax: pressureMax, + distance: distance, + distanceMax: distanceMax, + size: size, + radiusMajor: radiusMajor, + radiusMinor: radiusMinor, + radiusMin: radiusMin, + radiusMax: radiusMax, + orientation: orientation, + tilt: tilt, + platformData: platformData, + scrollDeltaX: scrollDeltaX, + scrollDeltaY: scrollDeltaY, + ) + ); + _pointers.remove(device); + } break; case ui.PointerChange.remove: assert(_pointers.containsKey(device)); diff --git a/lib/web_ui/test/engine/pointer_binding_test.dart b/lib/web_ui/test/engine/pointer_binding_test.dart index f6d4e8af0d76e..a23d559bb54b4 100644 --- a/lib/web_ui/test/engine/pointer_binding_test.dart +++ b/lib/web_ui/test/engine/pointer_binding_test.dart @@ -1782,7 +1782,7 @@ void main() { expect(packets[0].data[1].change, equals(ui.PointerChange.remove)); expect(packets[0].data[1].pointerIdentifier, equals(1)); - expect(packets[0].data[1].synthesized, equals(false)); + expect(packets[0].data[1].synthesized, equals(true)); expect(packets[0].data[1].physicalX, equals(40.0)); expect(packets[0].data[1].physicalY, equals(30.0)); expect(packets[0].data[1].physicalDeltaX, equals(0.0)); From d67005945106040ec23df75af4bfdc0f448e8c67 Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Mon, 24 Feb 2020 14:26:03 -0800 Subject: [PATCH 023/521] [web] Respect maxLines when calculating boxes for a range (#16749) --- lib/web_ui/lib/src/engine/text/paragraph.dart | 8 +- lib/web_ui/lib/src/engine/text/ruler.dart | 16 ++ lib/web_ui/test/paragraph_test.dart | 198 +++++++++++++++--- 3 files changed, 195 insertions(+), 27 deletions(-) diff --git a/lib/web_ui/lib/src/engine/text/paragraph.dart b/lib/web_ui/lib/src/engine/text/paragraph.dart index 60e9e7954fcbf..0b761d64e962d 100644 --- a/lib/web_ui/lib/src/engine/text/paragraph.dart +++ b/lib/web_ui/lib/src/engine/text/paragraph.dart @@ -374,6 +374,10 @@ class EngineParagraph implements ui.Paragraph { } final List lines = _measurementResult.lines; + if (start >= lines.last.endIndex) { + return []; + } + final EngineLineMetrics startLine = _getLineForIndex(start); EngineLineMetrics endLine = _getLineForIndex(end); @@ -535,8 +539,7 @@ class EngineParagraph implements ui.Paragraph { EngineLineMetrics _getLineForIndex(int index) { assert(_hasLineMetrics); final List lines = _measurementResult.lines; - assert(index >= lines.first.startIndex); - assert(index <= lines.last.endIndex); + assert(index >= 0); for (int i = 0; i < lines.length; i++) { final EngineLineMetrics line = lines[i]; @@ -545,7 +548,6 @@ class EngineParagraph implements ui.Paragraph { } } - assert(index == lines.last.endIndex); return lines.last; } diff --git a/lib/web_ui/lib/src/engine/text/ruler.dart b/lib/web_ui/lib/src/engine/text/ruler.dart index b16401fca6323..08ac9c89a0cfd 100644 --- a/lib/web_ui/lib/src/engine/text/ruler.dart +++ b/lib/web_ui/lib/src/engine/text/ruler.dart @@ -733,7 +733,22 @@ class ParagraphRuler { final List> clientRects = rangeSpan.getClientRects(); final List boxes = []; + final double maxLinesLimit = style.maxLines == null + ? double.infinity + : style.maxLines * lineHeightDimensions.height; + + html.Rectangle previousRect; for (html.Rectangle rect in clientRects) { + // If [rect] is an empty box on the same line as the previous box, don't + // include it in the result. + if (rect.top == previousRect?.top && rect.left == rect.right) { + continue; + } + // As soon as we go beyond [maxLines], stop adding boxes. + if (rect.top >= maxLinesLimit) { + break; + } + boxes.add(ui.TextBox.fromLTRBD( rect.left + alignOffset, rect.top, @@ -741,6 +756,7 @@ class ParagraphRuler { rect.bottom, textDirection, )); + previousRect = rect; } // Cleanup after measuring the boxes. diff --git a/lib/web_ui/test/paragraph_test.dart b/lib/web_ui/test/paragraph_test.dart index 5a8b06c13e702..29d52b830218f 100644 --- a/lib/web_ui/test/paragraph_test.dart +++ b/lib/web_ui/test/paragraph_test.dart @@ -441,12 +441,6 @@ void main() async { final Paragraph paragraph = builder.build(); paragraph.layout(const ParagraphConstraints(width: 100)); - // In the dom-based measurement (except Firefox), there will be some - // discrepancies around line ends. - final isDiscrepancyExpected = - !TextMeasurementService.enableExperimentalCanvasImplementation && - browserEngine != BrowserEngine.firefox; - // First line: "abcd\n" // At the beginning of the first line. @@ -497,8 +491,6 @@ void main() async { paragraph.getBoxesForRange(2, 5), [ TextBox.fromLTRBD(20.0, 0.0, 40.0, 10.0, TextDirection.ltr), - if (isDiscrepancyExpected) - TextBox.fromLTRBD(40.0, 0.0, 40.0, 10.0, TextDirection.ltr), ], ); @@ -533,8 +525,6 @@ void main() async { paragraph.getBoxesForRange(10, 13), [ TextBox.fromLTRBD(50.0, 10.0, 70.0, 20.0, TextDirection.ltr), - if (isDiscrepancyExpected) - TextBox.fromLTRBD(70.0, 10.0, 70.0, 20.0, TextDirection.ltr), ], ); @@ -573,8 +563,6 @@ void main() async { paragraph.getBoxesForRange(2, 8), [ TextBox.fromLTRBD(20.0, 0.0, 40.0, 10.0, TextDirection.ltr), - if (isDiscrepancyExpected) - TextBox.fromLTRBD(40.0, 0.0, 40.0, 10.0, TextDirection.ltr), TextBox.fromLTRBD(0.0, 10.0, 30.0, 20.0, TextDirection.ltr), ], ); @@ -593,11 +581,7 @@ void main() async { paragraph.getBoxesForRange(3, 14), [ TextBox.fromLTRBD(30.0, 0.0, 40.0, 10.0, TextDirection.ltr), - if (isDiscrepancyExpected) - TextBox.fromLTRBD(40.0, 0.0, 40.0, 10.0, TextDirection.ltr), TextBox.fromLTRBD(0.0, 10.0, 70.0, 20.0, TextDirection.ltr), - if (isDiscrepancyExpected) - TextBox.fromLTRBD(70.0, 10.0, 70.0, 20.0, TextDirection.ltr), TextBox.fromLTRBD(0.0, 20.0, 10.0, 30.0, TextDirection.ltr), ], ); @@ -607,11 +591,7 @@ void main() async { paragraph.getBoxesForRange(0, 13), [ TextBox.fromLTRBD(0.0, 0.0, 40.0, 10.0, TextDirection.ltr), - if (isDiscrepancyExpected) - TextBox.fromLTRBD(40.0, 0.0, 40.0, 10.0, TextDirection.ltr), TextBox.fromLTRBD(0.0, 10.0, 70.0, 20.0, TextDirection.ltr), - if (isDiscrepancyExpected) - TextBox.fromLTRBD(70.0, 10.0, 70.0, 20.0, TextDirection.ltr), ], ); @@ -620,16 +600,186 @@ void main() async { paragraph.getBoxesForRange(0, 15), [ TextBox.fromLTRBD(0.0, 0.0, 40.0, 10.0, TextDirection.ltr), - if (isDiscrepancyExpected) - TextBox.fromLTRBD(40.0, 0.0, 40.0, 10.0, TextDirection.ltr), TextBox.fromLTRBD(0.0, 10.0, 70.0, 20.0, TextDirection.ltr), - if (isDiscrepancyExpected) - TextBox.fromLTRBD(70.0, 10.0, 70.0, 20.0, TextDirection.ltr), TextBox.fromLTRBD(0.0, 20.0, 20.0, 30.0, TextDirection.ltr), ], ); }); + testEachMeasurement('getBoxesForRange with maxLines', () { + final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle( + fontFamily: 'Ahem', + fontStyle: FontStyle.normal, + fontWeight: FontWeight.normal, + fontSize: 10, + textDirection: TextDirection.ltr, + maxLines: 2, + )); + builder.addText('abcd\n'); + builder.addText('abcdefg\n'); + builder.addText('ab'); + final Paragraph paragraph = builder.build(); + paragraph.layout(const ParagraphConstraints(width: 100)); + + // First line: "abcd\n" + + // At the beginning of the first line. + expect( + paragraph.getBoxesForRange(0, 0), + [], + ); + // At the end of the first line. + expect( + paragraph.getBoxesForRange(4, 4), + [], + ); + // Between "b" and "c" in the first line. + expect( + paragraph.getBoxesForRange(2, 2), + [], + ); + // The range "ab" in the first line. + expect( + paragraph.getBoxesForRange(0, 2), + [ + TextBox.fromLTRBD(0.0, 0.0, 20.0, 10.0, TextDirection.ltr), + ], + ); + // The range "bc" in the first line. + expect( + paragraph.getBoxesForRange(1, 3), + [ + TextBox.fromLTRBD(10.0, 0.0, 30.0, 10.0, TextDirection.ltr), + ], + ); + // The range "d" in the first line. + expect( + paragraph.getBoxesForRange(3, 4), + [ + TextBox.fromLTRBD(30.0, 0.0, 40.0, 10.0, TextDirection.ltr), + ], + ); + // The range "\n" in the first line. + expect( + paragraph.getBoxesForRange(4, 5), + [ + TextBox.fromLTRBD(40.0, 0.0, 40.0, 10.0, TextDirection.ltr), + ], + ); + // The range "cd\n" in the first line. + expect( + paragraph.getBoxesForRange(2, 5), + [ + TextBox.fromLTRBD(20.0, 0.0, 40.0, 10.0, TextDirection.ltr), + ], + ); + + // Second line: "abcdefg\n" + + // At the beginning of the second line. + expect( + paragraph.getBoxesForRange(5, 5), + [], + ); + // At the end of the second line. + expect( + paragraph.getBoxesForRange(12, 12), + [], + ); + // The range "efg" in the second line. + expect( + paragraph.getBoxesForRange(9, 12), + [ + TextBox.fromLTRBD(40.0, 10.0, 70.0, 20.0, TextDirection.ltr), + ], + ); + // The range "bcde" in the second line. + expect( + paragraph.getBoxesForRange(6, 10), + [ + TextBox.fromLTRBD(10.0, 10.0, 50.0, 20.0, TextDirection.ltr), + ], + ); + // The range "fg\n" in the second line. + expect( + paragraph.getBoxesForRange(10, 13), + [ + TextBox.fromLTRBD(50.0, 10.0, 70.0, 20.0, TextDirection.ltr), + ], + ); + + // Last (third) line: "ab" + + // At the beginning of the last line. + expect( + paragraph.getBoxesForRange(13, 13), + [], + ); + // At the end of the last line. + expect( + paragraph.getBoxesForRange(15, 15), + [], + ); + // The range "a" in the last line. + expect( + paragraph.getBoxesForRange(14, 15), + [], + ); + // The range "ab" in the last line. + expect( + paragraph.getBoxesForRange(13, 15), + [], + ); + + + // Combine multiple lines + + // The range "cd\nabc". + expect( + paragraph.getBoxesForRange(2, 8), + [ + TextBox.fromLTRBD(20.0, 0.0, 40.0, 10.0, TextDirection.ltr), + TextBox.fromLTRBD(0.0, 10.0, 30.0, 20.0, TextDirection.ltr), + ], + ); + + // The range "\nabcd". + expect( + paragraph.getBoxesForRange(4, 9), + [ + TextBox.fromLTRBD(40.0, 0.0, 40.0, 10.0, TextDirection.ltr), + TextBox.fromLTRBD(0.0, 10.0, 40.0, 20.0, TextDirection.ltr), + ], + ); + + // The range "d\nabcdefg\na". + expect( + paragraph.getBoxesForRange(3, 14), + [ + TextBox.fromLTRBD(30.0, 0.0, 40.0, 10.0, TextDirection.ltr), + TextBox.fromLTRBD(0.0, 10.0, 70.0, 20.0, TextDirection.ltr), + ], + ); + + // The range "abcd\nabcdefg\n". + expect( + paragraph.getBoxesForRange(0, 13), + [ + TextBox.fromLTRBD(0.0, 0.0, 40.0, 10.0, TextDirection.ltr), + TextBox.fromLTRBD(0.0, 10.0, 70.0, 20.0, TextDirection.ltr), + ], + ); + + // The range "abcd\nabcdefg\nab". + expect( + paragraph.getBoxesForRange(0, 15), + [ + TextBox.fromLTRBD(0.0, 0.0, 40.0, 10.0, TextDirection.ltr), + TextBox.fromLTRBD(0.0, 10.0, 70.0, 20.0, TextDirection.ltr), + ], + ); + }); + test('longestLine', () { // [Paragraph.longestLine] is only supported by canvas-based measurement. TextMeasurementService.enableExperimentalCanvasImplementation = true; From 5496bb48c58fda864423629c52c718a0d4a2b665 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 24 Feb 2020 17:31:06 -0500 Subject: [PATCH 024/521] Roll src/third_party/skia 03b8ab225fd7..659cc1c90705 (4 commits) (#16774) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 0887deb8d1a80..ccd169f425888 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '03b8ab225fd782d2023f17e40185476ce865914e', + 'skia_revision': '659cc1c90705bbce4c8c655a417dfeaaef493a98', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 3300abbb5f2f7..7226751443a0d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: e621a385e2d0738e29459c84ecbce417 +Signature: 5c745241ca796ad9c80b02f5641f06eb UNUSED LICENSES: @@ -5659,7 +5659,6 @@ FILE: ../../../third_party/skia/gm/strokerect_anisotropic.cpp FILE: ../../../third_party/skia/gm/verifiers/gmverifier.cpp FILE: ../../../third_party/skia/gm/verifiers/gmverifier.h FILE: ../../../third_party/skia/include/core/SkM44.h -FILE: ../../../third_party/skia/include/private/SkDDLTmpRedirect.h FILE: ../../../third_party/skia/include/private/SkM44.h FILE: ../../../third_party/skia/modules/skottie/src/Adapter.h FILE: ../../../third_party/skia/modules/skottie/src/Animator.cpp From bad1fbe3ca6fd468e9a14c1cf945bbdce6d6f2c8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 24 Feb 2020 17:56:03 -0500 Subject: [PATCH 025/521] Roll src/third_party/dart c75256299280..73f6d15665a3 (9 commits) (#16776) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 4 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++------------ 3 files changed, 124 insertions(+), 126 deletions(-) diff --git a/DEPS b/DEPS index ccd169f425888..2b40e9537ab8a 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'c752562992803421fb2fff69390e2fd109a29a56', + 'dart_revision': '73f6d15665a3c9a7cb521c90f7257c606c53171a', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 7221237fb2275..67b5c67c6a657 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 8919adf005426aeec78e894ce4e2276f +Signature: a5e1f61c40b3dae12ed5518cd9d524b0 UNUSED LICENSES: @@ -7769,6 +7769,8 @@ FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_type.cc FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_type.h FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/recognized_method.cc FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/recognized_method.h +FILE: ../../../third_party/dart/runtime/vm/compiler/write_barrier_elimination.cc +FILE: ../../../third_party/dart/runtime/vm/compiler/write_barrier_elimination.h FILE: ../../../third_party/dart/runtime/vm/constants_base.h FILE: ../../../third_party/dart/runtime/vm/dispatch_table.cc FILE: ../../../third_party/dart/runtime/vm/dispatch_table.h diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 51f4a37524611..6cdcbe8cb194f 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From d2e2cc9d4551a93f550bf06fd2c453c864a614c6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 24 Feb 2020 18:01:03 -0500 Subject: [PATCH 026/521] Roll fuchsia/sdk/core/mac-amd64 from mcI8X... to O6w2L... (#16777) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 2b40e9537ab8a..c099b0cbae4e7 100644 --- a/DEPS +++ b/DEPS @@ -542,7 +542,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'mcI8XmdRQvt7Ir8e9I0zqr8UwsqO1hqWeLvCo0OeCmEC' + 'version': 'O6w2LmgBLa9sdPdXqwyv4lFpXLz0_Wv6G_Tg1hc36U4C' } ], 'condition': 'host_os == "mac"', From 888a62cf229878e00c6b4a75180962acd7c07820 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Mon, 24 Feb 2020 20:04:40 -0800 Subject: [PATCH 027/521] Revert "Enable lazy-async-stacks by-default in all modes (#16556)" (#16781) This reverts commit fdabcaddf45deaf93a5238c99c2acbeb25a3a027. --- runtime/dart_vm.cc | 3 +-- shell/common/shell_unittests.cc | 12 ++++-------- shell/common/switches.cc | 2 +- shell/platform/fuchsia/dart_runner/dart_runner.cc | 3 ++- shell/platform/fuchsia/dart_runner/embedder/BUILD.gn | 1 - shell/platform/fuchsia/dart_runner/kernel/BUILD.gn | 3 ++- .../platform/fuchsia/dart_runner/vmservice/BUILD.gn | 1 - shell/platform/fuchsia/flutter/component.cc | 4 ++++ shell/platform/fuchsia/flutter/kernel/BUILD.gn | 3 ++- testing/scenario_app/compile_ios_jit.sh | 3 +-- testing/testing.gni | 3 +-- 11 files changed, 18 insertions(+), 20 deletions(-) diff --git a/runtime/dart_vm.cc b/runtime/dart_vm.cc index da0719787473f..0a63ed80dbbe7 100644 --- a/runtime/dart_vm.cc +++ b/runtime/dart_vm.cc @@ -60,8 +60,7 @@ static const char* kDartLanguageArgs[] = { // clang-format off "--enable_mirrors=false", "--background_compilation", - "--no-causal_async_stacks", - "--lazy_async_stacks", + "--causal_async_stacks", // clang-format on }; diff --git a/shell/common/shell_unittests.cc b/shell/common/shell_unittests.cc index 86b788ae8d543..26963e1c146be 100644 --- a/shell/common/shell_unittests.cc +++ b/shell/common/shell_unittests.cc @@ -281,20 +281,16 @@ TEST_F(ShellTest, BlacklistedDartVMFlag) { TEST_F(ShellTest, WhitelistedDartVMFlag) { const std::vector options = { fml::CommandLine::Option("dart-flags", - "--lazy_async_stacks,--no-causal_async_stacks," "--max_profile_depth 1,--random_seed 42")}; fml::CommandLine command_line("", options, std::vector()); flutter::Settings settings = flutter::SettingsFromCommandLine(command_line); - EXPECT_GE(settings.dart_flags.size(), 2u); - EXPECT_EQ(settings.dart_flags[0], "--lazy_async_stacks"); - EXPECT_EQ(settings.dart_flags[1], "--no-causal_async_stacks"); #if !FLUTTER_RELEASE - EXPECT_EQ(settings.dart_flags.size(), 4u); - EXPECT_EQ(settings.dart_flags[2], "--max_profile_depth 1"); - EXPECT_EQ(settings.dart_flags[3], "--random_seed 42"); -#else EXPECT_EQ(settings.dart_flags.size(), 2u); + EXPECT_EQ(settings.dart_flags[0], "--max_profile_depth 1"); + EXPECT_EQ(settings.dart_flags[1], "--random_seed 42"); +#else + EXPECT_EQ(settings.dart_flags.size(), 0u); #endif } diff --git a/shell/common/switches.cc b/shell/common/switches.cc index 277fbd98cf62f..a23e1156f5e5e 100644 --- a/shell/common/switches.cc +++ b/shell/common/switches.cc @@ -41,8 +41,8 @@ struct SwitchDesc { // clang-format off static const std::string gDartFlagsWhitelist[] = { - "--lazy_async_stacks", "--no-causal_async_stacks", + "--lazy_async_stacks", }; // clang-format on diff --git a/shell/platform/fuchsia/dart_runner/dart_runner.cc b/shell/platform/fuchsia/dart_runner/dart_runner.cc index 2ba48164bcd60..74eb6b42401e8 100644 --- a/shell/platform/fuchsia/dart_runner/dart_runner.cc +++ b/shell/platform/fuchsia/dart_runner/dart_runner.cc @@ -35,7 +35,8 @@ namespace { const char* kDartVMArgs[] = { // clang-format off - "--lazy_async_stacks", + // TODO(FL-117): Re-enable causal async stack traces when this issue is + // addressed. "--no_causal_async_stacks", #if !defined(FLUTTER_PROFILE) diff --git a/shell/platform/fuchsia/dart_runner/embedder/BUILD.gn b/shell/platform/fuchsia/dart_runner/embedder/BUILD.gn index 6c4173b863ad8..f47be6957910e 100644 --- a/shell/platform/fuchsia/dart_runner/embedder/BUILD.gn +++ b/shell/platform/fuchsia/dart_runner/embedder/BUILD.gn @@ -53,7 +53,6 @@ template("create_aot_snapshot") { args = [ "--no_causal_async_stacks", - "--lazy_async_stacks", "--deterministic", "--snapshot_kind=vm-aot-assembly", "--assembly=" + rebase_path(snapshot_assembly), diff --git a/shell/platform/fuchsia/dart_runner/kernel/BUILD.gn b/shell/platform/fuchsia/dart_runner/kernel/BUILD.gn index 71c9d3a2050b6..b54d26be43eb1 100644 --- a/shell/platform/fuchsia/dart_runner/kernel/BUILD.gn +++ b/shell/platform/fuchsia/dart_runner/kernel/BUILD.gn @@ -71,8 +71,9 @@ template("create_kernel_core_snapshot") { tool = gen_snapshot_to_use args = [ + # TODO(FL-117): Re-enable causal async stack traces when this issue is + # addressed. "--no_causal_async_stacks", - "--lazy_async_stacks", "--use_bytecode_compiler", "--enable_mirrors=false", "--deterministic", diff --git a/shell/platform/fuchsia/dart_runner/vmservice/BUILD.gn b/shell/platform/fuchsia/dart_runner/vmservice/BUILD.gn index b0c2adc7b65e4..53f4cf523e207 100644 --- a/shell/platform/fuchsia/dart_runner/vmservice/BUILD.gn +++ b/shell/platform/fuchsia/dart_runner/vmservice/BUILD.gn @@ -64,7 +64,6 @@ template("aot_snapshot") { args = [ "--no_causal_async_stacks", - "--lazy_async_stacks", "--deterministic", "--snapshot_kind=app-aot-elf", "--elf=" + rebase_path(snapshot_path), diff --git a/shell/platform/fuchsia/flutter/component.cc b/shell/platform/fuchsia/flutter/component.cc index 4cd9485c9aedc..9f6bc6f91596c 100644 --- a/shell/platform/fuchsia/flutter/component.cc +++ b/shell/platform/fuchsia/flutter/component.cc @@ -353,6 +353,10 @@ Application::Application( settings_.task_observer_remove = std::bind( &CurrentMessageLoopRemoveAfterTaskObserver, std::placeholders::_1); + // TODO(FL-117): Re-enable causal async stack traces when this issue is + // addressed. + settings_.dart_flags = {"--no_causal_async_stacks"}; + // Disable code collection as it interferes with JIT code warmup // by decreasing usage counters and flushing code which is still useful. settings_.dart_flags.push_back("--no-collect_code"); diff --git a/shell/platform/fuchsia/flutter/kernel/BUILD.gn b/shell/platform/fuchsia/flutter/kernel/BUILD.gn index fab808d477c45..91bc01e0bf19f 100644 --- a/shell/platform/fuchsia/flutter/kernel/BUILD.gn +++ b/shell/platform/fuchsia/flutter/kernel/BUILD.gn @@ -75,8 +75,9 @@ template("core_snapshot") { tool = gen_snapshot_to_use args = [ + # TODO(FL-117): Re-enable causal async stack traces when this issue is + # addressed. "--no_causal_async_stacks", - "--lazy_async_stacks", "--use_bytecode_compiler", "--enable_mirrors=false", "--deterministic", diff --git a/testing/scenario_app/compile_ios_jit.sh b/testing/scenario_app/compile_ios_jit.sh index c3c2400f571c9..6b3f25c3359b5 100755 --- a/testing/scenario_app/compile_ios_jit.sh +++ b/testing/scenario_app/compile_ios_jit.sh @@ -48,8 +48,7 @@ echo "Compiling JIT Snapshot..." "$DEVICE_TOOLS/gen_snapshot" --deterministic \ --enable-asserts \ - --no-causal_async_stacks \ - --lazy_async_stacks \ + --causal_async_stacks \ --isolate_snapshot_instructions="$OUTDIR/isolate_snapshot_instr" \ --snapshot_kind=app-jit \ --load_vm_snapshot_data="$DEVICE_TOOLS/../gen/flutter/lib/snapshot/vm_isolate_snapshot.bin" \ diff --git a/testing/testing.gni b/testing/testing.gni index e53339f32cd2d..5e06cd049cfd7 100644 --- a/testing/testing.gni +++ b/testing/testing.gni @@ -138,8 +138,7 @@ template("dart_snapshot_aot") { ] args = [ - "--no-causal_async_stacks", - "--lazy_async_stacks", + "--causal_async_stacks", "--deterministic", "--snapshot_kind=app-aot-elf", "--elf=" + rebase_path(elf_object), From 858185cd5bc8dc8acc3ffc8b2da1b77d5a41a4f3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 24 Feb 2020 23:26:04 -0500 Subject: [PATCH 028/521] Roll src/third_party/skia 659cc1c90705..19304d88c8be (5 commits) (#16778) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/DEPS b/DEPS index c099b0cbae4e7..48661dec85659 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '659cc1c90705bbce4c8c655a417dfeaaef493a98', + 'skia_revision': '19304d88c8bea3e0548af0455fad6d71addc5352', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7226751443a0d..343d3012d050a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5c745241ca796ad9c80b02f5641f06eb +Signature: 6b214ebe718d9ae0ebed5a5137f9f654 UNUSED LICENSES: @@ -6376,16 +6376,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. LIBRARY: skia ORIGIN: ../../../third_party/skia/modules/canvaskit/canvaskit/LICENSE TYPE: LicenseType.bsd -FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/NotoSerif-Regular.ttf -FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/Roboto-Regular.ttf -FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/brickwork-texture.jpg -FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/brickwork_normal-map.jpg FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/example.html FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/extra.html FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/node.example.js FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/package.json -FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/red_line.skp -FILE: ../../../third_party/skia/modules/canvaskit/canvaskit/test.png FILE: ../../../third_party/skia/modules/pathkit/npm-asmjs/example.html FILE: ../../../third_party/skia/modules/pathkit/npm-asmjs/package.json FILE: ../../../third_party/skia/modules/pathkit/npm-wasm/example.html From ecdfc91d1618cee6538866fa85ada1754ee7641c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 24 Feb 2020 23:31:03 -0500 Subject: [PATCH 029/521] Roll fuchsia/sdk/core/linux-amd64 from PGfiE... to QU3ft... (#16779) --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++++-------------- 3 files changed, 126 insertions(+), 122 deletions(-) diff --git a/DEPS b/DEPS index 48661dec85659..bd60dc346b290 100644 --- a/DEPS +++ b/DEPS @@ -562,7 +562,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'PGfiEKdkfh4C8tQ2WjlBgpqJfUAmNif7Q-QrdcNQeB0C' + 'version': 'QU3ftU-cUuaEJ6toYgGcrvQfIijLK4vMES6OWTQrvSUC' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 154992881cd00..1e53714d82b8a 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: c5e44f38c4389e02d4ab4df04b41b079 +Signature: 26a2b7ac3932400ae47b8a1bac1ef7f8 UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 6cdcbe8cb194f..51f4a37524611 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,66 +5143,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5234,66 +5174,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5690,6 +5570,130 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 05dd02368f236ac858beb38bd46ea60fb44ad79f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 24 Feb 2020 23:36:04 -0500 Subject: [PATCH 030/521] Roll src/third_party/dart 73f6d15665a3..7aa824076c34 (11 commits) (#16780) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index bd60dc346b290..7cb536ef82e39 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '73f6d15665a3c9a7cb521c90f7257c606c53171a', + 'dart_revision': '7aa824076c340791905c7c20772196a1a21197cd', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 67b5c67c6a657..6826ce016d143 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: a5e1f61c40b3dae12ed5518cd9d524b0 +Signature: 8cc07cc341ea89d67940138deea4d36e UNUSED LICENSES: From 9f439d9ef3f6724bea01ea8fb62223fc01a3b2be Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 25 Feb 2020 01:01:03 -0500 Subject: [PATCH 031/521] Roll src/third_party/skia 19304d88c8be..6d927b63a311 (3 commits) (#16782) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 7cb536ef82e39..04e12226a14e0 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '19304d88c8bea3e0548af0455fad6d71addc5352', + 'skia_revision': '6d927b63a311130fc70c3475bced5845120d7d1e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 343d3012d050a..f6c9139e0b221 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6b214ebe718d9ae0ebed5a5137f9f654 +Signature: 82348131539e6432e5d106190f1f708d UNUSED LICENSES: From effd8a06970a0dde708adcf74b9733c2c57ae0d7 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 25 Feb 2020 02:36:03 -0500 Subject: [PATCH 032/521] Roll src/third_party/skia 6d927b63a311..a6572f78d084 (3 commits) (#16783) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 04e12226a14e0..bac549beb7e35 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '6d927b63a311130fc70c3475bced5845120d7d1e', + 'skia_revision': 'a6572f78d084aa3ca3e6f174a24e753a45ea1fc3', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f6c9139e0b221..ce11b6a20d974 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 82348131539e6432e5d106190f1f708d +Signature: 2dcf98f8a5efbc37a6b5e94ce768d208 UNUSED LICENSES: From af90e8b114e97828cbc161deec96001d9c9f2f2d Mon Sep 17 00:00:00 2001 From: Martin Kustermann Date: Tue, 25 Feb 2020 12:18:02 +0100 Subject: [PATCH 033/521] Manually add third_party/dart/pkg/stagehand to DEPS (#16785) This is a new dependency introduced to the create_sdk build in https://dart-review.googlesource.com/c/sdk/+/136842 --- DEPS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/DEPS b/DEPS index bac549beb7e35..432f51258fce1 100644 --- a/DEPS +++ b/DEPS @@ -90,6 +90,7 @@ vars = { 'dart_source_maps_tag': '8af7cc1a1c3a193c1fba5993ce22a546a319c40e', 'dart_source_span_tag': '1.5.5', 'dart_stack_trace_tag': '1.9.3', + 'dart_stagehand_tag': 'v3.3.7', 'dart_stream_channel_tag': '2.0.0', 'dart_string_scanner_tag': '1.0.3', 'dart_term_glyph_tag': '1.0.1', @@ -334,6 +335,9 @@ deps = { 'src/third_party/dart/third_party/pkg/stack_trace': Var('dart_git') + '/stack_trace.git' + '@' + Var('dart_stack_trace_tag'), + 'src/third_party/dart/third_party/pkg/stagehand': + Var('dart_git') + '/stagehand.git' + '@' + Var('dart_stagehand_tag'), + 'src/third_party/dart/third_party/pkg/stream_channel': Var('dart_git') + '/stream_channel.git' + '@' + Var('dart_stream_channel_tag'), From ae999f090760939a57a36890d316d519e470843f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 25 Feb 2020 07:16:03 -0500 Subject: [PATCH 034/521] Roll fuchsia/sdk/core/mac-amd64 from O6w2L... to 8gjOI... (#16787) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 432f51258fce1..34aeecfb07d27 100644 --- a/DEPS +++ b/DEPS @@ -546,7 +546,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'O6w2LmgBLa9sdPdXqwyv4lFpXLz0_Wv6G_Tg1hc36U4C' + 'version': '8gjOIzTsliDWNA-lSIZUc49xQqebJ6CmXLK3dfNruysC' } ], 'condition': 'host_os == "mac"', From d0897c321ae5754ca96f0964cf4766645e1306cf Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 25 Feb 2020 09:01:04 -0500 Subject: [PATCH 035/521] Roll src/third_party/dart 7aa824076c34..2ce1df76309d (11 commits) (#16788) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++------------ 3 files changed, 122 insertions(+), 126 deletions(-) diff --git a/DEPS b/DEPS index 34aeecfb07d27..c3752a84511f9 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '7aa824076c340791905c7c20772196a1a21197cd', + 'dart_revision': '2ce1df76309d320719bf11acf40e5b1dbfad45fc', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 6826ce016d143..c236ba0f42f12 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 8cc07cc341ea89d67940138deea4d36e +Signature: 668e30bbfac5d2a67c6b8b514d7b08f3 UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 51f4a37524611..6cdcbe8cb194f 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 7af8d3ee9b0550308213807add841b9eb52a296e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 25 Feb 2020 14:31:03 -0500 Subject: [PATCH 036/521] Roll src/third_party/skia a6572f78d084..c8d092a060ad (1 commits) (#16789) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++++++--------------- 3 files changed, 126 insertions(+), 122 deletions(-) diff --git a/DEPS b/DEPS index c3752a84511f9..d393871555863 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'a6572f78d084aa3ca3e6f174a24e753a45ea1fc3', + 'skia_revision': 'c8d092a060adfb07208aad7da9bf072d22783d9a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ce11b6a20d974..8660392d64156 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2dcf98f8a5efbc37a6b5e94ce768d208 +Signature: adf9f29432f63c2d297975c33ce1f413 UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 6cdcbe8cb194f..51f4a37524611 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,66 +5143,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5234,66 +5174,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5690,6 +5570,130 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From fb3dc8603baa40714f55e91e80970346d3b2ec9c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 25 Feb 2020 14:36:05 -0500 Subject: [PATCH 037/521] Roll src/third_party/dart 2ce1df76309d..85f6d51c3fd1 (6 commits) (#16792) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d393871555863..cfc4bad442dc6 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '2ce1df76309d320719bf11acf40e5b1dbfad45fc', + 'dart_revision': '85f6d51c3fd10b8a51690f5124e312269525c79a', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index c236ba0f42f12..d8cecf5996542 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 668e30bbfac5d2a67c6b8b514d7b08f3 +Signature: 92ac7bdf9594b511cf0aa26733493dbe UNUSED LICENSES: From 468b371ff4d4f646176014d2d7ccb32cbdd39f0a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 25 Feb 2020 16:06:04 -0500 Subject: [PATCH 038/521] Roll src/third_party/skia c8d092a060ad..7a6db4cbf48b (2 commits) (#16795) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index cfc4bad442dc6..abc563cde0e94 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'c8d092a060adfb07208aad7da9bf072d22783d9a', + 'skia_revision': '7a6db4cbf48bb961a25dade9af8d6cd8a3182857', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 8660392d64156..bc7c04da53540 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: adf9f29432f63c2d297975c33ce1f413 +Signature: 9545352b35f87dd4ea0cb0fd145dbb62 UNUSED LICENSES: From ff921cd608efaf3aecd3e3e0feb14bb540cc22ed Mon Sep 17 00:00:00 2001 From: Drew Fisher Date: Tue, 25 Feb 2020 13:24:07 -0800 Subject: [PATCH 039/521] fuchsia: remove use of replace_as_executable (#16690) On Fuchsia, we can now get executable VMOs from trusted backing filesystems. This allows us to remove the use of replace_as_executable in favor of opening files with `fdio_open_fd_at` with the `OPEN_RIGHT_EXECUTABLE` flag and getting VMOs by calling `fdio_get_vmo_exec`. By moving the responsibility for executability into the filesystem, we should be able to remove deprecated-ambient-replace-as-executable from component manifests for non-JIT runners (the JIT runners still call replace_as_executable in Dart's allocator). Test: verified locally that this works on Astro on a _user build with the runtime allowlist tightened. --- .../goodbye_dart/meta/goodbye_dart_aot.cmx | 3 -- .../meta/dart_aot_product_runner.cmx | 1 - .../dart_runner/meta/dart_aot_runner.cmx | 1 - shell/platform/fuchsia/flutter/component.cc | 14 +----- .../meta/flutter_aot_product_runner.cmx | 1 - .../flutter/meta/flutter_aot_runner.cmx | 1 - shell/platform/fuchsia/flutter/runner.cc | 2 +- .../runtime/dart/utils/mapped_resource.cc | 19 ++------ .../fuchsia/runtime/dart/utils/vmo.cc | 48 +++++++++++++++---- .../platform/fuchsia/runtime/dart/utils/vmo.h | 5 +- 10 files changed, 50 insertions(+), 45 deletions(-) diff --git a/shell/platform/fuchsia/dart_runner/examples/goodbye_dart/meta/goodbye_dart_aot.cmx b/shell/platform/fuchsia/dart_runner/examples/goodbye_dart/meta/goodbye_dart_aot.cmx index c6705a70ac564..e041f24109f72 100644 --- a/shell/platform/fuchsia/dart_runner/examples/goodbye_dart/meta/goodbye_dart_aot.cmx +++ b/shell/platform/fuchsia/dart_runner/examples/goodbye_dart/meta/goodbye_dart_aot.cmx @@ -3,9 +3,6 @@ "data": "data/goodbye_dart_aot" }, "sandbox": { - "features": [ - "deprecated-ambient-replace-as-executable" - ], "services": [ "fuchsia.intl.PropertyProvider", "fuchsia.sys.Environment" diff --git a/shell/platform/fuchsia/dart_runner/meta/dart_aot_product_runner.cmx b/shell/platform/fuchsia/dart_runner/meta/dart_aot_product_runner.cmx index 629c352e01ae3..26c6db097e343 100644 --- a/shell/platform/fuchsia/dart_runner/meta/dart_aot_product_runner.cmx +++ b/shell/platform/fuchsia/dart_runner/meta/dart_aot_product_runner.cmx @@ -5,7 +5,6 @@ "sandbox": { "features": [ "config-data", - "deprecated-ambient-replace-as-executable", "root-ssl-certificates" ], "services": [ diff --git a/shell/platform/fuchsia/dart_runner/meta/dart_aot_runner.cmx b/shell/platform/fuchsia/dart_runner/meta/dart_aot_runner.cmx index 629c352e01ae3..26c6db097e343 100644 --- a/shell/platform/fuchsia/dart_runner/meta/dart_aot_runner.cmx +++ b/shell/platform/fuchsia/dart_runner/meta/dart_aot_runner.cmx @@ -5,7 +5,6 @@ "sandbox": { "features": [ "config-data", - "deprecated-ambient-replace-as-executable", "root-ssl-certificates" ], "services": [ diff --git a/shell/platform/fuchsia/flutter/component.cc b/shell/platform/fuchsia/flutter/component.cc index 9f6bc6f91596c..e0d58f3e80330 100644 --- a/shell/platform/fuchsia/flutter/component.cc +++ b/shell/platform/fuchsia/flutter/component.cc @@ -431,7 +431,8 @@ class FileInNamespaceBuffer final : public fml::Mapping { FileInNamespaceBuffer(int namespace_fd, const char* path, bool executable) : address_(nullptr), size_(0) { fuchsia::mem::Buffer buffer; - if (!dart_utils::VmoFromFilenameAt(namespace_fd, path, &buffer)) { + if (!dart_utils::VmoFromFilenameAt(namespace_fd, path, executable, + &buffer)) { return; } if (buffer.size == 0) { @@ -441,17 +442,6 @@ class FileInNamespaceBuffer final : public fml::Mapping { uint32_t flags = ZX_VM_PERM_READ; if (executable) { flags |= ZX_VM_PERM_EXECUTE; - - // VmoFromFilenameAt will return VMOs without ZX_RIGHT_EXECUTE, - // so we need replace_as_executable to be able to map them as - // ZX_VM_PERM_EXECUTE. - // TODO(mdempsky): Update comment once SEC-42 is fixed. - zx_status_t status = - buffer.vmo.replace_as_executable(zx::handle(), &buffer.vmo); - if (status != ZX_OK) { - FML_LOG(FATAL) << "Failed to make VMO executable: " - << zx_status_get_string(status); - } } uintptr_t addr; zx_status_t status = diff --git a/shell/platform/fuchsia/flutter/meta/flutter_aot_product_runner.cmx b/shell/platform/fuchsia/flutter/meta/flutter_aot_product_runner.cmx index 019dc11340d84..914c22b6f2dbb 100644 --- a/shell/platform/fuchsia/flutter/meta/flutter_aot_product_runner.cmx +++ b/shell/platform/fuchsia/flutter/meta/flutter_aot_product_runner.cmx @@ -5,7 +5,6 @@ "sandbox": { "features": [ "config-data", - "deprecated-ambient-replace-as-executable", "root-ssl-certificates", "vulkan" ], diff --git a/shell/platform/fuchsia/flutter/meta/flutter_aot_runner.cmx b/shell/platform/fuchsia/flutter/meta/flutter_aot_runner.cmx index af0c724590652..11ba40d7870f2 100644 --- a/shell/platform/fuchsia/flutter/meta/flutter_aot_runner.cmx +++ b/shell/platform/fuchsia/flutter/meta/flutter_aot_runner.cmx @@ -5,7 +5,6 @@ "sandbox": { "features": [ "config-data", - "deprecated-ambient-replace-as-executable", "root-ssl-certificates", "vulkan" ], diff --git a/shell/platform/fuchsia/flutter/runner.cc b/shell/platform/fuchsia/flutter/runner.cc index 2fe0b5626ada6..6459236730e16 100644 --- a/shell/platform/fuchsia/flutter/runner.cc +++ b/shell/platform/fuchsia/flutter/runner.cc @@ -87,7 +87,7 @@ bool InitializeICU() { const char* data_path = kIcuDataPath; fuchsia::mem::Buffer icu_data; - if (!dart_utils::VmoFromFilename(data_path, &icu_data)) { + if (!dart_utils::VmoFromFilename(data_path, false, &icu_data)) { return false; } diff --git a/shell/platform/fuchsia/runtime/dart/utils/mapped_resource.cc b/shell/platform/fuchsia/runtime/dart/utils/mapped_resource.cc index d8837e6fbc27f..b14571ffbf9a9 100644 --- a/shell/platform/fuchsia/runtime/dart/utils/mapped_resource.cc +++ b/shell/platform/fuchsia/runtime/dart/utils/mapped_resource.cc @@ -36,7 +36,7 @@ static bool OpenVmo(fuchsia::mem::Buffer* resource_vmo, dart_utils::Check(path[0] != '/', LOG_TAG); if (namespc == nullptr) { - if (!VmoFromFilename(path, resource_vmo)) { + if (!VmoFromFilename(path, executable, resource_vmo)) { return false; } } else { @@ -46,27 +46,14 @@ static bool OpenVmo(fuchsia::mem::Buffer* resource_vmo, return false; } - bool result = dart_utils::VmoFromFilenameAt(root_dir, path, resource_vmo); + bool result = + dart_utils::VmoFromFilenameAt(root_dir, path, executable, resource_vmo); close(root_dir); if (!result) { return result; } } - if (executable) { - // VmoFromFilenameAt will return VMOs without ZX_RIGHT_EXECUTE, - // so we need replace_as_executable to be able to map them as - // ZX_VM_PERM_EXECUTE. - // TODO(mdempsky): Update comment once SEC-42 is fixed. - zx_status_t status = resource_vmo->vmo.replace_as_executable( - zx::handle(), &resource_vmo->vmo); - if (status != ZX_OK) { - FX_LOGF(ERROR, LOG_TAG, "Failed to make VMO executable: %s", - zx_status_get_string(status)); - return false; - } - } - return true; } diff --git a/shell/platform/fuchsia/runtime/dart/utils/vmo.cc b/shell/platform/fuchsia/runtime/dart/utils/vmo.cc index 130181c777bce..87f181e38b49c 100644 --- a/shell/platform/fuchsia/runtime/dart/utils/vmo.cc +++ b/shell/platform/fuchsia/runtime/dart/utils/vmo.cc @@ -7,15 +7,18 @@ #include #include +#include #include +#include #include #include +#include #include "runtime/dart/utils/logging.h" namespace { -bool VmoFromFd(int fd, fuchsia::mem::Buffer* buffer) { +bool VmoFromFd(int fd, bool executable, fuchsia::mem::Buffer* buffer) { if (!buffer) { FX_LOG(FATAL, LOG_TAG, "Invalid buffer pointer"); } @@ -27,7 +30,14 @@ bool VmoFromFd(int fd, fuchsia::mem::Buffer* buffer) { } zx_handle_t result = ZX_HANDLE_INVALID; - if (fdio_get_vmo_copy(fd, &result) != ZX_OK) { + zx_status_t status; + if (executable) { + status = fdio_get_vmo_exec(fd, &result); + } else { + status = fdio_get_vmo_copy(fd, &result); + } + + if (status != ZX_OK) { return false; } @@ -42,20 +52,42 @@ bool VmoFromFd(int fd, fuchsia::mem::Buffer* buffer) { namespace dart_utils { bool VmoFromFilename(const std::string& filename, + bool executable, fuchsia::mem::Buffer* buffer) { - return VmoFromFilenameAt(AT_FDCWD, filename, buffer); + // Note: the implementation here cannot be shared with VmoFromFilenameAt + // because fdio_open_fd_at does not aim to provide POSIX compatibility, and + // thus does not handle AT_FDCWD as dirfd. + uint32_t flags = fuchsia::io::OPEN_RIGHT_READABLE | + (executable ? fuchsia::io::OPEN_RIGHT_EXECUTABLE : 0); + zx_status_t status; + int fd; + + status = fdio_open_fd(filename.c_str(), flags, &fd); + if (status != ZX_OK) { + FX_LOGF(ERROR, LOG_TAG, "fdio_open_fd(\"%s\", %08x) failed: %s", + filename.c_str(), flags, zx_status_get_string(status)); + return false; + } + bool result = VmoFromFd(fd, executable, buffer); + close(fd); + return result; } bool VmoFromFilenameAt(int dirfd, const std::string& filename, + bool executable, fuchsia::mem::Buffer* buffer) { - int fd = openat(dirfd, filename.c_str(), O_RDONLY); - if (fd == -1) { - FX_LOGF(ERROR, LOG_TAG, "openat(\"%s\") failed: %s", filename.c_str(), - strerror(errno)); + uint32_t flags = fuchsia::io::OPEN_RIGHT_READABLE | + (executable ? fuchsia::io::OPEN_RIGHT_EXECUTABLE : 0); + zx_status_t status; + int fd; + status = fdio_open_fd_at(dirfd, filename.c_str(), flags, &fd); + if (status != ZX_OK) { + FX_LOGF(ERROR, LOG_TAG, "fdio_open_fd_at(%d, \"%s\", %08x) failed: %s", + dirfd, filename.c_str(), flags, zx_status_get_string(status)); return false; } - bool result = VmoFromFd(fd, buffer); + bool result = VmoFromFd(fd, executable, buffer); close(fd); return result; } diff --git a/shell/platform/fuchsia/runtime/dart/utils/vmo.h b/shell/platform/fuchsia/runtime/dart/utils/vmo.h index bc4065eb815e4..52871d2e32751 100644 --- a/shell/platform/fuchsia/runtime/dart/utils/vmo.h +++ b/shell/platform/fuchsia/runtime/dart/utils/vmo.h @@ -11,10 +11,13 @@ namespace dart_utils { -bool VmoFromFilename(const std::string& filename, fuchsia::mem::Buffer* buffer); +bool VmoFromFilename(const std::string& filename, + bool executable, + fuchsia::mem::Buffer* buffer); bool VmoFromFilenameAt(int dirfd, const std::string& filename, + bool executable, fuchsia::mem::Buffer* buffer); zx_status_t IsSizeValid(const fuchsia::mem::Buffer& buffer, bool* is_valid); From d590e9841d40aa9a2d16869eda03dd297be03a35 Mon Sep 17 00:00:00 2001 From: Ferhat Date: Tue, 25 Feb 2020 13:38:25 -0800 Subject: [PATCH 040/521] Evict BitmapCanvas(s) from cache when canvas allocation fails (#16793) --- lib/web_ui/lib/src/engine/canvas_pool.dart | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/web_ui/lib/src/engine/canvas_pool.dart b/lib/web_ui/lib/src/engine/canvas_pool.dart index 1d3a289ebe98b..fefcf14b13bfb 100644 --- a/lib/web_ui/lib/src/engine/canvas_pool.dart +++ b/lib/web_ui/lib/src/engine/canvas_pool.dart @@ -95,6 +95,14 @@ class _CanvasPool extends _SaveStackTracking { width: _widthInBitmapPixels, height: _heightInBitmapPixels, ); + if (_canvas == null) { + // Evict BitmapCanvas(s) and retry. + _reduceCanvasMemoryUsage(); + _canvas = html.CanvasElement( + width: _widthInBitmapPixels, + height: _heightInBitmapPixels, + ); + } _canvas.style ..position = 'absolute' ..width = '${cssWidth}px' From 52070e3df7b06b51f17d9b64e0ad4a26b9b3f604 Mon Sep 17 00:00:00 2001 From: stuartmorgan Date: Tue, 25 Feb 2020 14:09:58 -0800 Subject: [PATCH 041/521] Fix handler unregistration in C++ channels (#16794) MethodChannel and BasicMessageChannel in the C++ wrapper didn't have the expected semantics that passing a null handler would remove any existing handler. This was inconsistent with other platforms and with the lower-level object APIs in this wrapper, and made unregistration in cases where that's desirable more difficult due to needing to keep other object references. Adds tests for this functionality, and some backfill of missing tests for basic handler behavior. See https://github.com/flutter/flutter/issues/51207 --- ci/licenses_golden/licenses_flutter | 2 + .../common/cpp/client_wrapper/BUILD.gn | 2 + .../basic_message_channel_unittests.cc | 93 ++++++++++++++++++ .../include/flutter/basic_message_channel.h | 10 +- .../include/flutter/method_channel.h | 10 +- .../method_channel_unittests.cc | 94 +++++++++++++++++++ .../plugin_registrar_unittests.cc | 39 +++++++- 7 files changed, 247 insertions(+), 3 deletions(-) create mode 100644 shell/platform/common/cpp/client_wrapper/basic_message_channel_unittests.cc create mode 100644 shell/platform/common/cpp/client_wrapper/method_channel_unittests.cc diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index dd6d06e26c285..21d438c4a7b41 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -754,6 +754,7 @@ FILE: ../../../flutter/shell/platform/android/platform_view_android_jni.cc FILE: ../../../flutter/shell/platform/android/platform_view_android_jni.h FILE: ../../../flutter/shell/platform/android/vsync_waiter_android.cc FILE: ../../../flutter/shell/platform/android/vsync_waiter_android.h +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/basic_message_channel_unittests.cc FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/byte_stream_wrappers.h FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/encodable_value_unittests.cc FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/engine_method_result.cc @@ -776,6 +777,7 @@ FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/include/flutter/ FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/json_message_codec.cc FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/json_method_codec.cc FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/method_call_unittests.cc +FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/method_channel_unittests.cc FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/plugin_registrar.cc FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/plugin_registrar_unittests.cc FILE: ../../../flutter/shell/platform/common/cpp/client_wrapper/standard_codec.cc diff --git a/shell/platform/common/cpp/client_wrapper/BUILD.gn b/shell/platform/common/cpp/client_wrapper/BUILD.gn index de321f9020900..a8d30109d2856 100644 --- a/shell/platform/common/cpp/client_wrapper/BUILD.gn +++ b/shell/platform/common/cpp/client_wrapper/BUILD.gn @@ -46,8 +46,10 @@ executable("client_wrapper_unittests") { # TODO: Add more unit tests. sources = [ + "basic_message_channel_unittests.cc", "encodable_value_unittests.cc", "method_call_unittests.cc", + "method_channel_unittests.cc", "plugin_registrar_unittests.cc", "standard_message_codec_unittests.cc", "standard_method_codec_unittests.cc", diff --git a/shell/platform/common/cpp/client_wrapper/basic_message_channel_unittests.cc b/shell/platform/common/cpp/client_wrapper/basic_message_channel_unittests.cc new file mode 100644 index 0000000000000..3e47b80ceca45 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/basic_message_channel_unittests.cc @@ -0,0 +1,93 @@ +// 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. + +#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/basic_message_channel.h" + +#include +#include + +#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/binary_messenger.h" +#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/standard_message_codec.h" +#include "gtest/gtest.h" + +namespace flutter { + +namespace { + +class TestBinaryMessenger : public BinaryMessenger { + public: + void Send(const std::string& channel, + const uint8_t* message, + const size_t message_size) const override {} + + void Send(const std::string& channel, + const uint8_t* message, + const size_t message_size, + BinaryReply reply) const override {} + + void SetMessageHandler(const std::string& channel, + BinaryMessageHandler handler) override { + last_message_handler_channel_ = channel; + last_message_handler_ = handler; + } + + std::string last_message_handler_channel() { + return last_message_handler_channel_; + } + + BinaryMessageHandler last_message_handler() { return last_message_handler_; } + + private: + std::string last_message_handler_channel_; + BinaryMessageHandler last_message_handler_; +}; + +} // namespace + +// Tests that SetMessageHandler sets a handler that correctly interacts with +// the binary messenger. +TEST(BasicMessageChannelTest, Registration) { + TestBinaryMessenger messenger; + const std::string channel_name("some_channel"); + const StandardMessageCodec& codec = StandardMessageCodec::GetInstance(); + BasicMessageChannel channel(&messenger, channel_name, &codec); + + bool callback_called = false; + const std::string message_value("hello"); + channel.SetMessageHandler( + [&callback_called, message_value](const auto& message, auto reply) { + callback_called = true; + // Ensure that the wrapper recieved a correctly decoded message and a + // reply. + EXPECT_EQ(message.StringValue(), message_value); + EXPECT_NE(reply, nullptr); + }); + EXPECT_EQ(messenger.last_message_handler_channel(), channel_name); + EXPECT_NE(messenger.last_message_handler(), nullptr); + // Send a test message to trigger the handler test assertions. + auto message = codec.EncodeMessage(EncodableValue(message_value)); + + messenger.last_message_handler()( + message->data(), message->size(), + [](const uint8_t* reply, const size_t reply_size) {}); + EXPECT_EQ(callback_called, true); +} + +// Tests that SetMessageHandler with a null handler unregisters the handler. +TEST(BasicMessageChannelTest, Unregistration) { + TestBinaryMessenger messenger; + const std::string channel_name("some_channel"); + BasicMessageChannel channel(&messenger, channel_name, + &flutter::StandardMessageCodec::GetInstance()); + + channel.SetMessageHandler([](const auto& message, auto reply) {}); + EXPECT_EQ(messenger.last_message_handler_channel(), channel_name); + EXPECT_NE(messenger.last_message_handler(), nullptr); + + channel.SetMessageHandler(nullptr); + EXPECT_EQ(messenger.last_message_handler_channel(), channel_name); + EXPECT_EQ(messenger.last_message_handler(), nullptr); +} + +} // namespace flutter diff --git a/shell/platform/common/cpp/client_wrapper/include/flutter/basic_message_channel.h b/shell/platform/common/cpp/client_wrapper/include/flutter/basic_message_channel.h index ec5f0e9d6c2b4..1aca146eff3cd 100644 --- a/shell/platform/common/cpp/client_wrapper/include/flutter/basic_message_channel.h +++ b/shell/platform/common/cpp/client_wrapper/include/flutter/basic_message_channel.h @@ -60,8 +60,16 @@ class BasicMessageChannel { } // Registers a handler that should be called any time a message is - // received on this channel. + // received on this channel. A null handler will remove any previous handler. + // + // Note that the BasicMessageChannel does not own the handler, and will not + // unregister it on destruction, so the caller is responsible for + // unregistering explicitly if it should no longer be called. void SetMessageHandler(const MessageHandler& handler) const { + if (!handler) { + messenger_->SetMessageHandler(name_, nullptr); + return; + } const auto* codec = codec_; std::string channel_name = name_; BinaryMessageHandler binary_handler = [handler, codec, channel_name]( diff --git a/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h b/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h index 4baa083cca117..96658af96c3c4 100644 --- a/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h +++ b/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h @@ -62,8 +62,16 @@ class MethodChannel { } // Registers a handler that should be called any time a method call is - // received on this channel. + // received on this channel. A null handler will remove any previous handler. + // + // Note that the MethodChannel does not own the handler, and will not + // unregister it on destruction, so the caller is responsible for + // unregistering explicitly if it should no longer be called. void SetMethodCallHandler(MethodCallHandler handler) const { + if (!handler) { + messenger_->SetMessageHandler(name_, nullptr); + return; + } const auto* codec = codec_; std::string channel_name = name_; BinaryMessageHandler binary_handler = [handler, codec, channel_name]( diff --git a/shell/platform/common/cpp/client_wrapper/method_channel_unittests.cc b/shell/platform/common/cpp/client_wrapper/method_channel_unittests.cc new file mode 100644 index 0000000000000..549c1023a4ab0 --- /dev/null +++ b/shell/platform/common/cpp/client_wrapper/method_channel_unittests.cc @@ -0,0 +1,94 @@ +// 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. + +#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h" + +#include +#include + +#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/binary_messenger.h" +#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/standard_method_codec.h" +#include "gtest/gtest.h" + +namespace flutter { + +namespace { + +class TestBinaryMessenger : public BinaryMessenger { + public: + void Send(const std::string& channel, + const uint8_t* message, + const size_t message_size) const override {} + + void Send(const std::string& channel, + const uint8_t* message, + const size_t message_size, + BinaryReply reply) const override {} + + void SetMessageHandler(const std::string& channel, + BinaryMessageHandler handler) override { + last_message_handler_channel_ = channel; + last_message_handler_ = handler; + } + + std::string last_message_handler_channel() { + return last_message_handler_channel_; + } + + BinaryMessageHandler last_message_handler() { return last_message_handler_; } + + private: + std::string last_message_handler_channel_; + BinaryMessageHandler last_message_handler_; +}; + +} // namespace + +// Tests that SetMethodCallHandler sets a handler that correctly interacts with +// the binary messenger. +TEST(MethodChannelTest, Registration) { + TestBinaryMessenger messenger; + const std::string channel_name("some_channel"); + const StandardMethodCodec& codec = StandardMethodCodec::GetInstance(); + MethodChannel channel(&messenger, channel_name, &codec); + + bool callback_called = false; + const std::string method_name("hello"); + channel.SetMethodCallHandler( + [&callback_called, method_name](const auto& call, auto result) { + callback_called = true; + // Ensure that the wrapper recieved a correctly decoded call and a + // result. + EXPECT_EQ(call.method_name(), method_name); + EXPECT_NE(result, nullptr); + }); + EXPECT_EQ(messenger.last_message_handler_channel(), channel_name); + EXPECT_NE(messenger.last_message_handler(), nullptr); + // Send a test message to trigger the handler test assertions. + MethodCall call(method_name, nullptr); + auto message = codec.EncodeMethodCall(call); + + messenger.last_message_handler()( + message->data(), message->size(), + [](const uint8_t* reply, const size_t reply_size) {}); + EXPECT_EQ(callback_called, true); +} + +// Tests that SetMethodCallHandler with a null handler unregisters the handler. +TEST(MethodChannelTest, Unregistration) { + TestBinaryMessenger messenger; + const std::string channel_name("some_channel"); + MethodChannel channel(&messenger, channel_name, + &flutter::StandardMethodCodec::GetInstance()); + + channel.SetMethodCallHandler([](const auto& call, auto result) {}); + EXPECT_EQ(messenger.last_message_handler_channel(), channel_name); + EXPECT_NE(messenger.last_message_handler(), nullptr); + + channel.SetMethodCallHandler(nullptr); + EXPECT_EQ(messenger.last_message_handler_channel(), channel_name); + EXPECT_EQ(messenger.last_message_handler(), nullptr); +} + +} // namespace flutter diff --git a/shell/platform/common/cpp/client_wrapper/plugin_registrar_unittests.cc b/shell/platform/common/cpp/client_wrapper/plugin_registrar_unittests.cc index 22ca10ea58f27..5f1a5b4421f5e 100644 --- a/shell/platform/common/cpp/client_wrapper/plugin_registrar_unittests.cc +++ b/shell/platform/common/cpp/client_wrapper/plugin_registrar_unittests.cc @@ -23,6 +23,7 @@ class TestApi : public testing::StubFlutterApi { last_data_sent_ = message; return message_engine_result; } + bool MessengerSendWithReply(const char* channel, const uint8_t* message, const size_t message_size, @@ -32,15 +33,27 @@ class TestApi : public testing::StubFlutterApi { return message_engine_result; } + // Called for FlutterDesktopMessengerSetCallback. + void MessengerSetCallback(const char* channel, + FlutterDesktopMessageCallback callback, + void* user_data) override { + last_callback_set_ = callback; + } + const uint8_t* last_data_sent() { return last_data_sent_; } + FlutterDesktopMessageCallback last_callback_set() { + return last_callback_set_; + } private: const uint8_t* last_data_sent_ = nullptr; + FlutterDesktopMessageCallback last_callback_set_ = nullptr; }; } // namespace -// Tests that the registrar returns a messenger that calls through to the C API. +// Tests that the registrar returns a messenger that passes Send through to the +// C API. TEST(MethodCallTest, MessengerSend) { testing::ScopedStubFlutterApi scoped_api_stub(std::make_unique()); auto test_api = static_cast(scoped_api_stub.stub()); @@ -55,4 +68,28 @@ TEST(MethodCallTest, MessengerSend) { EXPECT_EQ(test_api->last_data_sent(), &message[0]); } +// Tests that the registrar returns a messenger that passes callback +// registration and unregistration through to the C API. +TEST(MethodCallTest, MessengerSetMessageHandler) { + testing::ScopedStubFlutterApi scoped_api_stub(std::make_unique()); + auto test_api = static_cast(scoped_api_stub.stub()); + + auto dummy_registrar_handle = + reinterpret_cast(1); + PluginRegistrar registrar(dummy_registrar_handle); + BinaryMessenger* messenger = registrar.messenger(); + const std::string channel_name("foo"); + + // Register. + BinaryMessageHandler binary_handler = [](const uint8_t* message, + const size_t message_size, + BinaryReply reply) {}; + messenger->SetMessageHandler(channel_name, std::move(binary_handler)); + EXPECT_NE(test_api->last_callback_set(), nullptr); + + // Unregister. + messenger->SetMessageHandler(channel_name, nullptr); + EXPECT_EQ(test_api->last_callback_set(), nullptr); +} + } // namespace flutter From 592b3ff21fccd83f2f54774e3b2be88b5f11ef5e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 25 Feb 2020 17:41:03 -0500 Subject: [PATCH 042/521] Roll src/third_party/skia 7a6db4cbf48b..d8575452ebf3 (3 commits) (#16799) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index abc563cde0e94..08872409cfce0 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '7a6db4cbf48bb961a25dade9af8d6cd8a3182857', + 'skia_revision': 'd8575452ebf3296a5029aa14643becb13efbc8d1', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index bc7c04da53540..f737e6e671067 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9545352b35f87dd4ea0cb0fd145dbb62 +Signature: b85f3ba099096321ef15a2f102ce27e8 UNUSED LICENSES: @@ -5659,7 +5659,6 @@ FILE: ../../../third_party/skia/gm/strokerect_anisotropic.cpp FILE: ../../../third_party/skia/gm/verifiers/gmverifier.cpp FILE: ../../../third_party/skia/gm/verifiers/gmverifier.h FILE: ../../../third_party/skia/include/core/SkM44.h -FILE: ../../../third_party/skia/include/private/SkM44.h FILE: ../../../third_party/skia/modules/skottie/src/Adapter.h FILE: ../../../third_party/skia/modules/skottie/src/Animator.cpp FILE: ../../../third_party/skia/modules/skottie/src/Animator.h From 9ac76ad5ad8d4949aa9a8bb01384fccc6c500749 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Tue, 25 Feb 2020 15:04:07 -0800 Subject: [PATCH 043/521] [web] changing user limits for macos (#16797) * changing user limits for macos * check kernel name instead --- lib/web_ui/dev/felt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/web_ui/dev/felt b/lib/web_ui/dev/felt index a9dae177cf8c6..89365e463965f 100755 --- a/lib/web_ui/dev/felt +++ b/lib/web_ui/dev/felt @@ -53,6 +53,14 @@ install_deps() { (cd "$FLUTTER_DIR/web_sdk/web_engine_tester"; $PUB_PATH get) } +KERNEL_NAME=`uname` +if [[ $KERNEL_NAME == *"Darwin"* ]] +then + echo "Running on MacOS. Increase the user limits" + ulimit -n 10000 + ulimit -u 2048 +fi + if [[ "$FELT_USE_SNAPSHOT" == "false" || "$FELT_USE_SNAPSHOT" == "0" ]]; then echo "[Snapshot mode: off]" # Running without snapshot means there is high likelyhood of local changes. In @@ -78,4 +86,3 @@ else $DART_SDK_DIR/bin/dart --packages="$WEB_UI_DIR/.packages" "$SNAPSHOT_PATH" $@ fi - From 7685e080bb3f5d0f48c7eb88dd7f31cbf23743e3 Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Tue, 25 Feb 2020 15:06:07 -0800 Subject: [PATCH 044/521] [web] Guard the remaining calls to window.onPlatformMessage (#16791) --- lib/web_ui/lib/src/engine/history.dart | 28 +++++---- lib/web_ui/lib/src/engine/keyboard.dart | 4 ++ .../src/engine/text_editing/text_editing.dart | 62 ++++++++++--------- 3 files changed, 54 insertions(+), 40 deletions(-) diff --git a/lib/web_ui/lib/src/engine/history.dart b/lib/web_ui/lib/src/engine/history.dart index ecca63d0b5fe8..0c46004dc0117 100644 --- a/lib/web_ui/lib/src/engine/history.dart +++ b/lib/web_ui/lib/src/engine/history.dart @@ -94,11 +94,13 @@ class BrowserHistory { _setupFlutterEntry(_locationStrategy); // 2. Send a 'popRoute' platform message so the app can handle it accordingly. - ui.window.onPlatformMessage( - 'flutter/navigation', - const JSONMethodCodec().encodeMethodCall(_popRouteMethodCall), - (_) {}, - ); + if (ui.window.onPlatformMessage != null) { + ui.window.onPlatformMessage( + 'flutter/navigation', + const JSONMethodCodec().encodeMethodCall(_popRouteMethodCall), + (_) {}, + ); + } } else if (_isFlutterEntry(event.state)) { // We get into this scenario when the user changes the url manually. It // causes a new entry to be pushed on top of our "flutter" one. When this @@ -111,13 +113,15 @@ class BrowserHistory { _userProvidedRouteName = null; // Send a 'pushRoute' platform message so the app handles it accordingly. - ui.window.onPlatformMessage( - 'flutter/navigation', - const JSONMethodCodec().encodeMethodCall( - MethodCall('pushRoute', newRouteName), - ), - (_) {}, - ); + if (ui.window.onPlatformMessage != null) { + ui.window.onPlatformMessage( + 'flutter/navigation', + const JSONMethodCodec().encodeMethodCall( + MethodCall('pushRoute', newRouteName), + ), + (_) {}, + ); + } } else { // The user has pushed a new entry on top of our flutter entry. This could // happen when the user modifies the hash part of the url directly, for diff --git a/lib/web_ui/lib/src/engine/keyboard.dart b/lib/web_ui/lib/src/engine/keyboard.dart index f192ef6c64365..d42b44fc6f829 100644 --- a/lib/web_ui/lib/src/engine/keyboard.dart +++ b/lib/web_ui/lib/src/engine/keyboard.dart @@ -68,6 +68,10 @@ class Keyboard { static const JSONMessageCodec _messageCodec = JSONMessageCodec(); void _handleHtmlEvent(html.KeyboardEvent event) { + if (ui.window.onPlatformMessage == null) { + return; + } + if (_shouldIgnoreEvent(event)) { return; } diff --git a/lib/web_ui/lib/src/engine/text_editing/text_editing.dart b/lib/web_ui/lib/src/engine/text_editing/text_editing.dart index 7c47ddb31c443..369d711e59f38 100644 --- a/lib/web_ui/lib/src/engine/text_editing/text_editing.dart +++ b/lib/web_ui/lib/src/engine/text_editing/text_editing.dart @@ -819,44 +819,50 @@ class TextEditingChannel { /// Sends the 'TextInputClient.updateEditingState' message to the framework. void updateEditingState(int clientId, EditingState editingState) { - ui.window.onPlatformMessage( - 'flutter/textinput', - const JSONMethodCodec().encodeMethodCall( - MethodCall('TextInputClient.updateEditingState', [ - clientId, - editingState.toFlutter(), - ]), - ), - _emptyCallback, - ); + if (ui.window.onPlatformMessage != null) { + ui.window.onPlatformMessage( + 'flutter/textinput', + const JSONMethodCodec().encodeMethodCall( + MethodCall('TextInputClient.updateEditingState', [ + clientId, + editingState.toFlutter(), + ]), + ), + _emptyCallback, + ); + } } /// Sends the 'TextInputClient.performAction' message to the framework. void performAction(int clientId, String inputAction) { - ui.window.onPlatformMessage( - 'flutter/textinput', - const JSONMethodCodec().encodeMethodCall( - MethodCall( - 'TextInputClient.performAction', - [clientId, inputAction], + if (ui.window.onPlatformMessage != null) { + ui.window.onPlatformMessage( + 'flutter/textinput', + const JSONMethodCodec().encodeMethodCall( + MethodCall( + 'TextInputClient.performAction', + [clientId, inputAction], + ), ), - ), - _emptyCallback, - ); + _emptyCallback, + ); + } } /// Sends the 'TextInputClient.onConnectionClosed' message to the framework. void onConnectionClosed(int clientId) { - ui.window.onPlatformMessage( - 'flutter/textinput', - const JSONMethodCodec().encodeMethodCall( - MethodCall( - 'TextInputClient.onConnectionClosed', - [clientId], + if (ui.window.onPlatformMessage != null) { + ui.window.onPlatformMessage( + 'flutter/textinput', + const JSONMethodCodec().encodeMethodCall( + MethodCall( + 'TextInputClient.onConnectionClosed', + [clientId], + ), ), - ), - _emptyCallback, - ); + _emptyCallback, + ); + } } } From 3286543111397bb7dde789411aa28dc33128d052 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 25 Feb 2020 19:16:06 -0500 Subject: [PATCH 045/521] Roll src/third_party/skia d8575452ebf3..adc9bbb2aaca (2 commits) (#16801) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 08872409cfce0..8b35b53d0d9b8 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'd8575452ebf3296a5029aa14643becb13efbc8d1', + 'skia_revision': 'adc9bbb2aaca927bb4c8553e5737073f8a6b630c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f737e6e671067..d66d26d1b085f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b85f3ba099096321ef15a2f102ce27e8 +Signature: 6d41c156eab90633e93a6a3dc2254d21 UNUSED LICENSES: From 29cff9eb5f3b97c038ad290e77a9c509d7d1b42f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 25 Feb 2020 20:21:03 -0500 Subject: [PATCH 046/521] Roll fuchsia/sdk/core/mac-amd64 from 8gjOI... to 3B3a6... (#16803) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 8b35b53d0d9b8..153a7c93c90a9 100644 --- a/DEPS +++ b/DEPS @@ -546,7 +546,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': '8gjOIzTsliDWNA-lSIZUc49xQqebJ6CmXLK3dfNruysC' + 'version': '3B3a6BXsSOgf3t_7lQVk6ZXh4lPqJk11AR7TlNj1koIC' } ], 'condition': 'host_os == "mac"', From fc3a15e7f5d298371f0e11ac683856ff2e6edfaa Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 25 Feb 2020 20:51:03 -0500 Subject: [PATCH 047/521] Roll src/third_party/skia adc9bbb2aaca..7b96793ccc5b (3 commits) (#16804) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 153a7c93c90a9..9821238d8b3a7 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'adc9bbb2aaca927bb4c8553e5737073f8a6b630c', + 'skia_revision': '7b96793ccc5b5e5010e87c29243c3257f8cb37a4', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index d66d26d1b085f..7766a3550e713 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6d41c156eab90633e93a6a3dc2254d21 +Signature: c258c90acab7823d92660aeb2759bd91 UNUSED LICENSES: @@ -5659,6 +5659,7 @@ FILE: ../../../third_party/skia/gm/strokerect_anisotropic.cpp FILE: ../../../third_party/skia/gm/verifiers/gmverifier.cpp FILE: ../../../third_party/skia/gm/verifiers/gmverifier.h FILE: ../../../third_party/skia/include/core/SkM44.h +FILE: ../../../third_party/skia/include/private/SkM44.h FILE: ../../../third_party/skia/modules/skottie/src/Adapter.h FILE: ../../../third_party/skia/modules/skottie/src/Animator.cpp FILE: ../../../third_party/skia/modules/skottie/src/Animator.h From f1a9dc1c95c59a8269fc105b8edd670eda75600c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 25 Feb 2020 22:26:02 -0500 Subject: [PATCH 048/521] Roll src/third_party/skia 7b96793ccc5b..f0a13d04c233 (1 commits) (#16805) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 9821238d8b3a7..57ba3b52ef1e6 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '7b96793ccc5b5e5010e87c29243c3257f8cb37a4', + 'skia_revision': 'f0a13d04c23365ca0bdca68de1c98d4ac7f732e3', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7766a3550e713..ad59560d46ea3 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c258c90acab7823d92660aeb2759bd91 +Signature: 8718e43874ea7399a9017bab203eddc2 UNUSED LICENSES: From ecabc1037652cd1c5993ba0b9183f300862e3503 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 26 Feb 2020 07:11:03 -0500 Subject: [PATCH 049/521] Roll src/third_party/dart 85f6d51c3fd1..418923733006 (30 commits) (#16813) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 4 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++------------ 3 files changed, 122 insertions(+), 128 deletions(-) diff --git a/DEPS b/DEPS index 57ba3b52ef1e6..d5e86ebd95647 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '85f6d51c3fd10b8a51690f5124e312269525c79a', + 'dart_revision': '41892373300621bf8d237c3c82c6b9d8f7a50aa1', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index d8cecf5996542..d7c1512b988f2 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 92ac7bdf9594b511cf0aa26733493dbe +Signature: 5faa265ba2e08f3598ef91c388e829df UNUSED LICENSES: @@ -7769,8 +7769,6 @@ FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_type.cc FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/native_type.h FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/recognized_method.cc FILE: ../../../third_party/dart/runtime/vm/compiler/ffi/recognized_method.h -FILE: ../../../third_party/dart/runtime/vm/compiler/write_barrier_elimination.cc -FILE: ../../../third_party/dart/runtime/vm/compiler/write_barrier_elimination.h FILE: ../../../third_party/dart/runtime/vm/constants_base.h FILE: ../../../third_party/dart/runtime/vm/dispatch_table.cc FILE: ../../../third_party/dart/runtime/vm/dispatch_table.h diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 51f4a37524611..6cdcbe8cb194f 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 8af3b1b4da63d560ff54abdedbaa376044555bdc Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 26 Feb 2020 07:31:02 -0500 Subject: [PATCH 050/521] Roll src/third_party/skia f0a13d04c233..7f5e3c7e43c7 (6 commits) (#16810) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index d5e86ebd95647..0f773ddaec0ea 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'f0a13d04c23365ca0bdca68de1c98d4ac7f732e3', + 'skia_revision': '7f5e3c7e43c74338cc52efc868daba7793f2e1ec', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ad59560d46ea3..77d0a02bfaa70 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8718e43874ea7399a9017bab203eddc2 +Signature: 6a1af81e1f03b63ef36c63a610728e41 UNUSED LICENSES: @@ -5659,7 +5659,6 @@ FILE: ../../../third_party/skia/gm/strokerect_anisotropic.cpp FILE: ../../../third_party/skia/gm/verifiers/gmverifier.cpp FILE: ../../../third_party/skia/gm/verifiers/gmverifier.h FILE: ../../../third_party/skia/include/core/SkM44.h -FILE: ../../../third_party/skia/include/private/SkM44.h FILE: ../../../third_party/skia/modules/skottie/src/Adapter.h FILE: ../../../third_party/skia/modules/skottie/src/Animator.cpp FILE: ../../../third_party/skia/modules/skottie/src/Animator.h From 060a7733a6541f388de3dda452fe1e7867099005 Mon Sep 17 00:00:00 2001 From: Kaushik Iska Date: Wed, 26 Feb 2020 15:44:59 -0800 Subject: [PATCH 051/521] Roll fuchsia/sdk/core/linux-amd64 from QU3ft... to 94el1... (#16821) --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 6 +- .../fuchsia/runtime/dart/utils/tempfs.cc | 3 +- sky/packages/sky_engine/LICENSE | 244 +++++++++--------- 4 files changed, 132 insertions(+), 123 deletions(-) diff --git a/DEPS b/DEPS index 0f773ddaec0ea..2b8f2a86de53c 100644 --- a/DEPS +++ b/DEPS @@ -566,7 +566,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'QU3ftU-cUuaEJ6toYgGcrvQfIijLK4vMES6OWTQrvSUC' + 'version': '94el1vUdWEC16gJzmIJYfDB3y-yOWAxPg3PICBbptU4C' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 1e53714d82b8a..c5bb0c9f9ebce 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: 26a2b7ac3932400ae47b8a1bac1ef7f8 +Signature: cb13f8a75811f4b1fbfd31056e6eea8e UNUSED LICENSES: @@ -464,6 +464,7 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.castconfig/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.castsetup/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.castsysteminfo/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.cobalt/meta.json +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component.runner/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.data/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.deprecatedtimezone/meta.json @@ -1371,6 +1372,7 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.castsetup/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.castsysteminfo/cast_system_info.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.castsysteminfo/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.cobalt/meta.json +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component.runner/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.data/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.deprecatedtimezone/deprecated_time_service.fidl @@ -2183,6 +2185,7 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.castconfig/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.castsetup/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.castsysteminfo/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.cobalt/meta.json +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component.runner/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.data/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.deprecatedtimezone/meta.json @@ -3381,6 +3384,7 @@ FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/resour FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/types.h FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/types.h FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/interface.dart +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component.runner/component_runner.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.fonts/font_provider.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.math/math.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.media.playback/problem.fidl diff --git a/shell/platform/fuchsia/runtime/dart/utils/tempfs.cc b/shell/platform/fuchsia/runtime/dart/utils/tempfs.cc index 8c5f0f64ea7bc..a1234ebf3b5d9 100644 --- a/shell/platform/fuchsia/runtime/dart/utils/tempfs.cc +++ b/shell/platform/fuchsia/runtime/dart/utils/tempfs.cc @@ -45,9 +45,10 @@ void RunnerTemp::Start() { zx_status_t status = memfs_install_at_with_page_limit( loop_->dispatcher(), kMaxTmpPages, kTmpPath); #else + memfs_filesystem_t* fs; // Hot reload uses /tmp to hold the updated dills and assets so do not // impose any size limitation in non product runners. - zx_status_t status = memfs_install_at(loop_->dispatcher(), kTmpPath); + zx_status_t status = memfs_install_at(loop_->dispatcher(), kTmpPath, &fs); #endif finished.set_value(); if (status != ZX_OK) { diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 6cdcbe8cb194f..51f4a37524611 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,66 +5143,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5234,66 +5174,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5690,6 +5570,130 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From c0e29b6000a45fab05ba67a357c4787057f0fa55 Mon Sep 17 00:00:00 2001 From: Ferhat Date: Wed, 26 Feb 2020 15:54:10 -0800 Subject: [PATCH 052/521] Fix stale physicalSize on resize event (#16822) --- lib/web_ui/lib/src/engine/dom_renderer.dart | 1 + lib/web_ui/lib/src/engine/window.dart | 13 ++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/web_ui/lib/src/engine/dom_renderer.dart b/lib/web_ui/lib/src/engine/dom_renderer.dart index 520c1c94d0107..dbabe49f4d189 100644 --- a/lib/web_ui/lib/src/engine/dom_renderer.dart +++ b/lib/web_ui/lib/src/engine/dom_renderer.dart @@ -472,6 +472,7 @@ flt-glass-pane * { /// Called immediately after browser window metrics change. void _metricsDidChange(html.Event event) { + window._computePhysicalSize(); if (ui.window.onMetricsChanged != null) { ui.window.onMetricsChanged(); } diff --git a/lib/web_ui/lib/src/engine/window.dart b/lib/web_ui/lib/src/engine/window.dart index 894ec0b2cadce..e2004cda29286 100644 --- a/lib/web_ui/lib/src/engine/window.dart +++ b/lib/web_ui/lib/src/engine/window.dart @@ -48,12 +48,11 @@ class EngineWindow extends ui.Window { @override ui.Size get physicalSize { - if (_physicalSize?.value == null) { + if (_physicalSize == null) { _computePhysicalSize(); } assert(_physicalSize != null); - assert(_physicalSize.value != null); - return _physicalSize.value; + return _physicalSize; } /// Computes the physical size of the screen from [html.window]. @@ -65,7 +64,7 @@ class EngineWindow extends ui.Window { assert(() { if (webOnlyDebugPhysicalSizeOverride != null) { - _physicalSize = FrameReference(webOnlyDebugPhysicalSizeOverride); + _physicalSize = webOnlyDebugPhysicalSizeOverride; override = true; } return true; @@ -82,15 +81,15 @@ class EngineWindow extends ui.Window { windowInnerWidth = html.window.innerWidth * devicePixelRatio; windowInnerHeight = html.window.innerHeight * devicePixelRatio; } - _physicalSize = FrameReference(ui.Size( + _physicalSize = ui.Size( windowInnerWidth, windowInnerHeight, - )); + ); } } /// Lazily populated and cleared at the end of the frame. - FrameReference _physicalSize; + ui.Size _physicalSize; /// Overrides the value of [physicalSize] in tests. ui.Size webOnlyDebugPhysicalSizeOverride; From b29b3a05c5ababc3ceb78015b297e73837c8d4c1 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 27 Feb 2020 10:54:39 -0500 Subject: [PATCH 053/521] Roll fuchsia/sdk/core/linux-amd64 from 94el1... to P70YB... (#16825) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter-engine Please CC on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2b8f2a86de53c..bcedd04acf93d 100644 --- a/DEPS +++ b/DEPS @@ -566,7 +566,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': '94el1vUdWEC16gJzmIJYfDB3y-yOWAxPg3PICBbptU4C' + 'version': 'P70YBvAdRcMoNE3fZ54QpiwlR4b1btCuRmmBjrKMtSEC' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index c5bb0c9f9ebce..73d0c47065160 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: cb13f8a75811f4b1fbfd31056e6eea8e +Signature: 75d8a55c1de1fb02a30b4a28e1c38c4a UNUSED LICENSES: From 9e44f706e0be53c836c36e6844ef117e8b8257ae Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 27 Feb 2020 11:17:31 -0500 Subject: [PATCH 054/521] Roll fuchsia/sdk/core/mac-amd64 from 3B3a6... to NVGXM... (#16814) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-mac-sdk-flutter-engine Please CC on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index bcedd04acf93d..3d55a801fefa9 100644 --- a/DEPS +++ b/DEPS @@ -546,7 +546,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': '3B3a6BXsSOgf3t_7lQVk6ZXh4lPqJk11AR7TlNj1koIC' + 'version': 'NVGXMzR3wGyMrAajVV9RYgcR72eA9Eyrt46eyq7_4SYC' } ], 'condition': 'host_os == "mac"', From 2914e4ddf6c7157fd1899eeae6b8590ef9c95fe6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 27 Feb 2020 11:26:03 -0500 Subject: [PATCH 055/521] Roll src/third_party/skia 7f5e3c7e43c7..dc2a97774bb6 (1 commits) (#16815) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 3d55a801fefa9..4953fb0b681de 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '7f5e3c7e43c74338cc52efc868daba7793f2e1ec', + 'skia_revision': 'dc2a97774bb699786a8277635c922ea636b07931', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 77d0a02bfaa70..be51ced6ffca1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 6a1af81e1f03b63ef36c63a610728e41 +Signature: 4b4a33d66a6e32ca303d5744f5de0bdf UNUSED LICENSES: From 1e01b775e393a7b92ac0d6e9d50b207ad6786d17 Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Thu, 27 Feb 2020 08:29:58 -0800 Subject: [PATCH 056/521] Enable HTTP and socket profiling dart:io service extensions for Flutter (#16800) --- lib/ui/dart_runtime_hooks.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/ui/dart_runtime_hooks.cc b/lib/ui/dart_runtime_hooks.cc index 662d2d631108c..945833981c477 100644 --- a/lib/ui/dart_runtime_hooks.cc +++ b/lib/ui/dart_runtime_hooks.cc @@ -142,6 +142,14 @@ static void InitDartIO(Dart_Handle builtin_library, Dart_Handle result = Dart_SetField(platform_type, ToDart("_localeClosure"), locale_closure); PropagateIfError(result); + + // Register dart:io service extensions used for network profiling. + Dart_Handle network_profiling_type = + Dart_GetType(io_lib, ToDart("_NetworkProfiling"), 0, nullptr); + PropagateIfError(network_profiling_type); + result = Dart_Invoke(network_profiling_type, + ToDart("_registerServiceExtension"), 0, nullptr); + PropagateIfError(result); } void DartRuntimeHooks::Install(bool is_ui_isolate, From f43a72a512717ab1f8fe4b02bebdb2507f5c34a1 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 27 Feb 2020 11:31:04 -0500 Subject: [PATCH 057/521] Roll src/third_party/dart 418923733006..9c05fde96b62 (2 commits) (#16817) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 4953fb0b681de..30a6de51a0acc 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '41892373300621bf8d237c3c82c6b9d8f7a50aa1', + 'dart_revision': '9c05fde96b62556944befd18ec834c56d6854fda', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index d7c1512b988f2..471273e33fe62 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 5faa265ba2e08f3598ef91c388e829df +Signature: 4cec5492362361f8fa9e88f53ed762c5 UNUSED LICENSES: From 0c4d6d5b6b0f62cff93d1a105241db585f7cf4e8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 27 Feb 2020 12:56:02 -0500 Subject: [PATCH 058/521] Roll src/third_party/skia dc2a97774bb6..93afe641d0be (22 commits) (#16828) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 30a6de51a0acc..dd832b7a902f4 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'dc2a97774bb699786a8277635c922ea636b07931', + 'skia_revision': '93afe641d0bee1a3ee624e31dc88445707ad4ad1', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index be51ced6ffca1..63c116bcc21e1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4b4a33d66a6e32ca303d5744f5de0bdf +Signature: ac462f9276e1e95a927b94350c07f38a UNUSED LICENSES: @@ -1183,6 +1183,7 @@ FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Cl FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_NoGPUThreads.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus7-CPU-Tegra3-arm-Debug-All-Android.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-P30-GPU-MaliG76-arm64-Release-All-Android_Vulkan.json +FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Pixel3-GPU-Adreno630-arm64-Release-All-Android_Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Release-All-Android.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-ChromeOS-Clang-ASUSChromebookFlipC100-GPU-MaliT764-arm-Release-All.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-ChromeOS-Clang-AcerChromebook13_CB5_311-GPU-TegraK1-arm-Release-All.json @@ -1501,6 +1502,7 @@ FILE: ../../../third_party/skia/src/sksl/sksl_frag.inc FILE: ../../../third_party/skia/src/sksl/sksl_geom.inc FILE: ../../../third_party/skia/src/sksl/sksl_gpu.inc FILE: ../../../third_party/skia/src/sksl/sksl_interp.inc +FILE: ../../../third_party/skia/src/sksl/sksl_interp_inline.inc FILE: ../../../third_party/skia/src/sksl/sksl_pipeline.inc FILE: ../../../third_party/skia/src/sksl/sksl_vert.inc ---------------------------------------------------------------------------------------------------- @@ -3982,6 +3984,11 @@ FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DCaps.cpp FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DCaps.h FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DGpu.cpp FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DGpu.h +FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DOpsRenderPass.cpp +FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DOpsRenderPass.h +FILE: ../../../third_party/skia/src/gpu/effects/GrDeviceSpaceEffect.fp +FILE: ../../../third_party/skia/src/gpu/effects/generated/GrDeviceSpaceEffect.cpp +FILE: ../../../third_party/skia/src/gpu/effects/generated/GrDeviceSpaceEffect.h FILE: ../../../third_party/skia/src/sksl/SkSLInterpreter.h FILE: ../../../third_party/skia/src/sksl/SkSLSPIRVtoHLSL.cpp FILE: ../../../third_party/skia/src/sksl/SkSLSPIRVtoHLSL.h From a16d97e507c85f11b4cc5740cc9e488bae0e9664 Mon Sep 17 00:00:00 2001 From: Kaushik Iska Date: Thu, 27 Feb 2020 10:13:26 -0800 Subject: [PATCH 059/521] Revert "fuchsia: remove use of replace_as_executable (#16690)" (#16829) This reverts commit ff921cd608efaf3aecd3e3e0feb14bb540cc22ed. --- .../goodbye_dart/meta/goodbye_dart_aot.cmx | 3 ++ .../meta/dart_aot_product_runner.cmx | 1 + .../dart_runner/meta/dart_aot_runner.cmx | 1 + shell/platform/fuchsia/flutter/component.cc | 14 +++++- .../meta/flutter_aot_product_runner.cmx | 1 + .../flutter/meta/flutter_aot_runner.cmx | 1 + shell/platform/fuchsia/flutter/runner.cc | 2 +- .../runtime/dart/utils/mapped_resource.cc | 19 ++++++-- .../fuchsia/runtime/dart/utils/vmo.cc | 48 ++++--------------- .../platform/fuchsia/runtime/dart/utils/vmo.h | 5 +- 10 files changed, 45 insertions(+), 50 deletions(-) diff --git a/shell/platform/fuchsia/dart_runner/examples/goodbye_dart/meta/goodbye_dart_aot.cmx b/shell/platform/fuchsia/dart_runner/examples/goodbye_dart/meta/goodbye_dart_aot.cmx index e041f24109f72..c6705a70ac564 100644 --- a/shell/platform/fuchsia/dart_runner/examples/goodbye_dart/meta/goodbye_dart_aot.cmx +++ b/shell/platform/fuchsia/dart_runner/examples/goodbye_dart/meta/goodbye_dart_aot.cmx @@ -3,6 +3,9 @@ "data": "data/goodbye_dart_aot" }, "sandbox": { + "features": [ + "deprecated-ambient-replace-as-executable" + ], "services": [ "fuchsia.intl.PropertyProvider", "fuchsia.sys.Environment" diff --git a/shell/platform/fuchsia/dart_runner/meta/dart_aot_product_runner.cmx b/shell/platform/fuchsia/dart_runner/meta/dart_aot_product_runner.cmx index 26c6db097e343..629c352e01ae3 100644 --- a/shell/platform/fuchsia/dart_runner/meta/dart_aot_product_runner.cmx +++ b/shell/platform/fuchsia/dart_runner/meta/dart_aot_product_runner.cmx @@ -5,6 +5,7 @@ "sandbox": { "features": [ "config-data", + "deprecated-ambient-replace-as-executable", "root-ssl-certificates" ], "services": [ diff --git a/shell/platform/fuchsia/dart_runner/meta/dart_aot_runner.cmx b/shell/platform/fuchsia/dart_runner/meta/dart_aot_runner.cmx index 26c6db097e343..629c352e01ae3 100644 --- a/shell/platform/fuchsia/dart_runner/meta/dart_aot_runner.cmx +++ b/shell/platform/fuchsia/dart_runner/meta/dart_aot_runner.cmx @@ -5,6 +5,7 @@ "sandbox": { "features": [ "config-data", + "deprecated-ambient-replace-as-executable", "root-ssl-certificates" ], "services": [ diff --git a/shell/platform/fuchsia/flutter/component.cc b/shell/platform/fuchsia/flutter/component.cc index e0d58f3e80330..9f6bc6f91596c 100644 --- a/shell/platform/fuchsia/flutter/component.cc +++ b/shell/platform/fuchsia/flutter/component.cc @@ -431,8 +431,7 @@ class FileInNamespaceBuffer final : public fml::Mapping { FileInNamespaceBuffer(int namespace_fd, const char* path, bool executable) : address_(nullptr), size_(0) { fuchsia::mem::Buffer buffer; - if (!dart_utils::VmoFromFilenameAt(namespace_fd, path, executable, - &buffer)) { + if (!dart_utils::VmoFromFilenameAt(namespace_fd, path, &buffer)) { return; } if (buffer.size == 0) { @@ -442,6 +441,17 @@ class FileInNamespaceBuffer final : public fml::Mapping { uint32_t flags = ZX_VM_PERM_READ; if (executable) { flags |= ZX_VM_PERM_EXECUTE; + + // VmoFromFilenameAt will return VMOs without ZX_RIGHT_EXECUTE, + // so we need replace_as_executable to be able to map them as + // ZX_VM_PERM_EXECUTE. + // TODO(mdempsky): Update comment once SEC-42 is fixed. + zx_status_t status = + buffer.vmo.replace_as_executable(zx::handle(), &buffer.vmo); + if (status != ZX_OK) { + FML_LOG(FATAL) << "Failed to make VMO executable: " + << zx_status_get_string(status); + } } uintptr_t addr; zx_status_t status = diff --git a/shell/platform/fuchsia/flutter/meta/flutter_aot_product_runner.cmx b/shell/platform/fuchsia/flutter/meta/flutter_aot_product_runner.cmx index 914c22b6f2dbb..019dc11340d84 100644 --- a/shell/platform/fuchsia/flutter/meta/flutter_aot_product_runner.cmx +++ b/shell/platform/fuchsia/flutter/meta/flutter_aot_product_runner.cmx @@ -5,6 +5,7 @@ "sandbox": { "features": [ "config-data", + "deprecated-ambient-replace-as-executable", "root-ssl-certificates", "vulkan" ], diff --git a/shell/platform/fuchsia/flutter/meta/flutter_aot_runner.cmx b/shell/platform/fuchsia/flutter/meta/flutter_aot_runner.cmx index 11ba40d7870f2..af0c724590652 100644 --- a/shell/platform/fuchsia/flutter/meta/flutter_aot_runner.cmx +++ b/shell/platform/fuchsia/flutter/meta/flutter_aot_runner.cmx @@ -5,6 +5,7 @@ "sandbox": { "features": [ "config-data", + "deprecated-ambient-replace-as-executable", "root-ssl-certificates", "vulkan" ], diff --git a/shell/platform/fuchsia/flutter/runner.cc b/shell/platform/fuchsia/flutter/runner.cc index 6459236730e16..2fe0b5626ada6 100644 --- a/shell/platform/fuchsia/flutter/runner.cc +++ b/shell/platform/fuchsia/flutter/runner.cc @@ -87,7 +87,7 @@ bool InitializeICU() { const char* data_path = kIcuDataPath; fuchsia::mem::Buffer icu_data; - if (!dart_utils::VmoFromFilename(data_path, false, &icu_data)) { + if (!dart_utils::VmoFromFilename(data_path, &icu_data)) { return false; } diff --git a/shell/platform/fuchsia/runtime/dart/utils/mapped_resource.cc b/shell/platform/fuchsia/runtime/dart/utils/mapped_resource.cc index b14571ffbf9a9..d8837e6fbc27f 100644 --- a/shell/platform/fuchsia/runtime/dart/utils/mapped_resource.cc +++ b/shell/platform/fuchsia/runtime/dart/utils/mapped_resource.cc @@ -36,7 +36,7 @@ static bool OpenVmo(fuchsia::mem::Buffer* resource_vmo, dart_utils::Check(path[0] != '/', LOG_TAG); if (namespc == nullptr) { - if (!VmoFromFilename(path, executable, resource_vmo)) { + if (!VmoFromFilename(path, resource_vmo)) { return false; } } else { @@ -46,14 +46,27 @@ static bool OpenVmo(fuchsia::mem::Buffer* resource_vmo, return false; } - bool result = - dart_utils::VmoFromFilenameAt(root_dir, path, executable, resource_vmo); + bool result = dart_utils::VmoFromFilenameAt(root_dir, path, resource_vmo); close(root_dir); if (!result) { return result; } } + if (executable) { + // VmoFromFilenameAt will return VMOs without ZX_RIGHT_EXECUTE, + // so we need replace_as_executable to be able to map them as + // ZX_VM_PERM_EXECUTE. + // TODO(mdempsky): Update comment once SEC-42 is fixed. + zx_status_t status = resource_vmo->vmo.replace_as_executable( + zx::handle(), &resource_vmo->vmo); + if (status != ZX_OK) { + FX_LOGF(ERROR, LOG_TAG, "Failed to make VMO executable: %s", + zx_status_get_string(status)); + return false; + } + } + return true; } diff --git a/shell/platform/fuchsia/runtime/dart/utils/vmo.cc b/shell/platform/fuchsia/runtime/dart/utils/vmo.cc index 87f181e38b49c..130181c777bce 100644 --- a/shell/platform/fuchsia/runtime/dart/utils/vmo.cc +++ b/shell/platform/fuchsia/runtime/dart/utils/vmo.cc @@ -7,18 +7,15 @@ #include #include -#include #include -#include #include #include -#include #include "runtime/dart/utils/logging.h" namespace { -bool VmoFromFd(int fd, bool executable, fuchsia::mem::Buffer* buffer) { +bool VmoFromFd(int fd, fuchsia::mem::Buffer* buffer) { if (!buffer) { FX_LOG(FATAL, LOG_TAG, "Invalid buffer pointer"); } @@ -30,14 +27,7 @@ bool VmoFromFd(int fd, bool executable, fuchsia::mem::Buffer* buffer) { } zx_handle_t result = ZX_HANDLE_INVALID; - zx_status_t status; - if (executable) { - status = fdio_get_vmo_exec(fd, &result); - } else { - status = fdio_get_vmo_copy(fd, &result); - } - - if (status != ZX_OK) { + if (fdio_get_vmo_copy(fd, &result) != ZX_OK) { return false; } @@ -52,42 +42,20 @@ bool VmoFromFd(int fd, bool executable, fuchsia::mem::Buffer* buffer) { namespace dart_utils { bool VmoFromFilename(const std::string& filename, - bool executable, fuchsia::mem::Buffer* buffer) { - // Note: the implementation here cannot be shared with VmoFromFilenameAt - // because fdio_open_fd_at does not aim to provide POSIX compatibility, and - // thus does not handle AT_FDCWD as dirfd. - uint32_t flags = fuchsia::io::OPEN_RIGHT_READABLE | - (executable ? fuchsia::io::OPEN_RIGHT_EXECUTABLE : 0); - zx_status_t status; - int fd; - - status = fdio_open_fd(filename.c_str(), flags, &fd); - if (status != ZX_OK) { - FX_LOGF(ERROR, LOG_TAG, "fdio_open_fd(\"%s\", %08x) failed: %s", - filename.c_str(), flags, zx_status_get_string(status)); - return false; - } - bool result = VmoFromFd(fd, executable, buffer); - close(fd); - return result; + return VmoFromFilenameAt(AT_FDCWD, filename, buffer); } bool VmoFromFilenameAt(int dirfd, const std::string& filename, - bool executable, fuchsia::mem::Buffer* buffer) { - uint32_t flags = fuchsia::io::OPEN_RIGHT_READABLE | - (executable ? fuchsia::io::OPEN_RIGHT_EXECUTABLE : 0); - zx_status_t status; - int fd; - status = fdio_open_fd_at(dirfd, filename.c_str(), flags, &fd); - if (status != ZX_OK) { - FX_LOGF(ERROR, LOG_TAG, "fdio_open_fd_at(%d, \"%s\", %08x) failed: %s", - dirfd, filename.c_str(), flags, zx_status_get_string(status)); + int fd = openat(dirfd, filename.c_str(), O_RDONLY); + if (fd == -1) { + FX_LOGF(ERROR, LOG_TAG, "openat(\"%s\") failed: %s", filename.c_str(), + strerror(errno)); return false; } - bool result = VmoFromFd(fd, executable, buffer); + bool result = VmoFromFd(fd, buffer); close(fd); return result; } diff --git a/shell/platform/fuchsia/runtime/dart/utils/vmo.h b/shell/platform/fuchsia/runtime/dart/utils/vmo.h index 52871d2e32751..bc4065eb815e4 100644 --- a/shell/platform/fuchsia/runtime/dart/utils/vmo.h +++ b/shell/platform/fuchsia/runtime/dart/utils/vmo.h @@ -11,13 +11,10 @@ namespace dart_utils { -bool VmoFromFilename(const std::string& filename, - bool executable, - fuchsia::mem::Buffer* buffer); +bool VmoFromFilename(const std::string& filename, fuchsia::mem::Buffer* buffer); bool VmoFromFilenameAt(int dirfd, const std::string& filename, - bool executable, fuchsia::mem::Buffer* buffer); zx_status_t IsSizeValid(const fuchsia::mem::Buffer& buffer, bool* is_valid); From 8ce165b31183f2f7d60854d3f1d1b9cf71f122b0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 27 Feb 2020 14:31:03 -0500 Subject: [PATCH 060/521] Roll src/third_party/skia 93afe641d0be..7b3999edcb18 (2 commits) (#16830) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index dd832b7a902f4..5b0088b2cb47e 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '93afe641d0bee1a3ee624e31dc88445707ad4ad1', + 'skia_revision': '7b3999edcb18b31dcc7687ef24bad6431fee115c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 63c116bcc21e1..6f5f7ce676fc7 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ac462f9276e1e95a927b94350c07f38a +Signature: 199e6d9ad0672be9b8c442fa7262b63e UNUSED LICENSES: From a7a7afcfd2819b2f32f7dfc8b8242740c2829176 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Thu, 27 Feb 2020 11:36:54 -0800 Subject: [PATCH 061/521] [libtxt] Fix the flag used to check validity of the strikeout position in Skia font metrics (#15981) --- third_party/txt/src/txt/paragraph_txt.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/txt/src/txt/paragraph_txt.cc b/third_party/txt/src/txt/paragraph_txt.cc index 0554091ceeb72..54d8cc486e150 100644 --- a/third_party/txt/src/txt/paragraph_txt.cc +++ b/third_party/txt/src/txt/paragraph_txt.cc @@ -1538,7 +1538,7 @@ void ParagraphTxt::PaintDecorations(SkCanvas* canvas, kDoubleDecorationSpacing / -2.0; y_offset += (metrics.fFlags & - SkFontMetrics::FontMetricsFlags::kStrikeoutThicknessIsValid_Flag) + SkFontMetrics::FontMetricsFlags::kStrikeoutPositionIsValid_Flag) ? metrics.fStrikeoutPosition // Backup value if the strikeoutposition metric is not // available: From e05e2988b2f1a552d3317093cf69b9800b972972 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 27 Feb 2020 16:01:03 -0500 Subject: [PATCH 062/521] Roll src/third_party/skia 7b3999edcb18..4c690b442f89 (6 commits) (#16832) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 5b0088b2cb47e..3a11da9c6dd82 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '7b3999edcb18b31dcc7687ef24bad6431fee115c', + 'skia_revision': '4c690b442f8972f041a65aa898719b8263875799', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6f5f7ce676fc7..61eff6be872b6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 199e6d9ad0672be9b8c442fa7262b63e +Signature: d5f5c703ad52d80bbafe18a2b01efb8c UNUSED LICENSES: @@ -1502,7 +1502,6 @@ FILE: ../../../third_party/skia/src/sksl/sksl_frag.inc FILE: ../../../third_party/skia/src/sksl/sksl_geom.inc FILE: ../../../third_party/skia/src/sksl/sksl_gpu.inc FILE: ../../../third_party/skia/src/sksl/sksl_interp.inc -FILE: ../../../third_party/skia/src/sksl/sksl_interp_inline.inc FILE: ../../../third_party/skia/src/sksl/sksl_pipeline.inc FILE: ../../../third_party/skia/src/sksl/sksl_vert.inc ---------------------------------------------------------------------------------------------------- From 0aab7ad52200bf886a0f295f4dfd3540172ba581 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 27 Feb 2020 16:46:03 -0500 Subject: [PATCH 063/521] Roll src/third_party/dart 9c05fde96b62..501af5ac3b02 (53 commits) (#16833) --- DEPS | 4 +- ci/licenses_golden/licenses_third_party | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++------------ 3 files changed, 123 insertions(+), 127 deletions(-) diff --git a/DEPS b/DEPS index 3a11da9c6dd82..ffbb5a27da3db 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '9c05fde96b62556944befd18ec834c56d6854fda', + 'dart_revision': '501af5ac3b0272c45817673ace4cb5aaa9bcfe4b', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -62,7 +62,7 @@ vars = { 'dart_http_throttle_tag': '1.0.2', 'dart_intl_tag': '0.15.7', 'dart_json_rpc_2_tag': '2.0.9', - 'dart_linter_tag': '0.1.110', + 'dart_linter_tag': '0.1.111+1', 'dart_logging_tag': '0.11.3+2', 'dart_markdown_tag': '2.1.1', 'dart_matcher_tag': '0.12.5', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 471273e33fe62..a96fa584208e4 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 4cec5492362361f8fa9e88f53ed762c5 +Signature: baf56db06c1c135570fac4fe6efe686c UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 51f4a37524611..6cdcbe8cb194f 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From b8b6d26499dd1f827d04927383c2322ed7822711 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 27 Feb 2020 17:41:02 -0500 Subject: [PATCH 064/521] Roll src/third_party/skia 4c690b442f89..f106bc27a4a3 (3 commits) (#16835) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ffbb5a27da3db..92b3d7be877b5 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '4c690b442f8972f041a65aa898719b8263875799', + 'skia_revision': 'f106bc27a4a3417e176e57609b561ece80128b08', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 61eff6be872b6..0bf325825d0c6 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d5f5c703ad52d80bbafe18a2b01efb8c +Signature: 650cd9dd753df7b9457490837d45ded4 UNUSED LICENSES: From 50c263906a00a1ef182429a9422b60cdc0c634a4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 27 Feb 2020 19:16:02 -0500 Subject: [PATCH 065/521] Roll src/third_party/skia f106bc27a4a3..2536b7f974b6 (9 commits) (#16836) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++++++--------------- 3 files changed, 128 insertions(+), 122 deletions(-) diff --git a/DEPS b/DEPS index 92b3d7be877b5..74851fb185bd1 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'f106bc27a4a3417e176e57609b561ece80128b08', + 'skia_revision': '2536b7f974b6fb02aa71c71c5efb748e0b010732', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0bf325825d0c6..1b5b89087f38c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 650cd9dd753df7b9457490837d45ded4 +Signature: 951248f754fd1f3ba7f6b1cbbfcb609f UNUSED LICENSES: @@ -3985,6 +3985,8 @@ FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DGpu.cpp FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DGpu.h FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DOpsRenderPass.cpp FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DOpsRenderPass.h +FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DUtil.cpp +FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DUtil.h FILE: ../../../third_party/skia/src/gpu/effects/GrDeviceSpaceEffect.fp FILE: ../../../third_party/skia/src/gpu/effects/generated/GrDeviceSpaceEffect.cpp FILE: ../../../third_party/skia/src/gpu/effects/generated/GrDeviceSpaceEffect.h diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 6cdcbe8cb194f..51f4a37524611 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,66 +5143,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5234,66 +5174,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5690,6 +5570,130 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 7ef053e74510cde191fa274ee45bc87991aa8dfc Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 27 Feb 2020 20:51:03 -0500 Subject: [PATCH 066/521] Roll src/third_party/skia 2536b7f974b6..0e29459cda65 (1 commits) (#16839) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 74851fb185bd1..97c03df7112c6 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '2536b7f974b6fb02aa71c71c5efb748e0b010732', + 'skia_revision': '0e29459cda65aea76f8f8bad891cbe948adc95d9', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 1b5b89087f38c..6eb1bf203a16e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 951248f754fd1f3ba7f6b1cbbfcb609f +Signature: 8e7e363dd7b6bb2bf6123b9231a19a5e UNUSED LICENSES: From a7f4b0a9732e46a1f3a2252cddea260a462d4c1f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 27 Feb 2020 22:21:03 -0500 Subject: [PATCH 067/521] Roll src/third_party/dart 501af5ac3b02..f5669caec7c3 (18 commits) (#16841) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++------------ 3 files changed, 122 insertions(+), 126 deletions(-) diff --git a/DEPS b/DEPS index 97c03df7112c6..e191bd8d9ce69 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '501af5ac3b0272c45817673ace4cb5aaa9bcfe4b', + 'dart_revision': 'f5669caec7c377b49bc0b08f1638e026507b0f84', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index a96fa584208e4..48d60a9ccc445 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: baf56db06c1c135570fac4fe6efe686c +Signature: 2e0ae2f9356fbdb30ee31b98b16c255f UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 51f4a37524611..6cdcbe8cb194f 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From a886fbe04a1aad3be18394d4a3a39e25f6ab6ad2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 27 Feb 2020 22:36:02 -0500 Subject: [PATCH 068/521] Roll src/third_party/skia 0e29459cda65..d8c604b855b8 (1 commits) (#16842) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e191bd8d9ce69..976a09fa59d01 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '0e29459cda65aea76f8f8bad891cbe948adc95d9', + 'skia_revision': 'd8c604b855b8a871cc716bc44ee3620a9820e010', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6eb1bf203a16e..574072a97360f 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8e7e363dd7b6bb2bf6123b9231a19a5e +Signature: fc0eda26b1cf73ff99461f8033fad52e UNUSED LICENSES: From 12ea1acca0304fd24e2d5fcd49fcdde402353132 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 00:11:02 -0500 Subject: [PATCH 069/521] Roll src/third_party/skia d8c604b855b8..23d978da38f9 (2 commits) (#16843) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++++++--------------- 3 files changed, 126 insertions(+), 122 deletions(-) diff --git a/DEPS b/DEPS index 976a09fa59d01..10f2fd396c306 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'd8c604b855b8a871cc716bc44ee3620a9820e010', + 'skia_revision': '23d978da38f94dc430367778b91cbbdd9c96ac5d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 574072a97360f..fcbef2d760b6a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: fc0eda26b1cf73ff99461f8033fad52e +Signature: 529e7b952dd5b46d9885ab6daeae4c68 UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 6cdcbe8cb194f..51f4a37524611 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,66 +5143,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5234,66 +5174,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5690,6 +5570,130 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 245b02d7e0b209784f51be2ea1f3727ce5f690ac Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 00:26:02 -0500 Subject: [PATCH 070/521] Roll fuchsia/sdk/core/linux-amd64 from P70YB... to RYDur... (#16844) --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 10f2fd396c306..9736693778ff7 100644 --- a/DEPS +++ b/DEPS @@ -566,7 +566,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'P70YBvAdRcMoNE3fZ54QpiwlR4b1btCuRmmBjrKMtSEC' + 'version': 'RYDuroL1f14Mvzp4jfapVKk-N_HbeUs0VVfFFRfFP48C' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 73d0c47065160..11fc87d76a576 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: 75d8a55c1de1fb02a30b4a28e1c38c4a +Signature: 7d8a63da4b9aaf7c58f363599e15ae01 UNUSED LICENSES: From 7a25baedad542484d8b16af2c6ae8582d60546fa Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 00:31:02 -0500 Subject: [PATCH 071/521] Roll fuchsia/sdk/core/mac-amd64 from NVGXM... to K26F5... (#16845) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 9736693778ff7..0548b620d2339 100644 --- a/DEPS +++ b/DEPS @@ -546,7 +546,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'NVGXMzR3wGyMrAajVV9RYgcR72eA9Eyrt46eyq7_4SYC' + 'version': 'K26F51qYYvKEBjx61bZ8TVUDVxOOWOl_s3x91j2w_EcC' } ], 'condition': 'host_os == "mac"', From 10da024fd61dba6d6a6f8fadb08aa5073c2d03ab Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 01:46:02 -0500 Subject: [PATCH 072/521] Roll src/third_party/skia 23d978da38f9..52037e8ecce6 (2 commits) (#16846) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 0548b620d2339..ce0405c09773a 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '23d978da38f94dc430367778b91cbbdd9c96ac5d', + 'skia_revision': '52037e8ecce672a000309ba121b0d62d37f8b65b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index fcbef2d760b6a..5c1c5730039e5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 529e7b952dd5b46d9885ab6daeae4c68 +Signature: 9d977350222bfbddf838a3b4e38c7797 UNUSED LICENSES: From c2fc31d19d5b4fce70b740f7802eb3b6ae2f4061 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 28 Feb 2020 00:15:40 -0800 Subject: [PATCH 073/521] remove usage of Dart_New for paragraph/libtxt (#16837) --- ci/licenses_golden/licenses_flutter | 2 - lib/ui/BUILD.gn | 2 - lib/ui/text.dart | 111 +++++++++++++++++------ lib/ui/text/line_metrics.cc | 48 ---------- lib/ui/text/line_metrics.h | 13 --- lib/ui/text/paragraph.cc | 71 ++++++++++----- lib/ui/text/paragraph.h | 19 ++-- lib/ui/text/paragraph_builder.cc | 4 +- lib/ui/text/paragraph_builder.h | 2 +- lib/ui/text/text_box.cc | 45 --------- testing/dart/paragraph_builder_test.dart | 45 +++++++++ 11 files changed, 190 insertions(+), 172 deletions(-) delete mode 100644 lib/ui/text/line_metrics.cc delete mode 100644 lib/ui/text/text_box.cc diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 21d438c4a7b41..d0182f4580ab0 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -354,13 +354,11 @@ FILE: ../../../flutter/lib/ui/text/asset_manager_font_provider.cc FILE: ../../../flutter/lib/ui/text/asset_manager_font_provider.h FILE: ../../../flutter/lib/ui/text/font_collection.cc FILE: ../../../flutter/lib/ui/text/font_collection.h -FILE: ../../../flutter/lib/ui/text/line_metrics.cc FILE: ../../../flutter/lib/ui/text/line_metrics.h FILE: ../../../flutter/lib/ui/text/paragraph.cc FILE: ../../../flutter/lib/ui/text/paragraph.h FILE: ../../../flutter/lib/ui/text/paragraph_builder.cc FILE: ../../../flutter/lib/ui/text/paragraph_builder.h -FILE: ../../../flutter/lib/ui/text/text_box.cc FILE: ../../../flutter/lib/ui/text/text_box.h FILE: ../../../flutter/lib/ui/ui.dart FILE: ../../../flutter/lib/ui/ui_dart_state.cc diff --git a/lib/ui/BUILD.gn b/lib/ui/BUILD.gn index 4cc81dff2154d..c904141b338e8 100644 --- a/lib/ui/BUILD.gn +++ b/lib/ui/BUILD.gn @@ -81,13 +81,11 @@ source_set("ui") { "text/asset_manager_font_provider.h", "text/font_collection.cc", "text/font_collection.h", - "text/line_metrics.cc", "text/line_metrics.h", "text/paragraph.cc", "text/paragraph.h", "text/paragraph_builder.cc", "text/paragraph_builder.h", - "text/text_box.cc", "text/text_box.h", "ui_dart_state.cc", "ui_dart_state.h", diff --git a/lib/ui/text.dart b/lib/ui/text.dart index bba18ded716be..01b4b8c754beb 100644 --- a/lib/ui/text.dart +++ b/lib/ui/text.dart @@ -1306,16 +1306,6 @@ class TextBox { this.direction, ); - @pragma('vm:entry-point') - // ignore: unused_element - TextBox._( - this.left, - this.top, - this.right, - this.bottom, - int directionIndex, - ) : direction = TextDirection.values[directionIndex]; - /// The left edge of the text box, irrespective of direction. /// /// To get the leading edge (which may depend on the [direction]), consider [start]. @@ -1764,20 +1754,6 @@ class LineMetrics { this.lineNumber, }); - @pragma('vm:entry-point') - // ignore: unused_element - LineMetrics._( - this.hardBreak, - this.ascent, - this.descent, - this.unscaledAscent, - this.height, - this.width, - this.left, - this.baseline, - this.lineNumber, - ); - /// True if this line ends with an explicit line break (e.g. '\n') or is the end /// of the paragraph. False otherwise. final bool hardBreak; @@ -1843,6 +1819,39 @@ class LineMetrics { /// /// For example, the first line is line 0, second line is line 1. final int lineNumber; + + @override + bool operator ==(Object other) { + if (other.runtimeType != runtimeType) { + return false; + } + return other is LineMetrics + && other.hardBreak == hardBreak + && other.ascent == ascent + && other.descent == descent + && other.unscaledAscent == unscaledAscent + && other.height == height + && other.width == width + && other.left == left + && other.baseline == baseline + && other.lineNumber == lineNumber; + } + + @override + int get hashCode => hashValues(hardBreak, ascent, descent, unscaledAscent, height, width, left, baseline, lineNumber); + + @override + String toString() { + return 'LineMetrics(hardBreak: $hardBreak, ' + 'ascent: $ascent, ' + 'descent: $descent, ' + 'unscaledAscent: $unscaledAscent, ' + 'height: $height, ' + 'width: $width, ' + 'left: $left, ' + 'baseline: $baseline, ' + 'lineNumber: $lineNumber)'; + } } /// A paragraph of text. @@ -1914,6 +1923,21 @@ class Paragraph extends NativeFieldWrapperClass2 { void layout(ParagraphConstraints constraints) => _layout(constraints.width); void _layout(double width) native 'Paragraph_layout'; + List _decodeTextBoxes(Float32List encoded) { + final int count = encoded.length ~/ 5; + final List boxes = List(count); + int position = 0; + for (int index = 0; index < count; index += 1) { + boxes[index] = TextBox.fromLTRBD( + encoded[position++], + encoded[position++], + encoded[position++], + encoded[position++], + TextDirection.values[encoded[position++].toInt()], + ); + } + return boxes; + } /// Returns a list of text boxes that enclose the given text range. /// /// The [boxHeightStyle] and [boxWidthStyle] parameters allow customization @@ -1930,9 +1954,10 @@ class Paragraph extends NativeFieldWrapperClass2 { List getBoxesForRange(int start, int end, {BoxHeightStyle boxHeightStyle = BoxHeightStyle.tight, BoxWidthStyle boxWidthStyle = BoxWidthStyle.tight}) { assert(boxHeightStyle != null); assert(boxWidthStyle != null); - return _getBoxesForRange(start, end, boxHeightStyle.index, boxWidthStyle.index); + return _decodeTextBoxes(_getBoxesForRange(start, end, boxHeightStyle.index, boxWidthStyle.index)); } - List _getBoxesForRange(int start, int end, int boxHeightStyle, int boxWidthStyle) native 'Paragraph_getRectsForRange'; + // See paragraph.cc for the layout of this return value. + Float32List _getBoxesForRange(int start, int end, int boxHeightStyle, int boxWidthStyle) native 'Paragraph_getRectsForRange'; /// Returns a list of text boxes that enclose all placeholders in the paragraph. /// @@ -1940,7 +1965,10 @@ class Paragraph extends NativeFieldWrapperClass2 { /// /// Coordinates of the [TextBox] are relative to the upper-left corner of the paragraph, /// where positive y values indicate down. - List getBoxesForPlaceholders() native 'Paragraph_getRectsForPlaceholders'; + List getBoxesForPlaceholders() { + return _decodeTextBoxes(_getBoxesForPlaceholders()); + } + Float32List _getBoxesForPlaceholders() native 'Paragraph_getRectsForPlaceholders'; /// Returns the text position closest to the given offset. TextPosition getPositionForOffset(Offset offset) { @@ -1987,7 +2015,27 @@ class Paragraph extends NativeFieldWrapperClass2 { /// /// This can potentially return a large amount of data, so it is not recommended /// to repeatedly call this. Instead, cache the results. - List computeLineMetrics() native 'Paragraph_computeLineMetrics'; + List computeLineMetrics() { + final Float64List encoded = _computeLineMetrics(); + final int count = encoded.length ~/ 9; + int position = 0; + final List metrics = List(count); + for (int index = 0; index < metrics.length; index += 1) { + metrics[index] = LineMetrics( + hardBreak: encoded[position++] != 0, + ascent: encoded[position++], + descent: encoded[position++], + unscaledAscent: encoded[position++], + height: encoded[position++], + width: encoded[position++], + left: encoded[position++], + baseline: encoded[position++], + lineNumber: encoded[position++].toInt(), + ); + } + return metrics; + } + Float64List _computeLineMetrics() native 'Paragraph_computeLineMetrics'; } /// Builds a [Paragraph] containing text with the given styling information. @@ -2195,7 +2243,12 @@ class ParagraphBuilder extends NativeFieldWrapperClass2 { /// /// After calling this function, the paragraph builder object is invalid and /// cannot be used further. - Paragraph build() native 'ParagraphBuilder_build'; + Paragraph build() { + final Paragraph paragraph = Paragraph._(); + _build(paragraph); + return paragraph; + } + void _build(Paragraph outParagraph) native 'ParagraphBuilder_build'; } /// Loads a font from a buffer and makes it available for rendering text. diff --git a/lib/ui/text/line_metrics.cc b/lib/ui/text/line_metrics.cc deleted file mode 100644 index a224e9b29b66c..0000000000000 --- a/lib/ui/text/line_metrics.cc +++ /dev/null @@ -1,48 +0,0 @@ -// 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. - -#include "flutter/lib/ui/text/line_metrics.h" - -#include "flutter/fml/logging.h" -#include "third_party/tonic/dart_class_library.h" -#include "third_party/tonic/dart_state.h" -#include "third_party/tonic/logging/dart_error.h" - -using namespace flutter; - -namespace tonic { - -namespace { - -Dart_Handle GetLineMetricsType() { - DartClassLibrary& class_library = DartState::Current()->class_library(); - Dart_Handle type = - Dart_HandleFromPersistent(class_library.GetClass("ui", "LineMetrics")); - FML_DCHECK(!LogIfError(type)); - return type; -} - -} // anonymous namespace - -Dart_Handle DartConverter::ToDart( - const flutter::LineMetrics& val) { - constexpr int argc = 9; - - Dart_Handle argv[argc] = { - tonic::ToDart(*val.hard_break), tonic::ToDart(*val.ascent), - tonic::ToDart(*val.descent), tonic::ToDart(*val.unscaled_ascent), - // We add then round to get the height. The - // definition of height here is different - // than the one in LibTxt. - tonic::ToDart(round(*val.ascent + *val.descent)), - tonic::ToDart(*val.width), tonic::ToDart(*val.left), - tonic::ToDart(*val.baseline), tonic::ToDart(*val.line_number)}; - return Dart_New(GetLineMetricsType(), tonic::ToDart("_"), argc, argv); -} - -Dart_Handle DartListFactory::NewList(intptr_t length) { - return Dart_NewListOfType(GetLineMetricsType(), length); -} - -} // namespace tonic diff --git a/lib/ui/text/line_metrics.h b/lib/ui/text/line_metrics.h index bcd53c3d276a9..f5f656cd816f9 100644 --- a/lib/ui/text/line_metrics.h +++ b/lib/ui/text/line_metrics.h @@ -59,17 +59,4 @@ struct LineMetrics { } // namespace flutter -namespace tonic { -template <> -struct DartConverter { - static Dart_Handle ToDart(const flutter::LineMetrics& val); -}; - -template <> -struct DartListFactory { - static Dart_Handle NewList(intptr_t length); -}; - -} // namespace tonic - #endif // FLUTTER_LIB_UI_TEXT_LINE_METRICS_H_ diff --git a/lib/ui/text/paragraph.cc b/lib/ui/text/paragraph.cc index 2618c3f08406a..92800db2ebd67 100644 --- a/lib/ui/text/paragraph.cc +++ b/lib/ui/text/paragraph.cc @@ -94,28 +94,40 @@ void Paragraph::paint(Canvas* canvas, double x, double y) { m_paragraph->Paint(sk_canvas, x, y); } -std::vector Paragraph::getRectsForRange(unsigned start, - unsigned end, - unsigned boxHeightStyle, - unsigned boxWidthStyle) { - std::vector result; +static tonic::Float32List EncodeTextBoxes( + const std::vector& boxes) { + // Layout: + // First value is the number of values. + // Then there are boxes.size() groups of 5 which are LTRBD, where D is the + // text direction index. + tonic::Float32List result( + Dart_NewTypedData(Dart_TypedData_kFloat32, boxes.size() * 5)); + unsigned long position = 0; + for (unsigned long i = 0; i < boxes.size(); i++) { + const txt::Paragraph::TextBox& box = boxes[i]; + result[position++] = box.rect.fLeft; + result[position++] = box.rect.fTop; + result[position++] = box.rect.fRight; + result[position++] = box.rect.fBottom; + result[position++] = static_cast(box.direction); + } + return result; +} + +tonic::Float32List Paragraph::getRectsForRange(unsigned start, + unsigned end, + unsigned boxHeightStyle, + unsigned boxWidthStyle) { std::vector boxes = m_paragraph->GetRectsForRange( start, end, static_cast(boxHeightStyle), static_cast(boxWidthStyle)); - for (const txt::Paragraph::TextBox& box : boxes) { - result.emplace_back(box.rect, static_cast(box.direction)); - } - return result; + return EncodeTextBoxes(boxes); } -std::vector Paragraph::getRectsForPlaceholders() { - std::vector result; +tonic::Float32List Paragraph::getRectsForPlaceholders() { std::vector boxes = m_paragraph->GetRectsForPlaceholders(); - for (const txt::Paragraph::TextBox& box : boxes) { - result.emplace_back(box.rect, static_cast(box.direction)); - } - return result; + return EncodeTextBoxes(boxes); } Dart_Handle Paragraph::getPositionForOffset(double dx, double dy) { @@ -152,14 +164,31 @@ Dart_Handle Paragraph::getLineBoundary(unsigned offset) { return result; } -std::vector Paragraph::computeLineMetrics() { - std::vector result; +tonic::Float64List Paragraph::computeLineMetrics() { std::vector metrics = m_paragraph->GetLineMetrics(); - for (txt::LineMetrics& line : metrics) { - result.emplace_back(&line.hard_break, &line.ascent, &line.descent, - &line.unscaled_ascent, &line.height, &line.width, - &line.left, &line.baseline, &line.line_number); + + // Layout: + // boxes.size() groups of 9 which are the line metrics + // properties + tonic::Float64List result( + Dart_NewTypedData(Dart_TypedData_kFloat64, metrics.size() * 9)); + unsigned long position = 0; + for (unsigned long i = 0; i < metrics.size(); i++) { + const txt::LineMetrics& line = metrics[i]; + result[position++] = static_cast(line.hard_break); + result[position++] = line.ascent; + result[position++] = line.descent; + result[position++] = line.unscaled_ascent; + // We add then round to get the height. The + // definition of height here is different + // than the one in LibTxt. + result[position++] = round(line.ascent + line.descent); + result[position++] = line.width; + result[position++] = line.left; + result[position++] = line.baseline; + result[position++] = static_cast(line.line_number); } + return result; } diff --git a/lib/ui/text/paragraph.h b/lib/ui/text/paragraph.h index 7aea6079378e1..73c79d3c67de3 100644 --- a/lib/ui/text/paragraph.h +++ b/lib/ui/text/paragraph.h @@ -23,9 +23,10 @@ class Paragraph : public RefCountedDartWrappable { FML_FRIEND_MAKE_REF_COUNTED(Paragraph); public: - static fml::RefPtr Create( - std::unique_ptr paragraph) { - return fml::MakeRefCounted(std::move(paragraph)); + static void Create(Dart_Handle paragraph_handle, + std::unique_ptr txt_paragraph) { + auto paragraph = fml::MakeRefCounted(std::move(txt_paragraph)); + paragraph->AssociateWithDartWrapper(paragraph_handle); } ~Paragraph() override; @@ -42,15 +43,15 @@ class Paragraph : public RefCountedDartWrappable { void layout(double width); void paint(Canvas* canvas, double x, double y); - std::vector getRectsForRange(unsigned start, - unsigned end, - unsigned boxHeightStyle, - unsigned boxWidthStyle); - std::vector getRectsForPlaceholders(); + tonic::Float32List getRectsForRange(unsigned start, + unsigned end, + unsigned boxHeightStyle, + unsigned boxWidthStyle); + tonic::Float32List getRectsForPlaceholders(); Dart_Handle getPositionForOffset(double dx, double dy); Dart_Handle getWordBoundary(unsigned offset); Dart_Handle getLineBoundary(unsigned offset); - std::vector computeLineMetrics(); + tonic::Float64List computeLineMetrics(); size_t GetAllocationSize() override; diff --git a/lib/ui/text/paragraph_builder.cc b/lib/ui/text/paragraph_builder.cc index 51739fc2cf3fd..0b6eea6e0abfd 100644 --- a/lib/ui/text/paragraph_builder.cc +++ b/lib/ui/text/paragraph_builder.cc @@ -493,8 +493,8 @@ Dart_Handle ParagraphBuilder::addPlaceholder(double width, return Dart_Null(); } -fml::RefPtr ParagraphBuilder::build() { - return Paragraph::Create(m_paragraphBuilder->Build()); +void ParagraphBuilder::build(Dart_Handle paragraph_handle) { + Paragraph::Create(paragraph_handle, m_paragraphBuilder->Build()); } } // namespace flutter diff --git a/lib/ui/text/paragraph_builder.h b/lib/ui/text/paragraph_builder.h index eebc5e7f26868..4f4a00b5b94ab 100644 --- a/lib/ui/text/paragraph_builder.h +++ b/lib/ui/text/paragraph_builder.h @@ -69,7 +69,7 @@ class ParagraphBuilder : public RefCountedDartWrappable { double baseline_offset, unsigned baseline); - fml::RefPtr build(); + void build(Dart_Handle paragraph_handle); static void RegisterNatives(tonic::DartLibraryNatives* natives); diff --git a/lib/ui/text/text_box.cc b/lib/ui/text/text_box.cc deleted file mode 100644 index 99438cf4b87cb..0000000000000 --- a/lib/ui/text/text_box.cc +++ /dev/null @@ -1,45 +0,0 @@ -// 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. - -#include "flutter/lib/ui/text/text_box.h" - -#include "flutter/fml/logging.h" -#include "third_party/tonic/dart_class_library.h" -#include "third_party/tonic/dart_state.h" -#include "third_party/tonic/logging/dart_error.h" - -using namespace flutter; - -namespace tonic { - -namespace { - -Dart_Handle GetTextBoxType() { - DartClassLibrary& class_library = DartState::Current()->class_library(); - Dart_Handle type = - Dart_HandleFromPersistent(class_library.GetClass("ui", "TextBox")); - FML_DCHECK(!LogIfError(type)); - return type; -} - -} // anonymous namespace - -Dart_Handle DartConverter::ToDart( - const flutter::TextBox& val) { - constexpr int argc = 5; - Dart_Handle argv[argc] = { - tonic::ToDart(val.rect.fLeft), - tonic::ToDart(val.rect.fTop), - tonic::ToDart(val.rect.fRight), - tonic::ToDart(val.rect.fBottom), - tonic::ToDart(static_cast(val.direction)), - }; - return Dart_New(GetTextBoxType(), tonic::ToDart("_"), argc, argv); -} - -Dart_Handle DartListFactory::NewList(intptr_t length) { - return Dart_NewListOfType(GetTextBoxType(), length); -} - -} // namespace tonic diff --git a/testing/dart/paragraph_builder_test.dart b/testing/dart/paragraph_builder_test.dart index 81862dd9772bd..cf8ccce0bf8b1 100644 --- a/testing/dart/paragraph_builder_test.dart +++ b/testing/dart/paragraph_builder_test.dart @@ -8,6 +8,9 @@ import 'dart:ui'; import 'package:test/test.dart'; void main() { + // The actual values for font measurements will vary by platform slightly. + const double epsillon = 0.0001; + test('Should be able to build and layout a paragraph', () { final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle()); builder.addText('Hello'); @@ -25,4 +28,46 @@ void main() { paragraphBuilder.build(); paragraphBuilder.pushStyle(TextStyle()); }); + + test('GetRectsForRange smoke test', () { + final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle()); + builder.addText('Hello'); + final Paragraph paragraph = builder.build(); + expect(paragraph, isNotNull); + + paragraph.layout(const ParagraphConstraints(width: 800.0)); + expect(paragraph.width, isNonZero); + expect(paragraph.height, isNonZero); + + final List boxes = paragraph.getBoxesForRange(0, 3); + expect(boxes.length, 1); + expect(boxes.first.left, 0); + expect(boxes.first.top, closeTo(0, epsillon)); + expect(boxes.first.right, closeTo(42, epsillon)); + expect(boxes.first.bottom, closeTo(14, epsillon)); + expect(boxes.first.direction, TextDirection.ltr); + }); + + test('LineMetrics smoke test', () { + final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle()); + builder.addText('Hello'); + final Paragraph paragraph = builder.build(); + expect(paragraph, isNotNull); + + paragraph.layout(const ParagraphConstraints(width: 800.0)); + expect(paragraph.width, isNonZero); + expect(paragraph.height, isNonZero); + + final List metrics = paragraph.computeLineMetrics(); + expect(metrics.length, 1); + expect(metrics.first.hardBreak, true); + expect(metrics.first.ascent, closeTo(11.200042724609375, epsillon)); + expect(metrics.first.descent, closeTo(2.799957275390625, epsillon)); + expect(metrics.first.unscaledAscent, closeTo(11.200042724609375, epsillon)); + expect(metrics.first.height, 14.0); + expect(metrics.first.width, 70.0); + expect(metrics.first.left, 0.0); + expect(metrics.first.baseline, closeTo(11.200042724609375, epsillon)); + expect(metrics.first.lineNumber, 0); + }); } From ddfba41ea19efeb5238bf4f31ed261199f5953ed Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 03:21:03 -0500 Subject: [PATCH 074/521] Roll src/third_party/skia 52037e8ecce6..0a3900fb33dc (2 commits) (#16847) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ce0405c09773a..af39fd974b9e3 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '52037e8ecce672a000309ba121b0d62d37f8b65b', + 'skia_revision': '0a3900fb33dcb2bab6163587cd2350543809ddb3', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 5c1c5730039e5..a0e323c7a2bb9 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9d977350222bfbddf838a3b4e38c7797 +Signature: eddb1ef9f7314b0e4abc5143f6750a69 UNUSED LICENSES: From 97f7b314ea22634f18e3c59adcf5d08802ee95f5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 03:36:04 -0500 Subject: [PATCH 075/521] Roll src/third_party/dart f5669caec7c3..c790e0c4017d (4 commits) (#16848) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index af39fd974b9e3..3d176a45cd16e 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'f5669caec7c377b49bc0b08f1638e026507b0f84', + 'dart_revision': 'c790e0c4017d54457021a5a4636a43858a617183', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From 0aff91ee15a0cfc98f22969e81306495ed8d1002 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 08:56:03 -0500 Subject: [PATCH 076/521] Roll src/third_party/dart c790e0c4017d..dda5bcee00d3 (5 commits) (#16851) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++------------ 3 files changed, 122 insertions(+), 126 deletions(-) diff --git a/DEPS b/DEPS index 3d176a45cd16e..bd993d130b257 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'c790e0c4017d54457021a5a4636a43858a617183', + 'dart_revision': 'dda5bcee00d3614e5ec7d2e5de17b3fd2450f204', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 48d60a9ccc445..30aa8d5913095 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 2e0ae2f9356fbdb30ee31b98b16c255f +Signature: 408d6edc03f5bbaf50fbe50f9b65ae3b UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 51f4a37524611..6cdcbe8cb194f 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From f520bb8d7ab27994cd1729d7bd86c7814bbd2a5e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 10:11:02 -0500 Subject: [PATCH 077/521] Roll src/third_party/skia 0a3900fb33dc..bde9fcce155f (1 commits) (#16852) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index bd993d130b257..21a6cc543da17 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '0a3900fb33dcb2bab6163587cd2350543809ddb3', + 'skia_revision': 'bde9fcce155fe535aab1a508e6f7216821538b85', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a0e323c7a2bb9..aa3d87c32fd8b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: eddb1ef9f7314b0e4abc5143f6750a69 +Signature: 60ef6b73d199e45c425d003464c9a5cc UNUSED LICENSES: From 8762559ab95c9438cd5836192d2459de10d87d54 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 11:41:02 -0500 Subject: [PATCH 078/521] Roll src/third_party/skia bde9fcce155f..55f681faf391 (2 commits) (#16853) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++++++--------------- 3 files changed, 128 insertions(+), 122 deletions(-) diff --git a/DEPS b/DEPS index 21a6cc543da17..25bf7348c45c6 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'bde9fcce155fe535aab1a508e6f7216821538b85', + 'skia_revision': '55f681faf391b39a849457451da6f8514177bc3b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index aa3d87c32fd8b..b03cdab6db5dc 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 60ef6b73d199e45c425d003464c9a5cc +Signature: 4c3c493db74044d19d45a17bb1a4004f UNUSED LICENSES: @@ -5694,6 +5694,8 @@ FILE: ../../../third_party/skia/src/core/SkM44.cpp FILE: ../../../third_party/skia/src/gpu/GrDynamicAtlas.cpp FILE: ../../../third_party/skia/src/gpu/GrDynamicAtlas.h FILE: ../../../third_party/skia/src/gpu/GrEagerVertexAllocator.h +FILE: ../../../third_party/skia/src/gpu/ops/GrSimpleMeshDrawOpHelperWithStencil.cpp +FILE: ../../../third_party/skia/src/gpu/ops/GrSimpleMeshDrawOpHelperWithStencil.h FILE: ../../../third_party/skia/src/gpu/tessellate/GrDrawAtlasPathOp.cpp FILE: ../../../third_party/skia/src/gpu/tessellate/GrDrawAtlasPathOp.h FILE: ../../../third_party/skia/src/gpu/tessellate/GrPathParser.cpp diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 6cdcbe8cb194f..51f4a37524611 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,66 +5143,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5234,66 +5174,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5690,6 +5570,130 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From cc0e21b5d2fbccce92d728f5dfedf1f2e7f936b0 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Fri, 28 Feb 2020 09:33:00 -0800 Subject: [PATCH 079/521] [SkParagraph] Set the skia_use_icu GN flag required to build SkParagraph (#16840) This flag is disabled by default on iOS targets. --- tools/gn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/gn b/tools/gn index a6ee544584242..b7cb71763da95 100755 --- a/tools/gn +++ b/tools/gn @@ -98,6 +98,8 @@ def to_gn_args(args): gn_args['skia_use_fontconfig'] = args.enable_fontconfig gn_args['flutter_use_fontconfig'] = args.enable_fontconfig gn_args['flutter_enable_skshaper'] = args.enable_skshaper + if args.enable_skshaper: + gn_args['skia_use_icu'] = True gn_args['is_official_build'] = True # Disable Skia test utilities. gn_args['dart_component_kind'] = 'static_library' # Always link Dart in statically. gn_args['is_debug'] = args.unoptimized From e47fa0bee913a4e533afbd8e12ca2a8ee3ecd171 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 28 Feb 2020 10:31:03 -0800 Subject: [PATCH 080/521] Avoid using Dart_New for semantics (#16849) --- lib/ui/semantics.dart | 7 ++++++- lib/ui/semantics/semantics_update.cc | 11 ++++++----- lib/ui/semantics/semantics_update.h | 6 +++--- lib/ui/semantics/semantics_update_builder.cc | 5 +++-- lib/ui/semantics/semantics_update_builder.h | 2 +- 5 files changed, 19 insertions(+), 12 deletions(-) diff --git a/lib/ui/semantics.dart b/lib/ui/semantics.dart index 2a0cb13413367..508e001925866 100644 --- a/lib/ui/semantics.dart +++ b/lib/ui/semantics.dart @@ -805,7 +805,12 @@ class SemanticsUpdateBuilder extends NativeFieldWrapperClass2 { /// /// The returned object can be passed to [Window.updateSemantics] to actually /// update the semantics retained by the system. - SemanticsUpdate build() native 'SemanticsUpdateBuilder_build'; + SemanticsUpdate build() { + final SemanticsUpdate semanticsUpdate = SemanticsUpdate._(); + _build(semanticsUpdate); + return semanticsUpdate; + } + void _build(SemanticsUpdate outSemanticsUpdate) native 'SemanticsUpdateBuilder_build'; } /// An opaque object representing a batch of semantics updates. diff --git a/lib/ui/semantics/semantics_update.cc b/lib/ui/semantics/semantics_update.cc index e559af58aec61..c4ef22e34f7be 100644 --- a/lib/ui/semantics/semantics_update.cc +++ b/lib/ui/semantics/semantics_update.cc @@ -20,11 +20,12 @@ IMPLEMENT_WRAPPERTYPEINFO(ui, SemanticsUpdate); DART_BIND_ALL(SemanticsUpdate, FOR_EACH_BINDING) -fml::RefPtr SemanticsUpdate::create( - SemanticsNodeUpdates nodes, - CustomAccessibilityActionUpdates actions) { - return fml::MakeRefCounted(std::move(nodes), - std::move(actions)); +void SemanticsUpdate::create(Dart_Handle semantics_update_handle, + SemanticsNodeUpdates nodes, + CustomAccessibilityActionUpdates actions) { + auto semantics_update = fml::MakeRefCounted( + std::move(nodes), std::move(actions)); + semantics_update->AssociateWithDartWrapper(semantics_update_handle); } SemanticsUpdate::SemanticsUpdate(SemanticsNodeUpdates nodes, diff --git a/lib/ui/semantics/semantics_update.h b/lib/ui/semantics/semantics_update.h index 35ecbfbb9d510..c3411bb43bfaa 100644 --- a/lib/ui/semantics/semantics_update.h +++ b/lib/ui/semantics/semantics_update.h @@ -21,9 +21,9 @@ class SemanticsUpdate : public RefCountedDartWrappable { public: ~SemanticsUpdate() override; - static fml::RefPtr create( - SemanticsNodeUpdates nodes, - CustomAccessibilityActionUpdates actions); + static void create(Dart_Handle semantics_update_handle, + SemanticsNodeUpdates nodes, + CustomAccessibilityActionUpdates actions); SemanticsNodeUpdates takeNodes(); diff --git a/lib/ui/semantics/semantics_update_builder.cc b/lib/ui/semantics/semantics_update_builder.cc index 7048f6a45f44c..d3fc40deab19c 100644 --- a/lib/ui/semantics/semantics_update_builder.cc +++ b/lib/ui/semantics/semantics_update_builder.cc @@ -121,8 +121,9 @@ void SemanticsUpdateBuilder::updateCustomAction(int id, actions_[id] = action; } -fml::RefPtr SemanticsUpdateBuilder::build() { - return SemanticsUpdate::create(std::move(nodes_), std::move(actions_)); +void SemanticsUpdateBuilder::build(Dart_Handle semantics_update_handle) { + SemanticsUpdate::create(semantics_update_handle, std::move(nodes_), + std::move(actions_)); } } // namespace flutter diff --git a/lib/ui/semantics/semantics_update_builder.h b/lib/ui/semantics/semantics_update_builder.h index bbf595e631858..a183e1384b637 100644 --- a/lib/ui/semantics/semantics_update_builder.h +++ b/lib/ui/semantics/semantics_update_builder.h @@ -58,7 +58,7 @@ class SemanticsUpdateBuilder std::string hint, int overrideId); - fml::RefPtr build(); + void build(Dart_Handle semantics_update_handle); static void RegisterNatives(tonic::DartLibraryNatives* natives); From 0caa7c16aee4f7fa6f928dbc6e2da8aa59b34069 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 13:36:05 -0500 Subject: [PATCH 081/521] Roll src/third_party/skia 55f681faf391..03d9e8af0d25 (6 commits) (#16854) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 25bf7348c45c6..75ad90f0c0617 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '55f681faf391b39a849457451da6f8514177bc3b', + 'skia_revision': '03d9e8af0d254ac3a2d8608880fbd41493d00b97', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b03cdab6db5dc..551a4896c6e70 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4c3c493db74044d19d45a17bb1a4004f +Signature: 5e5f4a6a73fef15d201e685c8224c728 UNUSED LICENSES: From 96061d62281d1840af3ee75fefa41d1cf254fce6 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 28 Feb 2020 10:41:55 -0800 Subject: [PATCH 082/521] shake out Paint.toString (#16850) --- lib/ui/painting.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/ui/painting.dart b/lib/ui/painting.dart index 8497cb065834c..dbcbc7d01db60 100644 --- a/lib/ui/painting.dart +++ b/lib/ui/painting.dart @@ -1454,6 +1454,9 @@ class Paint { @override String toString() { + if (const bool.fromEnvironment('dart.vm.product', defaultValue: false)) { + return super.toString(); + } final StringBuffer result = StringBuffer(); String semicolon = ''; result.write('Paint('); From 9beac71a2e1105023a04984289abc94e78dfb790 Mon Sep 17 00:00:00 2001 From: "Edman P. Anjos" Date: Fri, 28 Feb 2020 20:18:04 +0100 Subject: [PATCH 083/521] Add support for software text editing controls (#15560) * Add support for software text editing controls Includes selection, copy, cut, paste, as well as partial support for up and down movement. Text editing controls can be accessed in GBoard by: top-left arrow > three dots menu > text editing Partial fix for flutter/flutter#9419 and flutter/flutter#37371. * Introduce InputConnectionAdaptor tests Run with: testing/run_tests.py --type=java --java-filter=io.flutter.plugin.editing.InputConnectionAdaptorTest * Fix BUILD.gn comment on run_tests.py --java-filter flag --- shell/platform/android/BUILD.gn | 2 +- .../editing/InputConnectionAdaptor.java | 118 ++++++++- .../editing/InputConnectionAdaptorTest.java | 227 +++++++++++++++++- 3 files changed, 338 insertions(+), 9 deletions(-) diff --git a/shell/platform/android/BUILD.gn b/shell/platform/android/BUILD.gn index 3a3b454beec82..e48562f1a2957 100644 --- a/shell/platform/android/BUILD.gn +++ b/shell/platform/android/BUILD.gn @@ -406,7 +406,7 @@ action("pom_embedding") { } # To build and run: -# testing/run_tests.py [--type=java] [--filter=io.flutter.TestClassName] +# testing/run_tests.py [--type=java] [--java-filter=io.flutter.TestClassName] action("robolectric_tests") { script = "//build/android/gyp/javac.py" depfile = "$target_gen_dir/$target_name.d" diff --git a/shell/platform/android/io/flutter/plugin/editing/InputConnectionAdaptor.java b/shell/platform/android/io/flutter/plugin/editing/InputConnectionAdaptor.java index b751e548118c2..0fda81fd8930c 100644 --- a/shell/platform/android/io/flutter/plugin/editing/InputConnectionAdaptor.java +++ b/shell/platform/android/io/flutter/plugin/editing/InputConnectionAdaptor.java @@ -5,6 +5,8 @@ package io.flutter.plugin.editing; import android.annotation.SuppressLint; +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.Context; import android.os.Build; import android.provider.Settings; @@ -267,13 +269,53 @@ public boolean sendKeyEvent(KeyEvent event) { } } else if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_LEFT) { int selStart = Selection.getSelectionStart(mEditable); - int newSel = Math.max(selStart - 1, 0); - setSelection(newSel, newSel); + int selEnd = Selection.getSelectionEnd(mEditable); + if (selStart == selEnd && !event.isShiftPressed()) { + int newSel = Math.max(selStart - 1, 0); + setSelection(newSel, newSel); + } else { + int newSelEnd = Math.max(selEnd - 1, 0); + setSelection(selStart, newSelEnd); + } return true; } else if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_RIGHT) { int selStart = Selection.getSelectionStart(mEditable); - int newSel = Math.min(selStart + 1, mEditable.length()); - setSelection(newSel, newSel); + int selEnd = Selection.getSelectionEnd(mEditable); + if (selStart == selEnd && !event.isShiftPressed()) { + int newSel = Math.min(selStart + 1, mEditable.length()); + setSelection(newSel, newSel); + } else { + int newSelEnd = Math.min(selEnd + 1, mEditable.length()); + setSelection(selStart, newSelEnd); + } + return true; + } else if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_UP) { + int selStart = Selection.getSelectionStart(mEditable); + int selEnd = Selection.getSelectionEnd(mEditable); + if (selStart == selEnd && !event.isShiftPressed()) { + Selection.moveUp(mEditable, mLayout); + int newSelStart = Selection.getSelectionStart(mEditable); + setSelection(newSelStart, newSelStart); + } else { + Selection.extendUp(mEditable, mLayout); + int newSelStart = Selection.getSelectionStart(mEditable); + int newSelEnd = Selection.getSelectionEnd(mEditable); + setSelection(newSelStart, newSelEnd); + } + return true; + } else if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_DOWN) { + int selStart = Selection.getSelectionStart(mEditable); + int selEnd = Selection.getSelectionEnd(mEditable); + if (selStart == selEnd && !event.isShiftPressed()) { + Selection.moveDown(mEditable, mLayout); + int newSelStart = Selection.getSelectionStart(mEditable); + setSelection(newSelStart, newSelStart); + } else { + Selection.extendDown(mEditable, mLayout); + int newSelStart = Selection.getSelectionStart(mEditable); + int newSelEnd = Selection.getSelectionEnd(mEditable); + setSelection(newSelStart, newSelEnd); + } return true; // When the enter key is pressed on a non-multiline field, consider it a // submit instead of a newline. @@ -288,13 +330,75 @@ public boolean sendKeyEvent(KeyEvent event) { if (character != 0) { int selStart = Math.max(0, Selection.getSelectionStart(mEditable)); int selEnd = Math.max(0, Selection.getSelectionEnd(mEditable)); - if (selEnd != selStart) mEditable.delete(selStart, selEnd); - mEditable.insert(selStart, String.valueOf((char) character)); - setSelection(selStart + 1, selStart + 1); + int selMin = Math.min(selStart, selEnd); + int selMax = Math.max(selStart, selEnd); + if (selMin != selMax) mEditable.delete(selMin, selMax); + mEditable.insert(selMin, String.valueOf((char) character)); + setSelection(selMin + 1, selMin + 1); } return true; } } + if (event.getAction() == KeyEvent.ACTION_UP + && (event.getKeyCode() == KeyEvent.KEYCODE_SHIFT_LEFT + || event.getKeyCode() == KeyEvent.KEYCODE_SHIFT_RIGHT)) { + int selEnd = Selection.getSelectionEnd(mEditable); + setSelection(selEnd, selEnd); + return true; + } + return false; + } + + @Override + public boolean performContextMenuAction(int id) { + if (id == android.R.id.selectAll) { + setSelection(0, mEditable.length()); + return true; + } else if (id == android.R.id.cut) { + int selStart = Selection.getSelectionStart(mEditable); + int selEnd = Selection.getSelectionEnd(mEditable); + if (selStart != selEnd) { + int selMin = Math.min(selStart, selEnd); + int selMax = Math.max(selStart, selEnd); + CharSequence textToCut = mEditable.subSequence(selMin, selMax); + ClipboardManager clipboard = + (ClipboardManager) + mFlutterView.getContext().getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText("text label?", textToCut); + clipboard.setPrimaryClip(clip); + mEditable.delete(selMin, selMax); + setSelection(selMin, selMin); + } + return true; + } else if (id == android.R.id.copy) { + int selStart = Selection.getSelectionStart(mEditable); + int selEnd = Selection.getSelectionEnd(mEditable); + if (selStart != selEnd) { + CharSequence textToCopy = + mEditable.subSequence(Math.min(selStart, selEnd), Math.max(selStart, selEnd)); + ClipboardManager clipboard = + (ClipboardManager) + mFlutterView.getContext().getSystemService(Context.CLIPBOARD_SERVICE); + clipboard.setPrimaryClip(ClipData.newPlainText("text label?", textToCopy)); + } + return true; + } else if (id == android.R.id.paste) { + ClipboardManager clipboard = + (ClipboardManager) mFlutterView.getContext().getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clip = clipboard.getPrimaryClip(); + if (clip != null) { + CharSequence textToPaste = clip.getItemAt(0).coerceToText(mFlutterView.getContext()); + int selStart = Math.max(0, Selection.getSelectionStart(mEditable)); + int selEnd = Math.max(0, Selection.getSelectionEnd(mEditable)); + int selMin = Math.min(selStart, selEnd); + int selMax = Math.max(selStart, selEnd); + if (selMin != selMax) mEditable.delete(selMin, selMax); + mEditable.insert(selMin, textToPaste); + int newSelStart = selMin + textToPaste.length(); + setSelection(newSelStart, newSelStart); + } + return true; + } return false; } diff --git a/shell/platform/android/test/io/flutter/plugin/editing/InputConnectionAdaptorTest.java b/shell/platform/android/test/io/flutter/plugin/editing/InputConnectionAdaptorTest.java index b366efb110191..0a8d60f2d732a 100644 --- a/shell/platform/android/test/io/flutter/plugin/editing/InputConnectionAdaptorTest.java +++ b/shell/platform/android/test/io/flutter/plugin/editing/InputConnectionAdaptorTest.java @@ -1,5 +1,8 @@ package io.flutter.plugin.editing; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; @@ -7,9 +10,12 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import android.content.Context; import android.content.res.AssetManager; import android.text.Editable; import android.text.InputType; +import android.text.Selection; +import android.text.SpannableStringBuilder; import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.EditorInfo; @@ -22,8 +28,10 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; +import org.robolectric.shadow.api.Shadow; +import org.robolectric.shadows.ShadowClipboardManager; -@Config(manifest = Config.NONE, sdk = 27) +@Config(manifest = Config.NONE, sdk = 27, shadows = ShadowClipboardManager.class) @RunWith(RobolectricTestRunner.class) public class InputConnectionAdaptorTest { @Test @@ -47,4 +55,221 @@ public void inputConnectionAdaptor_ReceivesEnter() throws NullPointerException { inputConnectionAdaptor.sendKeyEvent(keyEvent); verify(spyEditable, times(1)).insert(eq(0), anyString()); } + + @Test + public void testPerformContextMenuAction_selectAll() { + int selStart = 5; + Editable editable = sampleEditable(selStart, selStart); + InputConnectionAdaptor adaptor = sampleInputConnectionAdaptor(editable); + + boolean didConsume = adaptor.performContextMenuAction(android.R.id.selectAll); + + assertTrue(didConsume); + assertEquals(0, Selection.getSelectionStart(editable)); + assertEquals(editable.length(), Selection.getSelectionEnd(editable)); + } + + @Test + public void testPerformContextMenuAction_cut() { + ShadowClipboardManager clipboardManager = + Shadow.extract(RuntimeEnvironment.application.getSystemService(Context.CLIPBOARD_SERVICE)); + int selStart = 6; + int selEnd = 11; + Editable editable = sampleEditable(selStart, selEnd); + CharSequence textToBeCut = editable.subSequence(selStart, selEnd); + InputConnectionAdaptor adaptor = sampleInputConnectionAdaptor(editable); + + boolean didConsume = adaptor.performContextMenuAction(android.R.id.cut); + + assertTrue(didConsume); + assertTrue(clipboardManager.hasText()); + assertEquals(textToBeCut, clipboardManager.getPrimaryClip().getItemAt(0).getText()); + assertFalse(editable.toString().contains(textToBeCut)); + } + + @Test + public void testPerformContextMenuAction_copy() { + ShadowClipboardManager clipboardManager = + Shadow.extract(RuntimeEnvironment.application.getSystemService(Context.CLIPBOARD_SERVICE)); + int selStart = 6; + int selEnd = 11; + Editable editable = sampleEditable(selStart, selEnd); + InputConnectionAdaptor adaptor = sampleInputConnectionAdaptor(editable); + + assertFalse(clipboardManager.hasText()); + + boolean didConsume = adaptor.performContextMenuAction(android.R.id.copy); + + assertTrue(didConsume); + assertTrue(clipboardManager.hasText()); + assertEquals( + editable.subSequence(selStart, selEnd), + clipboardManager.getPrimaryClip().getItemAt(0).getText()); + } + + @Test + public void testPerformContextMenuAction_paste() { + ShadowClipboardManager clipboardManager = + Shadow.extract(RuntimeEnvironment.application.getSystemService(Context.CLIPBOARD_SERVICE)); + String textToBePasted = "deadbeef"; + clipboardManager.setText(textToBePasted); + Editable editable = sampleEditable(0, 0); + InputConnectionAdaptor adaptor = sampleInputConnectionAdaptor(editable); + + boolean didConsume = adaptor.performContextMenuAction(android.R.id.paste); + + assertTrue(didConsume); + assertTrue(editable.toString().startsWith(textToBePasted)); + } + + @Test + public void testSendKeyEvent_shiftKeyUpCancelsSelection() { + int selStart = 5; + int selEnd = 10; + Editable editable = sampleEditable(selStart, selEnd); + InputConnectionAdaptor adaptor = sampleInputConnectionAdaptor(editable); + + KeyEvent shiftKeyUp = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_SHIFT_LEFT); + boolean didConsume = adaptor.sendKeyEvent(shiftKeyUp); + + assertTrue(didConsume); + assertEquals(selEnd, Selection.getSelectionStart(editable)); + assertEquals(selEnd, Selection.getSelectionEnd(editable)); + } + + @Test + public void testSendKeyEvent_leftKeyMovesCaretLeft() { + int selStart = 5; + Editable editable = sampleEditable(selStart, selStart); + InputConnectionAdaptor adaptor = sampleInputConnectionAdaptor(editable); + + KeyEvent leftKeyDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_LEFT); + boolean didConsume = adaptor.sendKeyEvent(leftKeyDown); + + assertTrue(didConsume); + assertEquals(selStart - 1, Selection.getSelectionStart(editable)); + assertEquals(selStart - 1, Selection.getSelectionEnd(editable)); + } + + @Test + public void testSendKeyEvent_leftKeyExtendsSelectionLeft() { + int selStart = 5; + int selEnd = 40; + Editable editable = sampleEditable(selStart, selEnd); + InputConnectionAdaptor adaptor = sampleInputConnectionAdaptor(editable); + + KeyEvent leftKeyDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_LEFT); + boolean didConsume = adaptor.sendKeyEvent(leftKeyDown); + + assertTrue(didConsume); + assertEquals(selStart, Selection.getSelectionStart(editable)); + assertEquals(selEnd - 1, Selection.getSelectionEnd(editable)); + } + + @Test + public void testSendKeyEvent_shiftLeftKeyStartsSelectionLeft() { + int selStart = 5; + Editable editable = sampleEditable(selStart, selStart); + InputConnectionAdaptor adaptor = sampleInputConnectionAdaptor(editable); + + KeyEvent shiftLeftKeyDown = + new KeyEvent( + 0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_LEFT, 0, KeyEvent.META_SHIFT_ON); + boolean didConsume = adaptor.sendKeyEvent(shiftLeftKeyDown); + + assertTrue(didConsume); + assertEquals(selStart, Selection.getSelectionStart(editable)); + assertEquals(selStart - 1, Selection.getSelectionEnd(editable)); + } + + @Test + public void testSendKeyEvent_rightKeyMovesCaretRight() { + int selStart = 5; + Editable editable = sampleEditable(selStart, selStart); + InputConnectionAdaptor adaptor = sampleInputConnectionAdaptor(editable); + + KeyEvent rightKeyDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT); + boolean didConsume = adaptor.sendKeyEvent(rightKeyDown); + + assertTrue(didConsume); + assertEquals(selStart + 1, Selection.getSelectionStart(editable)); + assertEquals(selStart + 1, Selection.getSelectionEnd(editable)); + } + + @Test + public void testSendKeyEvent_rightKeyExtendsSelectionRight() { + int selStart = 5; + int selEnd = 40; + Editable editable = sampleEditable(selStart, selEnd); + InputConnectionAdaptor adaptor = sampleInputConnectionAdaptor(editable); + + KeyEvent rightKeyDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT); + boolean didConsume = adaptor.sendKeyEvent(rightKeyDown); + + assertTrue(didConsume); + assertEquals(selStart, Selection.getSelectionStart(editable)); + assertEquals(selEnd + 1, Selection.getSelectionEnd(editable)); + } + + @Test + public void testSendKeyEvent_shiftRightKeyStartsSelectionRight() { + int selStart = 5; + Editable editable = sampleEditable(selStart, selStart); + InputConnectionAdaptor adaptor = sampleInputConnectionAdaptor(editable); + + KeyEvent shiftRightKeyDown = + new KeyEvent( + 0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT, 0, KeyEvent.META_SHIFT_ON); + boolean didConsume = adaptor.sendKeyEvent(shiftRightKeyDown); + + assertTrue(didConsume); + assertEquals(selStart, Selection.getSelectionStart(editable)); + assertEquals(selStart + 1, Selection.getSelectionEnd(editable)); + } + + @Test + public void testSendKeyEvent_upKeyMovesCaretUp() { + int selStart = SAMPLE_TEXT.indexOf('\n') + 4; + Editable editable = sampleEditable(selStart, selStart); + InputConnectionAdaptor adaptor = sampleInputConnectionAdaptor(editable); + + KeyEvent upKeyDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_UP); + boolean didConsume = adaptor.sendKeyEvent(upKeyDown); + + assertTrue(didConsume); + // Checks the caret moved left (to some previous character). Selection.moveUp() behaves + // different in tests than on a real device, we can't verify the exact position. + assertTrue(Selection.getSelectionStart(editable) < selStart); + } + + @Test + public void testSendKeyEvent_downKeyMovesCaretDown() { + int selStart = 4; + Editable editable = sampleEditable(selStart, selStart); + InputConnectionAdaptor adaptor = sampleInputConnectionAdaptor(editable); + + KeyEvent downKeyDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_DOWN); + boolean didConsume = adaptor.sendKeyEvent(downKeyDown); + + assertTrue(didConsume); + // Checks the caret moved right (to some following character). Selection.moveDown() behaves + // different in tests than on a real device, we can't verify the exact position. + assertTrue(Selection.getSelectionStart(editable) > selStart); + } + + private static final String SAMPLE_TEXT = + "Lorem ipsum dolor sit amet," + "\nconsectetur adipiscing elit."; + + private static Editable sampleEditable(int selStart, int selEnd) { + SpannableStringBuilder sample = new SpannableStringBuilder(SAMPLE_TEXT); + Selection.setSelection(sample, selStart, selEnd); + return sample; + } + + private static InputConnectionAdaptor sampleInputConnectionAdaptor(Editable editable) { + View testView = new View(RuntimeEnvironment.application); + int client = 0; + TextInputChannel textInputChannel = mock(TextInputChannel.class); + return new InputConnectionAdaptor(testView, client, textInputChannel, editable, null); + } } From ab9f83fe051853a449dc52388fcc432278e8b998 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 14:26:06 -0500 Subject: [PATCH 084/521] Roll fuchsia/sdk/core/linux-amd64 from RYDur... to bgFop... (#16855) --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 75ad90f0c0617..a72c67cc7fd04 100644 --- a/DEPS +++ b/DEPS @@ -566,7 +566,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'RYDuroL1f14Mvzp4jfapVKk-N_HbeUs0VVfFFRfFP48C' + 'version': 'bgFopFqRh-Eg0GYsRWlmsTk1HGJCaAXuvGtb36ZPYk4C' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 11fc87d76a576..03cea1d4ee770 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: 7d8a63da4b9aaf7c58f363599e15ae01 +Signature: f5e9584f922dfa6a9dd743b6f0ef8ec2 UNUSED LICENSES: From 62d0c0829840efd8d4088786a9ef16df70f709d5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 14:31:04 -0500 Subject: [PATCH 085/521] Roll src/third_party/dart dda5bcee00d3..4dad6d77ba50 (6 commits) (#16856) --- DEPS | 4 +- ci/licenses_golden/licenses_third_party | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++------------ 3 files changed, 123 insertions(+), 127 deletions(-) diff --git a/DEPS b/DEPS index a72c67cc7fd04..af850a13951b2 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'dda5bcee00d3614e5ec7d2e5de17b3fd2450f204', + 'dart_revision': '4dad6d77ba50e0440689a5a7c8ba7c77915a4aa2', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -62,7 +62,7 @@ vars = { 'dart_http_throttle_tag': '1.0.2', 'dart_intl_tag': '0.15.7', 'dart_json_rpc_2_tag': '2.0.9', - 'dart_linter_tag': '0.1.111+1', + 'dart_linter_tag': '0.1.112', 'dart_logging_tag': '0.11.3+2', 'dart_markdown_tag': '2.1.1', 'dart_matcher_tag': '0.12.5', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 30aa8d5913095..b982b0c0a882b 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 408d6edc03f5bbaf50fbe50f9b65ae3b +Signature: bbf60fbe20730808039b991bb8407fb8 UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 51f4a37524611..6cdcbe8cb194f 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 76d12d2cb09f768710bb455b5395cda0619b5bc2 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 15:11:03 -0500 Subject: [PATCH 086/521] Roll src/third_party/skia 03d9e8af0d25..262796edeba6 (11 commits) (#16857) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index af850a13951b2..680ed665e275d 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '03d9e8af0d254ac3a2d8608880fbd41493d00b97', + 'skia_revision': '262796edeba69c82510b767e37e1868dbd3f9176', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 551a4896c6e70..2be1e70b1fe2a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5e5f4a6a73fef15d201e685c8224c728 +Signature: 972f22b99bc0a306a8839dc27ff86d8a UNUSED LICENSES: @@ -1096,6 +1096,7 @@ FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.ex FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Win-Clang-x86-Debug-Exceptions.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Win-Clang-x86_64-Debug-ANGLE.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Win-Clang-x86_64-Debug-OpenCL.json +FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Win-Clang-x86_64-Release-Dawn.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Win-Clang-x86_64-Release-Shared.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Win-Clang-x86_64-Release-Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Housekeeper-PerCommit-CheckGeneratedFiles.json From 01a52b9947054f57398f2aaa2b59e7d501506580 Mon Sep 17 00:00:00 2001 From: Sebastian Jeltsch Date: Fri, 28 Feb 2020 21:13:22 +0100 Subject: [PATCH 087/521] Try rasterizing images and layers only once, even when their rasterization fails. Further enforce the same access threshold on layers as on Pictures. Previously layers would always be cached. The latter is a semantic change. (#16545) If Rasterization fails, i.e. image.is_valid() is false, the cache might try rasterizing the image again on the next frame. Not only is this wasteful put might also prevent other pictures to be cached within the current frame budget. --- flow/raster_cache.cc | 39 ++++++++++++----------- flow/raster_cache.h | 3 +- flow/raster_cache_unittests.cc | 56 +++++++++++++++++++++++++--------- 3 files changed, 64 insertions(+), 34 deletions(-) diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index f179905ed8e53..46253c97c509c 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -119,24 +119,15 @@ static RasterCacheResult Rasterize( return {surface->makeImageSnapshot(), logical_rect}; } -RasterCacheResult RasterizePicture(SkPicture* picture, - GrContext* context, - const SkMatrix& ctm, - SkColorSpace* dst_color_space, - bool checkerboard) { - return Rasterize(context, ctm, dst_color_space, checkerboard, - picture->cullRect(), - [=](SkCanvas* canvas) { canvas->drawPicture(picture); }); -} - -void RasterCache::Prepare(PrerollContext* context, +bool RasterCache::Prepare(PrerollContext* context, Layer* layer, const SkMatrix& ctm) { LayerRasterCacheKey cache_key(layer->unique_id(), ctm); + Entry& entry = layer_cache_[cache_key]; - entry.access_count++; - entry.used_this_frame = true; - if (!entry.image.is_valid()) { + + if (!entry.did_rasterize && !entry.image.is_valid() && + entry.access_count >= access_threshold_) { entry.image = Rasterize( context->gr_context, ctm, context->dst_color_space, checkerboard_images_, layer->paint_bounds(), @@ -161,7 +152,12 @@ void RasterCache::Prepare(PrerollContext* context, layer->Paint(paintContext); } }); + + entry.did_rasterize = true; + + return true; } + return false; } bool RasterCache::Prepare(GrContext* context, @@ -200,12 +196,19 @@ bool RasterCache::Prepare(GrContext* context, return false; } - if (!entry.image.is_valid()) { - entry.image = RasterizePicture(picture, context, transformation_matrix, - dst_color_space, checkerboard_images_); + // Don't try to rasterize pictures that were already attempted to be + // rasterized even if the image is invalid. + if (!entry.did_rasterize && !entry.image.is_valid()) { + entry.image = + Rasterize(context, transformation_matrix, dst_color_space, + checkerboard_images_, picture->cullRect(), + [=](SkCanvas* canvas) { canvas->drawPicture(picture); }); + + entry.did_rasterize = true; picture_cached_this_frame_++; + return true; } - return true; + return false; } RasterCacheResult RasterCache::Get(const SkPicture& picture, diff --git a/flow/raster_cache.h b/flow/raster_cache.h index b51382a5c8d2d..93e6200cbf41d 100644 --- a/flow/raster_cache.h +++ b/flow/raster_cache.h @@ -84,7 +84,7 @@ class RasterCache { bool is_complex, bool will_change); - void Prepare(PrerollContext* context, Layer* layer, const SkMatrix& ctm); + bool Prepare(PrerollContext* context, Layer* layer, const SkMatrix& ctm); RasterCacheResult Get(const SkPicture& picture, const SkMatrix& ctm) const; @@ -101,6 +101,7 @@ class RasterCache { private: struct Entry { bool used_this_frame = false; + bool did_rasterize = false; size_t access_count = 0; RasterCacheResult image; }; diff --git a/flow/raster_cache_unittests.cc b/flow/raster_cache_unittests.cc index 03e3b3879c469..16abea65e5ca8 100644 --- a/flow/raster_cache_unittests.cc +++ b/flow/raster_cache_unittests.cc @@ -4,6 +4,7 @@ #include "flutter/flow/raster_cache.h" +#include "flutter/flow/layers/container_layer.h" #include "gtest/gtest.h" #include "third_party/skia/include/core/SkPicture.h" #include "third_party/skia/include/core/SkPictureRecorder.h" @@ -29,7 +30,7 @@ TEST(RasterCache, SimpleInitialization) { ASSERT_TRUE(true); } -TEST(RasterCache, ThresholdIsRespected) { +TEST(RasterCache, ThresholdIsRespectedForPictures) { size_t threshold = 2; flutter::RasterCache cache(threshold); @@ -37,8 +38,6 @@ TEST(RasterCache, ThresholdIsRespected) { auto picture = GetSamplePicture(); - sk_sp image; - sk_sp srgb = SkColorSpace::MakeSRGB(); ASSERT_FALSE( cache.Prepare(NULL, picture.get(), matrix, srgb.get(), true, false)); @@ -61,21 +60,28 @@ TEST(RasterCache, ThresholdIsRespected) { ASSERT_TRUE(cache.Get(*picture, matrix).is_valid()); } -TEST(RasterCache, AccessThresholdOfZeroDisablesCaching) { - size_t threshold = 0; +TEST(RasterCache, ThresholdIsRespectedForLayers) { + size_t threshold = 2; flutter::RasterCache cache(threshold); SkMatrix matrix = SkMatrix::I(); - auto picture = GetSamplePicture(); - - sk_sp image; + ContainerLayer layer; sk_sp srgb = SkColorSpace::MakeSRGB(); - ASSERT_FALSE( - cache.Prepare(NULL, picture.get(), matrix, srgb.get(), true, false)); + ASSERT_FALSE(cache.Prepare(nullptr, &layer, matrix)); + ASSERT_FALSE(cache.Prepare(nullptr, &layer, matrix)); + ASSERT_FALSE(cache.Prepare(nullptr, &layer, matrix)); - ASSERT_FALSE(cache.Get(*picture, matrix).is_valid()); + // 1st access. + ASSERT_FALSE(cache.Get(&layer, matrix).is_valid()); + + ASSERT_FALSE(cache.Prepare(nullptr, &layer, matrix)); + + // 2st access. + ASSERT_FALSE(cache.Get(&layer, matrix).is_valid()); + + // Calling Prepare now would crash due to the nullptr. } TEST(RasterCache, PictureCacheLimitPerFrameIsRespectedWhenZero) { @@ -86,8 +92,6 @@ TEST(RasterCache, PictureCacheLimitPerFrameIsRespectedWhenZero) { auto picture = GetSamplePicture(); - sk_sp image; - sk_sp srgb = SkColorSpace::MakeSRGB(); ASSERT_FALSE( cache.Prepare(NULL, picture.get(), matrix, srgb.get(), true, false)); @@ -103,8 +107,6 @@ TEST(RasterCache, SweepsRemoveUnusedFrames) { auto picture = GetSamplePicture(); - sk_sp image; - sk_sp srgb = SkColorSpace::MakeSRGB(); ASSERT_FALSE(cache.Prepare(NULL, picture.get(), matrix, srgb.get(), true, false)); // 1 @@ -122,5 +124,29 @@ TEST(RasterCache, SweepsRemoveUnusedFrames) { ASSERT_FALSE(cache.Get(*picture, matrix).is_valid()); } +TEST(RasterCache, TryRasterizngOnlyOnce) { + size_t threshold = 1; + flutter::RasterCache cache(threshold); + + SkMatrix matrix = SkMatrix::I(); + // Test picture too large to successfully rasterize. + auto picture = SkPicture::MakePlaceholder(SkRect::MakeWH(2e12, 2e12)); + + sk_sp srgb = SkColorSpace::MakeSRGB(); + ASSERT_FALSE(cache.Prepare(nullptr, picture.get(), matrix, srgb.get(), true, + false)); // 1 + ASSERT_FALSE(cache.Get(*picture, matrix).is_valid()); + + // Rasterization ran, though Get() below returns an invalid image. + ASSERT_TRUE(cache.Prepare(nullptr, picture.get(), matrix, srgb.get(), true, + false)); // 2 + ASSERT_FALSE(cache.Get(*picture, matrix).is_valid()); + + // This time we should not try again to rasterize. + ASSERT_FALSE(cache.Prepare(nullptr, picture.get(), matrix, srgb.get(), true, + false)); // 2 + ASSERT_FALSE(cache.Get(*picture, matrix).is_valid()); +} + } // namespace testing } // namespace flutter From 3b0d1a8d2eec8ac18f613539c6cc1112f50a2f96 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Fri, 28 Feb 2020 12:51:58 -0800 Subject: [PATCH 088/521] script for fetching correct flutter version (#16818) * script for fetching correct flutter version * change cirrus yml for the script location * change location of the script. Add it to tools * cirrus still does not see the script. repeat path change from the previous step * Looks like script worked correctly. do not change directory. * change directory back to build root after scriot is run * script runs ok. Still not able to find the bin directory. go all the way back * still can't see the bin directory. carry the script content to cirrus.yml to debug better * get the last commit id of the right repository * content of the script worked in cirrus. call the script from tools * cannot find the script under tools * print the current path in the script to see why cirrus cannot see bin directory * move to flutter path before running update packages * tests run now. remove print outs * error if the ENGINE_PATH is not set. exit the script * addressing reviewer comments * engine branch name on cirrus logs doesn't make sense * fix typo * change the directory of branch calculation * remove extra logs * addressing PR comments. Testing CIRRUS_CI env variable * adding CIRRUS_CI check --- .cirrus.yml | 7 ++--- tools/clone_flutter.sh | 64 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 4 deletions(-) create mode 100755 tools/clone_flutter.sh diff --git a/.cirrus.yml b/.cirrus.yml index bbc78e709c1bd..454f849b81064 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -11,10 +11,9 @@ web_shard_template: &WEB_SHARD_TEMPLATE ./flutter/tools/gn --unoptimized --full-dart-sdk ninja -C out/host_debug_unopt fetch_framework_script: | - mkdir -p $FRAMEWORK_PATH - cd $FRAMEWORK_PATH - git clone https://github.com/flutter/flutter.git - cd flutter + cd $ENGINE_PATH/src/flutter/tools + ./clone_flutter.sh + cd $FRAMEWORK_PATH/flutter bin/flutter update-packages --local-engine=host_debug_unopt script: - dart --enable-asserts $FRAMEWORK_PATH/flutter/dev/bots/test.dart --local-engine=host_debug_unopt diff --git a/tools/clone_flutter.sh b/tools/clone_flutter.sh new file mode 100755 index 0000000000000..a4f49ce2110b1 --- /dev/null +++ b/tools/clone_flutter.sh @@ -0,0 +1,64 @@ +#!/bin/bash +set -e +set -x + +if [[ "$CIRRUS_CI" = false || -z $CIRRUS_CI ]] +then + echo "This script is aimed to be run on CI environments. Do not run locally." + exit 1 +fi + +if [[ -z $ENGINE_PATH ]] +then + echo "Engine path should be set to run the script." + exit 1 +fi + +# Go to the engine git repo to get the date of the latest commit. +cd $ENGINE_PATH/src/flutter + +# Special handling of release branches. +ENGINE_BRANCH_NAME=`git branch | grep '*' | cut -d ' ' -f2` +versionregex="^v[[:digit:]]+\." +ON_RELEASE_BRANCH=false +echo "Engine on branch $ENGINE_BRANCH_NAME" +if [[ $ENGINE_BRANCH_NAME =~ $versionregex ]] +then + echo "release branch $ENGINE_BRANCH_NAME" + ON_RELEASE_BRANCH=true +fi + +# Get latest commit's time for the engine repo. +# Use date based on local time otherwise timezones might get mixed. +LATEST_COMMIT_TIME_ENGINE=`git log -1 --date=local --format="%ad"` +echo "Latest commit time on engine found as $LATEST_COMMIT_TIME_ENGINE" + +# Do rest of the task in the root directory +cd ~ +mkdir -p $FRAMEWORK_PATH +cd $FRAMEWORK_PATH +# Clone the Flutter Framework. +git clone https://github.com/flutter/flutter.git +cd flutter + +FRAMEWORK_BRANCH_NAME=`git branch | grep '*' | cut -d ' ' -f2` +if [[ "$ON_RELEASE_BRANCH" = true && ENGINE_BRANCH_NAME != FRAMEWORK_BRANCH_NAME ]] +then + echo "For a release framework and engine should be on the same version." + echo "Switching branches on Framework to from $FRAMEWORK_BRANCH_NAME to $ENGINE_BRANCH_NAME" + # Switch to the same version branch with the engine. + # If same version branch does not exits, fail. + SWITCH_RESULT=`git checkout $ENGINE_BRANCH_NAME` || true + if [[ -z "$SWITCH_RESULT" ]] + then + echo "$ENGINE_BRANCH_NAME Branch not found on framework. Quit." + exit 1 + fi +fi + +# Get the time of the youngest commit older than engine commit. +# Git log uses commit date not the author date. +# Before makes the comparison considering the timezone as well. +COMMIT_NO=`git log --before="$LATEST_COMMIT_TIME_ENGINE" -n 1 | grep commit | cut -d ' ' -f2` +echo "Using the flutter/flutter commit $COMMIT_NO"; +git reset --hard $COMMIT_NO From 9746ddb61e3433b2a52d552408c62dad1e58908b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 19:41:02 -0500 Subject: [PATCH 089/521] Roll src/third_party/dart 4dad6d77ba50..6708f6d4c7df (15 commits) (#16860) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 680ed665e275d..4d5fe0b206d7b 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '4dad6d77ba50e0440689a5a7c8ba7c77915a4aa2', + 'dart_revision': '6708f6d4c7dfcdca9e7149665f2f4fac03ab73a1', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index b982b0c0a882b..f411b8e1c8914 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: bbf60fbe20730808039b991bb8407fb8 +Signature: 4df0607a62d232bfdc1d356bee4d42d0 UNUSED LICENSES: From 90736bbc5107dd128af874da83d86e3354e4620e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 20:16:03 -0500 Subject: [PATCH 090/521] Roll src/third_party/skia 262796edeba6..54cb21430ccb (23 commits) (#16861) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++++++--------------- 3 files changed, 127 insertions(+), 122 deletions(-) diff --git a/DEPS b/DEPS index 4d5fe0b206d7b..2000bf96c333a 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '262796edeba69c82510b767e37e1868dbd3f9176', + 'skia_revision': '54cb21430ccbbd60d3bbea22cc9ccd4faad65ece', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 2be1e70b1fe2a..460a482f57be4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 972f22b99bc0a306a8839dc27ff86d8a +Signature: 3dec11b8e247226238fd0016369d1d0f UNUSED LICENSES: @@ -1009,6 +1009,7 @@ FILE: ../../../third_party/skia/infra/bots/assets/gcloud_linux/VERSION FILE: ../../../third_party/skia/infra/bots/assets/go/VERSION FILE: ../../../third_party/skia/infra/bots/assets/go_win/VERSION FILE: ../../../third_party/skia/infra/bots/assets/ios-dev-image-11.4/VERSION +FILE: ../../../third_party/skia/infra/bots/assets/ios-dev-image-13.3/VERSION FILE: ../../../third_party/skia/infra/bots/assets/linux_vulkan_sdk/VERSION FILE: ../../../third_party/skia/infra/bots/assets/lottie-samples/VERSION FILE: ../../../third_party/skia/infra/bots/assets/mesa_intel_driver_linux/VERSION diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 6cdcbe8cb194f..51f4a37524611 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,66 +5143,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5234,66 +5174,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5690,6 +5570,130 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 142882e1baead08f4d47369eb4a2bfc4c50f345d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 21:46:02 -0500 Subject: [PATCH 091/521] Roll src/third_party/skia 54cb21430ccb..e1ae9c4bcf2e (4 commits) (#16863) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2000bf96c333a..9212a7da485cb 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '54cb21430ccbbd60d3bbea22cc9ccd4faad65ece', + 'skia_revision': 'e1ae9c4bcf2eece73b845d0ac5f77bac6e53ed63', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 460a482f57be4..b4242ecf04780 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 3dec11b8e247226238fd0016369d1d0f +Signature: c890bb7044829c923abfe69a5a2ba34d UNUSED LICENSES: From 71923563a8798b50764a53b11fd0d333b649c02d Mon Sep 17 00:00:00 2001 From: Siva Date: Fri, 28 Feb 2020 19:42:00 -0800 Subject: [PATCH 092/521] Manual roll of Dart 09bbd3cca5...6708f6d4c7 (#16864) dart-lang/sdk@ 09bbd3cca5 [VM/concurrency] - Temporary workaround for issue https://github.com/dart-lang/sdk/issues/40836 dart-lang/sdk@ 5af2cc768a [dart2js] Add a raw type predicate to LegacyType and NullableType which forwards to the wrapped type. dart-lang/sdk@ 5b23373f7e Modify fields in some abstract and native classes dart-lang/sdk@ 9f79dfc37d Address analyzer errors in golden files in dart:html dart-lang/sdk@ 80f84e1942 Change all fields to native getters/setters dart-lang/sdk@ 3ec6ec2a2d Change getters/setters to native for nnbd dart-lang/sdk@ e797a066dc Separate canvasrenderingcontext2d into multiple tests dart-lang/sdk@ d2bd9691aa [vm] Remove unused Resolver::ResolveStaticAllowPrivate dart-lang/sdk@ 7f483c067c Set TypeName type of unresolved class with prefixed identifier in instance creation. dart-lang/sdk@ dc366a5ad5 [nnbd_migration] Assert an edge origin exists in _checkAssignment dart-lang/sdk@ 3ae91fc8c5 [nnbd_migration] Add an edge origin for `return;` dart-lang/sdk@ 1d1f3a5049 [nnbd_migration] Origin for inferred instance creation bounds dart-lang/sdk@ e9df1ee07a [nnbd_migration] Add an edge origin for inferred parameter substitution dart-lang/sdk@ 42d0c8245d [nnbd_migration] Add edge origin for explicit instantiation params dart-lang/sdk@ 18814410a4 [nnbd_migration] Record edge origin for explicit call parameters dart-lang/sdk@ c0bcfb7d0c [nnbd_migration] Add a description for type parameter instantiation dart-lang/sdk@ 734ad9c00c [nnbd_migration] Add an edge origin for type name parameters. dart-lang/sdk@ 8e3850395a [dartdev] refactor the dartdev pub command - delegate to the pub snapshot dart-lang/sdk@ 34fcc56458 Fix for renaming named formal parameters from invocations, when synthetic. --- DEPS | 4 ++-- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 9212a7da485cb..47201835cca02 100644 --- a/DEPS +++ b/DEPS @@ -34,11 +34,11 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '6708f6d4c7dfcdca9e7149665f2f4fac03ab73a1', + 'dart_revision': '09bbd3cca5d444730b0cdcaaea8f2c6df590a660', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py - 'dart_args_tag': '1.5.2', + 'dart_args_tag': '1.5.3', 'dart_async_tag': '2.0.8', 'dart_bazel_worker_tag': 'v0.1.22', 'dart_boolean_selector_tag': '1.0.4', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index f411b8e1c8914..07710a2e8ca39 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 4df0607a62d232bfdc1d356bee4d42d0 +Signature: 3c0a2f3fb81bac00c499da5d6b643f5c UNUSED LICENSES: From fae5ff65848d5cd68c06292c18c60ffd6f1ecb28 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 28 Feb 2020 23:16:02 -0500 Subject: [PATCH 093/521] Roll src/third_party/skia e1ae9c4bcf2e..5d1c3e2ead61 (2 commits) (#16865) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 47201835cca02..7159ff35954cc 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'e1ae9c4bcf2eece73b845d0ac5f77bac6e53ed63', + 'skia_revision': '5d1c3e2ead61d660a77a38299fe96704e1e7fa2a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b4242ecf04780..bda6ac6b8e5e1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: c890bb7044829c923abfe69a5a2ba34d +Signature: 75e81a6d5c428175004953868d5f3ce1 UNUSED LICENSES: From c6525a428fc024d165fb8a52ceb72c3e07830d01 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 29 Feb 2020 00:51:02 -0500 Subject: [PATCH 094/521] Roll src/third_party/skia 5d1c3e2ead61..59b160f99106 (2 commits) (#16866) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 7159ff35954cc..06c18a07e68f1 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '5d1c3e2ead61d660a77a38299fe96704e1e7fa2a', + 'skia_revision': '59b160f99106e39ede726b7a7b4be108a0caa7a6', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index bda6ac6b8e5e1..796db750f1ded 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 75e81a6d5c428175004953868d5f3ce1 +Signature: 697397d7fb32d9b005cbf1b1eeaaed4f UNUSED LICENSES: From 755e2b559d4dc5e3a5788e36b4513b497bff2a0c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 29 Feb 2020 02:26:03 -0500 Subject: [PATCH 095/521] Roll src/third_party/skia 59b160f99106..71a20b2685c6 (1 commits) (#16867) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 06c18a07e68f1..334dd2bec47dd 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '59b160f99106e39ede726b7a7b4be108a0caa7a6', + 'skia_revision': '71a20b2685c6b6f4248da1b4162a1cc62983b2dc', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 796db750f1ded..9af4a83d48948 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 697397d7fb32d9b005cbf1b1eeaaed4f +Signature: 9dd60332f3a11fe3289805896acc6d2e UNUSED LICENSES: From 93d0eff4d5656db62d07968f02a9d78587e8a5b8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sat, 29 Feb 2020 21:06:01 -0500 Subject: [PATCH 096/521] Roll src/third_party/skia 71a20b2685c6..ecbb0fb2d5bc (1 commits) (#16869) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 334dd2bec47dd..c3fbebfa73a42 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '71a20b2685c6b6f4248da1b4162a1cc62983b2dc', + 'skia_revision': 'ecbb0fb2d5bccda0c2b18d25387e47dfd680dec7', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9af4a83d48948..b0ffd47e2668c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9dd60332f3a11fe3289805896acc6d2e +Signature: 9044dfe5fcb80367ec601307e9e2d5e6 UNUSED LICENSES: From bfee5ae23da2b7a381e7849a97d3a4926ff7344b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 1 Mar 2020 00:11:02 -0500 Subject: [PATCH 097/521] Roll fuchsia/sdk/core/linux-amd64 from bgFop... to F_Ihm... (#16871) --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c3fbebfa73a42..3103c65efdfa9 100644 --- a/DEPS +++ b/DEPS @@ -566,7 +566,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'bgFopFqRh-Eg0GYsRWlmsTk1HGJCaAXuvGtb36ZPYk4C' + 'version': 'F_IhmWJ1KcW8BHlMB7Fq2jhJS3D4mbeJaBQMEihq_MYC' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 03cea1d4ee770..ca3909c1aa4a3 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: f5e9584f922dfa6a9dd743b6f0ef8ec2 +Signature: 12b6633fdde1a5a931cde62e7ebb67bd UNUSED LICENSES: @@ -535,6 +535,7 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.update.channelcontrol/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.url/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.web/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.common/meta.json +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.policy/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.service/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.stats/meta.json FILE: ../../../fuchsia/sdk/linux/pkg/async-cpp/meta.json @@ -1535,6 +1536,10 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.web/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.web/navigation.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.web/url_request_rewrite_rules.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.common/meta.json +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.policy/access_point_provider.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.policy/client_provider.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.policy/meta.json +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.policy/types.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.service/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.stats/meta.json FILE: ../../../fuchsia/sdk/linux/pkg/async-cpp/executor.cc @@ -2256,6 +2261,7 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.update.channelcontrol/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.url/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.web/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.common/meta.json +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.policy/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.service/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.wlan.stats/meta.json FILE: ../../../fuchsia/sdk/linux/pkg/async-cpp/meta.json From ca29b47bf984fdb7390ce35a9a559303d3b896d6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 1 Mar 2020 00:26:02 -0500 Subject: [PATCH 098/521] Roll fuchsia/sdk/core/mac-amd64 from K26F5... to 79I0C... (#16872) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 3103c65efdfa9..c7f48bcd936d1 100644 --- a/DEPS +++ b/DEPS @@ -546,7 +546,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'K26F51qYYvKEBjx61bZ8TVUDVxOOWOl_s3x91j2w_EcC' + 'version': '79I0CBLbLDTVy3OCyUs-IQ7B2tqiOY4ktdMIDm7znUEC' } ], 'condition': 'host_os == "mac"', From 708ca2c62db3352fa72dcc759d9138a85775e5ea Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 1 Mar 2020 02:41:01 -0500 Subject: [PATCH 099/521] Roll src/third_party/skia ecbb0fb2d5bc..666707336e07 (1 commits) (#16873) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c7f48bcd936d1..a166e3fd8c2fd 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'ecbb0fb2d5bccda0c2b18d25387e47dfd680dec7', + 'skia_revision': '666707336e0789d92abce0ad008423a395dbf34a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b0ffd47e2668c..edead9bb5d5a1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9044dfe5fcb80367ec601307e9e2d5e6 +Signature: ad0705b3bdb5d82ec135564060b4080b UNUSED LICENSES: From 78ea291daec561b9e91c5759e70172ee6dec7c19 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 1 Mar 2020 13:41:02 -0500 Subject: [PATCH 100/521] Roll fuchsia/sdk/core/mac-amd64 from 79I0C... to NoQzJ... (#16874) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index a166e3fd8c2fd..33aa6f0fc578a 100644 --- a/DEPS +++ b/DEPS @@ -546,7 +546,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': '79I0CBLbLDTVy3OCyUs-IQ7B2tqiOY4ktdMIDm7znUEC' + 'version': 'NoQzJelJdLYdIKhpsp-3kNIgBARK95oj31nnUTAUVSkC' } ], 'condition': 'host_os == "mac"', From 7b43bb863e8c51617fec9e6b84bd5263c3759544 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 1 Mar 2020 13:46:02 -0500 Subject: [PATCH 101/521] Roll fuchsia/sdk/core/linux-amd64 from F_Ihm... to 22R78... (#16875) --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 33aa6f0fc578a..621eff2a0120f 100644 --- a/DEPS +++ b/DEPS @@ -566,7 +566,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'F_IhmWJ1KcW8BHlMB7Fq2jhJS3D4mbeJaBQMEihq_MYC' + 'version': '22R78LbP1OFYyQ6N1PZcxj-VzMMV8nzQ49qI9n0R6o8C' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index ca3909c1aa4a3..87274eb88a9d5 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: 12b6633fdde1a5a931cde62e7ebb67bd +Signature: 747cb2ebb1f3f46b7f04c5f801bef655 UNUSED LICENSES: From 75c9c62f8da817b62aa6b78e591fade5cc8f4cfe Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 1 Mar 2020 17:56:01 -0500 Subject: [PATCH 102/521] Roll src/third_party/skia 666707336e07..231f1bf56556 (1 commits) (#16876) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 621eff2a0120f..59ef1bf8ee81d 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '666707336e0789d92abce0ad008423a395dbf34a', + 'skia_revision': '231f1bf56556a3341c4e9ae310bb7cebc4b54ebb', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index edead9bb5d5a1..7f8b59a037d26 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ad0705b3bdb5d82ec135564060b4080b +Signature: 797cf94bef8be7e7474b216092565f3f UNUSED LICENSES: From 7a86b83f0c5b6d52259d1e10d9bd3a7d9562ea73 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 1 Mar 2020 18:26:02 -0500 Subject: [PATCH 103/521] Roll src/third_party/dart 09bbd3cca5d4..860dca93ea42 (1 commits) (#16877) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 59ef1bf8ee81d..2ad411aef09f2 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '09bbd3cca5d444730b0cdcaaea8f2c6df590a660', + 'dart_revision': '860dca93ea422ba12a9390de2a83c2a45968e083', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From d0c87e212a018c92e210eac3414651afecc7f4e6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Sun, 1 Mar 2020 21:49:02 -0500 Subject: [PATCH 104/521] Roll src/third_party/skia 231f1bf56556..d6205322cdc5 (1 commits) (#16878) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 2ad411aef09f2..cceda1052f279 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '231f1bf56556a3341c4e9ae310bb7cebc4b54ebb', + 'skia_revision': 'd6205322cdc5fc85b125391f8e4dea506f2d7d59', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7f8b59a037d26..ab4ed34de2d8c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 797cf94bef8be7e7474b216092565f3f +Signature: 09c0fc2807d02f6e35012ef152d070d4 UNUSED LICENSES: From b4c58545ab1cc44fae501bf6c3023ab5a7d52e47 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 2 Mar 2020 01:04:01 -0500 Subject: [PATCH 105/521] Roll src/third_party/skia d6205322cdc5..6729496a037f (1 commits) (#16879) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index cceda1052f279..127718aec04fb 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'd6205322cdc5fc85b125391f8e4dea506f2d7d59', + 'skia_revision': '6729496a037f3550565083fa2672c4d3d59f2471', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ab4ed34de2d8c..c75f49851990c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 09c0fc2807d02f6e35012ef152d070d4 +Signature: ff43a8e8bae2e07d0b5780cdf37880b0 UNUSED LICENSES: From 03f0ee54847a593038c157e063d912e48a9bcd43 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 2 Mar 2020 02:34:02 -0500 Subject: [PATCH 106/521] Roll src/third_party/skia 6729496a037f..367dbff98555 (1 commits) (#16880) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 127718aec04fb..4828eb7edc8e5 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '6729496a037f3550565083fa2672c4d3d59f2471', + 'skia_revision': '367dbff985558a4de5b8bd46fb0962d14fe6193e', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c75f49851990c..0b0a0f997088c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: ff43a8e8bae2e07d0b5780cdf37880b0 +Signature: be445aa884e8bd7aec32a7ff69e69c71 UNUSED LICENSES: From d84b96855ed3c05d0017b9e872f9aa1cf6307d5d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 2 Mar 2020 02:49:02 -0500 Subject: [PATCH 107/521] Roll fuchsia/sdk/core/mac-amd64 from NoQzJ... to q2DAy... (#16881) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 4828eb7edc8e5..29571cceae669 100644 --- a/DEPS +++ b/DEPS @@ -546,7 +546,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'NoQzJelJdLYdIKhpsp-3kNIgBARK95oj31nnUTAUVSkC' + 'version': 'q2DAyZY-ImVBSPNbsOvsZoGPWDEb2CkzQrQNhUCtUqMC' } ], 'condition': 'host_os == "mac"', From 4490e7cf92526f0967c268aebd86ea7442204d70 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 2 Mar 2020 03:14:01 -0500 Subject: [PATCH 108/521] Roll fuchsia/sdk/core/linux-amd64 from 22R78... to 9NHsJ... (#16882) --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 29571cceae669..1f00a5dfc8bf3 100644 --- a/DEPS +++ b/DEPS @@ -566,7 +566,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': '22R78LbP1OFYyQ6N1PZcxj-VzMMV8nzQ49qI9n0R6o8C' + 'version': '9NHsJyIUIc_VTU-hYxxnL-tcZjH86caq26JptWWT6-cC' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 87274eb88a9d5..8d88122a72396 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: 747cb2ebb1f3f46b7f04c5f801bef655 +Signature: cc59ba1f85a6bb78cc85b38f43f30df9 UNUSED LICENSES: From a39e7ac44405956da7fa354161134e9254406ea5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 2 Mar 2020 08:09:02 -0500 Subject: [PATCH 109/521] Roll src/third_party/skia 367dbff98555..986680240f81 (1 commits) (#16884) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1f00a5dfc8bf3..12b553049a945 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '367dbff985558a4de5b8bd46fb0962d14fe6193e', + 'skia_revision': '986680240f81ee8a7f3b8e6c41e34fe4a199fdc4', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0b0a0f997088c..774d1ae6001fc 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: be445aa884e8bd7aec32a7ff69e69c71 +Signature: 50ed9fcfa2cf47c06e04cc7f960e2732 UNUSED LICENSES: From 62b1e50ed8a2e456d244876678f8daaf2e960238 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 2 Mar 2020 09:24:02 -0500 Subject: [PATCH 110/521] Roll src/third_party/dart 860dca93ea42..fbe9f6115d2f (9 commits) (#16885) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++------------ 3 files changed, 122 insertions(+), 126 deletions(-) diff --git a/DEPS b/DEPS index 12b553049a945..b85b501080e49 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '860dca93ea422ba12a9390de2a83c2a45968e083', + 'dart_revision': 'fbe9f6115d2fac78c5dd4a044b34e2d493edd32c', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 07710a2e8ca39..42774df871658 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 3c0a2f3fb81bac00c499da5d6b643f5c +Signature: fa42072f1e498d8c20e3a378f2f0a0ee UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 51f4a37524611..6cdcbe8cb194f 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 5e474ee860a3dfa5970a6c54b1cb584152f9c86f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 2 Mar 2020 12:49:07 -0500 Subject: [PATCH 111/521] Roll src/third_party/skia 986680240f81..9dd0bd78b2d7 (2 commits) (#16886) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 58 +------------------------------- 2 files changed, 2 insertions(+), 58 deletions(-) diff --git a/DEPS b/DEPS index b85b501080e49..6ed3ed7f21d4b 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '986680240f81ee8a7f3b8e6c41e34fe4a199fdc4', + 'skia_revision': '9dd0bd78b2d77f365871d0b4ddfe280297c78ceb', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 774d1ae6001fc..ff618cde67651 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 50ed9fcfa2cf47c06e04cc7f960e2732 +Signature: 7b849f60ff55281f4fdc7349bce9b19d UNUSED LICENSES: @@ -1235,66 +1235,10 @@ FILE: ../../../third_party/skia/infra/bots/recipes/sync_and_compile.expected/Bui FILE: ../../../third_party/skia/infra/bots/recipes/sync_and_compile.expected/Build-Debian9-Clang-universal-devrel-Android_SKQP.json FILE: ../../../third_party/skia/infra/bots/recipes/sync_and_compile.expected/Build-Mac-Clang-x86_64-Debug-CommandBuffer.json FILE: ../../../third_party/skia/infra/bots/recipes/sync_and_compile.expected/Build-Win10-Clang-x86_64-Release-NoDEPS.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-All-Android.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-All-Android_NoGPUThreads.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Release-All-Android_Vulkan.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-MotoG4-CPU-Snapdragon617-arm-Release-All-Android.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-All-Android_CCPR.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-All-Android.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-Nexus7-CPU-Tegra3-arm-Release-All-Android.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel-GPU-Adreno530-arm-Debug-All-Android_ASAN.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel-GPU-Adreno530-arm64-Debug-All-Android_Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Debug-All-Android.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_Vulkan.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-TecnoSpark3Pro-GPU-PowerVRGE8320-arm-Debug-All-Android.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-ChromeOS-Clang-AcerChromebookR13Convertible-GPU-PowerVRGX6250-arm-Debug-All.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Debian10-GCC-GCE-CPU-AVX2-x86_64-Debug-All-Docker.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-BonusConfigs.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-MSAN.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SK_USE_DISCARDABLE_SCALEDIMAGECACHE.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-shard_00_10-Coverage.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-Lottie.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-SK_FORCE_RASTER_PIPELINE_BLITTER.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-TSAN.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Debian9-Clang-GCE-GPU-SwiftShader-x86_64-Release-All-SwiftShader.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Debian9-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Release-All-Vulkan.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Debug-All-Vulkan.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Debug-All-CommandBuffer.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Release-All-NativeFonts.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Debug-All-PDF.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Release-All.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-Metal.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Mac10.13-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Debug-All-CommandBuffer.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Mac10.14-Clang-MacBookAir7.2-GPU-IntelHD6000-x86_64-Debug-All.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL1.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-DDL3.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Vulkan.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_PreAbandonGpuContext_SK_CPU_LIMIT_SSE41.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-GpuTess.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-NonNVPR.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-BonusConfigs.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-ReleaseAndAbandonGpuContext.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-NUC5i7RYH-CPU-AVX2-x86_64-Debug-All-NativeFonts_GDI.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Release-All-ANGLE.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Release-All-ANGLE.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Release-All-Vulkan.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win10-MSVC-LenovoYogaC630-GPU-Adreno630-arm64-Debug-All-ANGLE.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win2019-Clang-GCE-CPU-AVX2-x86_64-Debug-All-FAAA.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-Win2019-Clang-GCE-CPU-AVX2-x86_64-Debug-All-FSAA.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-iOS-Clang-iPadPro-GPU-PowerVRGT7800-arm64-Release-All.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/Test-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Release-All-Metal.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/failed_dm.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/failed_get_hashes.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/failed_pull.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/failed_push.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/internal_bot_5.json -FILE: ../../../third_party/skia/infra/bots/recipes/test.expected/trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/test_canvaskit.expected/Test-Debian9-EMCC-GCE-GPU-WEBGL1-wasm-Debug-All-CanvasKit.json FILE: ../../../third_party/skia/infra/bots/recipes/test_canvaskit.expected/canvaskit_trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/test_lottie_web.expected/Test-Debian9-none-GCE-CPU-AVX2-x86_64-Debug-All-LottieWeb.json From 38f497c4db30c1e627dbfe15ecc10dd891d6acf0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 2 Mar 2020 14:24:02 -0500 Subject: [PATCH 112/521] Roll src/third_party/skia 9dd0bd78b2d7..470f0637aeea (11 commits) (#16887) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 4 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++++++--------------- 3 files changed, 128 insertions(+), 122 deletions(-) diff --git a/DEPS b/DEPS index 6ed3ed7f21d4b..5cce8c9aeba77 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '9dd0bd78b2d77f365871d0b4ddfe280297c78ceb', + 'skia_revision': '470f0637aeea7222f1216b22a39cf71d28575dc4', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ff618cde67651..2f279ad4a1c3a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 7b849f60ff55281f4fdc7349bce9b19d +Signature: fc2bd6b9ecc2cabd5149efe1981a3059 UNUSED LICENSES: @@ -5631,6 +5631,8 @@ FILE: ../../../third_party/skia/modules/skottie/src/layers/shapelayer/Repeater.c FILE: ../../../third_party/skia/modules/skottie/src/layers/shapelayer/RoundCorners.cpp FILE: ../../../third_party/skia/modules/skottie/src/layers/shapelayer/ShapeLayer.h FILE: ../../../third_party/skia/modules/skottie/src/layers/shapelayer/TrimPaths.cpp +FILE: ../../../third_party/skia/modules/sksg/include/SkSGDashEffect.h +FILE: ../../../third_party/skia/modules/sksg/src/SkSGDashEffect.cpp FILE: ../../../third_party/skia/modules/skshaper/src/SkShaper_coretext.cpp FILE: ../../../third_party/skia/samplecode/Sample3D.cpp FILE: ../../../third_party/skia/src/core/SkCanvasMatrix.h diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 6cdcbe8cb194f..51f4a37524611 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,66 +5143,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5234,66 +5174,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5690,6 +5570,130 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 5073cc7cb2a4de73adf91958a319449e60641876 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 2 Mar 2020 14:44:02 -0500 Subject: [PATCH 113/521] Roll src/third_party/dart fbe9f6115d2f..0b819161d778 (3 commits) (#16888) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 5cce8c9aeba77..825a102193d4b 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'fbe9f6115d2fac78c5dd4a044b34e2d493edd32c', + 'dart_revision': '0b819161d778de8bb32ebc8574891cb9f206dc05', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 42774df871658..6d5827a166e9b 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: fa42072f1e498d8c20e3a378f2f0a0ee +Signature: 4b9a2e3b748a6f9592207c2efc12f0e9 UNUSED LICENSES: From df942131b8c6f8018fea0d031b13df74f462d51c Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Mon, 2 Mar 2020 11:44:45 -0800 Subject: [PATCH 114/521] Revert "Try rasterizing images and layers only once , even when their rasterization fails. Further enforce the same access threshold on layers as on Pictures. Previously layers would always be cached. The latter is a semantic change. (#16545)" (#16889) This caused regression in several benchmarks, including: animated_placeholder_perf. Regression tracked in https://github.com/flutter/flutter/issues/51776. This reverts commit 01a52b9947054f57398f2aaa2b59e7d501506580. --- flow/raster_cache.cc | 39 +++++++++++------------ flow/raster_cache.h | 3 +- flow/raster_cache_unittests.cc | 56 +++++++++------------------------- 3 files changed, 34 insertions(+), 64 deletions(-) diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index 46253c97c509c..f179905ed8e53 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -119,15 +119,24 @@ static RasterCacheResult Rasterize( return {surface->makeImageSnapshot(), logical_rect}; } -bool RasterCache::Prepare(PrerollContext* context, +RasterCacheResult RasterizePicture(SkPicture* picture, + GrContext* context, + const SkMatrix& ctm, + SkColorSpace* dst_color_space, + bool checkerboard) { + return Rasterize(context, ctm, dst_color_space, checkerboard, + picture->cullRect(), + [=](SkCanvas* canvas) { canvas->drawPicture(picture); }); +} + +void RasterCache::Prepare(PrerollContext* context, Layer* layer, const SkMatrix& ctm) { LayerRasterCacheKey cache_key(layer->unique_id(), ctm); - Entry& entry = layer_cache_[cache_key]; - - if (!entry.did_rasterize && !entry.image.is_valid() && - entry.access_count >= access_threshold_) { + entry.access_count++; + entry.used_this_frame = true; + if (!entry.image.is_valid()) { entry.image = Rasterize( context->gr_context, ctm, context->dst_color_space, checkerboard_images_, layer->paint_bounds(), @@ -152,12 +161,7 @@ bool RasterCache::Prepare(PrerollContext* context, layer->Paint(paintContext); } }); - - entry.did_rasterize = true; - - return true; } - return false; } bool RasterCache::Prepare(GrContext* context, @@ -196,19 +200,12 @@ bool RasterCache::Prepare(GrContext* context, return false; } - // Don't try to rasterize pictures that were already attempted to be - // rasterized even if the image is invalid. - if (!entry.did_rasterize && !entry.image.is_valid()) { - entry.image = - Rasterize(context, transformation_matrix, dst_color_space, - checkerboard_images_, picture->cullRect(), - [=](SkCanvas* canvas) { canvas->drawPicture(picture); }); - - entry.did_rasterize = true; + if (!entry.image.is_valid()) { + entry.image = RasterizePicture(picture, context, transformation_matrix, + dst_color_space, checkerboard_images_); picture_cached_this_frame_++; - return true; } - return false; + return true; } RasterCacheResult RasterCache::Get(const SkPicture& picture, diff --git a/flow/raster_cache.h b/flow/raster_cache.h index 93e6200cbf41d..b51382a5c8d2d 100644 --- a/flow/raster_cache.h +++ b/flow/raster_cache.h @@ -84,7 +84,7 @@ class RasterCache { bool is_complex, bool will_change); - bool Prepare(PrerollContext* context, Layer* layer, const SkMatrix& ctm); + void Prepare(PrerollContext* context, Layer* layer, const SkMatrix& ctm); RasterCacheResult Get(const SkPicture& picture, const SkMatrix& ctm) const; @@ -101,7 +101,6 @@ class RasterCache { private: struct Entry { bool used_this_frame = false; - bool did_rasterize = false; size_t access_count = 0; RasterCacheResult image; }; diff --git a/flow/raster_cache_unittests.cc b/flow/raster_cache_unittests.cc index 16abea65e5ca8..03e3b3879c469 100644 --- a/flow/raster_cache_unittests.cc +++ b/flow/raster_cache_unittests.cc @@ -4,7 +4,6 @@ #include "flutter/flow/raster_cache.h" -#include "flutter/flow/layers/container_layer.h" #include "gtest/gtest.h" #include "third_party/skia/include/core/SkPicture.h" #include "third_party/skia/include/core/SkPictureRecorder.h" @@ -30,7 +29,7 @@ TEST(RasterCache, SimpleInitialization) { ASSERT_TRUE(true); } -TEST(RasterCache, ThresholdIsRespectedForPictures) { +TEST(RasterCache, ThresholdIsRespected) { size_t threshold = 2; flutter::RasterCache cache(threshold); @@ -38,6 +37,8 @@ TEST(RasterCache, ThresholdIsRespectedForPictures) { auto picture = GetSamplePicture(); + sk_sp image; + sk_sp srgb = SkColorSpace::MakeSRGB(); ASSERT_FALSE( cache.Prepare(NULL, picture.get(), matrix, srgb.get(), true, false)); @@ -60,28 +61,21 @@ TEST(RasterCache, ThresholdIsRespectedForPictures) { ASSERT_TRUE(cache.Get(*picture, matrix).is_valid()); } -TEST(RasterCache, ThresholdIsRespectedForLayers) { - size_t threshold = 2; +TEST(RasterCache, AccessThresholdOfZeroDisablesCaching) { + size_t threshold = 0; flutter::RasterCache cache(threshold); SkMatrix matrix = SkMatrix::I(); - ContainerLayer layer; - - sk_sp srgb = SkColorSpace::MakeSRGB(); - ASSERT_FALSE(cache.Prepare(nullptr, &layer, matrix)); - ASSERT_FALSE(cache.Prepare(nullptr, &layer, matrix)); - ASSERT_FALSE(cache.Prepare(nullptr, &layer, matrix)); - - // 1st access. - ASSERT_FALSE(cache.Get(&layer, matrix).is_valid()); + auto picture = GetSamplePicture(); - ASSERT_FALSE(cache.Prepare(nullptr, &layer, matrix)); + sk_sp image; - // 2st access. - ASSERT_FALSE(cache.Get(&layer, matrix).is_valid()); + sk_sp srgb = SkColorSpace::MakeSRGB(); + ASSERT_FALSE( + cache.Prepare(NULL, picture.get(), matrix, srgb.get(), true, false)); - // Calling Prepare now would crash due to the nullptr. + ASSERT_FALSE(cache.Get(*picture, matrix).is_valid()); } TEST(RasterCache, PictureCacheLimitPerFrameIsRespectedWhenZero) { @@ -92,6 +86,8 @@ TEST(RasterCache, PictureCacheLimitPerFrameIsRespectedWhenZero) { auto picture = GetSamplePicture(); + sk_sp image; + sk_sp srgb = SkColorSpace::MakeSRGB(); ASSERT_FALSE( cache.Prepare(NULL, picture.get(), matrix, srgb.get(), true, false)); @@ -107,6 +103,8 @@ TEST(RasterCache, SweepsRemoveUnusedFrames) { auto picture = GetSamplePicture(); + sk_sp image; + sk_sp srgb = SkColorSpace::MakeSRGB(); ASSERT_FALSE(cache.Prepare(NULL, picture.get(), matrix, srgb.get(), true, false)); // 1 @@ -124,29 +122,5 @@ TEST(RasterCache, SweepsRemoveUnusedFrames) { ASSERT_FALSE(cache.Get(*picture, matrix).is_valid()); } -TEST(RasterCache, TryRasterizngOnlyOnce) { - size_t threshold = 1; - flutter::RasterCache cache(threshold); - - SkMatrix matrix = SkMatrix::I(); - // Test picture too large to successfully rasterize. - auto picture = SkPicture::MakePlaceholder(SkRect::MakeWH(2e12, 2e12)); - - sk_sp srgb = SkColorSpace::MakeSRGB(); - ASSERT_FALSE(cache.Prepare(nullptr, picture.get(), matrix, srgb.get(), true, - false)); // 1 - ASSERT_FALSE(cache.Get(*picture, matrix).is_valid()); - - // Rasterization ran, though Get() below returns an invalid image. - ASSERT_TRUE(cache.Prepare(nullptr, picture.get(), matrix, srgb.get(), true, - false)); // 2 - ASSERT_FALSE(cache.Get(*picture, matrix).is_valid()); - - // This time we should not try again to rasterize. - ASSERT_FALSE(cache.Prepare(nullptr, picture.get(), matrix, srgb.get(), true, - false)); // 2 - ASSERT_FALSE(cache.Get(*picture, matrix).is_valid()); -} - } // namespace testing } // namespace flutter From b230adbb3b5e1da8463e736aae7ed89f7feedd58 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 2 Mar 2020 15:59:02 -0500 Subject: [PATCH 115/521] Roll src/third_party/skia 470f0637aeea..ded437003d0e (6 commits) (#16891) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 40 ++++++++++++++++++++++++++++++-- sky/packages/sky_engine/LICENSE | 30 ++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 825a102193d4b..c5e6389561d4b 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '470f0637aeea7222f1216b22a39cf71d28575dc4', + 'skia_revision': 'ded437003d0e1ad5581b07d3d2afadccc68dc5b2', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 2f279ad4a1c3a..68155c7fe46f3 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: fc2bd6b9ecc2cabd5149efe1981a3059 +Signature: 74fb527eceeeacc6cded0eda3baae3b9 UNUSED LICENSES: @@ -3924,6 +3924,7 @@ FILE: ../../../third_party/skia/gm/crbug_1041204.cpp FILE: ../../../third_party/skia/gm/crbug_224618.cpp FILE: ../../../third_party/skia/include/gpu/d3d/GrD3D12.h FILE: ../../../third_party/skia/include/gpu/d3d/GrD3DBackendContext.h +FILE: ../../../third_party/skia/src/core/SkIDChangeListener.h FILE: ../../../third_party/skia/src/core/SkVM_fwd.h FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DCaps.cpp FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DCaps.h @@ -6258,6 +6259,41 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== +==================================================================================================== +LIBRARY: skia +ORIGIN: ../../../third_party/skia/infra/bots/gen_tasks_logic/dm_flags.go + ../../../LICENSE +TYPE: LicenseType.bsd +FILE: ../../../third_party/skia/infra/bots/gen_tasks_logic/dm_flags.go +---------------------------------------------------------------------------------------------------- +Copyright 2020 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + ==================================================================================================== LIBRARY: skia ORIGIN: ../../../third_party/skia/infra/bots/gen_tasks_logic/gen_tasks_logic.go + ../../../LICENSE @@ -7005,4 +7041,4 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ==================================================================================================== -Total license count: 56 +Total license count: 57 diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 51f4a37524611..17f306abefc94 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -12859,6 +12859,36 @@ met: contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +skia + +Copyright 2020 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 63bdf3e1be12c8bfe26f3c4a63f44f922817c492 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 2 Mar 2020 16:14:02 -0500 Subject: [PATCH 116/521] Roll fuchsia/sdk/core/mac-amd64 from q2DAy... to WmA2M... (#16892) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index c5e6389561d4b..b413d14c36f12 100644 --- a/DEPS +++ b/DEPS @@ -546,7 +546,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'q2DAyZY-ImVBSPNbsOvsZoGPWDEb2CkzQrQNhUCtUqMC' + 'version': 'WmA2MJCQRzXc4no2ulvX90sV6vyNOV3VkG3NGsQFgBoC' } ], 'condition': 'host_os == "mac"', From e54f2c8c1c3d8dd281c0416092196bd735a2ce5e Mon Sep 17 00:00:00 2001 From: Dan Field Date: Mon, 2 Mar 2020 16:56:51 -0800 Subject: [PATCH 117/521] Const finder missing `static const` list/map/set fields. (#16896) --- tools/const_finder/lib/const_finder.dart | 32 ++- .../const_finder/test/const_finder_test.dart | 40 ++- tools/const_finder/test/fixtures/lib/box.dart | 227 ++++++++++++++++++ .../test/fixtures/lib/consts.dart | 27 +++ 4 files changed, 315 insertions(+), 11 deletions(-) create mode 100644 tools/const_finder/test/fixtures/lib/box.dart diff --git a/tools/const_finder/lib/const_finder.dart b/tools/const_finder/lib/const_finder.dart index 1eb8776a91f40..481bd24062c6a 100644 --- a/tools/const_finder/lib/const_finder.dart +++ b/tools/const_finder/lib/const_finder.dart @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'dart:collection'; + import 'package:kernel/kernel.dart' hide MapEntry; import 'package:meta/meta.dart'; @@ -13,7 +15,7 @@ class _ConstVisitor extends RecursiveVisitor { ) : assert(kernelFilePath != null), assert(classLibraryUri != null), assert(className != null), - _visitedInstnaces = {}, + _visitedInstances = {}, constantInstances = >[], nonConstantLocations = >[]; @@ -26,15 +28,30 @@ class _ConstVisitor extends RecursiveVisitor { /// The name of the class to find. final String className; - final Set _visitedInstnaces; + final Set _visitedInstances; final List> constantInstances; final List> nonConstantLocations; bool _matches(Class node) { - return node.enclosingLibrary.canonicalName.name == classLibraryUri && + return node.enclosingLibrary.importUri.toString() == classLibraryUri && node.name == className; } + // Avoid visiting the same constant more than once. + Set _cache = LinkedHashSet.identity(); + + @override + void defaultConstant(Constant node) { + if (_cache.add(node)) { + super.defaultConstant(node); + } + } + + @override + void defaultConstantReference(Constant node) { + defaultConstant(node); + } + @override void visitConstructorInvocation(ConstructorInvocation node) { final Class parentClass = node.target.parent as Class; @@ -51,9 +68,8 @@ class _ConstVisitor extends RecursiveVisitor { @override void visitInstanceConstantReference(InstanceConstant node) { - node.fieldValues.values.whereType().forEach(visitInstanceConstantReference); + super.visitInstanceConstantReference(node); if (!_matches(node.classNode)) { - super.visitInstanceConstantReference(node); return; } final Map instance = {}; @@ -62,9 +78,9 @@ class _ConstVisitor extends RecursiveVisitor { continue; } final PrimitiveConstant value = kvp.value as PrimitiveConstant; - instance[kvp.key.canonicalName.name] = value.value; + instance[kvp.key.asField.name.name] = value.value; } - if (_visitedInstnaces.add(instance.toString())) { + if (_visitedInstances.add(instance.toString())) { constantInstances.add(instance); } } @@ -90,7 +106,7 @@ class ConstFinder { /// Finds all instances Map findInstances() { - _visitor._visitedInstnaces.clear(); + _visitor._visitedInstances.clear(); for (Library library in loadComponentFromBinary(_visitor.kernelFilePath).libraries) { library.visitChildren(_visitor); } diff --git a/tools/const_finder/test/const_finder_test.dart b/tools/const_finder/test/const_finder_test.dart index dac3a465a9ee2..c3b1a8dc20cbe 100644 --- a/tools/const_finder/test/const_finder_test.dart +++ b/tools/const_finder/test/const_finder_test.dart @@ -19,9 +19,11 @@ void expect(T value, T expected) { final String basePath = path.canonicalize(path.join(path.dirname(Platform.script.path), '..')); final String fixtures = path.join(basePath, 'test', 'fixtures'); +final String box = path.join(fixtures, 'lib', 'box.dart'); final String consts = path.join(fixtures, 'lib', 'consts.dart'); final String dotPackages = path.join(fixtures, '.packages'); final String constsAndNon = path.join(fixtures, 'lib', 'consts_and_non.dart'); +final String boxDill = path.join(fixtures, 'box.dill'); final String constsDill = path.join(fixtures, 'consts.dill'); final String constsAndNonDill = path.join(fixtures, 'consts_and_non.dill'); @@ -30,18 +32,37 @@ final String constsAndNonDill = path.join(fixtures, 'consts_and_non.dill'); final String dart = Platform.resolvedExecutable; final String bat = Platform.isWindows ? '.bat' : ''; +void _checkRecursion() { + stdout.writeln('Checking recursive calls.'); + final ConstFinder finder = ConstFinder( + kernelFilePath: boxDill, + classLibraryUri: 'package:const_finder_fixtures/box.dart', + className: 'Box', + ); + // Will timeout if we did things wrong. + jsonEncode(finder.findInstances()); +} + void _checkConsts() { - print('Checking for expected constants.'); + stdout.writeln('Checking for expected constants.'); final ConstFinder finder = ConstFinder( kernelFilePath: constsDill, classLibraryUri: 'package:const_finder_fixtures/target.dart', className: 'Target', ); - expect( jsonEncode(finder.findInstances()), jsonEncode({ 'constantInstances': >[ + {'stringValue': '100', 'intValue': 100, 'targetValue': null}, + {'stringValue': '102', 'intValue': 102, 'targetValue': null}, + {'stringValue': '101', 'intValue': 101}, + {'stringValue': '103', 'intValue': 103, 'targetValue': null}, + {'stringValue': '105', 'intValue': 105, 'targetValue': null}, + {'stringValue': '104', 'intValue': 104}, + {'stringValue': '106', 'intValue': 106, 'targetValue': null}, + {'stringValue': '108', 'intValue': 108, 'targetValue': null}, + {'stringValue': '107', 'intValue': 107}, {'stringValue': '1', 'intValue': 1, 'targetValue': null}, {'stringValue': '4', 'intValue': 4, 'targetValue': null}, {'stringValue': '2', 'intValue': 2}, @@ -58,7 +79,7 @@ void _checkConsts() { } void _checkNonConsts() { - print('Checking for non-constant instances.'); + stdout.writeln('Checking for non-constant instances.'); final ConstFinder finder = ConstFinder( kernelFilePath: constsAndNonDill, classLibraryUri: 'package:const_finder_fixtures/target.dart', @@ -121,6 +142,18 @@ Future main(List args) async { stdout.writeln('Generating kernel fixtures...'); stdout.writeln(consts); + + _checkProcessResult(Process.runSync(dart, [ + frontendServer, + '--sdk-root=$sdkRoot', + '--target=flutter', + '--aot', + '--tfa', + '--packages=$dotPackages', + '--output-dill=$boxDill', + box, + ])); + _checkProcessResult(Process.runSync(dart, [ frontendServer, '--sdk-root=$sdkRoot', @@ -143,6 +176,7 @@ Future main(List args) async { constsAndNon, ])); + _checkRecursion(); _checkConsts(); _checkNonConsts(); } finally { diff --git a/tools/const_finder/test/fixtures/lib/box.dart b/tools/const_finder/test/fixtures/lib/box.dart new file mode 100644 index 0000000000000..f84961d10883b --- /dev/null +++ b/tools/const_finder/test/fixtures/lib/box.dart @@ -0,0 +1,227 @@ +// 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. + +// If canonicalization uses deep structural hashing without memoizing, this +// will exhibit superlinear time. + +// Compare with Dart version of this test at: +// https://github.com/dart-lang/sdk/blob/ca3ad264a64937d5d336cd04dbf2746d1b7d8fc4/tests/language_2/canonicalize/hashing_memoize_instance_test.dart + +class Box { + final Object content1; + final Object content2; + const Box(this.content1, this.content2); +} + +const Box box1_0 = Box(null, null); +const Box box1_1 = Box(box1_0, box1_0); +const Box box1_2 = Box(box1_1, box1_1); +const Box box1_3 = Box(box1_2, box1_2); +const Box box1_4 = Box(box1_3, box1_3); +const Box box1_5 = Box(box1_4, box1_4); +const Box box1_6 = Box(box1_5, box1_5); +const Box box1_7 = Box(box1_6, box1_6); +const Box box1_8 = Box(box1_7, box1_7); +const Box box1_9 = Box(box1_8, box1_8); +const Box box1_10 = Box(box1_9, box1_9); +const Box box1_11 = Box(box1_10, box1_10); +const Box box1_12 = Box(box1_11, box1_11); +const Box box1_13 = Box(box1_12, box1_12); +const Box box1_14 = Box(box1_13, box1_13); +const Box box1_15 = Box(box1_14, box1_14); +const Box box1_16 = Box(box1_15, box1_15); +const Box box1_17 = Box(box1_16, box1_16); +const Box box1_18 = Box(box1_17, box1_17); +const Box box1_19 = Box(box1_18, box1_18); +const Box box1_20 = Box(box1_19, box1_19); +const Box box1_21 = Box(box1_20, box1_20); +const Box box1_22 = Box(box1_21, box1_21); +const Box box1_23 = Box(box1_22, box1_22); +const Box box1_24 = Box(box1_23, box1_23); +const Box box1_25 = Box(box1_24, box1_24); +const Box box1_26 = Box(box1_25, box1_25); +const Box box1_27 = Box(box1_26, box1_26); +const Box box1_28 = Box(box1_27, box1_27); +const Box box1_29 = Box(box1_28, box1_28); +const Box box1_30 = Box(box1_29, box1_29); +const Box box1_31 = Box(box1_30, box1_30); +const Box box1_32 = Box(box1_31, box1_31); +const Box box1_33 = Box(box1_32, box1_32); +const Box box1_34 = Box(box1_33, box1_33); +const Box box1_35 = Box(box1_34, box1_34); +const Box box1_36 = Box(box1_35, box1_35); +const Box box1_37 = Box(box1_36, box1_36); +const Box box1_38 = Box(box1_37, box1_37); +const Box box1_39 = Box(box1_38, box1_38); +const Box box1_40 = Box(box1_39, box1_39); +const Box box1_41 = Box(box1_40, box1_40); +const Box box1_42 = Box(box1_41, box1_41); +const Box box1_43 = Box(box1_42, box1_42); +const Box box1_44 = Box(box1_43, box1_43); +const Box box1_45 = Box(box1_44, box1_44); +const Box box1_46 = Box(box1_45, box1_45); +const Box box1_47 = Box(box1_46, box1_46); +const Box box1_48 = Box(box1_47, box1_47); +const Box box1_49 = Box(box1_48, box1_48); +const Box box1_50 = Box(box1_49, box1_49); +const Box box1_51 = Box(box1_50, box1_50); +const Box box1_52 = Box(box1_51, box1_51); +const Box box1_53 = Box(box1_52, box1_52); +const Box box1_54 = Box(box1_53, box1_53); +const Box box1_55 = Box(box1_54, box1_54); +const Box box1_56 = Box(box1_55, box1_55); +const Box box1_57 = Box(box1_56, box1_56); +const Box box1_58 = Box(box1_57, box1_57); +const Box box1_59 = Box(box1_58, box1_58); +const Box box1_60 = Box(box1_59, box1_59); +const Box box1_61 = Box(box1_60, box1_60); +const Box box1_62 = Box(box1_61, box1_61); +const Box box1_63 = Box(box1_62, box1_62); +const Box box1_64 = Box(box1_63, box1_63); +const Box box1_65 = Box(box1_64, box1_64); +const Box box1_66 = Box(box1_65, box1_65); +const Box box1_67 = Box(box1_66, box1_66); +const Box box1_68 = Box(box1_67, box1_67); +const Box box1_69 = Box(box1_68, box1_68); +const Box box1_70 = Box(box1_69, box1_69); +const Box box1_71 = Box(box1_70, box1_70); +const Box box1_72 = Box(box1_71, box1_71); +const Box box1_73 = Box(box1_72, box1_72); +const Box box1_74 = Box(box1_73, box1_73); +const Box box1_75 = Box(box1_74, box1_74); +const Box box1_76 = Box(box1_75, box1_75); +const Box box1_77 = Box(box1_76, box1_76); +const Box box1_78 = Box(box1_77, box1_77); +const Box box1_79 = Box(box1_78, box1_78); +const Box box1_80 = Box(box1_79, box1_79); +const Box box1_81 = Box(box1_80, box1_80); +const Box box1_82 = Box(box1_81, box1_81); +const Box box1_83 = Box(box1_82, box1_82); +const Box box1_84 = Box(box1_83, box1_83); +const Box box1_85 = Box(box1_84, box1_84); +const Box box1_86 = Box(box1_85, box1_85); +const Box box1_87 = Box(box1_86, box1_86); +const Box box1_88 = Box(box1_87, box1_87); +const Box box1_89 = Box(box1_88, box1_88); +const Box box1_90 = Box(box1_89, box1_89); +const Box box1_91 = Box(box1_90, box1_90); +const Box box1_92 = Box(box1_91, box1_91); +const Box box1_93 = Box(box1_92, box1_92); +const Box box1_94 = Box(box1_93, box1_93); +const Box box1_95 = Box(box1_94, box1_94); +const Box box1_96 = Box(box1_95, box1_95); +const Box box1_97 = Box(box1_96, box1_96); +const Box box1_98 = Box(box1_97, box1_97); +const Box box1_99 = Box(box1_98, box1_98); + +const Box box2_0 = Box(null, null); +const Box box2_1 = Box(box2_0, box2_0); +const Box box2_2 = Box(box2_1, box2_1); +const Box box2_3 = Box(box2_2, box2_2); +const Box box2_4 = Box(box2_3, box2_3); +const Box box2_5 = Box(box2_4, box2_4); +const Box box2_6 = Box(box2_5, box2_5); +const Box box2_7 = Box(box2_6, box2_6); +const Box box2_8 = Box(box2_7, box2_7); +const Box box2_9 = Box(box2_8, box2_8); +const Box box2_10 = Box(box2_9, box2_9); +const Box box2_11 = Box(box2_10, box2_10); +const Box box2_12 = Box(box2_11, box2_11); +const Box box2_13 = Box(box2_12, box2_12); +const Box box2_14 = Box(box2_13, box2_13); +const Box box2_15 = Box(box2_14, box2_14); +const Box box2_16 = Box(box2_15, box2_15); +const Box box2_17 = Box(box2_16, box2_16); +const Box box2_18 = Box(box2_17, box2_17); +const Box box2_19 = Box(box2_18, box2_18); +const Box box2_20 = Box(box2_19, box2_19); +const Box box2_21 = Box(box2_20, box2_20); +const Box box2_22 = Box(box2_21, box2_21); +const Box box2_23 = Box(box2_22, box2_22); +const Box box2_24 = Box(box2_23, box2_23); +const Box box2_25 = Box(box2_24, box2_24); +const Box box2_26 = Box(box2_25, box2_25); +const Box box2_27 = Box(box2_26, box2_26); +const Box box2_28 = Box(box2_27, box2_27); +const Box box2_29 = Box(box2_28, box2_28); +const Box box2_30 = Box(box2_29, box2_29); +const Box box2_31 = Box(box2_30, box2_30); +const Box box2_32 = Box(box2_31, box2_31); +const Box box2_33 = Box(box2_32, box2_32); +const Box box2_34 = Box(box2_33, box2_33); +const Box box2_35 = Box(box2_34, box2_34); +const Box box2_36 = Box(box2_35, box2_35); +const Box box2_37 = Box(box2_36, box2_36); +const Box box2_38 = Box(box2_37, box2_37); +const Box box2_39 = Box(box2_38, box2_38); +const Box box2_40 = Box(box2_39, box2_39); +const Box box2_41 = Box(box2_40, box2_40); +const Box box2_42 = Box(box2_41, box2_41); +const Box box2_43 = Box(box2_42, box2_42); +const Box box2_44 = Box(box2_43, box2_43); +const Box box2_45 = Box(box2_44, box2_44); +const Box box2_46 = Box(box2_45, box2_45); +const Box box2_47 = Box(box2_46, box2_46); +const Box box2_48 = Box(box2_47, box2_47); +const Box box2_49 = Box(box2_48, box2_48); +const Box box2_50 = Box(box2_49, box2_49); +const Box box2_51 = Box(box2_50, box2_50); +const Box box2_52 = Box(box2_51, box2_51); +const Box box2_53 = Box(box2_52, box2_52); +const Box box2_54 = Box(box2_53, box2_53); +const Box box2_55 = Box(box2_54, box2_54); +const Box box2_56 = Box(box2_55, box2_55); +const Box box2_57 = Box(box2_56, box2_56); +const Box box2_58 = Box(box2_57, box2_57); +const Box box2_59 = Box(box2_58, box2_58); +const Box box2_60 = Box(box2_59, box2_59); +const Box box2_61 = Box(box2_60, box2_60); +const Box box2_62 = Box(box2_61, box2_61); +const Box box2_63 = Box(box2_62, box2_62); +const Box box2_64 = Box(box2_63, box2_63); +const Box box2_65 = Box(box2_64, box2_64); +const Box box2_66 = Box(box2_65, box2_65); +const Box box2_67 = Box(box2_66, box2_66); +const Box box2_68 = Box(box2_67, box2_67); +const Box box2_69 = Box(box2_68, box2_68); +const Box box2_70 = Box(box2_69, box2_69); +const Box box2_71 = Box(box2_70, box2_70); +const Box box2_72 = Box(box2_71, box2_71); +const Box box2_73 = Box(box2_72, box2_72); +const Box box2_74 = Box(box2_73, box2_73); +const Box box2_75 = Box(box2_74, box2_74); +const Box box2_76 = Box(box2_75, box2_75); +const Box box2_77 = Box(box2_76, box2_76); +const Box box2_78 = Box(box2_77, box2_77); +const Box box2_79 = Box(box2_78, box2_78); +const Box box2_80 = Box(box2_79, box2_79); +const Box box2_81 = Box(box2_80, box2_80); +const Box box2_82 = Box(box2_81, box2_81); +const Box box2_83 = Box(box2_82, box2_82); +const Box box2_84 = Box(box2_83, box2_83); +const Box box2_85 = Box(box2_84, box2_84); +const Box box2_86 = Box(box2_85, box2_85); +const Box box2_87 = Box(box2_86, box2_86); +const Box box2_88 = Box(box2_87, box2_87); +const Box box2_89 = Box(box2_88, box2_88); +const Box box2_90 = Box(box2_89, box2_89); +const Box box2_91 = Box(box2_90, box2_90); +const Box box2_92 = Box(box2_91, box2_91); +const Box box2_93 = Box(box2_92, box2_92); +const Box box2_94 = Box(box2_93, box2_93); +const Box box2_95 = Box(box2_94, box2_94); +const Box box2_96 = Box(box2_95, box2_95); +const Box box2_97 = Box(box2_96, box2_96); +const Box box2_98 = Box(box2_97, box2_97); +const Box box2_99 = Box(box2_98, box2_98); + +Object confuse(Box x) { + try { throw x; } catch (e) { return e; } +} + +void main() { + if (!identical(confuse(box1_99), confuse(box2_99))) { + throw Exception('box1_99 !== box2_99'); + } +} diff --git a/tools/const_finder/test/fixtures/lib/consts.dart b/tools/const_finder/test/fixtures/lib/consts.dart index 1fd3a64bd67cb..4095df150c94e 100644 --- a/tools/const_finder/test/fixtures/lib/consts.dart +++ b/tools/const_finder/test/fixtures/lib/consts.dart @@ -28,6 +28,9 @@ void main() { print(ignoreMe3); createTargetInPackage(); + + final StaticConstInitializer staticConstMap = StaticConstInitializer(); + staticConstMap.useOne(1); } class IgnoreMe { @@ -36,6 +39,30 @@ class IgnoreMe { final Target target; } +class StaticConstInitializer { + static const List targets = [ + Target('100', 100, null), + Target('101', 101, Target('102', 102, null)), + ]; + + static const Set targetSet = { + Target('103', 103, null), + Target('104', 104, Target('105', 105, null)), + }; + + + static const Map targetMap = { + 0: Target('106', 106, null), + 1: Target('107', 107, Target('108', 108, null)), + }; + + void useOne(int index) { + targets[index].hit(); + targetSet.skip(index).first.hit(); + targetMap[index].hit(); + } +} + void blah(Target target) { print(target); } From 10275fe661147b80593a4d5d8967ceae32ae9045 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 2 Mar 2020 20:29:01 -0500 Subject: [PATCH 118/521] Roll fuchsia/sdk/core/linux-amd64 from 9NHsJ... to uiAI5... (#16893) --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b413d14c36f12..836375f094211 100644 --- a/DEPS +++ b/DEPS @@ -566,7 +566,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': '9NHsJyIUIc_VTU-hYxxnL-tcZjH86caq26JptWWT6-cC' + 'version': 'uiAI5ubkK_zLwdEhx0bYAQV2Ymh9BRBJk9ofEtiznoAC' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 8d88122a72396..92c10a71d5f8b 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: cc59ba1f85a6bb78cc85b38f43f30df9 +Signature: e3ae6aef771255012b888e196f637b26 UNUSED LICENSES: From 8d046faf95b32dfa466728ba6847b1bf6fd10860 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 2 Mar 2020 20:34:01 -0500 Subject: [PATCH 119/521] Roll src/third_party/skia ded437003d0e..b43cfa4d3f96 (7 commits) (#16894) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 836375f094211..cb5783205d56e 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'ded437003d0e1ad5581b07d3d2afadccc68dc5b2', + 'skia_revision': 'b43cfa4d3f9630508d4fbda5dbd484046ebfabce', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 68155c7fe46f3..b99f8bf2f3d38 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 74fb527eceeeacc6cded0eda3baae3b9 +Signature: f4fd9cad88e690b7a690873aefccfb63 UNUSED LICENSES: @@ -5640,6 +5640,7 @@ FILE: ../../../third_party/skia/src/core/SkCanvasMatrix.h FILE: ../../../third_party/skia/src/core/SkCompressedDataUtils.cpp FILE: ../../../third_party/skia/src/core/SkCompressedDataUtils.h FILE: ../../../third_party/skia/src/core/SkM44.cpp +FILE: ../../../third_party/skia/src/core/SkVerticesPriv.h FILE: ../../../third_party/skia/src/gpu/GrDynamicAtlas.cpp FILE: ../../../third_party/skia/src/gpu/GrDynamicAtlas.h FILE: ../../../third_party/skia/src/gpu/GrEagerVertexAllocator.h From 9c5399315343a7aa69362171ce7831e7d6c1f8b5 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 2 Mar 2020 20:39:01 -0500 Subject: [PATCH 120/521] Roll src/third_party/dart 0b819161d778..ca3ad264a649 (18 commits) (#16898) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++------------ 3 files changed, 122 insertions(+), 126 deletions(-) diff --git a/DEPS b/DEPS index cb5783205d56e..182518957cdb2 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '0b819161d778de8bb32ebc8574891cb9f206dc05', + 'dart_revision': 'ca3ad264a64937d5d336cd04dbf2746d1b7d8fc4', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 6d5827a166e9b..8ccc901f26228 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 4b9a2e3b748a6f9592207c2efc12f0e9 +Signature: 2ae87f96c44d60589e4fefd76ecd5607 UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 17f306abefc94..5db764fbeb983 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 6991dd981bf73a0037390d8a9c2e8dd773a4c3e9 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Mon, 2 Mar 2020 22:09:04 -0500 Subject: [PATCH 121/521] Roll src/third_party/skia b43cfa4d3f96..8121d27b297c (10 commits) (#16899) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 6 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++++++--------------- 3 files changed, 129 insertions(+), 123 deletions(-) diff --git a/DEPS b/DEPS index 182518957cdb2..820da0b821ea1 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'b43cfa4d3f9630508d4fbda5dbd484046ebfabce', + 'skia_revision': '8121d27b297ce26cf6cd6c665463f49a34d769ba', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b99f8bf2f3d38..cb7905239aaa4 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: f4fd9cad88e690b7a690873aefccfb63 +Signature: 351a994f16f75fa930e30fa8bb3143d1 UNUSED LICENSES: @@ -1009,6 +1009,7 @@ FILE: ../../../third_party/skia/infra/bots/assets/gcloud_linux/VERSION FILE: ../../../third_party/skia/infra/bots/assets/go/VERSION FILE: ../../../third_party/skia/infra/bots/assets/go_win/VERSION FILE: ../../../third_party/skia/infra/bots/assets/ios-dev-image-11.4/VERSION +FILE: ../../../third_party/skia/infra/bots/assets/ios-dev-image-12.4/VERSION FILE: ../../../third_party/skia/infra/bots/assets/ios-dev-image-13.3/VERSION FILE: ../../../third_party/skia/infra/bots/assets/linux_vulkan_sdk/VERSION FILE: ../../../third_party/skia/infra/bots/assets/lottie-samples/VERSION @@ -3924,7 +3925,8 @@ FILE: ../../../third_party/skia/gm/crbug_1041204.cpp FILE: ../../../third_party/skia/gm/crbug_224618.cpp FILE: ../../../third_party/skia/include/gpu/d3d/GrD3D12.h FILE: ../../../third_party/skia/include/gpu/d3d/GrD3DBackendContext.h -FILE: ../../../third_party/skia/src/core/SkIDChangeListener.h +FILE: ../../../third_party/skia/include/private/SkIDChangeListener.h +FILE: ../../../third_party/skia/src/core/SkIDChangeListener.cpp FILE: ../../../third_party/skia/src/core/SkVM_fwd.h FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DCaps.cpp FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DCaps.h diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 5db764fbeb983..17f306abefc94 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,66 +5143,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5234,66 +5174,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5690,6 +5570,130 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 04fa001d28085916adb70e5a9a45edf7fcd72cbb Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 00:24:02 -0500 Subject: [PATCH 122/521] Roll src/third_party/skia 8121d27b297c..73ae40a424fa (1 commits) (#16900) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 820da0b821ea1..027135f5cffb9 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '8121d27b297ce26cf6cd6c665463f49a34d769ba', + 'skia_revision': '73ae40a424faf48896803178ce779e754cf6625d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index cb7905239aaa4..c4e4c1ae1c9e2 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 351a994f16f75fa930e30fa8bb3143d1 +Signature: 5ef6d8504160d1485bb8f310c23e9481 UNUSED LICENSES: From f9b78c5db2bc3087e1793947b11ca643c2d747cf Mon Sep 17 00:00:00 2001 From: Dan Field Date: Mon, 2 Mar 2020 21:30:28 -0800 Subject: [PATCH 123/521] Drop last usages of Dart_New from engine (#16838) Image Codec FrameInfo Scene/Picture toImage --- ci/licenses_golden/licenses_flutter | 2 - lib/ui/BUILD.gn | 2 - lib/ui/compositing.dart | 8 ++-- lib/ui/compositing/scene.cc | 6 ++- lib/ui/compositing/scene.h | 3 +- lib/ui/dart_ui.cc | 2 - lib/ui/painting.dart | 63 ++++++++++++++++----------- lib/ui/painting/codec.cc | 23 +++++----- lib/ui/painting/codec.h | 4 +- lib/ui/painting/frame_info.cc | 30 ------------- lib/ui/painting/frame_info.h | 37 ---------------- lib/ui/painting/image.h | 6 ++- lib/ui/painting/multi_frame_codec.cc | 40 ++++++++++------- lib/ui/painting/multi_frame_codec.h | 16 +++++-- lib/ui/painting/picture.cc | 20 +++++---- lib/ui/painting/picture.h | 6 ++- lib/ui/painting/single_frame_codec.cc | 28 +++++------- lib/ui/painting/single_frame_codec.h | 17 +++++--- third_party/tonic/dart_state.cc | 7 --- third_party/tonic/dart_state.h | 7 --- third_party/tonic/dart_wrappable.cc | 30 +------------ third_party/tonic/dart_wrappable.h | 19 ++++---- 22 files changed, 155 insertions(+), 221 deletions(-) delete mode 100644 lib/ui/painting/frame_info.cc delete mode 100644 lib/ui/painting/frame_info.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index d0182f4580ab0..b68946dde0cd8 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -298,8 +298,6 @@ FILE: ../../../flutter/lib/ui/painting/color_filter.cc FILE: ../../../flutter/lib/ui/painting/color_filter.h FILE: ../../../flutter/lib/ui/painting/engine_layer.cc FILE: ../../../flutter/lib/ui/painting/engine_layer.h -FILE: ../../../flutter/lib/ui/painting/frame_info.cc -FILE: ../../../flutter/lib/ui/painting/frame_info.h FILE: ../../../flutter/lib/ui/painting/gradient.cc FILE: ../../../flutter/lib/ui/painting/gradient.h FILE: ../../../flutter/lib/ui/painting/image.cc diff --git a/lib/ui/BUILD.gn b/lib/ui/BUILD.gn index c904141b338e8..a38298f460975 100644 --- a/lib/ui/BUILD.gn +++ b/lib/ui/BUILD.gn @@ -30,8 +30,6 @@ source_set("ui") { "painting/color_filter.h", "painting/engine_layer.cc", "painting/engine_layer.h", - "painting/frame_info.cc", - "painting/frame_info.h", "painting/gradient.cc", "painting/gradient.h", "painting/image.cc", diff --git a/lib/ui/compositing.dart b/lib/ui/compositing.dart index 715ba20023278..e86347d9b5389 100644 --- a/lib/ui/compositing.dart +++ b/lib/ui/compositing.dart @@ -22,14 +22,16 @@ class Scene extends NativeFieldWrapperClass2 { /// Creates a raster image representation of the current state of the scene. /// This is a slow operation that is performed on a background thread. - Future toImage(int width, int height) { + Future toImage(int width, int height) async { if (width <= 0 || height <= 0) { throw Exception('Invalid image dimensions.'); } - return _futurize((_Callback callback) => _toImage(width, height, callback)); + final Image image = Image._(); + await _futurize((_Callback callback) => _toImage(image, width, height, callback)); + return image; } - String _toImage(int width, int height, _Callback callback) native 'Scene_toImage'; + String _toImage(Image outImage, int width, int height, _Callback callback) native 'Scene_toImage'; /// Releases the resources used by this scene. /// diff --git a/lib/ui/compositing/scene.cc b/lib/ui/compositing/scene.cc index f5403ecae9a61..4c2aa16fa0253 100644 --- a/lib/ui/compositing/scene.cc +++ b/lib/ui/compositing/scene.cc @@ -61,7 +61,8 @@ void Scene::dispose() { ClearDartWrapper(); } -Dart_Handle Scene::toImage(uint32_t width, +Dart_Handle Scene::toImage(Dart_Handle image_handle, + uint32_t width, uint32_t height, Dart_Handle raw_image_callback) { TRACE_EVENT0("flutter", "Scene::toImage"); @@ -75,7 +76,8 @@ Dart_Handle Scene::toImage(uint32_t width, return tonic::ToDart("Could not flatten scene into a layer tree."); } - return Picture::RasterizeToImage(picture, width, height, raw_image_callback); + return Picture::RasterizeToImage(image_handle, picture, width, height, + raw_image_callback); } std::unique_ptr Scene::takeLayerTree() { diff --git a/lib/ui/compositing/scene.h b/lib/ui/compositing/scene.h index d46ca5d3d4281..7039dc410874e 100644 --- a/lib/ui/compositing/scene.h +++ b/lib/ui/compositing/scene.h @@ -32,7 +32,8 @@ class Scene : public RefCountedDartWrappable { std::unique_ptr takeLayerTree(); - Dart_Handle toImage(uint32_t width, + Dart_Handle toImage(Dart_Handle image_handle, + uint32_t width, uint32_t height, Dart_Handle image_callback); diff --git a/lib/ui/dart_ui.cc b/lib/ui/dart_ui.cc index 5b3189dfa80f8..c3b758564a5d0 100644 --- a/lib/ui/dart_ui.cc +++ b/lib/ui/dart_ui.cc @@ -13,7 +13,6 @@ #include "flutter/lib/ui/painting/codec.h" #include "flutter/lib/ui/painting/color_filter.h" #include "flutter/lib/ui/painting/engine_layer.h" -#include "flutter/lib/ui/painting/frame_info.h" #include "flutter/lib/ui/painting/gradient.h" #include "flutter/lib/ui/painting/image.h" #include "flutter/lib/ui/painting/image_filter.h" @@ -80,7 +79,6 @@ void DartUI::InitForGlobal() { DartRuntimeHooks::RegisterNatives(g_natives); EngineLayer::RegisterNatives(g_natives); FontCollection::RegisterNatives(g_natives); - FrameInfo::RegisterNatives(g_natives); ImageFilter::RegisterNatives(g_natives); ImageShader::RegisterNatives(g_natives); IsolateNameServerNatives::RegisterNatives(g_natives); diff --git a/lib/ui/painting.dart b/lib/ui/painting.dart index dbcbc7d01db60..24d179365da60 100644 --- a/lib/ui/painting.dart +++ b/lib/ui/painting.dart @@ -1639,22 +1639,19 @@ typedef ImageDecoderCallback = void Function(Image result); /// /// To obtain an instance of the [FrameInfo] interface, see /// [Codec.getNextFrame]. -@pragma('vm:entry-point') -class FrameInfo extends NativeFieldWrapperClass2 { +class FrameInfo { /// This class is created by the engine, and should not be instantiated /// or extended directly. /// /// To obtain an instance of the [FrameInfo] interface, see /// [Codec.getNextFrame]. - @pragma('vm:entry-point') - FrameInfo._(); + FrameInfo._(int durationMilliseconds, this.image) : duration = Duration(milliseconds: durationMilliseconds); /// The duration this frame should be shown. - Duration get duration => Duration(milliseconds: _durationMillis); - int get _durationMillis native 'FrameInfo_durationMillis'; + final Duration duration; /// The [Image] object for this frame. - Image get image native 'FrameInfo_image'; + final Image image; } /// A handle to an image codec. @@ -1684,21 +1681,32 @@ class Codec extends NativeFieldWrapperClass2 { /// * -1 for infinity repetitions. int get repetitionCount native 'Codec_repetitionCount'; + FrameInfo _cachedFrame; + /// Fetches the next animation frame. /// /// Wraps back to the first frame after returning the last frame. /// /// The returned future can complete with an error if the decoding has failed. - Future getNextFrame() { - return _futurize(_getNextFrame); + Future getNextFrame() async { + if (_cachedFrame == null || frameCount != 1) { + final Image image = Image._(); + final int durationMilliseconds = await _futurize((_Callback callback) => _getNextFrame(image, callback)); + _cachedFrame = FrameInfo._(durationMilliseconds, image); + } + return _cachedFrame; } /// Returns an error message on failure, null on success. - String _getNextFrame(_Callback callback) native 'Codec_getNextFrame'; + String _getNextFrame(Image outImage, _Callback callback) native 'Codec_getNextFrame'; /// Release the resources used by this object. The object is no longer usable /// after this method is called. - void dispose() native 'Codec_dispose'; + void dispose() { + _cachedFrame = null; + _dispose(); + } + void _dispose() native 'Codec_dispose'; } /// Instantiates an image codec [Codec] object. @@ -1718,10 +1726,12 @@ class Codec extends NativeFieldWrapperClass2 { Future instantiateImageCodec(Uint8List list, { int targetWidth, int targetHeight, -}) { - return _futurize( - (_Callback callback) => _instantiateImageCodec(list, callback, null, targetWidth ?? _kDoNotResizeDimension, targetHeight ?? _kDoNotResizeDimension) - ); +}) async { + final Codec codec = Codec._(); + await _futurize((_Callback callback) { + return _instantiateImageCodec(codec, list, callback, null, targetWidth ?? _kDoNotResizeDimension, targetHeight ?? _kDoNotResizeDimension); + }); + return codec; } /// Instantiates a [Codec] object for an image binary data. @@ -1735,7 +1745,7 @@ Future instantiateImageCodec(Uint8List list, { /// If both are equal to [_kDoNotResizeDimension], then the image maintains its real size. /// /// Returns an error message if the instantiation has failed, null otherwise. -String _instantiateImageCodec(Uint8List list, _Callback callback, _ImageInfo imageInfo, int targetWidth, int targetHeight) +String _instantiateImageCodec(Codec outCodec, Uint8List list, _Callback callback, _ImageInfo imageInfo, int targetWidth, int targetHeight) native 'instantiateImageCodec'; /// Loads a single image frame from a byte array into an [Image] object. @@ -1776,11 +1786,12 @@ void decodeImageFromPixels( {int rowBytes, int targetWidth, int targetHeight} ) { final _ImageInfo imageInfo = _ImageInfo(width, height, format.index, rowBytes); - final Future codecFuture = _futurize( - (_Callback callback) => _instantiateImageCodec(pixels, callback, imageInfo, targetWidth ?? _kDoNotResizeDimension, targetHeight ?? _kDoNotResizeDimension) - ); - codecFuture.then((Codec codec) => codec.getNextFrame()) - .then((FrameInfo frameInfo) => callback(frameInfo.image)); + final Codec codec = Codec._(); + _futurize( + (_Callback callback) => _instantiateImageCodec(codec, pixels, callback, imageInfo, targetWidth ?? _kDoNotResizeDimension, targetHeight ?? _kDoNotResizeDimension) + ).then((bool _) { + codec.getNextFrame().then((FrameInfo frameInfo) => callback(frameInfo.image)); + }); } /// Determines the winding rule that decides how the interior of a [Path] is @@ -4125,15 +4136,17 @@ class Picture extends NativeFieldWrapperClass2 { /// /// Although the image is returned synchronously, the picture is actually /// rasterized the first time the image is drawn and then cached. - Future toImage(int width, int height) { + Future toImage(int width, int height) async { if (width <= 0 || height <= 0) throw Exception('Invalid image dimensions.'); - return _futurize( - (_Callback callback) => _toImage(width, height, callback) + final Image image = Image._(); + await _futurize( + (_Callback callback) => _toImage(image, width, height, callback) ); + return image; } - String _toImage(int width, int height, _Callback callback) native 'Picture_toImage'; + String _toImage(Image outImage, int width, int height, _Callback callback) native 'Picture_toImage'; /// Release the resources used by this object. The object is no longer usable /// after this method is called. diff --git a/lib/ui/painting/codec.cc b/lib/ui/painting/codec.cc index 829b9db65ed9d..76ee2b9fe71e1 100644 --- a/lib/ui/painting/codec.cc +++ b/lib/ui/painting/codec.cc @@ -10,7 +10,6 @@ #include "flutter/fml/logging.h" #include "flutter/fml/make_copyable.h" #include "flutter/fml/trace_event.h" -#include "flutter/lib/ui/painting/frame_info.h" #include "flutter/lib/ui/painting/multi_frame_codec.h" #include "flutter/lib/ui/painting/single_frame_codec.h" #include "third_party/skia/include/codec/SkCodec.h" @@ -145,13 +144,14 @@ static std::variant ConvertImageInfo( } static void InstantiateImageCodec(Dart_NativeArguments args) { - Dart_Handle callback_handle = Dart_GetNativeArgument(args, 1); + Dart_Handle codec_handle = Dart_GetNativeArgument(args, 0); + Dart_Handle callback_handle = Dart_GetNativeArgument(args, 2); if (!Dart_IsClosure(callback_handle)) { Dart_SetReturnValue(args, tonic::ToDart("Callback must be a function")); return; } - Dart_Handle image_info_handle = Dart_GetNativeArgument(args, 2); + Dart_Handle image_info_handle = Dart_GetNativeArgument(args, 3); std::optional image_info; @@ -171,7 +171,7 @@ static void InstantiateImageCodec(Dart_NativeArguments args) { { Dart_Handle exception = nullptr; tonic::Uint8List list = - tonic::DartConverter::FromArguments(args, 0, + tonic::DartConverter::FromArguments(args, 1, exception); if (exception) { Dart_SetReturnValue(args, exception); @@ -191,9 +191,9 @@ static void InstantiateImageCodec(Dart_NativeArguments args) { } const int targetWidth = - tonic::DartConverter::FromDart(Dart_GetNativeArgument(args, 3)); - const int targetHeight = tonic::DartConverter::FromDart(Dart_GetNativeArgument(args, 4)); + const int targetHeight = + tonic::DartConverter::FromDart(Dart_GetNativeArgument(args, 5)); std::unique_ptr codec; bool single_frame; @@ -208,8 +208,6 @@ static void InstantiateImageCodec(Dart_NativeArguments args) { single_frame = codec->getFrameCount() == 1; } - fml::RefPtr ui_codec; - if (single_frame) { ImageDecoder::ImageDescriptor descriptor; descriptor.decompressed_image_info = image_info; @@ -222,12 +220,13 @@ static void InstantiateImageCodec(Dart_NativeArguments args) { } descriptor.data = std::move(buffer); - ui_codec = fml::MakeRefCounted(std::move(descriptor)); + SingleFrameCodec::Create(codec_handle, std::move(descriptor)); } else { - ui_codec = fml::MakeRefCounted(std::move(codec)); + MultiFrameCodec::Create(codec_handle, std::move(codec)); } - tonic::DartInvoke(callback_handle, {ToDart(ui_codec)}); + tonic::DartInvoke(callback_handle, {Dart_True()}); + Dart_SetReturnValue(args, Dart_Null()); } IMPLEMENT_WRAPPERTYPEINFO(ui, Codec); @@ -246,7 +245,7 @@ void Codec::dispose() { void Codec::RegisterNatives(tonic::DartLibraryNatives* natives) { natives->Register({ - {"instantiateImageCodec", InstantiateImageCodec, 5, true}, + {"instantiateImageCodec", InstantiateImageCodec, 6, true}, }); natives->Register({FOR_EACH_BINDING(DART_REGISTER_NATIVE)}); } diff --git a/lib/ui/painting/codec.h b/lib/ui/painting/codec.h index 2e0c746eac2d6..53ac9e426448d 100644 --- a/lib/ui/painting/codec.h +++ b/lib/ui/painting/codec.h @@ -6,7 +6,6 @@ #define FLUTTER_LIB_UI_PAINTING_CODEC_H_ #include "flutter/lib/ui/dart_wrapper.h" -#include "flutter/lib/ui/painting/frame_info.h" #include "third_party/skia/include/codec/SkCodec.h" #include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkImage.h" @@ -30,7 +29,8 @@ class Codec : public RefCountedDartWrappable { virtual int repetitionCount() const = 0; - virtual Dart_Handle getNextFrame(Dart_Handle callback_handle) = 0; + virtual Dart_Handle getNextFrame(Dart_Handle image_handle, + Dart_Handle callback_handle) = 0; void dispose(); diff --git a/lib/ui/painting/frame_info.cc b/lib/ui/painting/frame_info.cc deleted file mode 100644 index ad77f7b50d8a4..0000000000000 --- a/lib/ui/painting/frame_info.cc +++ /dev/null @@ -1,30 +0,0 @@ - -// 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. - -#include "flutter/lib/ui/painting/frame_info.h" - -#include "third_party/tonic/dart_binding_macros.h" -#include "third_party/tonic/dart_library_natives.h" - -namespace flutter { - -IMPLEMENT_WRAPPERTYPEINFO(ui, FrameInfo); - -#define FOR_EACH_BINDING(V) \ - V(FrameInfo, durationMillis) \ - V(FrameInfo, image) - -FOR_EACH_BINDING(DART_NATIVE_CALLBACK) - -FrameInfo::FrameInfo(fml::RefPtr image, int durationMillis) - : image_(std::move(image)), durationMillis_(durationMillis) {} - -FrameInfo::~FrameInfo(){}; - -void FrameInfo::RegisterNatives(tonic::DartLibraryNatives* natives) { - natives->Register({FOR_EACH_BINDING(DART_REGISTER_NATIVE)}); -} - -} // namespace flutter diff --git a/lib/ui/painting/frame_info.h b/lib/ui/painting/frame_info.h deleted file mode 100644 index 184b132d17791..0000000000000 --- a/lib/ui/painting/frame_info.h +++ /dev/null @@ -1,37 +0,0 @@ -// 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. - -#ifndef FLUTTER_LIB_UI_PAINTING_FRAME_INFO_H_ -#define FLUTTER_LIB_UI_PAINTING_FRAME_INFO_H_ - -#include "flutter/lib/ui/dart_wrapper.h" -#include "flutter/lib/ui/painting/image.h" - -namespace flutter { - -// A single animation frame. -class FrameInfo final : public RefCountedDartWrappable { - DEFINE_WRAPPERTYPEINFO(); - - public: - int durationMillis() { return durationMillis_; } - fml::RefPtr image() { return image_; } - - static void RegisterNatives(tonic::DartLibraryNatives* natives); - - private: - FrameInfo(fml::RefPtr image, int durationMillis); - - ~FrameInfo() override; - - const fml::RefPtr image_; - const int durationMillis_; - - FML_FRIEND_MAKE_REF_COUNTED(FrameInfo); - FML_FRIEND_REF_COUNTED_THREAD_SAFE(FrameInfo); -}; - -} // namespace flutter - -#endif // FLUTTER_LIB_UI_PAINTING_FRAME_INFO_H_ diff --git a/lib/ui/painting/image.h b/lib/ui/painting/image.h index 516a2e5d59c49..43a00517421b8 100644 --- a/lib/ui/painting/image.h +++ b/lib/ui/painting/image.h @@ -22,8 +22,10 @@ class CanvasImage final : public RefCountedDartWrappable { public: ~CanvasImage() override; - static fml::RefPtr Create() { - return fml::MakeRefCounted(); + static fml::RefPtr Create(Dart_Handle dart_handle) { + auto image = fml::MakeRefCounted(); + image->AssociateWithDartWrapper(dart_handle); + return image; } int width() { return image_.get()->width(); } diff --git a/lib/ui/painting/multi_frame_codec.cc b/lib/ui/painting/multi_frame_codec.cc index f650e25a97e61..c38ecb48930e3 100644 --- a/lib/ui/painting/multi_frame_codec.cc +++ b/lib/ui/painting/multi_frame_codec.cc @@ -20,8 +20,11 @@ MultiFrameCodec::MultiFrameCodec(std::unique_ptr codec) MultiFrameCodec::~MultiFrameCodec() = default; static void InvokeNextFrameCallback( - fml::RefPtr frameInfo, + sk_sp skImage, + fml::RefPtr canvas_image, std::unique_ptr callback, + fml::RefPtr unref_queue, + SkCodec::FrameInfo skFrameInfo, size_t trace_id) { std::shared_ptr dart_state = callback->dart_state().lock(); if (!dart_state) { @@ -30,10 +33,13 @@ static void InvokeNextFrameCallback( return; } tonic::DartState::Scope scope(dart_state); - if (!frameInfo) { - tonic::DartInvoke(callback->value(), {Dart_Null()}); + + if (skImage) { + canvas_image->set_image({skImage, std::move(unref_queue)}); + tonic::DartInvoke(callback->value(), + {tonic::ToDart(skFrameInfo.fDuration)}); } else { - tonic::DartInvoke(callback->value(), {ToDart(frameInfo)}); + tonic::DartInvoke(callback->value(), {Dart_Null()}); } } @@ -129,30 +135,32 @@ sk_sp MultiFrameCodec::GetNextFrameImage( } void MultiFrameCodec::GetNextFrameAndInvokeCallback( + fml::RefPtr canvas_image, std::unique_ptr callback, fml::RefPtr ui_task_runner, fml::WeakPtr resourceContext, fml::RefPtr unref_queue, size_t trace_id) { - fml::RefPtr frameInfo = NULL; sk_sp skImage = GetNextFrameImage(resourceContext); + SkCodec::FrameInfo skFrameInfo; if (skImage) { - fml::RefPtr image = CanvasImage::Create(); - image->set_image({skImage, std::move(unref_queue)}); - SkCodec::FrameInfo skFrameInfo; codec_->getFrameInfo(nextFrameIndex_, &skFrameInfo); - frameInfo = - fml::MakeRefCounted(std::move(image), skFrameInfo.fDuration); } nextFrameIndex_ = (nextFrameIndex_ + 1) % frameCount_; ui_task_runner->PostTask(fml::MakeCopyable( - [callback = std::move(callback), frameInfo, trace_id]() mutable { - InvokeNextFrameCallback(frameInfo, std::move(callback), trace_id); + [skImage = std::move(skImage), callback = std::move(callback), + canvas_image = std::move(canvas_image), + unref_queue = std::move(unref_queue), + skFrameInfo = std::move(skFrameInfo), trace_id]() mutable { + InvokeNextFrameCallback(std::move(skImage), std::move(canvas_image), + std::move(callback), std::move(unref_queue), + std::move(skFrameInfo), trace_id); })); } -Dart_Handle MultiFrameCodec::getNextFrame(Dart_Handle callback_handle) { +Dart_Handle MultiFrameCodec::getNextFrame(Dart_Handle image_handle, + Dart_Handle callback_handle) { static size_t trace_counter = 1; const size_t trace_id = trace_counter++; @@ -160,17 +168,19 @@ Dart_Handle MultiFrameCodec::getNextFrame(Dart_Handle callback_handle) { return tonic::ToDart("Callback must be a function"); } + auto canvas_image = CanvasImage::Create(image_handle); auto* dart_state = UIDartState::Current(); const auto& task_runners = dart_state->GetTaskRunners(); task_runners.GetIOTaskRunner()->PostTask(fml::MakeCopyable( - [callback = std::make_unique( + [canvas_image = std::move(canvas_image), + callback = std::make_unique( tonic::DartState::Current(), callback_handle), this, trace_id, ui_task_runner = task_runners.GetUITaskRunner(), io_manager = dart_state->GetIOManager()]() mutable { GetNextFrameAndInvokeCallback( - std::move(callback), std::move(ui_task_runner), + canvas_image, std::move(callback), std::move(ui_task_runner), io_manager->GetResourceContext(), io_manager->GetSkiaUnrefQueue(), trace_id); })); diff --git a/lib/ui/painting/multi_frame_codec.h b/lib/ui/painting/multi_frame_codec.h index 0be63c2a57582..1abcded241469 100644 --- a/lib/ui/painting/multi_frame_codec.h +++ b/lib/ui/painting/multi_frame_codec.h @@ -5,15 +5,23 @@ #ifndef FLUTTER_LIB_UI_PAINTING_MUTLI_FRAME_CODEC_H_ #define FLUTTER_LIB_UI_PAINTING_MUTLI_FRAME_CODEC_H_ +#include "flutter/flow/skia_gpu_object.h" #include "flutter/fml/macros.h" +#include "flutter/fml/memory/weak_ptr.h" #include "flutter/lib/ui/painting/codec.h" +#include "flutter/lib/ui/painting/image.h" namespace flutter { class MultiFrameCodec : public Codec { public: - MultiFrameCodec(std::unique_ptr codec); - + static fml::RefPtr Create(Dart_Handle codec_handle, + std::unique_ptr codec) { + auto multi_frame_codec = + fml::MakeRefCounted(std::move(codec)); + multi_frame_codec->AssociateWithDartWrapper(codec_handle); + return multi_frame_codec; + } ~MultiFrameCodec() override; // |Codec| @@ -23,9 +31,10 @@ class MultiFrameCodec : public Codec { int repetitionCount() const override; // |Codec| - Dart_Handle getNextFrame(Dart_Handle args) override; + Dart_Handle getNextFrame(Dart_Handle image_handle, Dart_Handle args) override; private: + MultiFrameCodec(std::unique_ptr codec); const std::unique_ptr codec_; const int frameCount_; const int repetitionCount_; @@ -39,6 +48,7 @@ class MultiFrameCodec : public Codec { sk_sp GetNextFrameImage(fml::WeakPtr resourceContext); void GetNextFrameAndInvokeCallback( + fml::RefPtr canvas_image, std::unique_ptr callback, fml::RefPtr ui_task_runner, fml::WeakPtr resourceContext, diff --git a/lib/ui/painting/picture.cc b/lib/ui/painting/picture.cc index 8527b83ec139b..34d765221e0a7 100644 --- a/lib/ui/painting/picture.cc +++ b/lib/ui/painting/picture.cc @@ -40,14 +40,16 @@ Picture::Picture(flutter::SkiaGPUObject picture) Picture::~Picture() = default; -Dart_Handle Picture::toImage(uint32_t width, +Dart_Handle Picture::toImage(Dart_Handle image_handle, + uint32_t width, uint32_t height, Dart_Handle raw_image_callback) { if (!picture_.get()) { return tonic::ToDart("Picture is null"); } - return RasterizeToImage(picture_.get(), width, height, raw_image_callback); + return RasterizeToImage(image_handle, picture_.get(), width, height, + raw_image_callback); } void Picture::dispose() { @@ -62,7 +64,8 @@ size_t Picture::GetAllocationSize() { } } -Dart_Handle Picture::RasterizeToImage(sk_sp picture, +Dart_Handle Picture::RasterizeToImage(Dart_Handle image_handle, + sk_sp picture, uint32_t width, uint32_t height, Dart_Handle raw_image_callback) { @@ -74,6 +77,8 @@ Dart_Handle Picture::RasterizeToImage(sk_sp picture, return tonic::ToDart("Image dimensions for scene were invalid."); } + auto canvas_image = CanvasImage::Create(image_handle); + auto* dart_state = UIDartState::Current(); tonic::DartPersistentValue* image_callback = new tonic::DartPersistentValue(dart_state, raw_image_callback); @@ -89,7 +94,7 @@ Dart_Handle Picture::RasterizeToImage(sk_sp picture, auto picture_bounds = SkISize::Make(width, height); - auto ui_task = fml::MakeCopyable([image_callback, unref_queue]( + auto ui_task = fml::MakeCopyable([canvas_image, image_callback, unref_queue]( sk_sp raster_image) mutable { auto dart_state = image_callback->dart_state().lock(); if (!dart_state) { @@ -100,15 +105,14 @@ Dart_Handle Picture::RasterizeToImage(sk_sp picture, if (!raster_image) { tonic::DartInvoke(image_callback->Get(), {Dart_Null()}); + delete image_callback; return; } - auto dart_image = CanvasImage::Create(); - dart_image->set_image({std::move(raster_image), std::move(unref_queue)}); - auto* raw_dart_image = tonic::ToDart(std::move(dart_image)); + canvas_image->set_image({std::move(raster_image), std::move(unref_queue)}); // All done! - tonic::DartInvoke(image_callback->Get(), {raw_dart_image}); + tonic::DartInvoke(image_callback->Get(), {Dart_True()}); // image_callback is associated with the Dart isolate and must be deleted // on the UI thread diff --git a/lib/ui/painting/picture.h b/lib/ui/painting/picture.h index f6dd98887d264..7ed628550c4f7 100644 --- a/lib/ui/painting/picture.h +++ b/lib/ui/painting/picture.h @@ -28,7 +28,8 @@ class Picture : public RefCountedDartWrappable { sk_sp picture() const { return picture_.get(); } - Dart_Handle toImage(uint32_t width, + Dart_Handle toImage(Dart_Handle image_handle, + uint32_t width, uint32_t height, Dart_Handle raw_image_callback); @@ -38,7 +39,8 @@ class Picture : public RefCountedDartWrappable { static void RegisterNatives(tonic::DartLibraryNatives* natives); - static Dart_Handle RasterizeToImage(sk_sp picture, + static Dart_Handle RasterizeToImage(Dart_Handle image_handle, + sk_sp picture, uint32_t width, uint32_t height, Dart_Handle raw_image_callback); diff --git a/lib/ui/painting/single_frame_codec.cc b/lib/ui/painting/single_frame_codec.cc index 44361f583a583..51eb870001a3e 100644 --- a/lib/ui/painting/single_frame_codec.cc +++ b/lib/ui/painting/single_frame_codec.cc @@ -4,7 +4,6 @@ #include "flutter/lib/ui/painting/single_frame_codec.h" -#include "flutter/lib/ui/painting/frame_info.h" #include "flutter/lib/ui/ui_dart_state.h" #include "third_party/tonic/logging/dart_invoke.h" @@ -23,16 +22,20 @@ int SingleFrameCodec::repetitionCount() const { return 0; } -Dart_Handle SingleFrameCodec::getNextFrame(Dart_Handle callback_handle) { +Dart_Handle SingleFrameCodec::getNextFrame(Dart_Handle image_handle, + Dart_Handle callback_handle) { if (!Dart_IsClosure(callback_handle)) { return tonic::ToDart("Callback must be a function"); } if (status_ == Status::kComplete) { - tonic::DartInvoke(callback_handle, {tonic::ToDart(cached_frame_)}); - return Dart_Null(); + return tonic::ToDart( + "Dart callers are responsible for caching the frame callback " + "information"); } + auto canvas_image = CanvasImage::Create(image_handle); + // This has to be valid because this method is called from Dart. auto dart_state = UIDartState::Current(); @@ -57,7 +60,7 @@ Dart_Handle SingleFrameCodec::getNextFrame(Dart_Handle callback_handle) { fml::RefPtr* raw_codec_ref = new fml::RefPtr(this); - decoder->Decode(descriptor_, [raw_codec_ref](auto image) { + decoder->Decode(descriptor_, [canvas_image, raw_codec_ref](auto image) { std::unique_ptr> codec_ref(raw_codec_ref); fml::RefPtr codec(std::move(*codec_ref)); @@ -66,18 +69,14 @@ Dart_Handle SingleFrameCodec::getNextFrame(Dart_Handle callback_handle) { if (!state) { // This is probably because the isolate has been terminated before the // image could be decoded. - return; } tonic::DartState::Scope scope(state.get()); if (image.get()) { - auto canvas_image = fml::MakeRefCounted(); canvas_image->set_image(std::move(image)); - - codec->cached_frame_ = fml::MakeRefCounted( - std::move(canvas_image), 0 /* duration */); + codec->cached_frame_image_size_ = canvas_image->GetAllocationSize(); } // The cached frame is now available and should be returned to any future @@ -85,9 +84,8 @@ Dart_Handle SingleFrameCodec::getNextFrame(Dart_Handle callback_handle) { codec->status_ = Status::kComplete; // Invoke any callbacks that were provided before the frame was decoded. - Dart_Handle frame = tonic::ToDart(codec->cached_frame_); for (const DartPersistentValue& callback : codec->pending_callbacks_) { - tonic::DartInvoke(callback.value(), {frame}); + tonic::DartInvoke(callback.value(), {tonic::ToDart(0)}); } codec->pending_callbacks_.clear(); }); @@ -97,17 +95,13 @@ Dart_Handle SingleFrameCodec::getNextFrame(Dart_Handle callback_handle) { descriptor_.data.reset(); status_ = Status::kInProgress; - return Dart_Null(); } size_t SingleFrameCodec::GetAllocationSize() { const auto& data = descriptor_.data; const auto data_byte_size = data ? data->size() : 0; - const auto frame_byte_size = (cached_frame_ && cached_frame_->image()) - ? cached_frame_->image()->GetAllocationSize() - : 0; - return data_byte_size + frame_byte_size + sizeof(this); + return data_byte_size + cached_frame_image_size_ + sizeof(this); } } // namespace flutter diff --git a/lib/ui/painting/single_frame_codec.h b/lib/ui/painting/single_frame_codec.h index b01638c71ce63..48639deb10a90 100644 --- a/lib/ui/painting/single_frame_codec.h +++ b/lib/ui/painting/single_frame_codec.h @@ -7,15 +7,20 @@ #include "flutter/fml/macros.h" #include "flutter/lib/ui/painting/codec.h" -#include "flutter/lib/ui/painting/frame_info.h" +#include "flutter/lib/ui/painting/image.h" #include "flutter/lib/ui/painting/image_decoder.h" namespace flutter { class SingleFrameCodec : public Codec { public: - SingleFrameCodec(ImageDecoder::ImageDescriptor descriptor); - + static fml::RefPtr Create( + Dart_Handle codec_handle, + ImageDecoder::ImageDescriptor descriptor) { + auto codec = fml::MakeRefCounted(std::move(descriptor)); + codec->AssociateWithDartWrapper(codec_handle); + return codec; + } ~SingleFrameCodec() override; // |Codec| @@ -25,16 +30,18 @@ class SingleFrameCodec : public Codec { int repetitionCount() const override; // |Codec| - Dart_Handle getNextFrame(Dart_Handle args) override; + Dart_Handle getNextFrame(Dart_Handle image_handle, + Dart_Handle callback_handle) override; // |DartWrappable| size_t GetAllocationSize() override; private: + SingleFrameCodec(ImageDecoder::ImageDescriptor descriptor); enum class Status { kNew, kInProgress, kComplete }; Status status_; ImageDecoder::ImageDescriptor descriptor_; - fml::RefPtr cached_frame_; + size_t cached_frame_image_size_; std::vector pending_callbacks_; FML_FRIEND_MAKE_REF_COUNTED(SingleFrameCodec); diff --git a/third_party/tonic/dart_state.cc b/third_party/tonic/dart_state.cc index b711a22977788..870f058b9f2fc 100644 --- a/third_party/tonic/dart_state.cc +++ b/third_party/tonic/dart_state.cc @@ -22,7 +22,6 @@ DartState::Scope::~Scope() {} DartState::DartState(int dirfd, std::function message_epilogue) : isolate_(nullptr), - private_constructor_name_(), class_library_(new DartClassLibrary), message_handler_(new DartMessageHandler()), file_loader_(new FileLoader(dirfd)), @@ -37,12 +36,6 @@ void DartState::SetIsolate(Dart_Isolate isolate) { if (!isolate_) return; - private_constructor_name_.Clear(); - Dart_EnterScope(); - private_constructor_name_.Set( - this, Dart_NewPersistentHandle(Dart_NewStringFromCString("_"))); - Dart_ExitScope(); - DidSetIsolate(); } diff --git a/third_party/tonic/dart_state.h b/third_party/tonic/dart_state.h index 845914937dcd0..d2c6e03cb7cc9 100644 --- a/third_party/tonic/dart_state.h +++ b/third_party/tonic/dart_state.h @@ -49,12 +49,6 @@ class DartState : public std::enable_shared_from_this { Dart_Isolate isolate() { return isolate_; } void SetIsolate(Dart_Isolate isolate); - // TODO(https://github.com/flutter/flutter/issues/50997): Work around until we - // drop the need for Dart_New in tonic. - Dart_PersistentHandle private_constructor_name() { - return private_constructor_name_.Get(); - } - DartClassLibrary& class_library() { return *class_library_; } DartMessageHandler& message_handler() { return *message_handler_; } FileLoader& file_loader() { return *file_loader_; } @@ -76,7 +70,6 @@ class DartState : public std::enable_shared_from_this { private: Dart_Isolate isolate_; - DartPersistentValue private_constructor_name_; std::unique_ptr class_library_; std::unique_ptr message_handler_; std::unique_ptr file_loader_; diff --git a/third_party/tonic/dart_wrappable.cc b/third_party/tonic/dart_wrappable.cc index 4ebfda7e1a362..42c8fff2805b2 100644 --- a/third_party/tonic/dart_wrappable.cc +++ b/third_party/tonic/dart_wrappable.cc @@ -15,33 +15,6 @@ DartWrappable::~DartWrappable() { TONIC_CHECK(!dart_wrapper_); } -// TODO(dnfield): Delete this. https://github.com/flutter/flutter/issues/50997 -Dart_Handle DartWrappable::CreateDartWrapper(DartState* dart_state) { - TONIC_DCHECK(!dart_wrapper_); - const DartWrapperInfo& info = GetDartWrapperInfo(); - - Dart_PersistentHandle type = dart_state->class_library().GetClass(info); - TONIC_DCHECK(!LogIfError(type)); - - Dart_Handle wrapper = - Dart_New(type, dart_state->private_constructor_name(), 0, nullptr); - - TONIC_DCHECK(!LogIfError(wrapper)); - - Dart_Handle res = Dart_SetNativeInstanceField( - wrapper, kPeerIndex, reinterpret_cast(this)); - TONIC_DCHECK(!LogIfError(res)); - res = Dart_SetNativeInstanceField(wrapper, kWrapperInfoIndex, - reinterpret_cast(&info)); - TONIC_DCHECK(!LogIfError(res)); - - this->RetainDartWrappableReference(); // Balanced in FinalizeDartWrapper. - dart_wrapper_ = Dart_NewWeakPersistentHandle( - wrapper, this, GetAllocationSize(), &FinalizeDartWrapper); - - return wrapper; -} - void DartWrappable::AssociateWithDartWrapper(Dart_Handle wrapper) { TONIC_DCHECK(!dart_wrapper_); TONIC_CHECK(!LogIfError(wrapper)); @@ -74,7 +47,8 @@ void DartWrappable::FinalizeDartWrapper(void* isolate_callback_data, void* peer) { DartWrappable* wrappable = reinterpret_cast(peer); wrappable->dart_wrapper_ = nullptr; - wrappable->ReleaseDartWrappableReference(); // Balanced in CreateDartWrapper. + wrappable->ReleaseDartWrappableReference(); // Balanced in + // AssociateWithDartWrapper. } size_t DartWrappable::GetAllocationSize() { diff --git a/third_party/tonic/dart_wrappable.h b/third_party/tonic/dart_wrappable.h index 1d2e5e75bacb2..d4a6e1711aa15 100644 --- a/third_party/tonic/dart_wrappable.h +++ b/third_party/tonic/dart_wrappable.h @@ -43,10 +43,6 @@ class DartWrappable { virtual void ReleaseDartWrappableReference() const = 0; - // Use this method sparingly. It follows a slower path using Dart_New. - // Prefer constructing the object in Dart code and using - // AssociateWithDartWrapper. - Dart_Handle CreateDartWrapper(DartState* dart_state); void AssociateWithDartWrapper(Dart_Handle wrappable); void ClearDartWrapper(); // Warning: Might delete this. Dart_WeakPersistentHandle dart_wrapper() const { return dart_wrapper_; } @@ -107,18 +103,23 @@ struct DartConverter< return Dart_Null(); if (Dart_WeakPersistentHandle wrapper = val->dart_wrapper()) return Dart_HandleFromWeakPersistent(wrapper); - return val->CreateDartWrapper(DartState::Current()); + + Log("Do not create non-primitive Dart objects from C++ code."); + TONIC_DCHECK(false); + return Dart_NewApiError("Invalid object conversion"); } static void SetReturnValue(Dart_NativeArguments args, DartWrappable* val, bool auto_scope = true) { - if (!val) + if (!val) { Dart_SetReturnValue(args, Dart_Null()); - else if (Dart_WeakPersistentHandle wrapper = val->dart_wrapper()) + } else if (Dart_WeakPersistentHandle wrapper = val->dart_wrapper()) { Dart_SetWeakHandleReturnValue(args, wrapper); - else - Dart_SetReturnValue(args, val->CreateDartWrapper(DartState::Current())); + } else { + Log("Do not create non-primitive Dart objects from C++ code."); + TONIC_DCHECK(false); + } } static T* FromDart(Dart_Handle handle) { From 0795be89ddf1ceb413661f18fd963ff134dddfb4 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 01:59:02 -0500 Subject: [PATCH 124/521] Roll src/third_party/skia 73ae40a424fa..b19408040143 (4 commits) (#16901) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 027135f5cffb9..99871e2a44adb 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '73ae40a424faf48896803178ce779e754cf6625d', + 'skia_revision': 'b194080401437a53c361577cbe65fee941fc4d62', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c4e4c1ae1c9e2..b429fae37e438 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 5ef6d8504160d1485bb8f310c23e9481 +Signature: 4c80ed8095570613370ab790ee05a43a UNUSED LICENSES: From 2c5145eb613b6740a4072bd94d777b9f086630a0 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 02:04:03 -0500 Subject: [PATCH 125/521] Roll src/third_party/dart ca3ad264a649..06155d499645 (3 commits) (#16902) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++------------ 3 files changed, 122 insertions(+), 126 deletions(-) diff --git a/DEPS b/DEPS index 99871e2a44adb..8e3c04c3da9aa 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'ca3ad264a64937d5d336cd04dbf2746d1b7d8fc4', + 'dart_revision': '06155d499645429575e4f2ebe191ef5d51c9035e', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 8ccc901f26228..cf52aaa9927ba 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 2ae87f96c44d60589e4fefd76ecd5607 +Signature: 99b7850d4d80632ecb2f93d22650c80c UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 17f306abefc94..5db764fbeb983 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 7ca9bf0003fe59bbd384d9397c3040bd3ac4ba36 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 05:24:02 -0500 Subject: [PATCH 126/521] Roll fuchsia/sdk/core/mac-amd64 from WmA2M... to cGxwD... (#16903) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 8e3c04c3da9aa..f2024489f39f5 100644 --- a/DEPS +++ b/DEPS @@ -546,7 +546,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'WmA2MJCQRzXc4no2ulvX90sV6vyNOV3VkG3NGsQFgBoC' + 'version': 'cGxwDxl9ZQUH2BlHtnMXYUkjcZbHMbX7_jq1YP8TjtcC' } ], 'condition': 'host_os == "mac"', From 44ed69011e11a455a954120994fc8bb2aea9b589 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 06:54:01 -0500 Subject: [PATCH 127/521] Roll src/third_party/dart 06155d499645..c07d5d84b828 (3 commits) (#16904) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index f2024489f39f5..658f21f490d0e 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '06155d499645429575e4f2ebe191ef5d51c9035e', + 'dart_revision': 'c07d5d84b82826b1aff140426d62aa38f8e5c482', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From 00d77945d541660b19b1ebcb292240336dba7ea1 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 07:44:03 -0500 Subject: [PATCH 128/521] Roll src/third_party/skia b19408040143..853789cdfe3c (1 commits) (#16905) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++++++--------------- 3 files changed, 127 insertions(+), 122 deletions(-) diff --git a/DEPS b/DEPS index 658f21f490d0e..bf3ad685bf3d5 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'b194080401437a53c361577cbe65fee941fc4d62', + 'skia_revision': '853789cdfe3c518492959458804add4a8d2e664c', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index b429fae37e438..a76e50c80cbeb 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4c80ed8095570613370ab790ee05a43a +Signature: fd3441e863dc6a112a045777a674f87b UNUSED LICENSES: @@ -1193,6 +1193,7 @@ FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-ChromeOS-C FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-BonusConfigs.json +FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-SK_FORCE_RASTER_PIPELINE_BLITTER.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug-All-Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Release-All.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Release-All-CommandBuffer.json diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 5db764fbeb983..17f306abefc94 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,66 +5143,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5234,66 +5174,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5690,6 +5570,130 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 922e257b52d1b790f81f1b9953c7f6a2c5dc7c8c Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 09:19:02 -0500 Subject: [PATCH 129/521] Roll src/third_party/skia 853789cdfe3c..96c2eb6258ae (3 commits) (#16906) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 24 ++---------------------- 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/DEPS b/DEPS index bf3ad685bf3d5..79feb93fcdeec 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '853789cdfe3c518492959458804add4a8d2e664c', + 'skia_revision': '96c2eb6258aef6146d947648db12b6470de8197a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a76e50c80cbeb..6d00866e3329d 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: fd3441e863dc6a112a045777a674f87b +Signature: d774954c121be6b9b1c7c29c364bb522 UNUSED LICENSES: @@ -1181,30 +1181,9 @@ FILE: ../../../third_party/skia/infra/bots/recipes/g3_compile.expected/g3_compil FILE: ../../../third_party/skia/infra/bots/recipes/housekeeper.expected/Housekeeper-PerCommit-Trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/housekeeper.expected/Housekeeper-PerCommit.json FILE: ../../../third_party/skia/infra/bots/recipes/infra.expected/infra_tests.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Release-All-Android.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-All-Android.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_NoGPUThreads.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus7-CPU-Tegra3-arm-Debug-All-Android.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-P30-GPU-MaliG76-arm64-Release-All-Android_Vulkan.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Pixel3-GPU-Adreno630-arm64-Release-All-Android_Vulkan.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Release-All-Android.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-ChromeOS-Clang-ASUSChromebookFlipC100-GPU-MaliT764-arm-Release-All.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-ChromeOS-Clang-AcerChromebook13_CB5_311-GPU-TegraK1-arm-Release-All.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-BonusConfigs.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-SK_FORCE_RASTER_PIPELINE_BLITTER.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Clang-NUC5PPYH-GPU-IntelHD405-x86_64-Debug-All-Vulkan.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Debian9-Clang-NUC7i5BNK-GPU-IntelIris640-x86_64-Release-All.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Mac10.13-Clang-MacBook10.1-GPU-IntelHD615-x86_64-Release-All-CommandBuffer.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-Metal.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Mac10.13-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Release-All-CommandBuffer.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_SK_CPU_LIMIT_SSE41.json FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-ANGLE.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-Win10-Clang-ShuttleA-GPU-GTX660-x86_64-Release-All-Vulkan.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-iOS-Clang-iPadPro-GPU-PowerVRGT7800-arm64-Release-All.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/Perf-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Release-All-Metal.json -FILE: ../../../third_party/skia/infra/bots/recipes/perf.expected/trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/perf_canvaskit.expected/Perf-Debian9-EMCC-GCE-CPU-AVX2-wasm-Release-All-CanvasKit.json FILE: ../../../third_party/skia/infra/bots/recipes/perf_canvaskit.expected/pathkit_trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/perf_pathkit.expected/Perf-Debian9-EMCC-GCE-CPU-AVX2-asmjs-Release-All-PathKit.json @@ -6268,6 +6247,7 @@ LIBRARY: skia ORIGIN: ../../../third_party/skia/infra/bots/gen_tasks_logic/dm_flags.go + ../../../LICENSE TYPE: LicenseType.bsd FILE: ../../../third_party/skia/infra/bots/gen_tasks_logic/dm_flags.go +FILE: ../../../third_party/skia/infra/bots/gen_tasks_logic/nano_flags.go ---------------------------------------------------------------------------------------------------- Copyright 2020 The Chromium Authors. All rights reserved. From e027340061c40471448af7082f23f07155a2f30d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 10:04:02 -0500 Subject: [PATCH 130/521] Roll fuchsia/sdk/core/linux-amd64 from uiAI5... to ULy6Z... (#16907) --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 79feb93fcdeec..f76267db803e6 100644 --- a/DEPS +++ b/DEPS @@ -566,7 +566,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'uiAI5ubkK_zLwdEhx0bYAQV2Ymh9BRBJk9ofEtiznoAC' + 'version': 'ULy6ZIkyWHKKjlRv5Lw9xD-TvYOQ0ezZeKcE01x4q08C' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 92c10a71d5f8b..44f531a2ee790 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: e3ae6aef771255012b888e196f637b26 +Signature: 67e7bc0a4129f3ac3909beb7ec8fda07 UNUSED LICENSES: @@ -482,6 +482,7 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.inspect/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.intl/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.io/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.ldsvc/meta.json +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.legacymetrics/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.location.namedplace/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.logger/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.math/meta.json @@ -1409,6 +1410,7 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.intl/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.intl/property_provider.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.io/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.ldsvc/meta.json +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.legacymetrics/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.location.namedplace/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.location.namedplace/namedplace.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.logger/meta.json @@ -2208,6 +2210,7 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.inspect/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.intl/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.io/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.ldsvc/meta.json +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.legacymetrics/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.location.namedplace/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.logger/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.math/meta.json @@ -2928,7 +2931,6 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/lifecycle/lifecycle.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/module/link_path.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/module/module_data.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/module/module_state.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/module_resolver/module_resolver.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/story/create_link.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/story/create_module_parameter_map.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/story/story_shell.fidl @@ -3106,6 +3108,8 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component/constants.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component/error.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component/types.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.input/keys.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.legacymetrics/event.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.legacymetrics/metrics_recorder.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.media.target/target_discovery.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.memorypressure/memorypressure.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.settings/night_mode.fidl From 5fdfc12e076eddba38fdc769f4853fc275e68990 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 10:54:01 -0500 Subject: [PATCH 131/521] Roll src/third_party/skia 96c2eb6258ae..b58098f34c56 (2 commits) (#16908) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index f76267db803e6..5384c2e8bd61a 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '96c2eb6258aef6146d947648db12b6470de8197a', + 'skia_revision': 'b58098f34c56ed83e25c709e2bf5e0ff84ba3d95', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 6d00866e3329d..5e7ad11e25bc3 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d774954c121be6b9b1c7c29c364bb522 +Signature: db8ebf929ff096260363c56d1d3aa46c UNUSED LICENSES: From 66bac1cacac4607655cb1289c3bb25892a24dfe7 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 12:14:01 -0500 Subject: [PATCH 132/521] Roll src/third_party/dart c07d5d84b828..e7e45599cb1a (9 commits) (#16909) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++------------ 3 files changed, 122 insertions(+), 126 deletions(-) diff --git a/DEPS b/DEPS index 5384c2e8bd61a..1d4ca561bbcf9 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'c07d5d84b82826b1aff140426d62aa38f8e5c482', + 'dart_revision': 'e7e45599cb1a74ff88d7d00a33f25029e42df757', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index cf52aaa9927ba..b761821998f90 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 99b7850d4d80632ecb2f93d22650c80c +Signature: bd390980b88c413d66704a8bf9de9323 UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 17f306abefc94..5db764fbeb983 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 0f7b14f56e873c08e8e56d4426ac69aab99b7cb3 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 12:29:01 -0500 Subject: [PATCH 133/521] Roll src/third_party/skia b58098f34c56..ae2da5e7f9b5 (3 commits) (#16910) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 1d4ca561bbcf9..ab229c978ed9e 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'b58098f34c56ed83e25c709e2bf5e0ff84ba3d95', + 'skia_revision': 'ae2da5e7f9b5606ddab4d34998180f2929fd719d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 5e7ad11e25bc3..4fc2157a867f2 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: db8ebf929ff096260363c56d1d3aa46c +Signature: 646c5bf8cc6cea30d49fe42abf5404af UNUSED LICENSES: From 224e0f961737b4d4dc346c3fe12556323a64614e Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 15:49:03 -0500 Subject: [PATCH 134/521] Roll src/third_party/skia ae2da5e7f9b5..964aa91580b6 (4 commits) (#16911) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++++++--------------- 3 files changed, 126 insertions(+), 122 deletions(-) diff --git a/DEPS b/DEPS index ab229c978ed9e..b4b6438da3ce4 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'ae2da5e7f9b5606ddab4d34998180f2929fd719d', + 'skia_revision': '964aa91580b6aa3f14fe0b61578e5807ae9c92ce', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4fc2157a867f2..f321efc6f9cab 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 646c5bf8cc6cea30d49fe42abf5404af +Signature: 8b18eb84f5fba74cbea740b8cec1c6b4 UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 5db764fbeb983..17f306abefc94 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,66 +5143,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5234,66 +5174,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5690,6 +5570,130 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From ca8bb0a92328cd8986291903fc2342cf67b47fc6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 17:24:01 -0500 Subject: [PATCH 135/521] Roll src/third_party/skia 964aa91580b6..4036cb1f0b6e (5 commits) (#16912) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b4b6438da3ce4..c6d5882dfaf34 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '964aa91580b6aa3f14fe0b61578e5807ae9c92ce', + 'skia_revision': '4036cb1f0b6e275009ff08681e878cde0763c3e9', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index f321efc6f9cab..0e2e9337b88c9 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 8b18eb84f5fba74cbea740b8cec1c6b4 +Signature: 4be93742336140f91e6f18da1b32f093 UNUSED LICENSES: From ba8a89223118c21805cf6b19a12ed1f56b533c5b Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 17:29:03 -0500 Subject: [PATCH 136/521] Roll src/third_party/dart e7e45599cb1a..5701c4fd3b11 (25 commits) (#16913) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++------------ 3 files changed, 122 insertions(+), 126 deletions(-) diff --git a/DEPS b/DEPS index c6d5882dfaf34..a7209e616fbc8 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'e7e45599cb1a74ff88d7d00a33f25029e42df757', + 'dart_revision': '5701c4fd3b11b4dbb1e7a3e9f6b1cc319ca5f1ac', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index b761821998f90..d6eea3efa7281 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: bd390980b88c413d66704a8bf9de9323 +Signature: 3cc623c46feb1a616e6dc27b9168581f UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 17f306abefc94..5db764fbeb983 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 78a1c7ebf9adfc988b66381245502536695bfd75 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Tue, 3 Mar 2020 14:52:56 -0800 Subject: [PATCH 137/521] Revert "Drop last usages of Dart_New from engine (#16838)" (#16915) We believe this may be implicated in a Windows-specific crash during the Flutter Gallery integration test. See: https://github.com/flutter/flutter/issues/51896 This reverts commit f9b78c5db2bc3087e1793947b11ca643c2d747cf. --- ci/licenses_golden/licenses_flutter | 2 + lib/ui/BUILD.gn | 2 + lib/ui/compositing.dart | 8 ++-- lib/ui/compositing/scene.cc | 6 +-- lib/ui/compositing/scene.h | 3 +- lib/ui/dart_ui.cc | 2 + lib/ui/painting.dart | 63 +++++++++++---------------- lib/ui/painting/codec.cc | 23 +++++----- lib/ui/painting/codec.h | 4 +- lib/ui/painting/frame_info.cc | 30 +++++++++++++ lib/ui/painting/frame_info.h | 37 ++++++++++++++++ lib/ui/painting/image.h | 6 +-- lib/ui/painting/multi_frame_codec.cc | 40 +++++++---------- lib/ui/painting/multi_frame_codec.h | 16 ++----- lib/ui/painting/picture.cc | 20 ++++----- lib/ui/painting/picture.h | 6 +-- lib/ui/painting/single_frame_codec.cc | 28 +++++++----- lib/ui/painting/single_frame_codec.h | 17 +++----- third_party/tonic/dart_state.cc | 7 +++ third_party/tonic/dart_state.h | 7 +++ third_party/tonic/dart_wrappable.cc | 30 ++++++++++++- third_party/tonic/dart_wrappable.h | 19 ++++---- 22 files changed, 221 insertions(+), 155 deletions(-) create mode 100644 lib/ui/painting/frame_info.cc create mode 100644 lib/ui/painting/frame_info.h diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index b68946dde0cd8..d0182f4580ab0 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -298,6 +298,8 @@ FILE: ../../../flutter/lib/ui/painting/color_filter.cc FILE: ../../../flutter/lib/ui/painting/color_filter.h FILE: ../../../flutter/lib/ui/painting/engine_layer.cc FILE: ../../../flutter/lib/ui/painting/engine_layer.h +FILE: ../../../flutter/lib/ui/painting/frame_info.cc +FILE: ../../../flutter/lib/ui/painting/frame_info.h FILE: ../../../flutter/lib/ui/painting/gradient.cc FILE: ../../../flutter/lib/ui/painting/gradient.h FILE: ../../../flutter/lib/ui/painting/image.cc diff --git a/lib/ui/BUILD.gn b/lib/ui/BUILD.gn index a38298f460975..c904141b338e8 100644 --- a/lib/ui/BUILD.gn +++ b/lib/ui/BUILD.gn @@ -30,6 +30,8 @@ source_set("ui") { "painting/color_filter.h", "painting/engine_layer.cc", "painting/engine_layer.h", + "painting/frame_info.cc", + "painting/frame_info.h", "painting/gradient.cc", "painting/gradient.h", "painting/image.cc", diff --git a/lib/ui/compositing.dart b/lib/ui/compositing.dart index e86347d9b5389..715ba20023278 100644 --- a/lib/ui/compositing.dart +++ b/lib/ui/compositing.dart @@ -22,16 +22,14 @@ class Scene extends NativeFieldWrapperClass2 { /// Creates a raster image representation of the current state of the scene. /// This is a slow operation that is performed on a background thread. - Future toImage(int width, int height) async { + Future toImage(int width, int height) { if (width <= 0 || height <= 0) { throw Exception('Invalid image dimensions.'); } - final Image image = Image._(); - await _futurize((_Callback callback) => _toImage(image, width, height, callback)); - return image; + return _futurize((_Callback callback) => _toImage(width, height, callback)); } - String _toImage(Image outImage, int width, int height, _Callback callback) native 'Scene_toImage'; + String _toImage(int width, int height, _Callback callback) native 'Scene_toImage'; /// Releases the resources used by this scene. /// diff --git a/lib/ui/compositing/scene.cc b/lib/ui/compositing/scene.cc index 4c2aa16fa0253..f5403ecae9a61 100644 --- a/lib/ui/compositing/scene.cc +++ b/lib/ui/compositing/scene.cc @@ -61,8 +61,7 @@ void Scene::dispose() { ClearDartWrapper(); } -Dart_Handle Scene::toImage(Dart_Handle image_handle, - uint32_t width, +Dart_Handle Scene::toImage(uint32_t width, uint32_t height, Dart_Handle raw_image_callback) { TRACE_EVENT0("flutter", "Scene::toImage"); @@ -76,8 +75,7 @@ Dart_Handle Scene::toImage(Dart_Handle image_handle, return tonic::ToDart("Could not flatten scene into a layer tree."); } - return Picture::RasterizeToImage(image_handle, picture, width, height, - raw_image_callback); + return Picture::RasterizeToImage(picture, width, height, raw_image_callback); } std::unique_ptr Scene::takeLayerTree() { diff --git a/lib/ui/compositing/scene.h b/lib/ui/compositing/scene.h index 7039dc410874e..d46ca5d3d4281 100644 --- a/lib/ui/compositing/scene.h +++ b/lib/ui/compositing/scene.h @@ -32,8 +32,7 @@ class Scene : public RefCountedDartWrappable { std::unique_ptr takeLayerTree(); - Dart_Handle toImage(Dart_Handle image_handle, - uint32_t width, + Dart_Handle toImage(uint32_t width, uint32_t height, Dart_Handle image_callback); diff --git a/lib/ui/dart_ui.cc b/lib/ui/dart_ui.cc index c3b758564a5d0..5b3189dfa80f8 100644 --- a/lib/ui/dart_ui.cc +++ b/lib/ui/dart_ui.cc @@ -13,6 +13,7 @@ #include "flutter/lib/ui/painting/codec.h" #include "flutter/lib/ui/painting/color_filter.h" #include "flutter/lib/ui/painting/engine_layer.h" +#include "flutter/lib/ui/painting/frame_info.h" #include "flutter/lib/ui/painting/gradient.h" #include "flutter/lib/ui/painting/image.h" #include "flutter/lib/ui/painting/image_filter.h" @@ -79,6 +80,7 @@ void DartUI::InitForGlobal() { DartRuntimeHooks::RegisterNatives(g_natives); EngineLayer::RegisterNatives(g_natives); FontCollection::RegisterNatives(g_natives); + FrameInfo::RegisterNatives(g_natives); ImageFilter::RegisterNatives(g_natives); ImageShader::RegisterNatives(g_natives); IsolateNameServerNatives::RegisterNatives(g_natives); diff --git a/lib/ui/painting.dart b/lib/ui/painting.dart index 24d179365da60..dbcbc7d01db60 100644 --- a/lib/ui/painting.dart +++ b/lib/ui/painting.dart @@ -1639,19 +1639,22 @@ typedef ImageDecoderCallback = void Function(Image result); /// /// To obtain an instance of the [FrameInfo] interface, see /// [Codec.getNextFrame]. -class FrameInfo { +@pragma('vm:entry-point') +class FrameInfo extends NativeFieldWrapperClass2 { /// This class is created by the engine, and should not be instantiated /// or extended directly. /// /// To obtain an instance of the [FrameInfo] interface, see /// [Codec.getNextFrame]. - FrameInfo._(int durationMilliseconds, this.image) : duration = Duration(milliseconds: durationMilliseconds); + @pragma('vm:entry-point') + FrameInfo._(); /// The duration this frame should be shown. - final Duration duration; + Duration get duration => Duration(milliseconds: _durationMillis); + int get _durationMillis native 'FrameInfo_durationMillis'; /// The [Image] object for this frame. - final Image image; + Image get image native 'FrameInfo_image'; } /// A handle to an image codec. @@ -1681,32 +1684,21 @@ class Codec extends NativeFieldWrapperClass2 { /// * -1 for infinity repetitions. int get repetitionCount native 'Codec_repetitionCount'; - FrameInfo _cachedFrame; - /// Fetches the next animation frame. /// /// Wraps back to the first frame after returning the last frame. /// /// The returned future can complete with an error if the decoding has failed. - Future getNextFrame() async { - if (_cachedFrame == null || frameCount != 1) { - final Image image = Image._(); - final int durationMilliseconds = await _futurize((_Callback callback) => _getNextFrame(image, callback)); - _cachedFrame = FrameInfo._(durationMilliseconds, image); - } - return _cachedFrame; + Future getNextFrame() { + return _futurize(_getNextFrame); } /// Returns an error message on failure, null on success. - String _getNextFrame(Image outImage, _Callback callback) native 'Codec_getNextFrame'; + String _getNextFrame(_Callback callback) native 'Codec_getNextFrame'; /// Release the resources used by this object. The object is no longer usable /// after this method is called. - void dispose() { - _cachedFrame = null; - _dispose(); - } - void _dispose() native 'Codec_dispose'; + void dispose() native 'Codec_dispose'; } /// Instantiates an image codec [Codec] object. @@ -1726,12 +1718,10 @@ class Codec extends NativeFieldWrapperClass2 { Future instantiateImageCodec(Uint8List list, { int targetWidth, int targetHeight, -}) async { - final Codec codec = Codec._(); - await _futurize((_Callback callback) { - return _instantiateImageCodec(codec, list, callback, null, targetWidth ?? _kDoNotResizeDimension, targetHeight ?? _kDoNotResizeDimension); - }); - return codec; +}) { + return _futurize( + (_Callback callback) => _instantiateImageCodec(list, callback, null, targetWidth ?? _kDoNotResizeDimension, targetHeight ?? _kDoNotResizeDimension) + ); } /// Instantiates a [Codec] object for an image binary data. @@ -1745,7 +1735,7 @@ Future instantiateImageCodec(Uint8List list, { /// If both are equal to [_kDoNotResizeDimension], then the image maintains its real size. /// /// Returns an error message if the instantiation has failed, null otherwise. -String _instantiateImageCodec(Codec outCodec, Uint8List list, _Callback callback, _ImageInfo imageInfo, int targetWidth, int targetHeight) +String _instantiateImageCodec(Uint8List list, _Callback callback, _ImageInfo imageInfo, int targetWidth, int targetHeight) native 'instantiateImageCodec'; /// Loads a single image frame from a byte array into an [Image] object. @@ -1786,12 +1776,11 @@ void decodeImageFromPixels( {int rowBytes, int targetWidth, int targetHeight} ) { final _ImageInfo imageInfo = _ImageInfo(width, height, format.index, rowBytes); - final Codec codec = Codec._(); - _futurize( - (_Callback callback) => _instantiateImageCodec(codec, pixels, callback, imageInfo, targetWidth ?? _kDoNotResizeDimension, targetHeight ?? _kDoNotResizeDimension) - ).then((bool _) { - codec.getNextFrame().then((FrameInfo frameInfo) => callback(frameInfo.image)); - }); + final Future codecFuture = _futurize( + (_Callback callback) => _instantiateImageCodec(pixels, callback, imageInfo, targetWidth ?? _kDoNotResizeDimension, targetHeight ?? _kDoNotResizeDimension) + ); + codecFuture.then((Codec codec) => codec.getNextFrame()) + .then((FrameInfo frameInfo) => callback(frameInfo.image)); } /// Determines the winding rule that decides how the interior of a [Path] is @@ -4136,17 +4125,15 @@ class Picture extends NativeFieldWrapperClass2 { /// /// Although the image is returned synchronously, the picture is actually /// rasterized the first time the image is drawn and then cached. - Future toImage(int width, int height) async { + Future toImage(int width, int height) { if (width <= 0 || height <= 0) throw Exception('Invalid image dimensions.'); - final Image image = Image._(); - await _futurize( - (_Callback callback) => _toImage(image, width, height, callback) + return _futurize( + (_Callback callback) => _toImage(width, height, callback) ); - return image; } - String _toImage(Image outImage, int width, int height, _Callback callback) native 'Picture_toImage'; + String _toImage(int width, int height, _Callback callback) native 'Picture_toImage'; /// Release the resources used by this object. The object is no longer usable /// after this method is called. diff --git a/lib/ui/painting/codec.cc b/lib/ui/painting/codec.cc index 76ee2b9fe71e1..829b9db65ed9d 100644 --- a/lib/ui/painting/codec.cc +++ b/lib/ui/painting/codec.cc @@ -10,6 +10,7 @@ #include "flutter/fml/logging.h" #include "flutter/fml/make_copyable.h" #include "flutter/fml/trace_event.h" +#include "flutter/lib/ui/painting/frame_info.h" #include "flutter/lib/ui/painting/multi_frame_codec.h" #include "flutter/lib/ui/painting/single_frame_codec.h" #include "third_party/skia/include/codec/SkCodec.h" @@ -144,14 +145,13 @@ static std::variant ConvertImageInfo( } static void InstantiateImageCodec(Dart_NativeArguments args) { - Dart_Handle codec_handle = Dart_GetNativeArgument(args, 0); - Dart_Handle callback_handle = Dart_GetNativeArgument(args, 2); + Dart_Handle callback_handle = Dart_GetNativeArgument(args, 1); if (!Dart_IsClosure(callback_handle)) { Dart_SetReturnValue(args, tonic::ToDart("Callback must be a function")); return; } - Dart_Handle image_info_handle = Dart_GetNativeArgument(args, 3); + Dart_Handle image_info_handle = Dart_GetNativeArgument(args, 2); std::optional image_info; @@ -171,7 +171,7 @@ static void InstantiateImageCodec(Dart_NativeArguments args) { { Dart_Handle exception = nullptr; tonic::Uint8List list = - tonic::DartConverter::FromArguments(args, 1, + tonic::DartConverter::FromArguments(args, 0, exception); if (exception) { Dart_SetReturnValue(args, exception); @@ -191,9 +191,9 @@ static void InstantiateImageCodec(Dart_NativeArguments args) { } const int targetWidth = - tonic::DartConverter::FromDart(Dart_GetNativeArgument(args, 4)); + tonic::DartConverter::FromDart(Dart_GetNativeArgument(args, 3)); const int targetHeight = - tonic::DartConverter::FromDart(Dart_GetNativeArgument(args, 5)); + tonic::DartConverter::FromDart(Dart_GetNativeArgument(args, 4)); std::unique_ptr codec; bool single_frame; @@ -208,6 +208,8 @@ static void InstantiateImageCodec(Dart_NativeArguments args) { single_frame = codec->getFrameCount() == 1; } + fml::RefPtr ui_codec; + if (single_frame) { ImageDecoder::ImageDescriptor descriptor; descriptor.decompressed_image_info = image_info; @@ -220,13 +222,12 @@ static void InstantiateImageCodec(Dart_NativeArguments args) { } descriptor.data = std::move(buffer); - SingleFrameCodec::Create(codec_handle, std::move(descriptor)); + ui_codec = fml::MakeRefCounted(std::move(descriptor)); } else { - MultiFrameCodec::Create(codec_handle, std::move(codec)); + ui_codec = fml::MakeRefCounted(std::move(codec)); } - tonic::DartInvoke(callback_handle, {Dart_True()}); - Dart_SetReturnValue(args, Dart_Null()); + tonic::DartInvoke(callback_handle, {ToDart(ui_codec)}); } IMPLEMENT_WRAPPERTYPEINFO(ui, Codec); @@ -245,7 +246,7 @@ void Codec::dispose() { void Codec::RegisterNatives(tonic::DartLibraryNatives* natives) { natives->Register({ - {"instantiateImageCodec", InstantiateImageCodec, 6, true}, + {"instantiateImageCodec", InstantiateImageCodec, 5, true}, }); natives->Register({FOR_EACH_BINDING(DART_REGISTER_NATIVE)}); } diff --git a/lib/ui/painting/codec.h b/lib/ui/painting/codec.h index 53ac9e426448d..2e0c746eac2d6 100644 --- a/lib/ui/painting/codec.h +++ b/lib/ui/painting/codec.h @@ -6,6 +6,7 @@ #define FLUTTER_LIB_UI_PAINTING_CODEC_H_ #include "flutter/lib/ui/dart_wrapper.h" +#include "flutter/lib/ui/painting/frame_info.h" #include "third_party/skia/include/codec/SkCodec.h" #include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkImage.h" @@ -29,8 +30,7 @@ class Codec : public RefCountedDartWrappable { virtual int repetitionCount() const = 0; - virtual Dart_Handle getNextFrame(Dart_Handle image_handle, - Dart_Handle callback_handle) = 0; + virtual Dart_Handle getNextFrame(Dart_Handle callback_handle) = 0; void dispose(); diff --git a/lib/ui/painting/frame_info.cc b/lib/ui/painting/frame_info.cc new file mode 100644 index 0000000000000..ad77f7b50d8a4 --- /dev/null +++ b/lib/ui/painting/frame_info.cc @@ -0,0 +1,30 @@ + +// 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. + +#include "flutter/lib/ui/painting/frame_info.h" + +#include "third_party/tonic/dart_binding_macros.h" +#include "third_party/tonic/dart_library_natives.h" + +namespace flutter { + +IMPLEMENT_WRAPPERTYPEINFO(ui, FrameInfo); + +#define FOR_EACH_BINDING(V) \ + V(FrameInfo, durationMillis) \ + V(FrameInfo, image) + +FOR_EACH_BINDING(DART_NATIVE_CALLBACK) + +FrameInfo::FrameInfo(fml::RefPtr image, int durationMillis) + : image_(std::move(image)), durationMillis_(durationMillis) {} + +FrameInfo::~FrameInfo(){}; + +void FrameInfo::RegisterNatives(tonic::DartLibraryNatives* natives) { + natives->Register({FOR_EACH_BINDING(DART_REGISTER_NATIVE)}); +} + +} // namespace flutter diff --git a/lib/ui/painting/frame_info.h b/lib/ui/painting/frame_info.h new file mode 100644 index 0000000000000..184b132d17791 --- /dev/null +++ b/lib/ui/painting/frame_info.h @@ -0,0 +1,37 @@ +// 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. + +#ifndef FLUTTER_LIB_UI_PAINTING_FRAME_INFO_H_ +#define FLUTTER_LIB_UI_PAINTING_FRAME_INFO_H_ + +#include "flutter/lib/ui/dart_wrapper.h" +#include "flutter/lib/ui/painting/image.h" + +namespace flutter { + +// A single animation frame. +class FrameInfo final : public RefCountedDartWrappable { + DEFINE_WRAPPERTYPEINFO(); + + public: + int durationMillis() { return durationMillis_; } + fml::RefPtr image() { return image_; } + + static void RegisterNatives(tonic::DartLibraryNatives* natives); + + private: + FrameInfo(fml::RefPtr image, int durationMillis); + + ~FrameInfo() override; + + const fml::RefPtr image_; + const int durationMillis_; + + FML_FRIEND_MAKE_REF_COUNTED(FrameInfo); + FML_FRIEND_REF_COUNTED_THREAD_SAFE(FrameInfo); +}; + +} // namespace flutter + +#endif // FLUTTER_LIB_UI_PAINTING_FRAME_INFO_H_ diff --git a/lib/ui/painting/image.h b/lib/ui/painting/image.h index 43a00517421b8..516a2e5d59c49 100644 --- a/lib/ui/painting/image.h +++ b/lib/ui/painting/image.h @@ -22,10 +22,8 @@ class CanvasImage final : public RefCountedDartWrappable { public: ~CanvasImage() override; - static fml::RefPtr Create(Dart_Handle dart_handle) { - auto image = fml::MakeRefCounted(); - image->AssociateWithDartWrapper(dart_handle); - return image; + static fml::RefPtr Create() { + return fml::MakeRefCounted(); } int width() { return image_.get()->width(); } diff --git a/lib/ui/painting/multi_frame_codec.cc b/lib/ui/painting/multi_frame_codec.cc index c38ecb48930e3..f650e25a97e61 100644 --- a/lib/ui/painting/multi_frame_codec.cc +++ b/lib/ui/painting/multi_frame_codec.cc @@ -20,11 +20,8 @@ MultiFrameCodec::MultiFrameCodec(std::unique_ptr codec) MultiFrameCodec::~MultiFrameCodec() = default; static void InvokeNextFrameCallback( - sk_sp skImage, - fml::RefPtr canvas_image, + fml::RefPtr frameInfo, std::unique_ptr callback, - fml::RefPtr unref_queue, - SkCodec::FrameInfo skFrameInfo, size_t trace_id) { std::shared_ptr dart_state = callback->dart_state().lock(); if (!dart_state) { @@ -33,13 +30,10 @@ static void InvokeNextFrameCallback( return; } tonic::DartState::Scope scope(dart_state); - - if (skImage) { - canvas_image->set_image({skImage, std::move(unref_queue)}); - tonic::DartInvoke(callback->value(), - {tonic::ToDart(skFrameInfo.fDuration)}); - } else { + if (!frameInfo) { tonic::DartInvoke(callback->value(), {Dart_Null()}); + } else { + tonic::DartInvoke(callback->value(), {ToDart(frameInfo)}); } } @@ -135,32 +129,30 @@ sk_sp MultiFrameCodec::GetNextFrameImage( } void MultiFrameCodec::GetNextFrameAndInvokeCallback( - fml::RefPtr canvas_image, std::unique_ptr callback, fml::RefPtr ui_task_runner, fml::WeakPtr resourceContext, fml::RefPtr unref_queue, size_t trace_id) { + fml::RefPtr frameInfo = NULL; sk_sp skImage = GetNextFrameImage(resourceContext); - SkCodec::FrameInfo skFrameInfo; if (skImage) { + fml::RefPtr image = CanvasImage::Create(); + image->set_image({skImage, std::move(unref_queue)}); + SkCodec::FrameInfo skFrameInfo; codec_->getFrameInfo(nextFrameIndex_, &skFrameInfo); + frameInfo = + fml::MakeRefCounted(std::move(image), skFrameInfo.fDuration); } nextFrameIndex_ = (nextFrameIndex_ + 1) % frameCount_; ui_task_runner->PostTask(fml::MakeCopyable( - [skImage = std::move(skImage), callback = std::move(callback), - canvas_image = std::move(canvas_image), - unref_queue = std::move(unref_queue), - skFrameInfo = std::move(skFrameInfo), trace_id]() mutable { - InvokeNextFrameCallback(std::move(skImage), std::move(canvas_image), - std::move(callback), std::move(unref_queue), - std::move(skFrameInfo), trace_id); + [callback = std::move(callback), frameInfo, trace_id]() mutable { + InvokeNextFrameCallback(frameInfo, std::move(callback), trace_id); })); } -Dart_Handle MultiFrameCodec::getNextFrame(Dart_Handle image_handle, - Dart_Handle callback_handle) { +Dart_Handle MultiFrameCodec::getNextFrame(Dart_Handle callback_handle) { static size_t trace_counter = 1; const size_t trace_id = trace_counter++; @@ -168,19 +160,17 @@ Dart_Handle MultiFrameCodec::getNextFrame(Dart_Handle image_handle, return tonic::ToDart("Callback must be a function"); } - auto canvas_image = CanvasImage::Create(image_handle); auto* dart_state = UIDartState::Current(); const auto& task_runners = dart_state->GetTaskRunners(); task_runners.GetIOTaskRunner()->PostTask(fml::MakeCopyable( - [canvas_image = std::move(canvas_image), - callback = std::make_unique( + [callback = std::make_unique( tonic::DartState::Current(), callback_handle), this, trace_id, ui_task_runner = task_runners.GetUITaskRunner(), io_manager = dart_state->GetIOManager()]() mutable { GetNextFrameAndInvokeCallback( - canvas_image, std::move(callback), std::move(ui_task_runner), + std::move(callback), std::move(ui_task_runner), io_manager->GetResourceContext(), io_manager->GetSkiaUnrefQueue(), trace_id); })); diff --git a/lib/ui/painting/multi_frame_codec.h b/lib/ui/painting/multi_frame_codec.h index 1abcded241469..0be63c2a57582 100644 --- a/lib/ui/painting/multi_frame_codec.h +++ b/lib/ui/painting/multi_frame_codec.h @@ -5,23 +5,15 @@ #ifndef FLUTTER_LIB_UI_PAINTING_MUTLI_FRAME_CODEC_H_ #define FLUTTER_LIB_UI_PAINTING_MUTLI_FRAME_CODEC_H_ -#include "flutter/flow/skia_gpu_object.h" #include "flutter/fml/macros.h" -#include "flutter/fml/memory/weak_ptr.h" #include "flutter/lib/ui/painting/codec.h" -#include "flutter/lib/ui/painting/image.h" namespace flutter { class MultiFrameCodec : public Codec { public: - static fml::RefPtr Create(Dart_Handle codec_handle, - std::unique_ptr codec) { - auto multi_frame_codec = - fml::MakeRefCounted(std::move(codec)); - multi_frame_codec->AssociateWithDartWrapper(codec_handle); - return multi_frame_codec; - } + MultiFrameCodec(std::unique_ptr codec); + ~MultiFrameCodec() override; // |Codec| @@ -31,10 +23,9 @@ class MultiFrameCodec : public Codec { int repetitionCount() const override; // |Codec| - Dart_Handle getNextFrame(Dart_Handle image_handle, Dart_Handle args) override; + Dart_Handle getNextFrame(Dart_Handle args) override; private: - MultiFrameCodec(std::unique_ptr codec); const std::unique_ptr codec_; const int frameCount_; const int repetitionCount_; @@ -48,7 +39,6 @@ class MultiFrameCodec : public Codec { sk_sp GetNextFrameImage(fml::WeakPtr resourceContext); void GetNextFrameAndInvokeCallback( - fml::RefPtr canvas_image, std::unique_ptr callback, fml::RefPtr ui_task_runner, fml::WeakPtr resourceContext, diff --git a/lib/ui/painting/picture.cc b/lib/ui/painting/picture.cc index 34d765221e0a7..8527b83ec139b 100644 --- a/lib/ui/painting/picture.cc +++ b/lib/ui/painting/picture.cc @@ -40,16 +40,14 @@ Picture::Picture(flutter::SkiaGPUObject picture) Picture::~Picture() = default; -Dart_Handle Picture::toImage(Dart_Handle image_handle, - uint32_t width, +Dart_Handle Picture::toImage(uint32_t width, uint32_t height, Dart_Handle raw_image_callback) { if (!picture_.get()) { return tonic::ToDart("Picture is null"); } - return RasterizeToImage(image_handle, picture_.get(), width, height, - raw_image_callback); + return RasterizeToImage(picture_.get(), width, height, raw_image_callback); } void Picture::dispose() { @@ -64,8 +62,7 @@ size_t Picture::GetAllocationSize() { } } -Dart_Handle Picture::RasterizeToImage(Dart_Handle image_handle, - sk_sp picture, +Dart_Handle Picture::RasterizeToImage(sk_sp picture, uint32_t width, uint32_t height, Dart_Handle raw_image_callback) { @@ -77,8 +74,6 @@ Dart_Handle Picture::RasterizeToImage(Dart_Handle image_handle, return tonic::ToDart("Image dimensions for scene were invalid."); } - auto canvas_image = CanvasImage::Create(image_handle); - auto* dart_state = UIDartState::Current(); tonic::DartPersistentValue* image_callback = new tonic::DartPersistentValue(dart_state, raw_image_callback); @@ -94,7 +89,7 @@ Dart_Handle Picture::RasterizeToImage(Dart_Handle image_handle, auto picture_bounds = SkISize::Make(width, height); - auto ui_task = fml::MakeCopyable([canvas_image, image_callback, unref_queue]( + auto ui_task = fml::MakeCopyable([image_callback, unref_queue]( sk_sp raster_image) mutable { auto dart_state = image_callback->dart_state().lock(); if (!dart_state) { @@ -105,14 +100,15 @@ Dart_Handle Picture::RasterizeToImage(Dart_Handle image_handle, if (!raster_image) { tonic::DartInvoke(image_callback->Get(), {Dart_Null()}); - delete image_callback; return; } - canvas_image->set_image({std::move(raster_image), std::move(unref_queue)}); + auto dart_image = CanvasImage::Create(); + dart_image->set_image({std::move(raster_image), std::move(unref_queue)}); + auto* raw_dart_image = tonic::ToDart(std::move(dart_image)); // All done! - tonic::DartInvoke(image_callback->Get(), {Dart_True()}); + tonic::DartInvoke(image_callback->Get(), {raw_dart_image}); // image_callback is associated with the Dart isolate and must be deleted // on the UI thread diff --git a/lib/ui/painting/picture.h b/lib/ui/painting/picture.h index 7ed628550c4f7..f6dd98887d264 100644 --- a/lib/ui/painting/picture.h +++ b/lib/ui/painting/picture.h @@ -28,8 +28,7 @@ class Picture : public RefCountedDartWrappable { sk_sp picture() const { return picture_.get(); } - Dart_Handle toImage(Dart_Handle image_handle, - uint32_t width, + Dart_Handle toImage(uint32_t width, uint32_t height, Dart_Handle raw_image_callback); @@ -39,8 +38,7 @@ class Picture : public RefCountedDartWrappable { static void RegisterNatives(tonic::DartLibraryNatives* natives); - static Dart_Handle RasterizeToImage(Dart_Handle image_handle, - sk_sp picture, + static Dart_Handle RasterizeToImage(sk_sp picture, uint32_t width, uint32_t height, Dart_Handle raw_image_callback); diff --git a/lib/ui/painting/single_frame_codec.cc b/lib/ui/painting/single_frame_codec.cc index 51eb870001a3e..44361f583a583 100644 --- a/lib/ui/painting/single_frame_codec.cc +++ b/lib/ui/painting/single_frame_codec.cc @@ -4,6 +4,7 @@ #include "flutter/lib/ui/painting/single_frame_codec.h" +#include "flutter/lib/ui/painting/frame_info.h" #include "flutter/lib/ui/ui_dart_state.h" #include "third_party/tonic/logging/dart_invoke.h" @@ -22,20 +23,16 @@ int SingleFrameCodec::repetitionCount() const { return 0; } -Dart_Handle SingleFrameCodec::getNextFrame(Dart_Handle image_handle, - Dart_Handle callback_handle) { +Dart_Handle SingleFrameCodec::getNextFrame(Dart_Handle callback_handle) { if (!Dart_IsClosure(callback_handle)) { return tonic::ToDart("Callback must be a function"); } if (status_ == Status::kComplete) { - return tonic::ToDart( - "Dart callers are responsible for caching the frame callback " - "information"); + tonic::DartInvoke(callback_handle, {tonic::ToDart(cached_frame_)}); + return Dart_Null(); } - auto canvas_image = CanvasImage::Create(image_handle); - // This has to be valid because this method is called from Dart. auto dart_state = UIDartState::Current(); @@ -60,7 +57,7 @@ Dart_Handle SingleFrameCodec::getNextFrame(Dart_Handle image_handle, fml::RefPtr* raw_codec_ref = new fml::RefPtr(this); - decoder->Decode(descriptor_, [canvas_image, raw_codec_ref](auto image) { + decoder->Decode(descriptor_, [raw_codec_ref](auto image) { std::unique_ptr> codec_ref(raw_codec_ref); fml::RefPtr codec(std::move(*codec_ref)); @@ -69,14 +66,18 @@ Dart_Handle SingleFrameCodec::getNextFrame(Dart_Handle image_handle, if (!state) { // This is probably because the isolate has been terminated before the // image could be decoded. + return; } tonic::DartState::Scope scope(state.get()); if (image.get()) { + auto canvas_image = fml::MakeRefCounted(); canvas_image->set_image(std::move(image)); - codec->cached_frame_image_size_ = canvas_image->GetAllocationSize(); + + codec->cached_frame_ = fml::MakeRefCounted( + std::move(canvas_image), 0 /* duration */); } // The cached frame is now available and should be returned to any future @@ -84,8 +85,9 @@ Dart_Handle SingleFrameCodec::getNextFrame(Dart_Handle image_handle, codec->status_ = Status::kComplete; // Invoke any callbacks that were provided before the frame was decoded. + Dart_Handle frame = tonic::ToDart(codec->cached_frame_); for (const DartPersistentValue& callback : codec->pending_callbacks_) { - tonic::DartInvoke(callback.value(), {tonic::ToDart(0)}); + tonic::DartInvoke(callback.value(), {frame}); } codec->pending_callbacks_.clear(); }); @@ -95,13 +97,17 @@ Dart_Handle SingleFrameCodec::getNextFrame(Dart_Handle image_handle, descriptor_.data.reset(); status_ = Status::kInProgress; + return Dart_Null(); } size_t SingleFrameCodec::GetAllocationSize() { const auto& data = descriptor_.data; const auto data_byte_size = data ? data->size() : 0; - return data_byte_size + cached_frame_image_size_ + sizeof(this); + const auto frame_byte_size = (cached_frame_ && cached_frame_->image()) + ? cached_frame_->image()->GetAllocationSize() + : 0; + return data_byte_size + frame_byte_size + sizeof(this); } } // namespace flutter diff --git a/lib/ui/painting/single_frame_codec.h b/lib/ui/painting/single_frame_codec.h index 48639deb10a90..b01638c71ce63 100644 --- a/lib/ui/painting/single_frame_codec.h +++ b/lib/ui/painting/single_frame_codec.h @@ -7,20 +7,15 @@ #include "flutter/fml/macros.h" #include "flutter/lib/ui/painting/codec.h" -#include "flutter/lib/ui/painting/image.h" +#include "flutter/lib/ui/painting/frame_info.h" #include "flutter/lib/ui/painting/image_decoder.h" namespace flutter { class SingleFrameCodec : public Codec { public: - static fml::RefPtr Create( - Dart_Handle codec_handle, - ImageDecoder::ImageDescriptor descriptor) { - auto codec = fml::MakeRefCounted(std::move(descriptor)); - codec->AssociateWithDartWrapper(codec_handle); - return codec; - } + SingleFrameCodec(ImageDecoder::ImageDescriptor descriptor); + ~SingleFrameCodec() override; // |Codec| @@ -30,18 +25,16 @@ class SingleFrameCodec : public Codec { int repetitionCount() const override; // |Codec| - Dart_Handle getNextFrame(Dart_Handle image_handle, - Dart_Handle callback_handle) override; + Dart_Handle getNextFrame(Dart_Handle args) override; // |DartWrappable| size_t GetAllocationSize() override; private: - SingleFrameCodec(ImageDecoder::ImageDescriptor descriptor); enum class Status { kNew, kInProgress, kComplete }; Status status_; ImageDecoder::ImageDescriptor descriptor_; - size_t cached_frame_image_size_; + fml::RefPtr cached_frame_; std::vector pending_callbacks_; FML_FRIEND_MAKE_REF_COUNTED(SingleFrameCodec); diff --git a/third_party/tonic/dart_state.cc b/third_party/tonic/dart_state.cc index 870f058b9f2fc..b711a22977788 100644 --- a/third_party/tonic/dart_state.cc +++ b/third_party/tonic/dart_state.cc @@ -22,6 +22,7 @@ DartState::Scope::~Scope() {} DartState::DartState(int dirfd, std::function message_epilogue) : isolate_(nullptr), + private_constructor_name_(), class_library_(new DartClassLibrary), message_handler_(new DartMessageHandler()), file_loader_(new FileLoader(dirfd)), @@ -36,6 +37,12 @@ void DartState::SetIsolate(Dart_Isolate isolate) { if (!isolate_) return; + private_constructor_name_.Clear(); + Dart_EnterScope(); + private_constructor_name_.Set( + this, Dart_NewPersistentHandle(Dart_NewStringFromCString("_"))); + Dart_ExitScope(); + DidSetIsolate(); } diff --git a/third_party/tonic/dart_state.h b/third_party/tonic/dart_state.h index d2c6e03cb7cc9..845914937dcd0 100644 --- a/third_party/tonic/dart_state.h +++ b/third_party/tonic/dart_state.h @@ -49,6 +49,12 @@ class DartState : public std::enable_shared_from_this { Dart_Isolate isolate() { return isolate_; } void SetIsolate(Dart_Isolate isolate); + // TODO(https://github.com/flutter/flutter/issues/50997): Work around until we + // drop the need for Dart_New in tonic. + Dart_PersistentHandle private_constructor_name() { + return private_constructor_name_.Get(); + } + DartClassLibrary& class_library() { return *class_library_; } DartMessageHandler& message_handler() { return *message_handler_; } FileLoader& file_loader() { return *file_loader_; } @@ -70,6 +76,7 @@ class DartState : public std::enable_shared_from_this { private: Dart_Isolate isolate_; + DartPersistentValue private_constructor_name_; std::unique_ptr class_library_; std::unique_ptr message_handler_; std::unique_ptr file_loader_; diff --git a/third_party/tonic/dart_wrappable.cc b/third_party/tonic/dart_wrappable.cc index 42c8fff2805b2..4ebfda7e1a362 100644 --- a/third_party/tonic/dart_wrappable.cc +++ b/third_party/tonic/dart_wrappable.cc @@ -15,6 +15,33 @@ DartWrappable::~DartWrappable() { TONIC_CHECK(!dart_wrapper_); } +// TODO(dnfield): Delete this. https://github.com/flutter/flutter/issues/50997 +Dart_Handle DartWrappable::CreateDartWrapper(DartState* dart_state) { + TONIC_DCHECK(!dart_wrapper_); + const DartWrapperInfo& info = GetDartWrapperInfo(); + + Dart_PersistentHandle type = dart_state->class_library().GetClass(info); + TONIC_DCHECK(!LogIfError(type)); + + Dart_Handle wrapper = + Dart_New(type, dart_state->private_constructor_name(), 0, nullptr); + + TONIC_DCHECK(!LogIfError(wrapper)); + + Dart_Handle res = Dart_SetNativeInstanceField( + wrapper, kPeerIndex, reinterpret_cast(this)); + TONIC_DCHECK(!LogIfError(res)); + res = Dart_SetNativeInstanceField(wrapper, kWrapperInfoIndex, + reinterpret_cast(&info)); + TONIC_DCHECK(!LogIfError(res)); + + this->RetainDartWrappableReference(); // Balanced in FinalizeDartWrapper. + dart_wrapper_ = Dart_NewWeakPersistentHandle( + wrapper, this, GetAllocationSize(), &FinalizeDartWrapper); + + return wrapper; +} + void DartWrappable::AssociateWithDartWrapper(Dart_Handle wrapper) { TONIC_DCHECK(!dart_wrapper_); TONIC_CHECK(!LogIfError(wrapper)); @@ -47,8 +74,7 @@ void DartWrappable::FinalizeDartWrapper(void* isolate_callback_data, void* peer) { DartWrappable* wrappable = reinterpret_cast(peer); wrappable->dart_wrapper_ = nullptr; - wrappable->ReleaseDartWrappableReference(); // Balanced in - // AssociateWithDartWrapper. + wrappable->ReleaseDartWrappableReference(); // Balanced in CreateDartWrapper. } size_t DartWrappable::GetAllocationSize() { diff --git a/third_party/tonic/dart_wrappable.h b/third_party/tonic/dart_wrappable.h index d4a6e1711aa15..1d2e5e75bacb2 100644 --- a/third_party/tonic/dart_wrappable.h +++ b/third_party/tonic/dart_wrappable.h @@ -43,6 +43,10 @@ class DartWrappable { virtual void ReleaseDartWrappableReference() const = 0; + // Use this method sparingly. It follows a slower path using Dart_New. + // Prefer constructing the object in Dart code and using + // AssociateWithDartWrapper. + Dart_Handle CreateDartWrapper(DartState* dart_state); void AssociateWithDartWrapper(Dart_Handle wrappable); void ClearDartWrapper(); // Warning: Might delete this. Dart_WeakPersistentHandle dart_wrapper() const { return dart_wrapper_; } @@ -103,23 +107,18 @@ struct DartConverter< return Dart_Null(); if (Dart_WeakPersistentHandle wrapper = val->dart_wrapper()) return Dart_HandleFromWeakPersistent(wrapper); - - Log("Do not create non-primitive Dart objects from C++ code."); - TONIC_DCHECK(false); - return Dart_NewApiError("Invalid object conversion"); + return val->CreateDartWrapper(DartState::Current()); } static void SetReturnValue(Dart_NativeArguments args, DartWrappable* val, bool auto_scope = true) { - if (!val) { + if (!val) Dart_SetReturnValue(args, Dart_Null()); - } else if (Dart_WeakPersistentHandle wrapper = val->dart_wrapper()) { + else if (Dart_WeakPersistentHandle wrapper = val->dart_wrapper()) Dart_SetWeakHandleReturnValue(args, wrapper); - } else { - Log("Do not create non-primitive Dart objects from C++ code."); - TONIC_DCHECK(false); - } + else + Dart_SetReturnValue(args, val->CreateDartWrapper(DartState::Current())); } static T* FromDart(Dart_Handle handle) { From 56398d2f3bd5ef1c7334fcfb9628517b2cfcdb57 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 18:34:01 -0500 Subject: [PATCH 138/521] Roll fuchsia/sdk/core/mac-amd64 from cGxwD... to VQHsS... (#16914) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index a7209e616fbc8..d480f3dc85c42 100644 --- a/DEPS +++ b/DEPS @@ -546,7 +546,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'cGxwDxl9ZQUH2BlHtnMXYUkjcZbHMbX7_jq1YP8TjtcC' + 'version': 'VQHsSxgf0eDnmsVYbdU6EEm1m-LsgGdhXW_24I-QiPUC' } ], 'condition': 'host_os == "mac"', From 90bd6f8148178b5cfe80ab21b3dc36ab7d49f6ac Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 19:44:01 -0500 Subject: [PATCH 139/521] Roll src/third_party/skia 4036cb1f0b6e..a54af923929b (1 commits) (#16917) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++++++--------------- 3 files changed, 126 insertions(+), 122 deletions(-) diff --git a/DEPS b/DEPS index d480f3dc85c42..c89dc59ca05d5 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '4036cb1f0b6e275009ff08681e878cde0763c3e9', + 'skia_revision': 'a54af923929b50c01e64c6cb9c4543b2f479f6c3', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 0e2e9337b88c9..42a72dff3134e 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4be93742336140f91e6f18da1b32f093 +Signature: 02399d395b85c72baef1afd2fe1b14e2 UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 5db764fbeb983..17f306abefc94 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,66 +5143,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5234,66 +5174,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5690,6 +5570,130 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From fe20f68771322414ffdb559d3923b91fdfa1eaf6 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 3 Mar 2020 21:19:01 -0500 Subject: [PATCH 140/521] Roll src/third_party/skia a54af923929b..20ed48e8e963 (1 commits) (#16918) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index c89dc59ca05d5..8526d8274136d 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'a54af923929b50c01e64c6cb9c4543b2f479f6c3', + 'skia_revision': '20ed48e8e963a5ad27c044e2204db9ec187f4edb', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 42a72dff3134e..a782ebf6c0e31 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 02399d395b85c72baef1afd2fe1b14e2 +Signature: d2f9777de06d07946df7d6d09399c8d2 UNUSED LICENSES: From 0dc405edc404085844343f84f6ec8614824e4563 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 4 Mar 2020 07:51:02 -0500 Subject: [PATCH 141/521] Roll fuchsia/sdk/core/linux-amd64 from ULy6Z... to vH9-3... (#16920) --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 8526d8274136d..a5444397e04a4 100644 --- a/DEPS +++ b/DEPS @@ -566,7 +566,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'ULy6ZIkyWHKKjlRv5Lw9xD-TvYOQ0ezZeKcE01x4q08C' + 'version': 'vH9-3OoPe7jPSQPnRi6oSLnrQiDQ4dFOriWO0Gi4p9EC' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 44f531a2ee790..3e4a9e061ee06 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: 67e7bc0a4129f3ac3909beb7ec8fda07 +Signature: f94ca5808e1758792f5815adf9a469b4 UNUSED LICENSES: From 0bbb0229c52a52ef0af2b127b2ea1e45957ca134 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 4 Mar 2020 07:56:04 -0500 Subject: [PATCH 142/521] Roll src/third_party/skia 20ed48e8e963..64a3f8fcb749 (1 commits) (#16921) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a5444397e04a4..9968426fa0429 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '20ed48e8e963a5ad27c044e2204db9ec187f4edb', + 'skia_revision': '64a3f8fcb74929e34acf1831f58cabf2e435042b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a782ebf6c0e31..8f5ea002585c5 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d2f9777de06d07946df7d6d09399c8d2 +Signature: 3cb73d84975963d7697422175cb46494 UNUSED LICENSES: From e2b74ab80eb4f4faf0f3e5291d9e6b433849864b Mon Sep 17 00:00:00 2001 From: stuartmorgan Date: Wed, 4 Mar 2020 14:00:44 +0100 Subject: [PATCH 143/521] Request EGL in GLFW window creation (#16924) Skia expects an EGL context, but GLFW was defaulting to non-EGL, which causes eglGetCurrentDisplay to fail--since the context wasn't made current via EGL--with new versions of libglvnd. (It may have worked only by accident with previous versions). Fixes https://github.com/flutter/flutter/issues/47954 --- shell/platform/glfw/flutter_glfw.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/shell/platform/glfw/flutter_glfw.cc b/shell/platform/glfw/flutter_glfw.cc index a38cb60ae8a47..da1176f4f0f5b 100644 --- a/shell/platform/glfw/flutter_glfw.cc +++ b/shell/platform/glfw/flutter_glfw.cc @@ -139,6 +139,9 @@ static FlutterDesktopWindowControllerState* GetSavedWindowState( static UniqueGLFWwindowPtr CreateShareWindowForWindow(GLFWwindow* window) { glfwWindowHint(GLFW_DECORATED, GLFW_FALSE); glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE); +#if defined(__linux__) + glfwWindowHint(GLFW_CONTEXT_CREATION_API, GLFW_EGL_CONTEXT_API); +#endif GLFWwindow* share_window = glfwCreateWindow(1, 1, "", NULL, window); glfwDefaultWindowHints(); return UniqueGLFWwindowPtr(share_window, glfwDestroyWindow); @@ -561,6 +564,9 @@ FlutterDesktopWindowControllerRef FlutterDesktopCreateWindow( if (window_properties.prevent_resize) { glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE); } +#if defined(__linux__) + glfwWindowHint(GLFW_CONTEXT_CREATION_API, GLFW_EGL_CONTEXT_API); +#endif state->window = UniqueGLFWwindowPtr( glfwCreateWindow(window_properties.width, window_properties.height, window_properties.title, NULL, NULL), From 882bcb1b6e3866ce7528f54fdf93ee714be1b93a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 4 Mar 2020 08:01:04 -0500 Subject: [PATCH 144/521] Roll src/third_party/dart 5701c4fd3b11..57462f9ca520 (7 commits) (#16922) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 9968426fa0429..64ce31be3fb60 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '5701c4fd3b11b4dbb1e7a3e9f6b1cc319ca5f1ac', + 'dart_revision': '57462f9ca52000932d2ac82613808131650b440c', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py From 65ed10a03b74a3ac3d635aa452f6448a28a81e5d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Wed, 4 Mar 2020 08:06:02 -0500 Subject: [PATCH 145/521] Roll fuchsia/sdk/core/mac-amd64 from VQHsS... to 8HrJn... (#16925) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 64ce31be3fb60..e4d9a1f39eab2 100644 --- a/DEPS +++ b/DEPS @@ -546,7 +546,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'VQHsSxgf0eDnmsVYbdU6EEm1m-LsgGdhXW_24I-QiPUC' + 'version': '8HrJn8jd6LRwEIkWpc2iUcyLcZlTiJWXSHH0uWWiXwYC' } ], 'condition': 'host_os == "mac"', From 3362c5fa9e6efafb59bddeaa86fde8ee046319a8 Mon Sep 17 00:00:00 2001 From: Flutter GitHub Bot <52682268+fluttergithubbot@users.noreply.github.com> Date: Wed, 4 Mar 2020 10:36:03 -0800 Subject: [PATCH 146/521] Remove debug log (#16932) --- .../platform/darwin/ios/framework/Source/FlutterPlatformViews.mm | 1 - 1 file changed, 1 deletion(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index e7a30d61add75..fa5f8d4aba8d5 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -467,7 +467,6 @@ auto overlay_it = overlays_.find(overlay_id); if (!gr_context) { - FML_DLOG(ERROR) << "No GrContext"; if (overlays_.count(overlay_id) != 0) { return; } From 59b4d9b3b8677648089263d2db40174e5261411d Mon Sep 17 00:00:00 2001 From: gaaclarke <30870216+gaaclarke@users.noreply.github.com> Date: Wed, 4 Mar 2020 10:53:11 -0800 Subject: [PATCH 147/521] Fixed the ability to scroll to the top on iOS 13 (#16820) --- .../framework/Headers/FlutterAppDelegate.h | 9 -- .../framework/Headers/FlutterViewController.h | 2 - .../framework/Source/FlutterAppDelegate.mm | 9 -- .../framework/Source/FlutterViewController.mm | 85 ++++++++++--------- .../Scenarios.xcodeproj/project.pbxproj | 6 ++ .../ios/Scenarios/Scenarios/AppDelegate.m | 23 ++++- .../ScenariosUITests/StatusBarTest.h | 13 +++ .../ScenariosUITests/StatusBarTest.m | 41 +++++++++ testing/scenario_app/lib/main.dart | 2 + .../lib/src/touches_scenario.dart | 31 +++++++ 10 files changed, 161 insertions(+), 60 deletions(-) create mode 100644 testing/scenario_app/ios/Scenarios/ScenariosUITests/StatusBarTest.h create mode 100644 testing/scenario_app/ios/Scenarios/ScenariosUITests/StatusBarTest.m create mode 100644 testing/scenario_app/lib/src/touches_scenario.dart diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h b/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h index 9c534a6fc80e0..8684a22ea7733 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterAppDelegate.h @@ -29,15 +29,6 @@ FLUTTER_EXPORT @property(strong, nonatomic) UIWindow* window; -/** - * Handle StatusBar touches. - * - * Call this from your AppDelegate's `touchesBegan:withEvent:` to have Flutter respond to StatusBar - * touches. For example, to enable scroll-to-top behavior. FlutterAppDelegate already calls it so - * you only need to manually call it if you aren't using a FlutterAppDelegate. - */ -+ (void)handleStatusBarTouches:(NSSet*)touches withEvent:(UIEvent*)event; - @end #endif // FLUTTER_FLUTTERDARTPROJECT_H_ diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h index b0f7df28614e0..9753cdb68bca0 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h @@ -72,8 +72,6 @@ FLUTTER_EXPORT nibName:(nullable NSString*)nibName bundle:(nullable NSBundle*)nibBundle NS_DESIGNATED_INITIALIZER; -- (void)handleStatusBarTouches:(UIEvent*)event; - /** * Registers a callback that will be invoked when the Flutter view has been rendered. * The callback will be fired only once. diff --git a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm index b4c750171485f..42a4081cca13c 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm @@ -48,15 +48,6 @@ + (FlutterViewController*)rootFlutterViewController { return nil; } -+ (void)handleStatusBarTouches:(NSSet*)touches withEvent:(UIEvent*)event { - [self.rootFlutterViewController handleStatusBarTouches:event]; -} - -- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { - [super touchesBegan:touches withEvent:event]; - [[self class] handleStatusBarTouches:touches withEvent:event]; -} - // Do not remove, some clients may be calling these via `super`. - (void)applicationDidEnterBackground:(UIApplication*)application { } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 5b04408ec9d2c..470811a5a8882 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -23,6 +23,9 @@ #import "flutter/shell/platform/darwin/ios/framework/Source/platform_message_response_darwin.h" #import "flutter/shell/platform/darwin/ios/platform_view_ios.h" +static constexpr int kMicrosecondsPerSecond = 1000 * 1000; +static constexpr CGFloat kScrollViewContentSize = 2.0; + NSNotificationName const FlutterSemanticsUpdateNotification = @"FlutterSemanticsUpdate"; NSNotificationName const FlutterViewControllerWillDealloc = @"FlutterViewControllerWillDealloc"; @@ -86,7 +89,7 @@ - (void)invalidate { // This is left a FlutterBinaryMessenger privately for now to give people a chance to notice the // change. Unfortunately unless you have Werror turned on, incompatible pointers as arguments are // just a warning. -@interface FlutterViewController () +@interface FlutterViewController () @property(nonatomic, readwrite, getter=isDisplayingFlutterUI) BOOL displayingFlutterUI; @end @@ -123,6 +126,11 @@ @implementation FlutterViewController { // Coalescer that filters out superfluous keyboard notifications when the app // is being foregrounded. fml::scoped_nsobject _updateViewportMetrics; + // This scroll view is a workaround to accomodate iOS 13 and higher. There isn't a way to get + // touches on the status bar to trigger scrolling to the top of a scroll view. We place a + // UIScrollView with height zero and a content offset so we can get those events. See also: + // https://github.com/flutter/flutter/issues/35050 + fml::scoped_nsobject _scrollView; } @synthesize displayingFlutterUI = _displayingFlutterUI; @@ -329,6 +337,40 @@ - (void)loadView { self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [self installSplashScreenViewIfNecessary]; + UIScrollView* scrollView = [[UIScrollView alloc] init]; + scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth; + // The color shouldn't matter since it is offscreen. + scrollView.backgroundColor = UIColor.whiteColor; + scrollView.delegate = self; + // This is an arbitrary small size. + scrollView.contentSize = CGSizeMake(kScrollViewContentSize, kScrollViewContentSize); + // This is an arbitrary offset that is not CGPointZero. + scrollView.contentOffset = CGPointMake(kScrollViewContentSize, kScrollViewContentSize); + [self.view addSubview:scrollView]; + _scrollView.reset(scrollView); +} + +static void sendFakeTouchEvent(FlutterEngine* engine, + CGPoint location, + flutter::PointerData::Change change) { + const CGFloat scale = [UIScreen mainScreen].scale; + flutter::PointerData pointer_data; + pointer_data.Clear(); + pointer_data.physical_x = location.x * scale; + pointer_data.physical_y = location.y * scale; + pointer_data.kind = flutter::PointerData::DeviceKind::kTouch; + pointer_data.time_stamp = [[NSDate date] timeIntervalSince1970] * kMicrosecondsPerSecond; + auto packet = std::make_unique(/*count=*/1); + pointer_data.change = change; + packet->SetPointerData(0, pointer_data); + [engine dispatchPointerDataPacket:std::move(packet)]; +} + +- (BOOL)scrollViewShouldScrollToTop:(UIScrollView*)scrollView { + CGPoint statusBarPoint = CGPointZero; + sendFakeTouchEvent(_engine.get(), statusBarPoint, flutter::PointerData::Change::kDown); + sendFakeTouchEvent(_engine.get(), statusBarPoint, flutter::PointerData::Change::kUp); + return NO; } #pragma mark - Managing launch views @@ -569,7 +611,6 @@ - (void)flushOngoingTouches { flutter::PointerData pointer_data; pointer_data.Clear(); - constexpr int kMicrosecondsPerSecond = 1000 * 1000; // Use current time. pointer_data.time_stamp = [[NSDate date] timeIntervalSince1970] * kMicrosecondsPerSecond; @@ -835,6 +876,10 @@ - (void)viewDidLayoutSubviews { CGSize viewSize = self.view.bounds.size; CGFloat scale = [UIScreen mainScreen].scale; + // Purposefully place this not visible. + _scrollView.get().frame = CGRectMake(0.0, 0.0, viewSize.width, 0.0); + _scrollView.get().contentOffset = CGPointMake(kScrollViewContentSize, kScrollViewContentSize); + // First time since creation that the dimensions of its view is known. bool firstViewBoundsUpdate = !_viewportMetrics.physical_width; _viewportMetrics.device_pixel_ratio = scale; @@ -1146,42 +1191,6 @@ - (NSString*)contrastMode { } } -#pragma mark - Status Bar touch event handling - -// Standard iOS status bar height in points. -constexpr CGFloat kStandardStatusBarHeight = 20.0; - -- (void)handleStatusBarTouches:(UIEvent*)event { - CGFloat standardStatusBarHeight = kStandardStatusBarHeight; - if (@available(iOS 11, *)) { - standardStatusBarHeight = self.view.safeAreaInsets.top; - } - - // If the status bar is double-height, don't handle status bar taps. iOS - // should open the app associated with the status bar. - CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame; - if (statusBarFrame.size.height != standardStatusBarHeight) { - return; - } - - // If we detect a touch in the status bar, synthesize a fake touch begin/end. - for (UITouch* touch in event.allTouches) { - if (touch.phase == UITouchPhaseBegan && touch.tapCount > 0) { - CGPoint windowLoc = [touch locationInView:nil]; - CGPoint screenLoc = [touch.window convertPoint:windowLoc toWindow:nil]; - if (CGRectContainsPoint(statusBarFrame, screenLoc)) { - NSSet* statusbarTouches = [NSSet setWithObject:touch]; - - flutter::PointerData::Change change = flutter::PointerData::Change::kDown; - [self dispatchTouches:statusbarTouches pointerDataChangeOverride:&change]; - change = flutter::PointerData::Change::kUp; - [self dispatchTouches:statusbarTouches pointerDataChangeOverride:&change]; - return; - } - } - } -} - #pragma mark - Status bar style - (UIStatusBarStyle)preferredStatusBarStyle { diff --git a/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/project.pbxproj b/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/project.pbxproj index 5da90fd32a674..8f95dec91db4f 100644 --- a/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/project.pbxproj +++ b/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 0A57B3BF2323C74200DD9521 /* FlutterEngine+ScenariosTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A57B3BE2323C74200DD9521 /* FlutterEngine+ScenariosTest.m */; }; 0A57B3C22323D2D700DD9521 /* AppLifecycleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A57B3C12323D2D700DD9521 /* AppLifecycleTests.m */; }; 0D14A3FE239743190013D873 /* golden_platform_view_rotate_iPhone SE_simulator.png in Resources */ = {isa = PBXBuildFile; fileRef = 0D14A3FD239743190013D873 /* golden_platform_view_rotate_iPhone SE_simulator.png */; }; + 0D8470A4240F0B1F0030B565 /* StatusBarTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D8470A3240F0B1F0030B565 /* StatusBarTest.m */; }; 0DB781EF22E931BE00E9B371 /* Flutter.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 246B4E4522E3B61000073EBF /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 0DB781F122E933E800E9B371 /* Flutter.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 246B4E4522E3B61000073EBF /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 0DB781FE22EA2C6D00E9B371 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 246B4E4522E3B61000073EBF /* Flutter.framework */; }; @@ -114,6 +115,8 @@ 0A57B3C02323C74D00DD9521 /* FlutterEngine+ScenariosTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "FlutterEngine+ScenariosTest.h"; sourceTree = ""; }; 0A57B3C12323D2D700DD9521 /* AppLifecycleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppLifecycleTests.m; sourceTree = ""; }; 0D14A3FD239743190013D873 /* golden_platform_view_rotate_iPhone SE_simulator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "golden_platform_view_rotate_iPhone SE_simulator.png"; sourceTree = ""; }; + 0D8470A2240F0B1F0030B565 /* StatusBarTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StatusBarTest.h; sourceTree = ""; }; + 0D8470A3240F0B1F0030B565 /* StatusBarTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StatusBarTest.m; sourceTree = ""; }; 0DB781FC22EA2C0300E9B371 /* FlutterViewControllerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FlutterViewControllerTest.m; sourceTree = ""; }; 244EA6CF230DBE8900B2D26E /* golden_platform_view_D21AP.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = golden_platform_view_D21AP.png; sourceTree = ""; }; 246B4E4122E3B5F700073EBF /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = App.framework; sourceTree = ""; }; @@ -272,6 +275,8 @@ 6816DBA22318358200A51400 /* PlatformViewGoldenTestManager.h */, 6816DBA32318358200A51400 /* PlatformViewGoldenTestManager.m */, 68A5B63323EB71D300BDBCDB /* PlatformViewGestureRecognizerTests.m */, + 0D8470A2240F0B1F0030B565 /* StatusBarTest.h */, + 0D8470A3240F0B1F0030B565 /* StatusBarTest.m */, ); path = ScenariosUITests; sourceTree = ""; @@ -466,6 +471,7 @@ 6816DB9E231750ED00A51400 /* GoldenPlatformViewTests.m in Sources */, 6816DBA42318358200A51400 /* PlatformViewGoldenTestManager.m in Sources */, 248D76EF22E388380012F0C1 /* PlatformViewUITests.m in Sources */, + 0D8470A4240F0B1F0030B565 /* StatusBarTest.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/testing/scenario_app/ios/Scenarios/Scenarios/AppDelegate.m b/testing/scenario_app/ios/Scenarios/Scenarios/AppDelegate.m index 8805ad80bd644..348889b19b856 100644 --- a/testing/scenario_app/ios/Scenarios/Scenarios/AppDelegate.m +++ b/testing/scenario_app/ios/Scenarios/Scenarios/AppDelegate.m @@ -41,6 +41,7 @@ - (BOOL)application:(UIApplication*)application @"--gesture-reject-after-touches-ended" : @"platform_view_gesture_reject_after_touches_ended", @"--gesture-reject-eager" : @"platform_view_gesture_reject_eager", @"--gesture-accept" : @"platform_view_gesture_accept", + @"--tap-status-bar" : @"tap_status_bar", }; __block NSString* platformViewTestName = nil; [launchArgsMap @@ -67,8 +68,16 @@ - (void)readyContextForPlatformViewTests:(NSString*)scenarioIdentifier { FlutterEngine* engine = [[FlutterEngine alloc] initWithName:@"PlatformViewTest" project:nil]; [engine runWithEntrypoint:nil]; - FlutterViewController* flutterViewController = - [[NoStatusBarFlutterViewController alloc] initWithEngine:engine nibName:nil bundle:nil]; + FlutterViewController* flutterViewController; + if ([scenarioIdentifier isEqualToString:@"tap_status_bar"]) { + flutterViewController = [[FlutterViewController alloc] initWithEngine:engine + nibName:nil + bundle:nil]; + } else { + flutterViewController = [[NoStatusBarFlutterViewController alloc] initWithEngine:engine + nibName:nil + bundle:nil]; + } [engine.binaryMessenger setMessageHandlerOnChannel:@"scenario_status" binaryMessageHandler:^(NSData* _Nullable message, FlutterBinaryReply _Nonnull reply) { @@ -76,6 +85,16 @@ - (void)readyContextForPlatformViewTests:(NSString*)scenarioIdentifier { sendOnChannel:@"set_scenario" message:[scenarioIdentifier dataUsingEncoding:NSUTF8StringEncoding]]; }]; + [engine.binaryMessenger + setMessageHandlerOnChannel:@"touches_scenario" + binaryMessageHandler:^(NSData* _Nullable message, FlutterBinaryReply _Nonnull reply) { + NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:message + options:0 + error:nil]; + UITextField* text = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 300, 100)]; + text.text = dict[@"change"]; + [flutterViewController.view addSubview:text]; + }]; TextPlatformViewFactory* textPlatformViewFactory = [[TextPlatformViewFactory alloc] initWithMessenger:flutterViewController.binaryMessenger]; NSObject* registrar = diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/StatusBarTest.h b/testing/scenario_app/ios/Scenarios/ScenariosUITests/StatusBarTest.h new file mode 100644 index 0000000000000..03ff9a1c662cd --- /dev/null +++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/StatusBarTest.h @@ -0,0 +1,13 @@ +// Copyright 2020 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface StatusBarTest : XCTestCase +@property(nonatomic, strong) XCUIApplication* application; +@end + +NS_ASSUME_NONNULL_END diff --git a/testing/scenario_app/ios/Scenarios/ScenariosUITests/StatusBarTest.m b/testing/scenario_app/ios/Scenarios/ScenariosUITests/StatusBarTest.m new file mode 100644 index 0000000000000..5192b62e461fc --- /dev/null +++ b/testing/scenario_app/ios/Scenarios/ScenariosUITests/StatusBarTest.m @@ -0,0 +1,41 @@ +// Copyright 2020 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 "StatusBarTest.h" + +@implementation StatusBarTest + +- (void)setUp { + [super setUp]; + self.continueAfterFailure = NO; + + self.application = [[XCUIApplication alloc] init]; + self.application.launchArguments = @[ @"--tap-status-bar" ]; + [self.application launch]; +} + +- (void)testTapStatusBar { + if (@available(iOS 13, *)) { + XCUIApplication* systemApp = + [[XCUIApplication alloc] initWithBundleIdentifier:@"com.apple.springboard"]; + XCUIElement* statusBar = [systemApp.statusBars firstMatch]; + if (statusBar.isHittable) { + [statusBar tap]; + } else { + XCUICoordinate* coordinates = [statusBar coordinateWithNormalizedOffset:CGVectorMake(0, 0)]; + [coordinates tap]; + } + } else { + [[self.application.statusBars firstMatch] tap]; + } + + XCUIElement* addTextField = self.application.textFields[@"PointerChange.add"]; + BOOL exists = [addTextField waitForExistenceWithTimeout:1]; + XCTAssertTrue(exists, @""); + XCUIElement* upTextField = self.application.textFields[@"PointerChange.up"]; + exists = [upTextField waitForExistenceWithTimeout:1]; + XCTAssertTrue(exists, @""); +} + +@end diff --git a/testing/scenario_app/lib/main.dart b/testing/scenario_app/lib/main.dart index 8523234f940f7..494d6585aa7fe 100644 --- a/testing/scenario_app/lib/main.dart +++ b/testing/scenario_app/lib/main.dart @@ -14,6 +14,7 @@ import 'src/animated_color_square.dart'; import 'src/platform_view.dart'; import 'src/poppable_screen.dart'; import 'src/scenario.dart'; +import 'src/touches_scenario.dart'; Map _scenarios = { 'animated_color_square': AnimatedColorSquareScenario(window), @@ -30,6 +31,7 @@ Map _scenarios = { 'platform_view_gesture_reject_eager': PlatformViewForTouchIOSScenario(window, 'platform view touch', id: 11, accept: false), 'platform_view_gesture_accept': PlatformViewForTouchIOSScenario(window, 'platform view touch', id: 11, accept: true), 'platform_view_gesture_reject_after_touches_ended': PlatformViewForTouchIOSScenario(window, 'platform view touch', id: 11, accept: false, rejectUntilTouchesEnded: true), + 'tap_status_bar' : TouchesScenario(window), }; Scenario _currentScenario = _scenarios['animated_color_square']; diff --git a/testing/scenario_app/lib/src/touches_scenario.dart b/testing/scenario_app/lib/src/touches_scenario.dart new file mode 100644 index 0000000000000..d0148ef5a28d9 --- /dev/null +++ b/testing/scenario_app/lib/src/touches_scenario.dart @@ -0,0 +1,31 @@ +// Copyright 2020 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:convert'; +import 'dart:ui'; + +import 'scenario.dart'; + +/// A scenario that sends back messages when touches are received. +class TouchesScenario extends Scenario { + /// Constructor for `TouchesScenario`. + TouchesScenario(Window window) : super(window); + + @override + void onBeginFrame(Duration duration) {} + + @override + void onPointerDataPacket(PointerDataPacket packet) { + window.sendPlatformMessage( + 'touches_scenario', + utf8.encoder + .convert(const JsonCodec().encode({ + 'change': packet.data[0].change.toString(), + })) + .buffer + .asByteData(), + null, + ); + } +} From b77f509e0bb80f3e5988d36df34d4841cf344fa4 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Wed, 4 Mar 2020 11:10:39 -0800 Subject: [PATCH 148/521] Refactor isolate test (#16933) Make the test harness reusable for other tests that want to launch a Dart VM --- runtime/dart_isolate_unittests.cc | 269 ++++++++---------------------- testing/BUILD.gn | 1 + testing/dart_isolate_runner.h | 198 ++++++++++++++++++++++ 3 files changed, 265 insertions(+), 203 deletions(-) create mode 100644 testing/dart_isolate_runner.h diff --git a/runtime/dart_isolate_unittests.cc b/runtime/dart_isolate_unittests.cc index 4998b8f13948b..283f3801a9e8a 100644 --- a/runtime/dart_isolate_unittests.cc +++ b/runtime/dart_isolate_unittests.cc @@ -2,9 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "flutter/fml/make_copyable.h" #include "flutter/fml/mapping.h" -#include "flutter/fml/paths.h" #include "flutter/fml/synchronization/count_down_latch.h" #include "flutter/fml/synchronization/waitable_event.h" #include "flutter/fml/thread.h" @@ -12,6 +10,7 @@ #include "flutter/runtime/dart_vm.h" #include "flutter/runtime/dart_vm_lifecycle.h" #include "flutter/runtime/runtime_test.h" +#include "flutter/testing/dart_isolate_runner.h" #include "flutter/testing/testing.h" #include "flutter/testing/thread_test.h" #include "third_party/tonic/converter/dart_converter.h" @@ -96,199 +95,18 @@ TEST_F(DartIsolateTest, IsolateShutdownCallbackIsInIsolateScope) { ASSERT_EQ(destruction_callback_count, 1u); } -class AutoIsolateShutdown { - public: - AutoIsolateShutdown() = default; - - AutoIsolateShutdown(std::shared_ptr isolate, - fml::RefPtr runner) - : isolate_(std::move(isolate)), runner_(std::move(runner)) {} - - ~AutoIsolateShutdown() { - if (!IsValid()) { - return; - } - fml::AutoResetWaitableEvent latch; - fml::TaskRunner::RunNowOrPostTask( - runner_, [isolate = std::move(isolate_), &latch]() { - if (!isolate->Shutdown()) { - FML_LOG(ERROR) << "Could not shutdown isolate."; - FML_CHECK(false); - } - latch.Signal(); - }); - latch.Wait(); - } - - bool IsValid() const { return isolate_ != nullptr && runner_; } - - FML_WARN_UNUSED_RESULT - bool RunInIsolateScope(std::function closure) { - if (!IsValid()) { - return false; - } - - bool result = false; - fml::AutoResetWaitableEvent latch; - fml::TaskRunner::RunNowOrPostTask( - runner_, [this, &result, &latch, closure]() { - tonic::DartIsolateScope scope(isolate_->isolate()); - tonic::DartApiScope api_scope; - if (closure) { - result = closure(); - } - latch.Signal(); - }); - latch.Wait(); - return true; - } - - DartIsolate* get() { - FML_CHECK(isolate_); - return isolate_.get(); - } - - private: - std::shared_ptr isolate_; - fml::RefPtr runner_; - - FML_DISALLOW_COPY_AND_ASSIGN(AutoIsolateShutdown); -}; - -static void RunDartCodeInIsolate(DartVMRef& vm_ref, - std::unique_ptr& result, - const Settings& settings, - fml::RefPtr task_runner, - std::string entrypoint, - const std::vector& args) { - FML_CHECK(task_runner->RunsTasksOnCurrentThread()); - - if (!vm_ref) { - return; - } - - TaskRunners task_runners(GetCurrentTestName(), // - task_runner, // - task_runner, // - task_runner, // - task_runner // - ); - - auto vm_data = vm_ref.GetVMData(); - - if (!vm_data) { - return; - } - - auto weak_isolate = DartIsolate::CreateRootIsolate( - vm_data->GetSettings(), // settings - vm_data->GetIsolateSnapshot(), // isolate snapshot - std::move(task_runners), // task runners - nullptr, // window - {}, // snapshot delegate - {}, // io manager - {}, // unref queue - {}, // image decoder - "main.dart", // advisory uri - "main", // advisory entrypoint - nullptr, // flags - settings.isolate_create_callback, // isolate create callback - settings.isolate_shutdown_callback // isolate shutdown callback - ); - - auto root_isolate = - std::make_unique(weak_isolate.lock(), task_runner); - - if (!root_isolate->IsValid()) { - FML_LOG(ERROR) << "Could not create isolate."; - return; - } - - if (root_isolate->get()->GetPhase() != DartIsolate::Phase::LibrariesSetup) { - FML_LOG(ERROR) << "Created isolate is in unexpected phase."; - return; - } - - if (!DartVM::IsRunningPrecompiledCode()) { - auto kernel_file_path = - fml::paths::JoinPaths({GetFixturesPath(), "kernel_blob.bin"}); - - if (!fml::IsFile(kernel_file_path)) { - FML_LOG(ERROR) << "Could not locate kernel file."; - return; - } - - auto kernel_file = fml::OpenFile(kernel_file_path.c_str(), false, - fml::FilePermission::kRead); - - if (!kernel_file.is_valid()) { - FML_LOG(ERROR) << "Kernel file descriptor was invalid."; - return; - } - - auto kernel_mapping = std::make_unique(kernel_file); - - if (kernel_mapping->GetMapping() == nullptr) { - FML_LOG(ERROR) << "Could not setup kernel mapping."; - return; - } - - if (!root_isolate->get()->PrepareForRunningFromKernel( - std::move(kernel_mapping))) { - FML_LOG(ERROR) - << "Could not prepare to run the isolate from the kernel file."; - return; - } - } else { - if (!root_isolate->get()->PrepareForRunningFromPrecompiledCode()) { - FML_LOG(ERROR) - << "Could not prepare to run the isolate from precompiled code."; - return; - } - } - - if (root_isolate->get()->GetPhase() != DartIsolate::Phase::Ready) { - FML_LOG(ERROR) << "Isolate is in unexpected phase."; - return; - } - - if (!root_isolate->get()->Run(entrypoint, args, - settings.root_isolate_create_callback)) { - FML_LOG(ERROR) << "Could not run the method \"" << entrypoint - << "\" in the isolate."; - return; - } - - root_isolate->get()->AddIsolateShutdownCallback( - settings.root_isolate_shutdown_callback); - - result = std::move(root_isolate); -} - -static std::unique_ptr RunDartCodeInIsolate( - DartVMRef& vm_ref, - const Settings& settings, - fml::RefPtr task_runner, - std::string entrypoint, - const std::vector& args) { - std::unique_ptr result; - fml::AutoResetWaitableEvent latch; - fml::TaskRunner::RunNowOrPostTask( - task_runner, fml::MakeCopyable([&]() mutable { - RunDartCodeInIsolate(vm_ref, result, settings, task_runner, entrypoint, - args); - latch.Signal(); - })); - latch.Wait(); - return result; -} - TEST_F(DartIsolateTest, IsolateCanLoadAndRunDartCode) { ASSERT_FALSE(DartVMRef::IsInstanceRunning()); const auto settings = CreateSettingsForFixture(); auto vm_ref = DartVMRef::Create(settings); - auto isolate = RunDartCodeInIsolate(vm_ref, settings, GetCurrentTaskRunner(), - "main", {}); + TaskRunners task_runners(GetCurrentTestName(), // + GetCurrentTaskRunner(), // + GetCurrentTaskRunner(), // + GetCurrentTaskRunner(), // + GetCurrentTaskRunner() // + ); + auto isolate = RunDartCodeInIsolate(vm_ref, settings, task_runners, "main", + {}, GetFixturesPath()); ASSERT_TRUE(isolate); ASSERT_EQ(isolate->get()->GetPhase(), DartIsolate::Phase::Running); } @@ -297,8 +115,15 @@ TEST_F(DartIsolateTest, IsolateCannotLoadAndRunUnknownDartEntrypoint) { ASSERT_FALSE(DartVMRef::IsInstanceRunning()); const auto settings = CreateSettingsForFixture(); auto vm_ref = DartVMRef::Create(settings); - auto isolate = RunDartCodeInIsolate(vm_ref, settings, GetCurrentTaskRunner(), - "thisShouldNotExist", {}); + TaskRunners task_runners(GetCurrentTestName(), // + GetCurrentTaskRunner(), // + GetCurrentTaskRunner(), // + GetCurrentTaskRunner(), // + GetCurrentTaskRunner() // + ); + auto isolate = + RunDartCodeInIsolate(vm_ref, settings, task_runners, "thisShouldNotExist", + {}, GetFixturesPath()); ASSERT_FALSE(isolate); } @@ -306,8 +131,14 @@ TEST_F(DartIsolateTest, CanRunDartCodeCodeSynchronously) { ASSERT_FALSE(DartVMRef::IsInstanceRunning()); const auto settings = CreateSettingsForFixture(); auto vm_ref = DartVMRef::Create(settings); - auto isolate = RunDartCodeInIsolate(vm_ref, settings, GetCurrentTaskRunner(), - "main", {}); + TaskRunners task_runners(GetCurrentTestName(), // + GetCurrentTaskRunner(), // + GetCurrentTaskRunner(), // + GetCurrentTaskRunner(), // + GetCurrentTaskRunner() // + ); + auto isolate = RunDartCodeInIsolate(vm_ref, settings, task_runners, "main", + {}, GetFixturesPath()); ASSERT_TRUE(isolate); ASSERT_EQ(isolate->get()->GetPhase(), DartIsolate::Phase::Running); @@ -330,8 +161,16 @@ TEST_F(DartIsolateTest, CanRegisterNativeCallback) { }))); const auto settings = CreateSettingsForFixture(); auto vm_ref = DartVMRef::Create(settings); - auto isolate = RunDartCodeInIsolate(vm_ref, settings, CreateNewThread(), - "canRegisterNativeCallback", {}); + auto thread = CreateNewThread(); + TaskRunners task_runners(GetCurrentTestName(), // + thread, // + thread, // + thread, // + thread // + ); + auto isolate = + RunDartCodeInIsolate(vm_ref, settings, task_runners, + "canRegisterNativeCallback", {}, GetFixturesPath()); ASSERT_TRUE(isolate); ASSERT_EQ(isolate->get()->GetPhase(), DartIsolate::Phase::Running); latch.Wait(); @@ -353,8 +192,16 @@ TEST_F(DartIsolateTest, CanSaveCompilationTrace) { const auto settings = CreateSettingsForFixture(); auto vm_ref = DartVMRef::Create(settings); - auto isolate = RunDartCodeInIsolate(vm_ref, settings, CreateNewThread(), - "testCanSaveCompilationTrace", {}); + auto thread = CreateNewThread(); + TaskRunners task_runners(GetCurrentTestName(), // + thread, // + thread, // + thread, // + thread // + ); + auto isolate = RunDartCodeInIsolate(vm_ref, settings, task_runners, + "testCanSaveCompilationTrace", {}, + GetFixturesPath()); ASSERT_TRUE(isolate); ASSERT_EQ(isolate->get()->GetPhase(), DartIsolate::Phase::Running); @@ -384,8 +231,16 @@ TEST_F(DartIsolateTest, CanLaunchSecondaryIsolates) { child_shutdown_latch.Signal(); }; auto vm_ref = DartVMRef::Create(settings); - auto isolate = RunDartCodeInIsolate(vm_ref, settings, CreateNewThread(), - "testCanLaunchSecondaryIsolate", {}); + auto thread = CreateNewThread(); + TaskRunners task_runners(GetCurrentTestName(), // + thread, // + thread, // + thread, // + thread // + ); + auto isolate = RunDartCodeInIsolate(vm_ref, settings, task_runners, + "testCanLaunchSecondaryIsolate", {}, + GetFixturesPath()); ASSERT_TRUE(isolate); ASSERT_EQ(isolate->get()->GetPhase(), DartIsolate::Phase::Running); child_shutdown_latch.Wait(); // wait for child isolate to shutdown first @@ -405,8 +260,16 @@ TEST_F(DartIsolateTest, CanRecieveArguments) { const auto settings = CreateSettingsForFixture(); auto vm_ref = DartVMRef::Create(settings); - auto isolate = RunDartCodeInIsolate(vm_ref, settings, CreateNewThread(), - "testCanRecieveArguments", {"arg1"}); + auto thread = CreateNewThread(); + TaskRunners task_runners(GetCurrentTestName(), // + thread, // + thread, // + thread, // + thread // + ); + auto isolate = RunDartCodeInIsolate(vm_ref, settings, task_runners, + "testCanRecieveArguments", {"arg1"}, + GetFixturesPath()); ASSERT_TRUE(isolate); ASSERT_EQ(isolate->get()->GetPhase(), DartIsolate::Phase::Running); diff --git a/testing/BUILD.gn b/testing/BUILD.gn index 04a563494209c..ba6bdf7237898 100644 --- a/testing/BUILD.gn +++ b/testing/BUILD.gn @@ -43,6 +43,7 @@ source_set("dart") { testonly = true sources = [ + "dart_isolate_runner.h", "elf_loader.cc", "elf_loader.h", "test_dart_native_resolver.cc", diff --git a/testing/dart_isolate_runner.h b/testing/dart_isolate_runner.h new file mode 100644 index 0000000000000..aca09435ea226 --- /dev/null +++ b/testing/dart_isolate_runner.h @@ -0,0 +1,198 @@ +// 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. + +#include "flutter/fml/make_copyable.h" +#include "flutter/fml/paths.h" +#include "flutter/fml/synchronization/waitable_event.h" +#include "flutter/fml/thread.h" + +namespace flutter { +namespace testing { + +class AutoIsolateShutdown { + public: + AutoIsolateShutdown() = default; + + AutoIsolateShutdown(std::shared_ptr isolate, + fml::RefPtr runner) + : isolate_(std::move(isolate)), runner_(std::move(runner)) {} + + ~AutoIsolateShutdown() { + if (!IsValid()) { + return; + } + fml::AutoResetWaitableEvent latch; + fml::TaskRunner::RunNowOrPostTask( + runner_, [isolate = std::move(isolate_), &latch]() { + if (!isolate->Shutdown()) { + FML_LOG(ERROR) << "Could not shutdown isolate."; + FML_CHECK(false); + } + latch.Signal(); + }); + latch.Wait(); + } + + bool IsValid() const { return isolate_ != nullptr && runner_; } + + FML_WARN_UNUSED_RESULT + bool RunInIsolateScope(std::function closure) { + if (!IsValid()) { + return false; + } + + bool result = false; + fml::AutoResetWaitableEvent latch; + fml::TaskRunner::RunNowOrPostTask( + runner_, [this, &result, &latch, closure]() { + tonic::DartIsolateScope scope(isolate_->isolate()); + tonic::DartApiScope api_scope; + if (closure) { + result = closure(); + } + latch.Signal(); + }); + latch.Wait(); + return true; + } + + DartIsolate* get() { + FML_CHECK(isolate_); + return isolate_.get(); + } + + private: + std::shared_ptr isolate_; + fml::RefPtr runner_; + + FML_DISALLOW_COPY_AND_ASSIGN(AutoIsolateShutdown); +}; + +static void RunDartCodeInIsolate(DartVMRef& vm_ref, + std::unique_ptr& result, + const Settings& settings, + const TaskRunners& task_runners, + std::string entrypoint, + const std::vector& args, + const std::string& fixtures_path, + fml::WeakPtr io_manager = {}) { + FML_CHECK(task_runners.GetPlatformTaskRunner()->RunsTasksOnCurrentThread()); + + if (!vm_ref) { + return; + } + + auto vm_data = vm_ref.GetVMData(); + + if (!vm_data) { + return; + } + + auto weak_isolate = DartIsolate::CreateRootIsolate( + vm_data->GetSettings(), // settings + vm_data->GetIsolateSnapshot(), // isolate snapshot + std::move(task_runners), // task runners + nullptr, // window + {}, // snapshot delegate + io_manager, // io manager + {}, // unref queue + {}, // image decoder + "main.dart", // advisory uri + "main", // advisory entrypoint + nullptr, // flags + settings.isolate_create_callback, // isolate create callback + settings.isolate_shutdown_callback // isolate shutdown callback + ); + + auto root_isolate = std::make_unique( + weak_isolate.lock(), task_runners.GetUITaskRunner()); + + if (!root_isolate->IsValid()) { + FML_LOG(ERROR) << "Could not create isolate."; + return; + } + + if (root_isolate->get()->GetPhase() != DartIsolate::Phase::LibrariesSetup) { + FML_LOG(ERROR) << "Created isolate is in unexpected phase."; + return; + } + + if (!DartVM::IsRunningPrecompiledCode()) { + auto kernel_file_path = + fml::paths::JoinPaths({fixtures_path, "kernel_blob.bin"}); + + if (!fml::IsFile(kernel_file_path)) { + FML_LOG(ERROR) << "Could not locate kernel file."; + return; + } + + auto kernel_file = fml::OpenFile(kernel_file_path.c_str(), false, + fml::FilePermission::kRead); + + if (!kernel_file.is_valid()) { + FML_LOG(ERROR) << "Kernel file descriptor was invalid."; + return; + } + + auto kernel_mapping = std::make_unique(kernel_file); + + if (kernel_mapping->GetMapping() == nullptr) { + FML_LOG(ERROR) << "Could not setup kernel mapping."; + return; + } + + if (!root_isolate->get()->PrepareForRunningFromKernel( + std::move(kernel_mapping))) { + FML_LOG(ERROR) + << "Could not prepare to run the isolate from the kernel file."; + return; + } + } else { + if (!root_isolate->get()->PrepareForRunningFromPrecompiledCode()) { + FML_LOG(ERROR) + << "Could not prepare to run the isolate from precompiled code."; + return; + } + } + + if (root_isolate->get()->GetPhase() != DartIsolate::Phase::Ready) { + FML_LOG(ERROR) << "Isolate is in unexpected phase."; + return; + } + + if (!root_isolate->get()->Run(entrypoint, args, + settings.root_isolate_create_callback)) { + FML_LOG(ERROR) << "Could not run the method \"" << entrypoint + << "\" in the isolate."; + return; + } + + root_isolate->get()->AddIsolateShutdownCallback( + settings.root_isolate_shutdown_callback); + + result = std::move(root_isolate); +} + +static std::unique_ptr RunDartCodeInIsolate( + DartVMRef& vm_ref, + const Settings& settings, + const TaskRunners& task_runners, + std::string entrypoint, + const std::vector& args, + const std::string& fixtures_path, + fml::WeakPtr io_manager = {}) { + std::unique_ptr result; + fml::AutoResetWaitableEvent latch; + fml::TaskRunner::RunNowOrPostTask( + task_runners.GetPlatformTaskRunner(), fml::MakeCopyable([&]() mutable { + RunDartCodeInIsolate(vm_ref, result, settings, task_runners, entrypoint, + args, fixtures_path, io_manager); + latch.Signal(); + })); + latch.Wait(); + return result; +} + +} // namespace testing +} // namespace flutter From 42e05721c29592d5b9b67d2c5620b58a98b2630a Mon Sep 17 00:00:00 2001 From: Flutter GitHub Bot <52682268+fluttergithubbot@users.noreply.github.com> Date: Wed, 4 Mar 2020 11:21:04 -0800 Subject: [PATCH 149/521] Roll src/third_party/skia 64a3f8fcb749..3a5974f68d4b (8 commits) (#16934) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index e4d9a1f39eab2..a93057ccc1622 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '64a3f8fcb74929e34acf1831f58cabf2e435042b', + 'skia_revision': '3a5974f68d4b16aa6d128121120ffbf6c4e4eb54', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 8f5ea002585c5..729089751786b 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 3cb73d84975963d7697422175cb46494 +Signature: 89fe65c08afcb5f2d24ed9facbd36275 UNUSED LICENSES: @@ -1099,6 +1099,7 @@ FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.ex FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Win-Clang-x86_64-Debug-ANGLE.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Win-Clang-x86_64-Debug-OpenCL.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Win-Clang-x86_64-Release-Dawn.json +FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Win-Clang-x86_64-Release-Direct3D.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Win-Clang-x86_64-Release-Shared.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Build-Win-Clang-x86_64-Release-Vulkan.json FILE: ../../../third_party/skia/infra/bots/recipe_modules/build/examples/full.expected/Housekeeper-PerCommit-CheckGeneratedFiles.json From 482155b3c6ed17e59129655a57936c61eb11b8c2 Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Wed, 4 Mar 2020 11:27:12 -0800 Subject: [PATCH 150/521] Fixed splash screen crash when bringing Android app back to foreground after being evicted from memory. (#47635) (#16916) --- .../android/io/flutter/embedding/android/FlutterSplashView.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterSplashView.java b/shell/platform/android/io/flutter/embedding/android/FlutterSplashView.java index 4d9b22d66c5de..b44f08b1f99d2 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterSplashView.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterSplashView.java @@ -8,6 +8,7 @@ import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; +import android.support.annotation.Keep; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.AttributeSet; @@ -251,6 +252,7 @@ private void transitionToFlutter() { splashScreen.transitionToFlutter(onTransitionComplete); } + @Keep public static class SavedState extends BaseSavedState { public static Creator CREATOR = new Creator() { From 810727bf3f8f7a9d23ee8e65a5209944c80fde58 Mon Sep 17 00:00:00 2001 From: Flutter GitHub Bot <52682268+fluttergithubbot@users.noreply.github.com> Date: Wed, 4 Mar 2020 12:56:02 -0800 Subject: [PATCH 151/521] Roll src/third_party/skia 3a5974f68d4b..93d75eff08b0 (5 commits) (#16940) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a93057ccc1622..e38daef675ee6 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '3a5974f68d4b16aa6d128121120ffbf6c4e4eb54', + 'skia_revision': '93d75eff08b069a87e78a25156f249ab95bc7c95', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 729089751786b..899cd2d2885ea 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 89fe65c08afcb5f2d24ed9facbd36275 +Signature: cca468a0b0e7735d03e1ff59848a30dd UNUSED LICENSES: From bb17df756d950a40161aaea22bd18b622c19424d Mon Sep 17 00:00:00 2001 From: gaaclarke <30870216+gaaclarke@users.noreply.github.com> Date: Wed, 4 Mar 2020 13:36:58 -0800 Subject: [PATCH 152/521] Added compiling the dart code for scenario tests as part of the xcode build (#16937) --- .../Scenarios.xcodeproj/project.pbxproj | 22 +++++++++++++++++++ testing/scenario_app/run_ios_tests.sh | 2 -- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/project.pbxproj b/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/project.pbxproj index 8f95dec91db4f..c24333a3a8a7f 100644 --- a/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/project.pbxproj +++ b/testing/scenario_app/ios/Scenarios/Scenarios.xcodeproj/project.pbxproj @@ -297,6 +297,7 @@ isa = PBXNativeTarget; buildConfigurationList = 248D76F322E388380012F0C1 /* Build configuration list for PBXNativeTarget "Scenarios" */; buildPhases = ( + 0D8470A8241035AD0030B565 /* Compile iOS JIT */, 248D76C322E388370012F0C1 /* Sources */, 248D76C422E388370012F0C1 /* Frameworks */, 248D76C522E388370012F0C1 /* Resources */, @@ -439,6 +440,27 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 0D8470A8241035AD0030B565 /* Compile iOS JIT */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Compile iOS JIT"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "set -e\ncd ../..\nif [ -z ${FLUTTER_ENGINE+x} ]; then \n FLUTTER_ENGINE=ios_debug_sim_unopt\nfi\n./compile_ios_jit.sh ../../../out/host_debug_unopt ../../../out/$FLUTTER_ENGINE/clang_x64\n"; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 248D76C322E388370012F0C1 /* Sources */ = { isa = PBXSourcesBuildPhase; diff --git a/testing/scenario_app/run_ios_tests.sh b/testing/scenario_app/run_ios_tests.sh index fd9a548f4751e..cff055d8d2142 100755 --- a/testing/scenario_app/run_ios_tests.sh +++ b/testing/scenario_app/run_ios_tests.sh @@ -15,8 +15,6 @@ fi cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd -./compile_ios_jit.sh ../../../out/host_debug_unopt ../../../out/$FLUTTER_ENGINE/clang_x64 - pushd ios/Scenarios set -o pipefail && xcodebuild -sdk iphonesimulator \ From 79a53b2ea2450032d0773fb4d97501dc8137be4f Mon Sep 17 00:00:00 2001 From: Ryan Macnak Date: Wed, 4 Mar 2020 13:45:24 -0800 Subject: [PATCH 153/521] Roll Dart to df5036eb6e738c723339ed74c1e8ca93bea2570d. (#16936) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- third_party/tonic/dart_persistent_value.cc | 8 ++++++-- third_party/tonic/dart_wrappable.cc | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/DEPS b/DEPS index e38daef675ee6..57014c8cb9231 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '57462f9ca52000932d2ac82613808131650b440c', + 'dart_revision': 'df5036eb6e738c723339ed74c1e8ca93bea2570d', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index d6eea3efa7281..3e4479f661dc8 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 3cc623c46feb1a616e6dc27b9168581f +Signature: c0d0a2e1f16f13bfd61d0ffb9d142ca7 UNUSED LICENSES: diff --git a/third_party/tonic/dart_persistent_value.cc b/third_party/tonic/dart_persistent_value.cc index 9ed6f70f35322..3bc46505d31fc 100644 --- a/third_party/tonic/dart_persistent_value.cc +++ b/third_party/tonic/dart_persistent_value.cc @@ -43,8 +43,12 @@ void DartPersistentValue::Clear() { return; } - DartIsolateScope scope(dart_state->isolate()); - Dart_DeletePersistentHandle(value_); + if (Dart_CurrentIsolateGroup()) { + Dart_DeletePersistentHandle(value_); + } else { + DartIsolateScope scope(dart_state->isolate()); + Dart_DeletePersistentHandle(value_); + } dart_state_.reset(); value_ = nullptr; } diff --git a/third_party/tonic/dart_wrappable.cc b/third_party/tonic/dart_wrappable.cc index 4ebfda7e1a362..d0906646f313b 100644 --- a/third_party/tonic/dart_wrappable.cc +++ b/third_party/tonic/dart_wrappable.cc @@ -64,7 +64,7 @@ void DartWrappable::ClearDartWrapper() { TONIC_CHECK(!LogIfError(Dart_SetNativeInstanceField(wrapper, kPeerIndex, 0))); TONIC_CHECK( !LogIfError(Dart_SetNativeInstanceField(wrapper, kWrapperInfoIndex, 0))); - Dart_DeleteWeakPersistentHandle(Dart_CurrentIsolate(), dart_wrapper_); + Dart_DeleteWeakPersistentHandle(dart_wrapper_); dart_wrapper_ = nullptr; this->ReleaseDartWrappableReference(); } From 4a2273e30202bccfdeff9f34af68f44a846ee691 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Wed, 4 Mar 2020 13:56:08 -0800 Subject: [PATCH 154/521] fix OOL def for dart_isolate_runner (#16941) --- testing/BUILD.gn | 1 + testing/dart_isolate_runner.cc | 176 +++++++++++++++++++++++++++++++++ testing/dart_isolate_runner.h | 175 +++++--------------------------- 3 files changed, 199 insertions(+), 153 deletions(-) create mode 100644 testing/dart_isolate_runner.cc diff --git a/testing/BUILD.gn b/testing/BUILD.gn index ba6bdf7237898..67a920f10128b 100644 --- a/testing/BUILD.gn +++ b/testing/BUILD.gn @@ -43,6 +43,7 @@ source_set("dart") { testonly = true sources = [ + "dart_isolate_runner.cc", "dart_isolate_runner.h", "elf_loader.cc", "elf_loader.h", diff --git a/testing/dart_isolate_runner.cc b/testing/dart_isolate_runner.cc new file mode 100644 index 0000000000000..6e744ab3fcce7 --- /dev/null +++ b/testing/dart_isolate_runner.cc @@ -0,0 +1,176 @@ +// 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. + +#include "flutter/testing/dart_isolate_runner.h" + +namespace flutter { +namespace testing { +AutoIsolateShutdown::AutoIsolateShutdown(std::shared_ptr isolate, + fml::RefPtr runner) + : isolate_(std::move(isolate)), runner_(std::move(runner)) {} + +AutoIsolateShutdown::~AutoIsolateShutdown() { + if (!IsValid()) { + return; + } + fml::AutoResetWaitableEvent latch; + fml::TaskRunner::RunNowOrPostTask( + runner_, [isolate = std::move(isolate_), &latch]() { + if (!isolate->Shutdown()) { + FML_LOG(ERROR) << "Could not shutdown isolate."; + FML_CHECK(false); + } + latch.Signal(); + }); + latch.Wait(); +} + +FML_WARN_UNUSED_RESULT +bool AutoIsolateShutdown::RunInIsolateScope(std::function closure) { + if (!IsValid()) { + return false; + } + + bool result = false; + fml::AutoResetWaitableEvent latch; + fml::TaskRunner::RunNowOrPostTask( + runner_, [this, &result, &latch, closure]() { + tonic::DartIsolateScope scope(isolate_->isolate()); + tonic::DartApiScope api_scope; + if (closure) { + result = closure(); + } + latch.Signal(); + }); + latch.Wait(); + return true; +} + +void RunDartCodeInIsolate(DartVMRef& vm_ref, + std::unique_ptr& result, + const Settings& settings, + const TaskRunners& task_runners, + std::string entrypoint, + const std::vector& args, + const std::string& fixtures_path, + fml::WeakPtr io_manager) { + FML_CHECK(task_runners.GetPlatformTaskRunner()->RunsTasksOnCurrentThread()); + + if (!vm_ref) { + return; + } + + auto vm_data = vm_ref.GetVMData(); + + if (!vm_data) { + return; + } + + auto weak_isolate = DartIsolate::CreateRootIsolate( + vm_data->GetSettings(), // settings + vm_data->GetIsolateSnapshot(), // isolate snapshot + std::move(task_runners), // task runners + nullptr, // window + {}, // snapshot delegate + io_manager, // io manager + {}, // unref queue + {}, // image decoder + "main.dart", // advisory uri + "main", // advisory entrypoint + nullptr, // flags + settings.isolate_create_callback, // isolate create callback + settings.isolate_shutdown_callback // isolate shutdown callback + ); + + auto root_isolate = std::make_unique( + weak_isolate.lock(), task_runners.GetUITaskRunner()); + + if (!root_isolate->IsValid()) { + FML_LOG(ERROR) << "Could not create isolate."; + return; + } + + if (root_isolate->get()->GetPhase() != DartIsolate::Phase::LibrariesSetup) { + FML_LOG(ERROR) << "Created isolate is in unexpected phase."; + return; + } + + if (!DartVM::IsRunningPrecompiledCode()) { + auto kernel_file_path = + fml::paths::JoinPaths({fixtures_path, "kernel_blob.bin"}); + + if (!fml::IsFile(kernel_file_path)) { + FML_LOG(ERROR) << "Could not locate kernel file."; + return; + } + + auto kernel_file = fml::OpenFile(kernel_file_path.c_str(), false, + fml::FilePermission::kRead); + + if (!kernel_file.is_valid()) { + FML_LOG(ERROR) << "Kernel file descriptor was invalid."; + return; + } + + auto kernel_mapping = std::make_unique(kernel_file); + + if (kernel_mapping->GetMapping() == nullptr) { + FML_LOG(ERROR) << "Could not setup kernel mapping."; + return; + } + + if (!root_isolate->get()->PrepareForRunningFromKernel( + std::move(kernel_mapping))) { + FML_LOG(ERROR) + << "Could not prepare to run the isolate from the kernel file."; + return; + } + } else { + if (!root_isolate->get()->PrepareForRunningFromPrecompiledCode()) { + FML_LOG(ERROR) + << "Could not prepare to run the isolate from precompiled code."; + return; + } + } + + if (root_isolate->get()->GetPhase() != DartIsolate::Phase::Ready) { + FML_LOG(ERROR) << "Isolate is in unexpected phase."; + return; + } + + if (!root_isolate->get()->Run(entrypoint, args, + settings.root_isolate_create_callback)) { + FML_LOG(ERROR) << "Could not run the method \"" << entrypoint + << "\" in the isolate."; + return; + } + + root_isolate->get()->AddIsolateShutdownCallback( + settings.root_isolate_shutdown_callback); + + result = std::move(root_isolate); +} + +std::unique_ptr RunDartCodeInIsolate( + DartVMRef& vm_ref, + const Settings& settings, + const TaskRunners& task_runners, + std::string entrypoint, + const std::vector& args, + const std::string& fixtures_path, + fml::WeakPtr io_manager) { + std::unique_ptr result; + fml::AutoResetWaitableEvent latch; + fml::TaskRunner::RunNowOrPostTask( + task_runners.GetPlatformTaskRunner(), fml::MakeCopyable([&]() mutable { + RunDartCodeInIsolate(vm_ref, result, settings, task_runners, entrypoint, + args, fixtures_path, io_manager); + latch.Signal(); + })); + latch.Wait(); + return result; +} + +} // namespace testing +} // namespace flutter diff --git a/testing/dart_isolate_runner.h b/testing/dart_isolate_runner.h index aca09435ea226..f7a3db1fb6a59 100644 --- a/testing/dart_isolate_runner.h +++ b/testing/dart_isolate_runner.h @@ -2,10 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#ifndef FLUTTER_TESTING_DART_ISOLATE_RUNNER_H_ +#define FLUTTER_TESTING_DART_ISOLATE_RUNNER_H_ + +#include "flutter/common/task_runners.h" #include "flutter/fml/make_copyable.h" #include "flutter/fml/paths.h" #include "flutter/fml/synchronization/waitable_event.h" #include "flutter/fml/thread.h" +#include "flutter/runtime/dart_isolate.h" +#include "flutter/runtime/dart_vm.h" +#include "flutter/runtime/dart_vm_lifecycle.h" namespace flutter { namespace testing { @@ -15,47 +22,14 @@ class AutoIsolateShutdown { AutoIsolateShutdown() = default; AutoIsolateShutdown(std::shared_ptr isolate, - fml::RefPtr runner) - : isolate_(std::move(isolate)), runner_(std::move(runner)) {} + fml::RefPtr runner); - ~AutoIsolateShutdown() { - if (!IsValid()) { - return; - } - fml::AutoResetWaitableEvent latch; - fml::TaskRunner::RunNowOrPostTask( - runner_, [isolate = std::move(isolate_), &latch]() { - if (!isolate->Shutdown()) { - FML_LOG(ERROR) << "Could not shutdown isolate."; - FML_CHECK(false); - } - latch.Signal(); - }); - latch.Wait(); - } + ~AutoIsolateShutdown(); bool IsValid() const { return isolate_ != nullptr && runner_; } FML_WARN_UNUSED_RESULT - bool RunInIsolateScope(std::function closure) { - if (!IsValid()) { - return false; - } - - bool result = false; - fml::AutoResetWaitableEvent latch; - fml::TaskRunner::RunNowOrPostTask( - runner_, [this, &result, &latch, closure]() { - tonic::DartIsolateScope scope(isolate_->isolate()); - tonic::DartApiScope api_scope; - if (closure) { - result = closure(); - } - latch.Signal(); - }); - latch.Wait(); - return true; - } + bool RunInIsolateScope(std::function closure); DartIsolate* get() { FML_CHECK(isolate_); @@ -69,130 +43,25 @@ class AutoIsolateShutdown { FML_DISALLOW_COPY_AND_ASSIGN(AutoIsolateShutdown); }; -static void RunDartCodeInIsolate(DartVMRef& vm_ref, - std::unique_ptr& result, - const Settings& settings, - const TaskRunners& task_runners, - std::string entrypoint, - const std::vector& args, - const std::string& fixtures_path, - fml::WeakPtr io_manager = {}) { - FML_CHECK(task_runners.GetPlatformTaskRunner()->RunsTasksOnCurrentThread()); - - if (!vm_ref) { - return; - } - - auto vm_data = vm_ref.GetVMData(); - - if (!vm_data) { - return; - } - - auto weak_isolate = DartIsolate::CreateRootIsolate( - vm_data->GetSettings(), // settings - vm_data->GetIsolateSnapshot(), // isolate snapshot - std::move(task_runners), // task runners - nullptr, // window - {}, // snapshot delegate - io_manager, // io manager - {}, // unref queue - {}, // image decoder - "main.dart", // advisory uri - "main", // advisory entrypoint - nullptr, // flags - settings.isolate_create_callback, // isolate create callback - settings.isolate_shutdown_callback // isolate shutdown callback - ); - - auto root_isolate = std::make_unique( - weak_isolate.lock(), task_runners.GetUITaskRunner()); - - if (!root_isolate->IsValid()) { - FML_LOG(ERROR) << "Could not create isolate."; - return; - } - - if (root_isolate->get()->GetPhase() != DartIsolate::Phase::LibrariesSetup) { - FML_LOG(ERROR) << "Created isolate is in unexpected phase."; - return; - } - - if (!DartVM::IsRunningPrecompiledCode()) { - auto kernel_file_path = - fml::paths::JoinPaths({fixtures_path, "kernel_blob.bin"}); - - if (!fml::IsFile(kernel_file_path)) { - FML_LOG(ERROR) << "Could not locate kernel file."; - return; - } - - auto kernel_file = fml::OpenFile(kernel_file_path.c_str(), false, - fml::FilePermission::kRead); - - if (!kernel_file.is_valid()) { - FML_LOG(ERROR) << "Kernel file descriptor was invalid."; - return; - } - - auto kernel_mapping = std::make_unique(kernel_file); - - if (kernel_mapping->GetMapping() == nullptr) { - FML_LOG(ERROR) << "Could not setup kernel mapping."; - return; - } - - if (!root_isolate->get()->PrepareForRunningFromKernel( - std::move(kernel_mapping))) { - FML_LOG(ERROR) - << "Could not prepare to run the isolate from the kernel file."; - return; - } - } else { - if (!root_isolate->get()->PrepareForRunningFromPrecompiledCode()) { - FML_LOG(ERROR) - << "Could not prepare to run the isolate from precompiled code."; - return; - } - } +void RunDartCodeInIsolate(DartVMRef& vm_ref, + std::unique_ptr& result, + const Settings& settings, + const TaskRunners& task_runners, + std::string entrypoint, + const std::vector& args, + const std::string& fixtures_path, + fml::WeakPtr io_manager = {}); - if (root_isolate->get()->GetPhase() != DartIsolate::Phase::Ready) { - FML_LOG(ERROR) << "Isolate is in unexpected phase."; - return; - } - - if (!root_isolate->get()->Run(entrypoint, args, - settings.root_isolate_create_callback)) { - FML_LOG(ERROR) << "Could not run the method \"" << entrypoint - << "\" in the isolate."; - return; - } - - root_isolate->get()->AddIsolateShutdownCallback( - settings.root_isolate_shutdown_callback); - - result = std::move(root_isolate); -} - -static std::unique_ptr RunDartCodeInIsolate( +std::unique_ptr RunDartCodeInIsolate( DartVMRef& vm_ref, const Settings& settings, const TaskRunners& task_runners, std::string entrypoint, const std::vector& args, const std::string& fixtures_path, - fml::WeakPtr io_manager = {}) { - std::unique_ptr result; - fml::AutoResetWaitableEvent latch; - fml::TaskRunner::RunNowOrPostTask( - task_runners.GetPlatformTaskRunner(), fml::MakeCopyable([&]() mutable { - RunDartCodeInIsolate(vm_ref, result, settings, task_runners, entrypoint, - args, fixtures_path, io_manager); - latch.Signal(); - })); - latch.Wait(); - return result; -} + fml::WeakPtr io_manager = {}); } // namespace testing } // namespace flutter + +#endif // FLUTTER_TESTING_DART_ISOLATE_RUNNER_H_ From d20f6d7bd336b7bb5e02a0193815db0583a06876 Mon Sep 17 00:00:00 2001 From: Flutter GitHub Bot <52682268+fluttergithubbot@users.noreply.github.com> Date: Wed, 4 Mar 2020 15:21:03 -0800 Subject: [PATCH 155/521] Roll src/third_party/skia 93d75eff08b0..50d7d6fd7280 (4 commits) (#16942) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 57014c8cb9231..a4d3afcdfd00f 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '93d75eff08b069a87e78a25156f249ab95bc7c95', + 'skia_revision': '50d7d6fd72801aa37e09fb201777861a3dfce5f2', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 899cd2d2885ea..78bdec9d80ae1 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: cca468a0b0e7735d03e1ff59848a30dd +Signature: a1b75aa0b7764eb93445937e28154e42 UNUSED LICENSES: From 8ff6948e23c20e1c9382429669721da4a1998a1b Mon Sep 17 00:00:00 2001 From: Greg Spencer Date: Thu, 5 Mar 2020 00:45:53 +0100 Subject: [PATCH 156/521] =?UTF-8?q?Make=20GetDefaultFontFamilies=20return?= =?UTF-8?q?=20a=20vector=20instead=20of=E2=80=A6=20(#16928)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On Linux, there is rarely just one default font that can reasonably be expected to be on the platform. This PR changes the GetDefaultFontFamily call to be GetDefaultFontFamilies, and it now returns a vector so that the font collection code can look up all of them, and if any of them exist, add them to the fallback list. For Linux, I supplied the list "Ubuntu", "Cantarell", "DejaVu Sans", "Liberation Sans", and "Arial", which should cover a large proportion of linux machines. For the other platforms, I supplied a list of length one, containing the one fallback font that used to be defined. On Windows, I added "Segoe UI" as a default, since that is the default system font on newer Windows. The goal of this function is to provide at least one font family that is installed, since otherwise linux (or any platform) will just have no font at all if the default font isn't found. --- shell/platform/linux/BUILD.gn | 2 +- third_party/txt/src/txt/font_collection.cc | 15 +++++++++------ third_party/txt/src/txt/platform.cc | 4 ++-- third_party/txt/src/txt/platform.h | 4 +++- third_party/txt/src/txt/platform_android.cc | 4 ++-- third_party/txt/src/txt/platform_fuchsia.cc | 4 ++-- third_party/txt/src/txt/platform_linux.cc | 4 ++-- third_party/txt/src/txt/platform_mac.mm | 6 +++--- third_party/txt/src/txt/platform_windows.cc | 4 ++-- third_party/txt/src/txt/text_style.cc | 3 +-- 10 files changed, 27 insertions(+), 23 deletions(-) diff --git a/shell/platform/linux/BUILD.gn b/shell/platform/linux/BUILD.gn index db36000e0da21..54e1bbbd7c709 100644 --- a/shell/platform/linux/BUILD.gn +++ b/shell/platform/linux/BUILD.gn @@ -16,7 +16,7 @@ group("linux") { } } -# Temporary workraround for the issue describe in +# Temporary workaround for the issue describe in # https://github.com/flutter/flutter/issues/14509 and # https://github.com/flutter/flutter/issues/14438 # Remove once the build infrastructure moves to Ubuntu 18.04 or newer, where diff --git a/third_party/txt/src/txt/font_collection.cc b/third_party/txt/src/txt/font_collection.cc index 70104d90f8506..3b550f7f313fb 100644 --- a/third_party/txt/src/txt/font_collection.cc +++ b/third_party/txt/src/txt/font_collection.cc @@ -150,11 +150,14 @@ FontCollection::GetMinikinFontCollectionForFamilies( } // Search for default font family if no user font families were found. if (minikin_families.empty()) { - const auto default_font_family = GetDefaultFontFamily(); - std::shared_ptr minikin_family = - FindFontFamilyInManagers(default_font_family); - if (minikin_family != nullptr) { - minikin_families.push_back(minikin_family); + const auto default_font_families = GetDefaultFontFamilies(); + for (auto family : default_font_families) { + std::shared_ptr minikin_family = + FindFontFamilyInManagers(family); + if (minikin_family != nullptr) { + minikin_families.push_back(minikin_family); + break; + } } } // Default font family also not found. We fail to get a FontCollection. @@ -319,7 +322,7 @@ FontCollection::CreateSktFontCollection() { skt_collection_ = sk_make_sp(); skt_collection_->setDefaultFontManager(default_font_manager_, - GetDefaultFontFamily().c_str()); + GetDefaultFontFamilies()[0].c_str()); skt_collection_->setAssetFontManager(asset_font_manager_); skt_collection_->setDynamicFontManager(dynamic_font_manager_); skt_collection_->setTestFontManager(test_font_manager_); diff --git a/third_party/txt/src/txt/platform.cc b/third_party/txt/src/txt/platform.cc index 41831870d5335..c60731b3758b5 100644 --- a/third_party/txt/src/txt/platform.cc +++ b/third_party/txt/src/txt/platform.cc @@ -6,8 +6,8 @@ namespace txt { -std::string GetDefaultFontFamily() { - return "Arial"; +std::vector GetDefaultFontFamilies() { + return {"Arial"}; } sk_sp GetDefaultFontManager() { diff --git a/third_party/txt/src/txt/platform.h b/third_party/txt/src/txt/platform.h index 3df3433011ea2..6c3a3cc53a984 100644 --- a/third_party/txt/src/txt/platform.h +++ b/third_party/txt/src/txt/platform.h @@ -6,13 +6,15 @@ #define TXT_PLATFORM_H_ #include +#include + #include "flutter/fml/macros.h" #include "third_party/skia/include/core/SkFontMgr.h" namespace txt { -std::string GetDefaultFontFamily(); +std::vector GetDefaultFontFamilies(); sk_sp GetDefaultFontManager(); diff --git a/third_party/txt/src/txt/platform_android.cc b/third_party/txt/src/txt/platform_android.cc index ae7fa2c77ec2c..1e42a7c770b7c 100644 --- a/third_party/txt/src/txt/platform_android.cc +++ b/third_party/txt/src/txt/platform_android.cc @@ -6,8 +6,8 @@ namespace txt { -std::string GetDefaultFontFamily() { - return "sans-serif"; +std::vector GetDefaultFontFamilies() { + return {"sans-serif"}; } sk_sp GetDefaultFontManager() { diff --git a/third_party/txt/src/txt/platform_fuchsia.cc b/third_party/txt/src/txt/platform_fuchsia.cc index fd5dc73fcf4c6..23b0e96900b16 100644 --- a/third_party/txt/src/txt/platform_fuchsia.cc +++ b/third_party/txt/src/txt/platform_fuchsia.cc @@ -6,8 +6,8 @@ namespace txt { -std::string GetDefaultFontFamily() { - return "Roboto"; +std::vector GetDefaultFontFamilies() { + return {"Roboto"}; } sk_sp GetDefaultFontManager() { diff --git a/third_party/txt/src/txt/platform_linux.cc b/third_party/txt/src/txt/platform_linux.cc index 36df613eecb90..9e13898d49e7a 100644 --- a/third_party/txt/src/txt/platform_linux.cc +++ b/third_party/txt/src/txt/platform_linux.cc @@ -12,8 +12,8 @@ namespace txt { -std::string GetDefaultFontFamily() { - return "Arial"; +std::vector GetDefaultFontFamilies() { + return {"Ubuntu", "Cantarell", "DejaVu Sans", "Liberation Sans", "Arial"}; } sk_sp GetDefaultFontManager() { diff --git a/third_party/txt/src/txt/platform_mac.mm b/third_party/txt/src/txt/platform_mac.mm index 3dce7b6ca3954..da9847458928e 100644 --- a/third_party/txt/src/txt/platform_mac.mm +++ b/third_party/txt/src/txt/platform_mac.mm @@ -16,11 +16,11 @@ namespace txt { -std::string GetDefaultFontFamily() { +std::vector GetDefaultFontFamilies() { if (fml::IsPlatformVersionAtLeast(9)) { - return [FONT_CLASS systemFontOfSize:14].familyName.UTF8String; + return {[FONT_CLASS systemFontOfSize:14].familyName.UTF8String}; } else { - return "Helvetica"; + return {"Helvetica"}; } } diff --git a/third_party/txt/src/txt/platform_windows.cc b/third_party/txt/src/txt/platform_windows.cc index c16e30386252a..da44b9fd1c3b6 100644 --- a/third_party/txt/src/txt/platform_windows.cc +++ b/third_party/txt/src/txt/platform_windows.cc @@ -7,8 +7,8 @@ namespace txt { -std::string GetDefaultFontFamily() { - return "Arial"; +std::vector GetDefaultFontFamilies() { + return {"Segoe UI", "Arial"}; } sk_sp GetDefaultFontManager() { diff --git a/third_party/txt/src/txt/text_style.cc b/third_party/txt/src/txt/text_style.cc index 8ca0c42a1e4cb..04589659b6539 100644 --- a/third_party/txt/src/txt/text_style.cc +++ b/third_party/txt/src/txt/text_style.cc @@ -23,8 +23,7 @@ namespace txt { -TextStyle::TextStyle() - : font_families(std::vector(1, GetDefaultFontFamily())) {} +TextStyle::TextStyle() : font_families(GetDefaultFontFamilies()) {} bool TextStyle::equals(const TextStyle& other) const { if (color != other.color) From 1f250fd26f312e0c45d254124654540bf373fa59 Mon Sep 17 00:00:00 2001 From: Flutter GitHub Bot <52682268+fluttergithubbot@users.noreply.github.com> Date: Wed, 4 Mar 2020 16:16:01 -0800 Subject: [PATCH 157/521] Roll src/third_party/dart df5036eb6e73..8e5354dccb64 (14 commits) (#16943) --- DEPS | 4 +- ci/licenses_golden/licenses_third_party | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++------------ 3 files changed, 123 insertions(+), 127 deletions(-) diff --git a/DEPS b/DEPS index a4d3afcdfd00f..188d8d3234555 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'df5036eb6e738c723339ed74c1e8ca93bea2570d', + 'dart_revision': '8e5354dccb644a32c679e8044227e0a139ec051b', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -82,7 +82,7 @@ vars = { 'dart_quiver-dart_tag': '2.0.0+1', 'dart_resource_rev': 'f8e37558a1c4f54550aa463b88a6a831e3e33cd6', 'dart_root_certificates_rev': '16ef64be64c7dfdff2b9f4b910726e635ccc519e', - 'dart_shelf_packages_handler_tag': '1.0.4', + 'dart_shelf_packages_handler_tag': '2.0.0', 'dart_shelf_static_rev': 'v0.2.8', 'dart_shelf_tag': '0.7.3+3', 'dart_shelf_web_socket_tag': '0.2.2+3', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index 3e4479f661dc8..b365809166dd6 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: c0d0a2e1f16f13bfd61d0ffb9d142ca7 +Signature: 6f9e2fdcb1ff20f957d2335f4badeb32 UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 17f306abefc94..5db764fbeb983 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 7df0a6e35e5c1a4e541fb53538bc527daa41ba7c Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Wed, 4 Mar 2020 17:05:34 -0800 Subject: [PATCH 158/521] Remove duplicate dependency on the Dart language model (#16948) --- DEPS | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/DEPS b/DEPS index 188d8d3234555..bcb782885c63b 100644 --- a/DEPS +++ b/DEPS @@ -508,16 +508,6 @@ deps = { 'dep_type': 'cipd', }, - 'src/third_party/dart/pkg/analysis_server/language_model': { - 'packages': [ - { - 'package': 'dart/language_model', - 'version': 'lIRt14qoA1Cocb8j3yw_Fx5cfYou2ddam6ArBm4AI6QC', - } - ], - 'dep_type': 'cipd', - }, - 'src/flutter/third_party/gn': { 'packages': [ { From 3e380092e270846373ee9739406bf471050c02c6 Mon Sep 17 00:00:00 2001 From: Brian Osman Date: Thu, 5 Mar 2020 09:11:34 -0500 Subject: [PATCH 159/521] Roll src/third_party/skia 50d7d6fd7280..f6ed96d1c23b (11 commits) (#16953) https://skia.googlesource.com/skia.git/+log/50d7d6fd7280..f6ed96d1c23b git log 50d7d6fd7280..f6ed96d1c23b --date=short --first-parent --format='%ad %ae %s' 2020-03-05 egdaniel@google.com Revert "Move GrGpuResource GrSurface and GrTexture into src." 2020-03-05 mtklein@google.com add an ulp of error on the clamp asserts 2020-03-04 mtklein@google.com better SKVM_JIT_STATS output 2020-03-04 mtklein@google.com skip dump checks on machines w/o FMAs 2020-03-04 reed@google.com detect when the localmatrix forces us into a perspective stage 2020-03-04 egdaniel@google.com Move GrGpuResource GrSurface and GrTexture into src. 2020-03-04 mtklein@google.com async llvm compile, take 2 2020-03-04 mtklein@google.com turn off LLVM FMA discovery 2020-03-04 mtklein@google.com do our own fma discovery 2020-03-04 mtklein@google.com get rid of troublesome Op::round 2020-03-04 nifong@google.com Remove experimental from name of skm44 canvas methods Created with: gclient setdep -r src/third_party/skia@f6ed96d1c23b If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC herb@google.com on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md Bug: None Tbr: herb@google.com --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++++++--------------- 3 files changed, 126 insertions(+), 122 deletions(-) diff --git a/DEPS b/DEPS index bcb782885c63b..bafa7fdbb5a25 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '50d7d6fd72801aa37e09fb201777861a3dfce5f2', + 'skia_revision': 'f6ed96d1c23b79130ca7344c984b07ef9d94fb7b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 78bdec9d80ae1..a385de33f0c74 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a1b75aa0b7764eb93445937e28154e42 +Signature: 4bbb931a4272918a23deb26209a8facc UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 5db764fbeb983..17f306abefc94 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,66 +5143,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5234,66 +5174,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5690,6 +5570,130 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From f0b46918a0e57739416906897bf0359261e6c4c9 Mon Sep 17 00:00:00 2001 From: Flutter GitHub Bot <52682268+fluttergithubbot@users.noreply.github.com> Date: Thu, 5 Mar 2020 07:01:03 -0800 Subject: [PATCH 160/521] Roll fuchsia/sdk/core/mac-amd64 from 8HrJn... to 6eF38... (#16949) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index bafa7fdbb5a25..a2195ac2bdfca 100644 --- a/DEPS +++ b/DEPS @@ -536,7 +536,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': '8HrJn8jd6LRwEIkWpc2iUcyLcZlTiJWXSHH0uWWiXwYC' + 'version': '6eF38liuSiMsKZ7NMdY_5vbRbFWKWjjRzZeEgT_GtwoC' } ], 'condition': 'host_os == "mac"', From 2e2a9e192d3d8f4f8aa96ca283947f4125bf836c Mon Sep 17 00:00:00 2001 From: Flutter GitHub Bot <52682268+fluttergithubbot@users.noreply.github.com> Date: Thu, 5 Mar 2020 07:06:02 -0800 Subject: [PATCH 161/521] Roll fuchsia/sdk/core/linux-amd64 from vH9-3... to cXgMr... (#16952) --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index a2195ac2bdfca..9654e13567cdf 100644 --- a/DEPS +++ b/DEPS @@ -556,7 +556,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'vH9-3OoPe7jPSQPnRi6oSLnrQiDQ4dFOriWO0Gi4p9EC' + 'version': 'cXgMrvlafUjTOKj_nt_S-bh0Tn3arLFWSDGmnkxpI8gC' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 3e4a9e061ee06..90ded260db914 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: f94ca5808e1758792f5815adf9a469b4 +Signature: 2ae8fd295bf61527588a09b91833e566 UNUSED LICENSES: From f5b35594bc9de8a40973797bc56ab6faac822eb0 Mon Sep 17 00:00:00 2001 From: Flutter GitHub Bot <52682268+fluttergithubbot@users.noreply.github.com> Date: Thu, 5 Mar 2020 07:11:01 -0800 Subject: [PATCH 162/521] Roll src/third_party/dart 8e5354dccb64..d1d89c8ce1a1 (10 commits) (#16954) --- DEPS | 6 +++--- ci/licenses_golden/licenses_third_party | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DEPS b/DEPS index 9654e13567cdf..b481edd65268b 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': '8e5354dccb644a32c679e8044227e0a139ec051b', + 'dart_revision': 'd1d89c8ce1a1d40aa827390de4d27ed014ff1f62', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py @@ -86,7 +86,7 @@ vars = { 'dart_shelf_static_rev': 'v0.2.8', 'dart_shelf_tag': '0.7.3+3', 'dart_shelf_web_socket_tag': '0.2.2+3', - 'dart_source_map_stack_trace_tag': '1.1.5', + 'dart_source_map_stack_trace_tag': '2.0.0', 'dart_source_maps_tag': '8af7cc1a1c3a193c1fba5993ce22a546a319c40e', 'dart_source_span_tag': '1.5.5', 'dart_stack_trace_tag': '1.9.3', @@ -95,7 +95,7 @@ vars = { 'dart_string_scanner_tag': '1.0.3', 'dart_term_glyph_tag': '1.0.1', 'dart_test_reflective_loader_tag': '0.1.9', - 'dart_test_tag': 'test-v1.6.4', + 'dart_test_tag': 'test_core-v0.3.2', 'dart_tflite_native_rev': '3c777c40608a2a9f1427bfe0028ab48e7116b4c1', 'dart_typed_data_tag': '1.1.6', 'dart_usage_tag': '3.4.0', diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index b365809166dd6..e247ef687b7c8 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: 6f9e2fdcb1ff20f957d2335f4badeb32 +Signature: f48735fac0fe5b727f2d5442505d3882 UNUSED LICENSES: From edf4bde5740e84d0982716b075c75c63f0bd68b8 Mon Sep 17 00:00:00 2001 From: Flutter GitHub Bot <52682268+fluttergithubbot@users.noreply.github.com> Date: Thu, 5 Mar 2020 07:46:02 -0800 Subject: [PATCH 163/521] Roll src/third_party/skia f6ed96d1c23b..d2f18734aa84 (5 commits) (#16955) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b481edd65268b..68e1a31a54b7c 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'f6ed96d1c23b79130ca7344c984b07ef9d94fb7b', + 'skia_revision': 'd2f18734aa842d7349fdb7d99707a92b4206f84b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index a385de33f0c74..781455131cc02 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 4bbb931a4272918a23deb26209a8facc +Signature: 3a64187d532ec28cd7082e1f4597a973 UNUSED LICENSES: From 7381ca8ddfe8c309cd82e76486be7604371f6027 Mon Sep 17 00:00:00 2001 From: Kirill Nikolaev Date: Thu, 5 Mar 2020 16:59:43 +0100 Subject: [PATCH 164/521] Avoid generating VSYNC trace events from Flutter common code. (#16248) Chrome Trace viewer treats events labeled "VSYNC" as special and highlights them (when the "Highlight Vsync" checkbox is enabled). Ideally VSYNC events are generated by the host system at their source. System VSYNC events are indeed present in full-system systraces. Flutter-level traces (as seen in Observatory/Flutter devtools) do not contain the system VSYNC events, so we rely on the engine to generate them (as close to where they would be generated by the system ideally). Currently the common (platform-independent code) generates VSYNC events at the time when the UI thread starts processing a frame. This has two drawbacks: 1. The traces are generated with a delay (we wait for the callback to be have been scheduled on the UI thread instead of tracing as soon as the system notified us. 2. When inspecting system-wide traces we'll have both the system and the Flutter app (or potentially multiple Flutter apps) generate VSYNC events at the same time. This confuses both the developers and the trace viewer. This change moves the VSYNC event generation to the platform-specific embedder implementations: 1. On Android/iOS we always generate the VSYNC event since Android/iOS developers use Flutter tools to debug the apps. 2. On Fuchsia we do not generate VSYNC events since the systraces always contain them. 3. In the Embedder wrapper we don not generate VSYNC events and rely on the actual embedder to do this in a way appropriate for the target system. --- shell/common/vsync_waiter.cc | 14 +------------- shell/platform/android/vsync_waiter_android.cc | 2 ++ .../ios/framework/Source/vsync_waiter_ios.mm | 2 ++ 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/shell/common/vsync_waiter.cc b/shell/common/vsync_waiter.cc index feba5b647f074..49978a18e2246 100644 --- a/shell/common/vsync_waiter.cc +++ b/shell/common/vsync_waiter.cc @@ -9,18 +9,6 @@ namespace flutter { -#if defined(OS_FUCHSIA) -// In general, traces on Fuchsia are recorded across the whole system. -// Because of this, emitting a "VSYNC" event per flutter process is -// undesirable, as the events will collide with each other. We -// instead let another area of the system emit them. -static constexpr const char* kVsyncTraceName = "vsync callback"; -#else // defined(OS_FUCHSIA) -// Note: The tag name must be "VSYNC" (it is special) so that the -// "Highlight Vsync" checkbox in the timeline can be enabled. -static constexpr const char* kVsyncTraceName = "VSYNC"; -#endif // defined(OS_FUCHSIA) - static constexpr const char* kVsyncFlowName = "VsyncFlow"; VsyncWaiter::VsyncWaiter(TaskRunners task_runners) @@ -114,7 +102,7 @@ void VsyncWaiter::FireCallback(fml::TimePoint frame_start_time, task_runners_.GetUITaskRunner()->PostTaskForTime( [callback, flow_identifier, frame_start_time, frame_target_time]() { - FML_TRACE_EVENT("flutter", kVsyncTraceName, "StartTime", + FML_TRACE_EVENT("flutter", "VsyncProcessCallback", "StartTime", frame_start_time, "TargetTime", frame_target_time); fml::tracing::TraceEventAsyncComplete( "flutter", "VsyncSchedulingOverhead", fml::TimePoint::Now(), diff --git a/shell/platform/android/vsync_waiter_android.cc b/shell/platform/android/vsync_waiter_android.cc index 2a9edbb45969c..b38fd64548fba 100644 --- a/shell/platform/android/vsync_waiter_android.cc +++ b/shell/platform/android/vsync_waiter_android.cc @@ -57,6 +57,8 @@ void VsyncWaiterAndroid::OnNativeVsync(JNIEnv* env, jlong frameTimeNanos, jlong frameTargetTimeNanos, jlong java_baton) { + TRACE_EVENT0("flutter", "VSYNC"); + auto frame_time = fml::TimePoint::FromEpochDelta( fml::TimeDelta::FromNanoseconds(frameTimeNanos)); auto target_time = fml::TimePoint::FromEpochDelta( diff --git a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm index a920f826f9341..63564239dc31b 100644 --- a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm +++ b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm @@ -114,6 +114,8 @@ - (void)await { } - (void)onDisplayLink:(CADisplayLink*)link { + TRACE_EVENT0("flutter", "VSYNC"); + CFTimeInterval delay = CACurrentMediaTime() - link.timestamp; fml::TimePoint frame_start_time = fml::TimePoint::Now() - fml::TimeDelta::FromSecondsF(delay); fml::TimePoint frame_target_time = frame_start_time + fml::TimeDelta::FromSecondsF(link.duration); From ec68bd6ec4744b8f250f7f96dd1c76c15e881e43 Mon Sep 17 00:00:00 2001 From: gaaclarke <30870216+gaaclarke@users.noreply.github.com> Date: Thu, 5 Mar 2020 10:04:13 -0800 Subject: [PATCH 165/521] Fixed FlutterPlugin.h doxygen. (#16945) --- .../ios/framework/Headers/FlutterPlugin.h | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h b/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h index 4c056cdcd8a31..81d03d7ea6ac7 100644 --- a/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h +++ b/shell/platform/darwin/ios/framework/Headers/FlutterPlugin.h @@ -19,7 +19,7 @@ NS_ASSUME_NONNULL_BEGIN @protocol FlutterPluginRegistry; #pragma mark - -/*************************************************************************************************** +/** * Protocol for listener of events from the UIApplication, typically a FlutterPlugin. */ @protocol FlutterApplicationLifeCycleDelegate @@ -165,7 +165,7 @@ NS_ASSUME_NONNULL_BEGIN @end #pragma mark - -/*************************************************************************************************** +/** * A plugin registration callback. * * Used for registering plugins with additional instances of @@ -176,7 +176,7 @@ NS_ASSUME_NONNULL_BEGIN typedef void (*FlutterPluginRegistrantCallback)(NSObject* registry); #pragma mark - -/*************************************************************************************************** +/** * Implemented by the iOS part of a Flutter plugin. * * Defines a set of optional callback methods and a method to set up the plugin @@ -239,7 +239,7 @@ typedef void (*FlutterPluginRegistrantCallback)(NSObject* @end #pragma mark - -/*************************************************************************************************** +/** * How the UIGestureRecognizers of a platform view are blocked. * * UIGestureRecognizers of platform views can be blocked based on decisions made by the @@ -265,14 +265,14 @@ typedef enum { } FlutterPlatformViewGestureRecognizersBlockingPolicy; #pragma mark - -/*************************************************************************************************** - *Registration context for a single `FlutterPlugin`, providing a one stop shop - *for the plugin to access contextual information and register callbacks for - *various application events. +/** + * Registration context for a single `FlutterPlugin`, providing a one stop shop + * for the plugin to access contextual information and register callbacks for + * various application events. * - *Registrars are obtained from a `FlutterPluginRegistry` which keeps track of - *the identity of registered plugins and provides basic support for cross-plugin - *coordination. + * Registrars are obtained from a `FlutterPluginRegistry` which keeps track of + * the identity of registered plugins and provides basic support for cross-plugin + * coordination. */ @protocol FlutterPluginRegistrar /** @@ -373,7 +373,7 @@ typedef enum { @end #pragma mark - -/*************************************************************************************************** +/** * A registry of Flutter iOS plugins. * * Plugins are identified by unique string keys, typically the name of the @@ -419,7 +419,7 @@ typedef enum { @end #pragma mark - -/*************************************************************************************************** +/** * Implement this in the `UIAppDelegate` of your app to enable Flutter plugins to register * themselves to the application life cycle events. * @@ -430,6 +430,12 @@ typedef enum { #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 #endif + +/** + * Called when registering a new `FlutterApplicaitonLifeCycleDelegate`. + * + * See also: `-[FlutterAppDelegate addApplicationLifeCycleDelegate:]` + */ - (void)addApplicationLifeCycleDelegate:(NSObject*)delegate; @end From 5a5d4cb419c420aa076e987cb06b048af64b6274 Mon Sep 17 00:00:00 2001 From: Flutter GitHub Bot <52682268+fluttergithubbot@users.noreply.github.com> Date: Thu, 5 Mar 2020 10:26:03 -0800 Subject: [PATCH 166/521] Roll src/third_party/skia d2f18734aa84..b803ef83d68f (2 commits) (#16956) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 68e1a31a54b7c..34b55076be12a 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'd2f18734aa842d7349fdb7d99707a92b4206f84b', + 'skia_revision': 'b803ef83d68fd7445fb81fe8dfe0cd63a8c72503', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 781455131cc02..c5e3408fcf3cf 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 3a64187d532ec28cd7082e1f4597a973 +Signature: a56922ed3aea0ad330f432c838e727f2 UNUSED LICENSES: From f2c523ef4ad1f0e521937dc785368dc3268e1094 Mon Sep 17 00:00:00 2001 From: Flutter GitHub Bot <52682268+fluttergithubbot@users.noreply.github.com> Date: Thu, 5 Mar 2020 10:36:02 -0800 Subject: [PATCH 167/521] Roll src/third_party/dart d1d89c8ce1a1..9983424a3c50 (10 commits) (#16957) --- DEPS | 2 +- ci/licenses_golden/licenses_third_party | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++------------ 3 files changed, 122 insertions(+), 126 deletions(-) diff --git a/DEPS b/DEPS index 34b55076be12a..38f7b491bfa57 100644 --- a/DEPS +++ b/DEPS @@ -34,7 +34,7 @@ vars = { # Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS. # You can use //tools/dart/create_updated_flutter_deps.py to produce # updated revision list of existing dependencies. - 'dart_revision': 'd1d89c8ce1a1d40aa827390de4d27ed014ff1f62', + 'dart_revision': '9983424a3c50c623730fd43b4ce263df660eb455', # WARNING: DO NOT EDIT MANUALLY # The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py diff --git a/ci/licenses_golden/licenses_third_party b/ci/licenses_golden/licenses_third_party index e247ef687b7c8..707397c9ee842 100644 --- a/ci/licenses_golden/licenses_third_party +++ b/ci/licenses_golden/licenses_third_party @@ -1,4 +1,4 @@ -Signature: f48735fac0fe5b727f2d5442505d3882 +Signature: 3dce57c8ab6f1c0d753da611a06550ca UNUSED LICENSES: diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 17f306abefc94..5db764fbeb983 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From e28d26e3054ef005ec273fbedbaad257d5d393cf Mon Sep 17 00:00:00 2001 From: Flutter GitHub Bot <52682268+fluttergithubbot@users.noreply.github.com> Date: Thu, 5 Mar 2020 12:01:02 -0800 Subject: [PATCH 168/521] Roll src/third_party/skia b803ef83d68f..1b1b0d5abb75 (5 commits) (#16958) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 38f7b491bfa57..33eedbe8ae3c3 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'b803ef83d68fd7445fb81fe8dfe0cd63a8c72503', + 'skia_revision': '1b1b0d5abb7530e0418de7861d9cec46ece7d85f', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index c5e3408fcf3cf..622d38dc429c2 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: a56922ed3aea0ad330f432c838e727f2 +Signature: 86248d4bd4f8c13fb4f747eec6b1295a UNUSED LICENSES: @@ -1423,6 +1423,7 @@ FILE: ../../../third_party/skia/specs/web-img-decode/current/index.html FILE: ../../../third_party/skia/specs/web-img-decode/proposed/impl/impl.js FILE: ../../../third_party/skia/specs/web-img-decode/proposed/index.html FILE: ../../../third_party/skia/src/core/SkOrderedReadBuffer.h +FILE: ../../../third_party/skia/src/opts/SkVM_opts.h FILE: ../../../third_party/skia/src/sksl/lex/sksl.lex FILE: ../../../third_party/skia/src/sksl/sksl_blend.inc FILE: ../../../third_party/skia/src/sksl/sksl_fp.inc From 3bf196591bc312b38399a598f8c9e5d752de56e2 Mon Sep 17 00:00:00 2001 From: Flutter GitHub Bot <52682268+fluttergithubbot@users.noreply.github.com> Date: Thu, 5 Mar 2020 15:31:02 -0800 Subject: [PATCH 169/521] Roll src/third_party/skia 1b1b0d5abb75..db20afc1bf3c (7 commits) (#16959) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 8 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++++++--------------- 3 files changed, 129 insertions(+), 125 deletions(-) diff --git a/DEPS b/DEPS index 33eedbe8ae3c3..d560db4768790 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '1b1b0d5abb7530e0418de7861d9cec46ece7d85f', + 'skia_revision': 'db20afc1bf3c8d68d5228973e0633a2e09d282aa', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 622d38dc429c2..7bbda3d1baa7a 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 86248d4bd4f8c13fb4f747eec6b1295a +Signature: b7c186692bc9c5130ecbdbad4f030630 UNUSED LICENSES: @@ -1553,7 +1553,6 @@ FILE: ../../../third_party/skia/include/core/SkImageFilter.h FILE: ../../../third_party/skia/include/core/SkMatrix44.h FILE: ../../../third_party/skia/include/core/SkSize.h FILE: ../../../third_party/skia/include/effects/SkLayerDrawLooper.h -FILE: ../../../third_party/skia/include/gpu/GrTexture.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLConfig.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLConfig_chrome.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLInterface.h @@ -1661,6 +1660,7 @@ FILE: ../../../third_party/skia/src/gpu/GrStencilAttachment.cpp FILE: ../../../third_party/skia/src/gpu/GrStencilAttachment.h FILE: ../../../third_party/skia/src/gpu/GrStencilSettings.cpp FILE: ../../../third_party/skia/src/gpu/GrTexture.cpp +FILE: ../../../third_party/skia/src/gpu/GrTexture.h FILE: ../../../third_party/skia/src/gpu/SkGpuDevice.cpp FILE: ../../../third_party/skia/src/gpu/geometry/GrPathUtils.cpp FILE: ../../../third_party/skia/src/gpu/geometry/GrPathUtils.h @@ -1836,7 +1836,6 @@ FILE: ../../../third_party/skia/include/core/SkFont.h FILE: ../../../third_party/skia/include/core/SkPictureRecorder.h FILE: ../../../third_party/skia/include/core/SkSurfaceProps.h FILE: ../../../third_party/skia/include/core/SkTextBlob.h -FILE: ../../../third_party/skia/include/gpu/GrGpuResource.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLAssembleInterface.h FILE: ../../../third_party/skia/include/ports/SkFontMgr_indirect.h FILE: ../../../third_party/skia/include/ports/SkRemotableFontMgr.h @@ -1885,6 +1884,7 @@ FILE: ../../../third_party/skia/src/fonts/SkRemotableFontMgr.cpp FILE: ../../../third_party/skia/src/gpu/GrDefaultGeoProcFactory.cpp FILE: ../../../third_party/skia/src/gpu/GrDefaultGeoProcFactory.h FILE: ../../../third_party/skia/src/gpu/GrFragmentProcessor.h +FILE: ../../../third_party/skia/src/gpu/GrGpuResource.h FILE: ../../../third_party/skia/src/gpu/GrGpuResourceCacheAccess.h FILE: ../../../third_party/skia/src/gpu/GrPathRendering.cpp FILE: ../../../third_party/skia/src/gpu/GrPathRendering.h @@ -2046,7 +2046,6 @@ FILE: ../../../third_party/skia/include/core/SkImage.h FILE: ../../../third_party/skia/include/core/SkRRect.h FILE: ../../../third_party/skia/include/core/SkStrokeRec.h FILE: ../../../third_party/skia/include/core/SkSurface.h -FILE: ../../../third_party/skia/include/gpu/GrSurface.h FILE: ../../../third_party/skia/include/gpu/gl/GrGLFunctions.h FILE: ../../../third_party/skia/include/pathops/SkPathOps.h FILE: ../../../third_party/skia/include/private/SkChecksum.h @@ -2091,6 +2090,7 @@ FILE: ../../../third_party/skia/src/gpu/GrShaderCaps.h FILE: ../../../third_party/skia/src/gpu/GrSoftwarePathRenderer.cpp FILE: ../../../third_party/skia/src/gpu/GrSoftwarePathRenderer.h FILE: ../../../third_party/skia/src/gpu/GrSurface.cpp +FILE: ../../../third_party/skia/src/gpu/GrSurface.h FILE: ../../../third_party/skia/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp FILE: ../../../third_party/skia/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.h FILE: ../../../third_party/skia/src/gpu/effects/GrTextureDomain.cpp diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 5db764fbeb983..17f306abefc94 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,66 +5143,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5234,66 +5174,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk - Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5690,6 +5570,130 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk +tonic + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR From 4da196caa1ce854e0b3f97587e4220e14aa2c335 Mon Sep 17 00:00:00 2001 From: Flutter GitHub Bot <52682268+fluttergithubbot@users.noreply.github.com> Date: Thu, 5 Mar 2020 17:06:01 -0800 Subject: [PATCH 170/521] Roll src/third_party/skia db20afc1bf3c..012f8497802e (6 commits) (#16966) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index d560db4768790..7985395b20040 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'db20afc1bf3c8d68d5228973e0633a2e09d282aa', + 'skia_revision': '012f8497802e74d3c092d038ed2a5b1380309a1a', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 7bbda3d1baa7a..4697b45279832 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: b7c186692bc9c5130ecbdbad4f030630 +Signature: d4519ab250015d83765d266d807d2d0c UNUSED LICENSES: From 5aff3119480996ca014ec0f8d26d74db617b5852 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 5 Mar 2020 23:11:02 -0500 Subject: [PATCH 171/521] Roll fuchsia/sdk/core/mac-amd64 from 6eF38... to J6ct_... (#16969) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 7985395b20040..23f6ffb6fafd0 100644 --- a/DEPS +++ b/DEPS @@ -536,7 +536,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': '6eF38liuSiMsKZ7NMdY_5vbRbFWKWjjRzZeEgT_GtwoC' + 'version': 'J6ct_s65RMTtGAc0zMI55SNQ1-V0oUE74VbVl8oHP0gC' } ], 'condition': 'host_os == "mac"', From 7c612de34b6d267b28bf913d5285e0bc8d98724d Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Thu, 5 Mar 2020 23:36:02 -0500 Subject: [PATCH 172/521] Roll fuchsia/sdk/core/linux-amd64 from cXgMr... to cTw2C... (#16970) --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 23f6ffb6fafd0..6c3b5bf656d4e 100644 --- a/DEPS +++ b/DEPS @@ -556,7 +556,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'cXgMrvlafUjTOKj_nt_S-bh0Tn3arLFWSDGmnkxpI8gC' + 'version': 'cTw2CHPPyHxE921m979WtotEFB96C0u9C15fQchM4lQC' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 90ded260db914..630299d22c29f 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: 2ae8fd295bf61527588a09b91833e566 +Signature: 39e9691280dd7d69354fa72c708687fd UNUSED LICENSES: @@ -1387,6 +1387,7 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.feedback/annotation.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.feedback/attachment.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.feedback/crash_reporter.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.feedback/data_provider.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.feedback/device_id_provider.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.feedback/meta.json FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.fonts/events.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.fonts/meta.json @@ -3111,11 +3112,11 @@ FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.input/keys.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.legacymetrics/event.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.legacymetrics/metrics_recorder.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.media.target/target_discovery.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.media/activity_reporter.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.memorypressure/memorypressure.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.settings/night_mode.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.ui.input3/events.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.ui.input3/keyboard.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.ui.input3/keys.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.ui.input3/modifiers.fidl FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.url/url.fidl FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/stream.h From 6cfa7fcad64e2fe70bca01cfbc4598ecd24613b1 Mon Sep 17 00:00:00 2001 From: Yegor Date: Thu, 5 Mar 2020 22:07:57 -0800 Subject: [PATCH 173/521] fix shadows and mask filter blurs (#16963) * fix shadows and mask filter blurs * update goldens * clarify the choice to min the shadows --- lib/web_ui/dev/goldens_lock.yaml | 2 +- lib/web_ui/lib/src/engine/bitmap_canvas.dart | 21 +- lib/web_ui/lib/src/engine/canvas_pool.dart | 83 ++-- .../lib/src/engine/compositor/util.dart | 4 - lib/web_ui/lib/src/engine/dom_canvas.dart | 15 +- lib/web_ui/lib/src/engine/shadow.dart | 461 +++++------------- lib/web_ui/lib/src/engine/surface/clip.dart | 5 +- .../src/engine/surface/recording_canvas.dart | 104 ++-- .../lib/src/engine/surface/scene_builder.dart | 1 + .../engine/recording_canvas_golden_test.dart | 175 ++++++- .../engine/shadow_golden_test.dart | 162 ++++++ 11 files changed, 583 insertions(+), 450 deletions(-) create mode 100644 lib/web_ui/test/golden_tests/engine/shadow_golden_test.dart diff --git a/lib/web_ui/dev/goldens_lock.yaml b/lib/web_ui/dev/goldens_lock.yaml index 9d981a4c66700..1b73145f48a3b 100644 --- a/lib/web_ui/dev/goldens_lock.yaml +++ b/lib/web_ui/dev/goldens_lock.yaml @@ -1,2 +1,2 @@ repository: https://github.com/flutter/goldens.git -revision: 1699ba6fd7093a0a610f82618fa30546e7974777 +revision: 8f692819e8881b7d2131dbd61d965c21d5e3e345 diff --git a/lib/web_ui/lib/src/engine/bitmap_canvas.dart b/lib/web_ui/lib/src/engine/bitmap_canvas.dart index bc589172e4be8..c9fdb211b9677 100644 --- a/lib/web_ui/lib/src/engine/bitmap_canvas.dart +++ b/lib/web_ui/lib/src/engine/bitmap_canvas.dart @@ -353,17 +353,16 @@ class BitmapCanvas extends EngineCanvas { @override void drawImage(ui.Image image, ui.Offset p, SurfacePaintData paint) { - //_applyPaint(paint); - final HtmlImage htmlImage = image; - final html.ImageElement imgElement = htmlImage.cloneImageElement(); - String blendMode = _stringForBlendMode(paint.blendMode); - imgElement.style.mixBlendMode = blendMode; - _drawImage(imgElement, p); + _drawImage(image, p, paint); _childOverdraw = true; _canvasPool.allocateExtraCanvas(); } - void _drawImage(html.ImageElement imgElement, ui.Offset p) { + html.ImageElement _drawImage(ui.Image image, ui.Offset p, SurfacePaintData paint) { + final HtmlImage htmlImage = image; + final html.Element imgElement = htmlImage.cloneImageElement(); + final ui.BlendMode blendMode = paint.blendMode; + imgElement.style.mixBlendMode = _stringForBlendMode(blendMode); if (_canvasPool.isClipped) { final List clipElements = _clipContent( _canvasPool._clipStack, imgElement, p, _canvasPool.currentTransform); @@ -380,12 +379,12 @@ class BitmapCanvas extends EngineCanvas { rootElement.append(imgElement); _children.add(imgElement); } + return imgElement; } @override void drawImageRect( ui.Image image, ui.Rect src, ui.Rect dst, SurfacePaintData paint) { - final HtmlImage htmlImage = image; final bool requiresClipping = src.left != 0 || src.top != 0 || src.width != image.width || @@ -395,9 +394,6 @@ class BitmapCanvas extends EngineCanvas { !requiresClipping) { drawImage(image, dst.topLeft, paint); } else { - final html.Element imgElement = htmlImage.cloneImageElement(); - final ui.BlendMode blendMode = paint.blendMode; - imgElement.style.mixBlendMode = _stringForBlendMode(blendMode); if (requiresClipping) { save(); clipRect(dst); @@ -414,7 +410,8 @@ class BitmapCanvas extends EngineCanvas { targetTop += topMargin; } } - _drawImage(imgElement, ui.Offset(targetLeft, targetTop)); + + final html.ImageElement imgElement = _drawImage(image, ui.Offset(targetLeft, targetTop), paint); // To scale set width / height on destination image. // For clipping we need to scale according to // clipped-width/full image width and shift it according to left/top of diff --git a/lib/web_ui/lib/src/engine/canvas_pool.dart b/lib/web_ui/lib/src/engine/canvas_pool.dart index fefcf14b13bfb..8c3440d8a3916 100644 --- a/lib/web_ui/lib/src/engine/canvas_pool.dart +++ b/lib/web_ui/lib/src/engine/canvas_pool.dart @@ -581,49 +581,46 @@ class _CanvasPool extends _SaveStackTracking { void drawShadow(ui.Path path, ui.Color color, double elevation, bool transparentOccluder) { - final List shadows = - ElevationShadow.computeCanvasShadows(elevation, color); - if (shadows.isNotEmpty) { - for (final CanvasShadow shadow in shadows) { - // TODO(het): Shadows with transparent occluders are not supported - // on webkit since filter is unsupported. - if (transparentOccluder && browserEngine != BrowserEngine.webkit) { - // We paint shadows using a path and a mask filter instead of the - // built-in shadow* properties. This is because the color alpha of the - // paint is added to the shadow. The effect we're looking for is to just - // paint the shadow without the path itself, but if we use a non-zero - // alpha for the paint the path is painted in addition to the shadow, - // which is undesirable. - context.save(); - context.translate(shadow.offsetX, shadow.offsetY); - context.filter = _maskFilterToCss( - ui.MaskFilter.blur(ui.BlurStyle.normal, shadow.blur)); - context.strokeStyle = ''; - context.fillStyle = colorToCssString(shadow.color); - _runPath(context, path); - context.fill(); - context.restore(); - } else { - // TODO(het): We fill the path with this paint, then later we clip - // by the same path and fill it with a fully opaque color (we know - // the color is fully opaque because `transparentOccluder` is false. - // However, due to anti-aliasing of the clip, a few pixels of the - // path we are about to paint may still be visible after we fill with - // the opaque occluder. For that reason, we fill with the shadow color, - // and set the shadow color to fully opaque. This way, the visible - // pixels are less opaque and less noticeable. - context.save(); - context.filter = 'none'; - context.strokeStyle = ''; - context.fillStyle = colorToCssString(shadow.color); - context.shadowBlur = shadow.blur; - context.shadowColor = colorToCssString(shadow.color.withAlpha(0xff)); - context.shadowOffsetX = shadow.offsetX; - context.shadowOffsetY = shadow.offsetY; - _runPath(context, path); - context.fill(); - context.restore(); - } + final SurfaceShadowData shadow = computeShadow(path.getBounds(), elevation); + if (shadow != null) { + // TODO(het): Shadows with transparent occluders are not supported + // on webkit since filter is unsupported. + if (transparentOccluder && browserEngine != BrowserEngine.webkit) { + // We paint shadows using a path and a mask filter instead of the + // built-in shadow* properties. This is because the color alpha of the + // paint is added to the shadow. The effect we're looking for is to just + // paint the shadow without the path itself, but if we use a non-zero + // alpha for the paint the path is painted in addition to the shadow, + // which is undesirable. + context.save(); + context.translate(shadow.offset.dx, shadow.offset.dy); + context.filter = _maskFilterToCss( + ui.MaskFilter.blur(ui.BlurStyle.normal, shadow.blurWidth)); + context.strokeStyle = ''; + context.fillStyle = colorToCssString(color); + _runPath(context, path); + context.fill(); + context.restore(); + } else { + // TODO(het): We fill the path with this paint, then later we clip + // by the same path and fill it with a fully opaque color (we know + // the color is fully opaque because `transparentOccluder` is false. + // However, due to anti-aliasing of the clip, a few pixels of the + // path we are about to paint may still be visible after we fill with + // the opaque occluder. For that reason, we fill with the shadow color, + // and set the shadow color to fully opaque. This way, the visible + // pixels are less opaque and less noticeable. + context.save(); + context.filter = 'none'; + context.strokeStyle = ''; + context.fillStyle = colorToCssString(color); + context.shadowBlur = shadow.blurWidth; + context.shadowColor = colorToCssString(color.withAlpha(0xff)); + context.shadowOffsetX = shadow.offset.dx; + context.shadowOffsetY = shadow.offset.dy; + _runPath(context, path); + context.fill(); + context.restore(); } } } diff --git a/lib/web_ui/lib/src/engine/compositor/util.dart b/lib/web_ui/lib/src/engine/compositor/util.dart index 218d3a0de71db..72d53c6d9b52d 100644 --- a/lib/web_ui/lib/src/engine/compositor/util.dart +++ b/lib/web_ui/lib/src/engine/compositor/util.dart @@ -286,10 +286,6 @@ js.JsArray makeSkiaColorStops(List colorStops) { return jsColorStops; } -// These must be kept in sync with `flow/layers/physical_shape_layer.cc`. -const double kLightHeight = 600.0; -const double kLightRadius = 800.0; - void drawSkShadow( js.JsObject skCanvas, SkPath path, diff --git a/lib/web_ui/lib/src/engine/dom_canvas.dart b/lib/web_ui/lib/src/engine/dom_canvas.dart index 970e1be69010a..c774578df2525 100644 --- a/lib/web_ui/lib/src/engine/dom_canvas.dart +++ b/lib/web_ui/lib/src/engine/dom_canvas.dart @@ -81,6 +81,7 @@ class DomCanvas extends EngineCanvas with SaveElementStackTracking { }()); String effectiveTransform; final bool isStroke = paint.style == ui.PaintingStyle.stroke; + final double strokeWidth = paint.strokeWidth ?? 0.0; final double left = math.min(rect.left, rect.right); final double right = math.max(rect.left, rect.right); final double top = math.min(rect.top, rect.bottom); @@ -88,7 +89,7 @@ class DomCanvas extends EngineCanvas with SaveElementStackTracking { if (currentTransform.isIdentity()) { if (isStroke) { effectiveTransform = - 'translate(${left - (paint.strokeWidth / 2.0)}px, ${top - (paint.strokeWidth / 2.0)}px)'; + 'translate(${left - (strokeWidth / 2.0)}px, ${top - (strokeWidth / 2.0)}px)'; } else { effectiveTransform = 'translate(${left}px, ${top}px)'; } @@ -97,7 +98,7 @@ class DomCanvas extends EngineCanvas with SaveElementStackTracking { final Matrix4 translated = currentTransform.clone(); if (isStroke) { translated.translate( - left - (paint.strokeWidth / 2.0), top - (paint.strokeWidth / 2.0)); + left - (strokeWidth / 2.0), top - (strokeWidth / 2.0)); } else { translated.translate(left, top); } @@ -109,8 +110,8 @@ class DomCanvas extends EngineCanvas with SaveElementStackTracking { ..transformOrigin = '0 0 0' ..transform = effectiveTransform; - final String cssColor = paint.color == null ? '#000000' - : colorToCssString(paint.color); + final String cssColor = + paint.color == null ? '#000000' : colorToCssString(paint.color); if (paint.maskFilter != null) { style.filter = 'blur(${paint.maskFilter.webOnlySigma}px)'; @@ -118,9 +119,9 @@ class DomCanvas extends EngineCanvas with SaveElementStackTracking { if (isStroke) { style - ..width = '${right - left - paint.strokeWidth}px' - ..height = '${bottom - top - paint.strokeWidth}px' - ..border = '${paint.strokeWidth}px solid $cssColor'; + ..width = '${right - left - strokeWidth}px' + ..height = '${bottom - top - strokeWidth}px' + ..border = '${strokeWidth}px solid $cssColor'; } else { style ..width = '${right - left}px' diff --git a/lib/web_ui/lib/src/engine/shadow.dart b/lib/web_ui/lib/src/engine/shadow.dart index 5e63f74e186ea..3c46dac7681b5 100644 --- a/lib/web_ui/lib/src/engine/shadow.dart +++ b/lib/web_ui/lib/src/engine/shadow.dart @@ -5,366 +5,135 @@ // @dart = 2.6 part of engine; -/// This code is ported from the AngularDart SCSS. +/// How far is the light source from the surface of the UI. /// -/// See: https://github.com/dart-lang/angular_components/blob/master/lib/css/material/_shadow.scss -class ElevationShadow { - /// Applies a standard transition style for box-shadow to box-shadow. - static void applyShadowTransition(html.CssStyleDeclaration style) { - style.transition = 'box-shadow .28s cubic-bezier(.4, 0, .2, 1)'; - } - - /// Disables box-shadow. - static void applyShadowNone(html.CssStyleDeclaration style) { - style.boxShadow = 'none'; - } +/// Must be kept in sync with `flow/layers/physical_shape_layer.cc`. +const double kLightHeight = 600.0; - /// Applies a standard shadow to the selected element(s). - /// - /// This rule is great for things that need a static shadow. If the elevation - /// of the shadow needs to be changed dynamically, use [applyShadow]. - /// - /// Valid values: 2, 3, 4, 6, 8, 12, 16, 24 - static void applyShadowElevation(html.CssStyleDeclaration style, - {@required int dp, @required ui.Color color}) { - const double keyUmbraOpacity = 0.2; - const double keyPenumbraOpacity = 0.14; - const double ambientShadowOpacity = 0.12; +/// The radius of the light source. The positive radius creates a penumbra in +/// the shadow, which we express using a blur effect. +/// +/// Must be kept in sync with `flow/layers/physical_shape_layer.cc`. +const double kLightRadius = 800.0; - final String rgb = '${color.red}, ${color.green}, ${color.blue}'; - if (dp == 2) { - style.boxShadow = '0 2px 2px 0 rgba($rgb, $keyPenumbraOpacity), ' - '0 3px 1px -2px rgba($rgb, $ambientShadowOpacity), ' - '0 1px 5px 0 rgba($rgb, $keyUmbraOpacity)'; - } else if (dp == 3) { - style.boxShadow = '0 3px 4px 0 rgba($rgb, $keyPenumbraOpacity), ' - '0 3px 3px -2px rgba($rgb, $ambientShadowOpacity), ' - '0 1px 8px 0 rgba($rgb, $keyUmbraOpacity)'; - } else if (dp == 4) { - style.boxShadow = '0 4px 5px 0 rgba($rgb, $keyPenumbraOpacity), ' - '0 1px 10px 0 rgba($rgb, $ambientShadowOpacity), ' - '0 2px 4px -1px rgba($rgb, $keyUmbraOpacity)'; - } else if (dp == 6) { - style.boxShadow = '0 6px 10px 0 rgba($rgb, $keyPenumbraOpacity), ' - '0 1px 18px 0 rgba($rgb, $ambientShadowOpacity), ' - '0 3px 5px -1px rgba($rgb, $keyUmbraOpacity)'; - } else if (dp == 8) { - style.boxShadow = '0 8px 10px 1px rgba($rgb, $keyPenumbraOpacity), ' - '0 3px 14px 2px rgba($rgb, $ambientShadowOpacity), ' - '0 5px 5px -3px rgba($rgb, $keyUmbraOpacity)'; - } else if (dp == 12) { - style.boxShadow = '0 12px 17px 2px rgba($rgb, $keyPenumbraOpacity), ' - '0 5px 22px 4px rgba($rgb, $ambientShadowOpacity), ' - '0 7px 8px -4px rgba($rgb, $keyUmbraOpacity)'; - } else if (dp == 16) { - style.boxShadow = '0 16px 24px 2px rgba($rgb, $keyPenumbraOpacity), ' - '0 6px 30px 5px rgba($rgb, $ambientShadowOpacity), ' - '0 8px 10px -5px rgba($rgb, $keyUmbraOpacity)'; - } else { - style.boxShadow = '0 24px 38px 3px rgba($rgb, $keyPenumbraOpacity), ' - '0 9px 46px 8px rgba($rgb, $ambientShadowOpacity), ' - '0 11px 15px -7px rgba($rgb, $keyUmbraOpacity)'; - } - } +/// The X offset of the list source relative to the center of the shape. +/// +/// This shifts the shadow along the X asix as if the light beams at an angle. +const double kLightOffsetX = -200.0; - /// Applies the shadow styles to the selected element. - /// - /// Use the attributes below to control the shadow. - /// - /// - `animated` -- Whether to animate the shadow transition. - /// - `elevation` -- Z-elevation of shadow. Valid Values: 1,2,3,4,5 - static void applyShadow( - html.CssStyleDeclaration style, double elevation, ui.Color color) { - applyShadowTransition(style); +/// The Y offset of the list source relative to the center of the shape. +/// +/// This shifts the shadow along the Y asix as if the light beams at an angle. +const double kLightOffsetY = -400.0; - if (elevation <= 0.0) { - applyShadowNone(style); - } else if (elevation <= 1.0) { - applyShadowElevation(style, dp: 2, color: color); - } else if (elevation <= 2.0) { - applyShadowElevation(style, dp: 4, color: color); - } else if (elevation <= 3.0) { - applyShadowElevation(style, dp: 6, color: color); - } else if (elevation <= 4.0) { - applyShadowElevation(style, dp: 8, color: color); - } else if (elevation <= 5.0) { - applyShadowElevation(style, dp: 16, color: color); - } else { - applyShadowElevation(style, dp: 24, color: color); - } +/// Computes the offset that moves the shadow due to the light hitting the +/// shape at an angle. +/// +/// ------ light +/// \ +/// \ +/// \ +/// \ +/// \ +/// --------- shape +/// |\ +/// | \ +/// | \ +/// ------------x---x------------ +/// |<->| offset +/// +/// This is not a complete physical model. For example, this does not take into +/// account the size of the shape (this function doesn't even take the shape as +/// a parameter). It's just a good enough approximation. +ui.Offset computeShadowOffset(elevation) { + if (elevation == 0.0) { + return ui.Offset.zero; } - static List computeCanvasShadows( - double elevation, ui.Color color) { - if (elevation <= 0.0) { - return const []; - } else if (elevation <= 1.0) { - return computeShadowElevation(dp: 2, color: color); - } else if (elevation <= 2.0) { - return computeShadowElevation(dp: 4, color: color); - } else if (elevation <= 3.0) { - return computeShadowElevation(dp: 6, color: color); - } else if (elevation <= 4.0) { - return computeShadowElevation(dp: 8, color: color); - } else if (elevation <= 5.0) { - return computeShadowElevation(dp: 16, color: color); - } else { - return computeShadowElevation(dp: 24, color: color); - } - } + final double dx = -kLightOffsetX * elevation / kLightHeight; + final double dy = -kLightOffsetY * elevation / kLightHeight; + return ui.Offset(dx, dy); +} - /// Expands rect to include size of shadow. - /// - /// Computed from shadow elevation offset + spread, blur - static ui.Rect computeShadowRect(ui.Rect r, double elevation) { - // We are computing this rect by computing the maximum "reach" of the shadow - // by summing the computed shadow offset and the blur for the given - // elevation. We are assuming that a blur of '1' corresponds to 1 pixel, - // although the web spec says that this is not necessarily the case. - // However, it seems to be a good conservative estimate. - if (elevation <= 0.0) { - return r; - } else if (elevation <= 1.0) { - return ui.Rect.fromLTRB( - r.left - 2.5, r.top - 1.5, r.right + 3, r.bottom + 4); - } else if (elevation <= 2.0) { - return ui.Rect.fromLTRB(r.left - 5, r.top - 3, r.right + 6, r.bottom + 7); - } else if (elevation <= 3.0) { - return ui.Rect.fromLTRB( - r.left - 9, r.top - 8, r.right + 9, r.bottom + 11); - } else if (elevation <= 4.0) { - return ui.Rect.fromLTRB( - r.left - 10, r.top - 6, r.right + 10, r.bottom + 14); - } else if (elevation <= 5.0) { - return ui.Rect.fromLTRB( - r.left - 15, r.top - 9, r.right + 20, r.bottom + 30); - } else { - return ui.Rect.fromLTRB( - r.left - 23, r.top - 14, r.right + 23, r.bottom + 45); - } +/// Computes the rectangle that contains the penumbra of the shadow cast by +/// the [shape] that's elevated above the surface of the screen at [elevation]. +ui.Rect computePenumbraBounds(ui.Rect shape, double elevation) { + if (elevation == 0.0) { + return shape; } - static List computeShadowElevation( - {@required int dp, @required ui.Color color}) { - final int red = color.red; - final int green = color.green; - final int blue = color.blue; - - final ui.Color penumbraColor = ui.Color.fromARGB(36, red, green, blue); - final ui.Color ambientShadowColor = ui.Color.fromARGB(31, red, green, blue); - final ui.Color umbraColor = ui.Color.fromARGB(51, red, green, blue); - - final List result = []; - if (dp == 2) { - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 2.0, - blur: 1.0, - spread: 0.0, - color: penumbraColor, - )); - - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 3.0, - blur: 0.5, - spread: -2.0, - color: ambientShadowColor, - )); - - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 1.0, - blur: 2.5, - spread: 0.0, - color: umbraColor, - )); - } else if (dp == 3) { - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 1.5, - blur: 4.0, - spread: 0.0, - color: penumbraColor, - )); - - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 3.0, - blur: 1.5, - spread: -2.0, - color: ambientShadowColor, - )); - - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 1.0, - blur: 4.0, - spread: 0.0, - color: umbraColor, - )); - } else if (dp == 4) { - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 4.0, - blur: 2.5, - spread: 0.0, - color: penumbraColor, - )); - - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 1.0, - blur: 5.0, - spread: 0.0, - color: ambientShadowColor, - )); - - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 2.0, - blur: 2.0, - spread: -1.0, - color: umbraColor, - )); - } else if (dp == 6) { - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 6.0, - blur: 5.0, - spread: 0.0, - color: penumbraColor, - )); - - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 1.0, - blur: 9.0, - spread: 0.0, - color: ambientShadowColor, - )); - - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 3.0, - blur: 2.5, - spread: -1.0, - color: umbraColor, - )); - } else if (dp == 8) { - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 4.0, - blur: 10.0, - spread: 1.0, - color: penumbraColor, - )); - - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 3.0, - blur: 7.0, - spread: 2.0, - color: ambientShadowColor, - )); - - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 5.0, - blur: 2.5, - spread: -3.0, - color: umbraColor, - )); - } else if (dp == 12) { - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 12.0, - blur: 8.5, - spread: 2.0, - color: penumbraColor, - )); - - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 5.0, - blur: 11.0, - spread: 4.0, - color: ambientShadowColor, - )); - - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 7.0, - blur: 4.0, - spread: -4.0, - color: umbraColor, - )); - } else if (dp == 16) { - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 16.0, - blur: 12.0, - spread: 2.0, - color: penumbraColor, - )); - - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 6.0, - blur: 15.0, - spread: 5.0, - color: ambientShadowColor, - )); + // tangent for x + final double tx = (kLightRadius + shape.width * 0.5) / kLightHeight; + // tangent for y + final double ty = (kLightRadius + shape.height * 0.5) / kLightHeight; + final double dx = elevation * tx; + final double dy = elevation * ty; + final ui.Offset offset = computeShadowOffset(elevation); + return ui.Rect.fromLTRB( + shape.left - dx, + shape.top - dy, + shape.right + dx, + shape.bottom + dy, + ).shift(offset); +} - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 0.0, - blur: 5.0, - spread: -5.0, - color: umbraColor, - )); - } else { - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 24.0, - blur: 18.0, - spread: 3.0, - color: penumbraColor, - )); +/// Information needed to render a shadow using CSS or canvas. +@immutable +class SurfaceShadowData { + const SurfaceShadowData({ + @required this.blurWidth, + @required this.offset, + }); - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 9.0, - blur: 23.0, - spread: 8.0, - color: ambientShadowColor, - )); + /// The length in pixels of the shadow. + /// + /// This is different from the `sigma` used by blur filters. This value + /// contains the entire shadow, so, for example, to compute the shadow + /// bounds it is sufficient to add this value to the width of the shape + /// that casts it. + final double blurWidth; + + /// The offset of the shadow relative to the shape as computed by + /// [computeShadowOffset]. + final ui.Offset offset; +} - result.add(CanvasShadow( - offsetX: 0.0, - offsetY: 11.0, - blur: 7.5, - spread: -7.0, - color: umbraColor, - )); - } - return result; +/// Computes the shadow for [shape] based on its [elevation] from the surface +/// of the screen. +/// +/// The algorithm approximates the math done by the C++ implementation from +/// `physical_shape_layer.cc` but it's not exact, since on the Web we do not +/// (cannot) use Skia's shadow API directly. However, this algorithms is +/// consistent with [computePenumbraBounds] used by [RecordingCanvas] during +/// bounds estimation. +SurfaceShadowData computeShadow(ui.Rect shape, double elevation) { + if (elevation == 0.0) { + return null; } -} -class CanvasShadow { - CanvasShadow({ - @required this.offsetX, - @required this.offsetY, - @required this.blur, - @required this.spread, - @required this.color, - }); + final double penumbraTangentX = + (kLightRadius + shape.width * 0.5) / kLightHeight; + final double penumbraTangentY = + (kLightRadius + shape.height * 0.5) / kLightHeight; + final double penumbraWidth = elevation * penumbraTangentX; + final double penumbraHeight = elevation * penumbraTangentY; + return SurfaceShadowData( + // There's no way to express different blur along different dimensions, so + // we use the narrower of the two to prevent the shadow blur from being longer + // than the shape itself, using min instead of average of penumbra values. + blurWidth: math.min(penumbraWidth, penumbraHeight), + offset: computeShadowOffset(elevation), + ); +} - final double offsetX; - final double offsetY; - final double blur; - // TODO(yjbanov): is there a way to implement/emulate spread on Canvas2D? - final double spread; - final ui.Color color; +/// Applies a CSS shadow to the [shape]. +void applyCssShadow( + html.Element element, ui.Rect shape, double elevation, ui.Color color) { + final SurfaceShadowData shadow = computeShadow(shape, elevation); + if (shadow == null) { + element.style.boxShadow = 'none'; + } else { + element.style.boxShadow = '${shadow.offset.dx}px ${shadow.offset.dy}px ' + '${shadow.blurWidth}px 0px rgb(${color.red}, ${color.green}, ${color.blue})'; + } } diff --git a/lib/web_ui/lib/src/engine/surface/clip.dart b/lib/web_ui/lib/src/engine/surface/clip.dart index 55692e092ac83..43c683b21b004 100644 --- a/lib/web_ui/lib/src/engine/surface/clip.dart +++ b/lib/web_ui/lib/src/engine/surface/clip.dart @@ -162,9 +162,11 @@ class PersistedPhysicalShape extends PersistedContainerSurface this.elevation, int color, int shadowColor, this.clipBehavior) : color = ui.Color(color), shadowColor = ui.Color(shadowColor), + pathBounds = path.getBounds(), super(oldLayer); final SurfacePath path; + final ui.Rect pathBounds; final double elevation; final ui.Color color; final ui.Color shadowColor; @@ -195,7 +197,7 @@ class PersistedPhysicalShape extends PersistedContainerSurface } void _applyShadow() { - ElevationShadow.applyShadow(rootElement.style, elevation, shadowColor); + applyCssShadow(rootElement, pathBounds, elevation, shadowColor); } @override @@ -279,7 +281,6 @@ class PersistedPhysicalShape extends PersistedContainerSurface } } - final ui.Rect pathBounds = path.getBounds(); final String svgClipPath = _pathToSvgClipPath(path, offsetX: -pathBounds.left, offsetY: -pathBounds.top, diff --git a/lib/web_ui/lib/src/engine/surface/recording_canvas.dart b/lib/web_ui/lib/src/engine/surface/recording_canvas.dart index 92ce62b93e303..5b26210ae2af2 100644 --- a/lib/web_ui/lib/src/engine/surface/recording_canvas.dart +++ b/lib/web_ui/lib/src/engine/surface/recording_canvas.dart @@ -188,7 +188,7 @@ class RecordingCanvas { } void drawLine(ui.Offset p1, ui.Offset p2, SurfacePaint paint) { - final double strokeWidth = math.max(paint.strokeWidth, 1.0); + final double paintSpread = math.max(_getPaintSpread(paint), 1.0); // TODO(yjbanov): This can be optimized. Currently we create a box around // the line and then apply the transform on the box to get // the bounding box. If you have a 45-degree line and a @@ -197,10 +197,11 @@ class RecordingCanvas { // algorithm produces a square with each side of the length // matching the length of the line. _paintBounds.growLTRB( - math.min(p1.dx, p2.dx) - strokeWidth, - math.min(p1.dy, p2.dy) - strokeWidth, - math.max(p1.dx, p2.dx) + strokeWidth, - math.max(p1.dy, p2.dy) + strokeWidth); + math.min(p1.dx, p2.dx) - paintSpread, + math.min(p1.dy, p2.dy) - paintSpread, + math.max(p1.dx, p2.dx) + paintSpread, + math.max(p1.dy, p2.dy) + paintSpread, + ); _hasArbitraryPaint = true; _didDraw = true; _commands.add(PaintDrawLine(p1, p2, paint.paintData)); @@ -218,8 +219,9 @@ class RecordingCanvas { _hasArbitraryPaint = true; } _didDraw = true; - if (paint.strokeWidth != null && paint.strokeWidth != 0) { - _paintBounds.grow(rect.inflate(paint.strokeWidth / 2.0)); + final double paintSpread = _getPaintSpread(paint); + if (paintSpread != 0.0) { + _paintBounds.grow(rect.inflate(paintSpread)); } else { _paintBounds.grow(rect); } @@ -231,12 +233,11 @@ class RecordingCanvas { _hasArbitraryPaint = true; } _didDraw = true; - final double strokeWidth = - paint.strokeWidth == null ? 0 : paint.strokeWidth; - final double left = math.min(rrect.left, rrect.right) - strokeWidth; - final double right = math.max(rrect.left, rrect.right) + strokeWidth; - final double top = math.min(rrect.top, rrect.bottom) - strokeWidth; - final double bottom = math.max(rrect.top, rrect.bottom) + strokeWidth; + final double paintSpread = _getPaintSpread(paint); + final double left = math.min(rrect.left, rrect.right) - paintSpread; + final double top = math.min(rrect.top, rrect.bottom) - paintSpread; + final double right = math.max(rrect.left, rrect.right) + paintSpread; + final double bottom = math.max(rrect.top, rrect.bottom) + paintSpread; _paintBounds.growLTRB(left, top, right, bottom); _commands.add(PaintDrawRRect(rrect, paint.paintData)); } @@ -281,18 +282,22 @@ class RecordingCanvas { _hasArbitraryPaint = true; _didDraw = true; - final double strokeWidth = - paint.strokeWidth == null ? 0 : paint.strokeWidth; - _paintBounds.growLTRB(outer.left - strokeWidth, outer.top - strokeWidth, - outer.right + strokeWidth, outer.bottom + strokeWidth); + final double paintSpread = _getPaintSpread(paint); + _paintBounds.growLTRB( + outer.left - paintSpread, + outer.top - paintSpread, + outer.right + paintSpread, + outer.bottom + paintSpread, + ); _commands.add(PaintDrawDRRect(outer, inner, paint.paintData)); } void drawOval(ui.Rect rect, SurfacePaint paint) { _hasArbitraryPaint = true; _didDraw = true; - if (paint.strokeWidth != null) { - _paintBounds.grow(rect.inflate(paint.strokeWidth)); + final double paintSpread = _getPaintSpread(paint); + if (paintSpread != 0.0) { + _paintBounds.grow(rect.inflate(paintSpread)); } else { _paintBounds.grow(rect); } @@ -302,13 +307,13 @@ class RecordingCanvas { void drawCircle(ui.Offset c, double radius, SurfacePaint paint) { _hasArbitraryPaint = true; _didDraw = true; - final double strokeWidth = - paint.strokeWidth == null ? 0 : paint.strokeWidth; + final double paintSpread = _getPaintSpread(paint); _paintBounds.growLTRB( - c.dx - radius - strokeWidth, - c.dy - radius - strokeWidth, - c.dx + radius + strokeWidth, - c.dy + radius + strokeWidth); + c.dx - radius - paintSpread, + c.dy - radius - paintSpread, + c.dx + radius + paintSpread, + c.dy + radius + paintSpread, + ); _commands.add(PaintDrawCircle(c, radius, paint.paintData)); } @@ -331,8 +336,9 @@ class RecordingCanvas { _hasArbitraryPaint = true; _didDraw = true; ui.Rect pathBounds = path.getBounds(); - if (paint.strokeWidth != null) { - pathBounds = pathBounds.inflate(paint.strokeWidth); + final double paintSpread = _getPaintSpread(paint); + if (paintSpread != 0.0) { + pathBounds = pathBounds.inflate(paintSpread); } _paintBounds.grow(pathBounds); // Clone path so it can be reused for subsequent draw calls. @@ -381,7 +387,7 @@ class RecordingCanvas { _hasArbitraryPaint = true; _didDraw = true; final ui.Rect shadowRect = - ElevationShadow.computeShadowRect(path.getBounds(), elevation); + computePenumbraBounds(path.getBounds(), elevation); _paintBounds.grow(shadowRect); _commands.add(PaintDrawShadow(path, color, elevation, transparentOccluder)); } @@ -390,23 +396,23 @@ class RecordingCanvas { ui.Vertices vertices, ui.BlendMode blendMode, SurfacePaint paint) { _hasArbitraryPaint = true; _didDraw = true; - _growPaintBoundsByPoints(vertices.positions, 0); + _growPaintBoundsByPoints(vertices.positions, 0, paint); _commands.add(PaintVertices(vertices, blendMode, paint.paintData)); } void drawRawPoints( - ui.PointMode pointMode, Float32List points, ui.Paint paint) { + ui.PointMode pointMode, Float32List points, SurfacePaint paint) { if (paint.strokeWidth == null) { return; } _hasArbitraryPaint = true; _didDraw = true; - _growPaintBoundsByPoints(points, paint.strokeWidth); + _growPaintBoundsByPoints(points, paint.strokeWidth, paint); _commands .add(PaintPoints(pointMode, points, paint.strokeWidth, paint.color)); } - void _growPaintBoundsByPoints(Float32List points, double thickness) { + void _growPaintBoundsByPoints(Float32List points, double thickness, SurfacePaint paint) { double minValueX, maxValueX, minValueY, maxValueY; minValueX = maxValueX = points[0]; minValueY = maxValueY = points[1]; @@ -424,8 +430,13 @@ class RecordingCanvas { maxValueY = math.max(maxValueY, y); } final double distance = thickness / 2.0; - _paintBounds.growLTRB(minValueX - distance, minValueY - distance, - maxValueX + distance, maxValueY + distance); + final double paintSpread = _getPaintSpread(paint); + _paintBounds.growLTRB( + minValueX - distance - paintSpread, + minValueY - distance - paintSpread, + maxValueX + distance + paintSpread, + maxValueY + distance + paintSpread, + ); } int _saveCount = 1; @@ -1937,3 +1948,28 @@ class _PaintBounds { } } } + +/// Computes the length of the visual effect caused by paint parameters, such +/// as blur and stroke width. +/// +/// This paint spread should be taken into accound when estimating bounding +/// boxes for paint operations that apply the paint. +double _getPaintSpread(SurfacePaint paint) { + double spread = 0.0; + final ui.MaskFilter maskFilter = paint?.maskFilter; + if (maskFilter != null) { + // Multiply by 2 because the sigma is the standard deviation rather than + // the length of the blur. + // See also: https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/blur + spread += maskFilter.webOnlySigma * 2.0; + } + if (paint.strokeWidth != null && paint.strokeWidth != 0) { + // The multiplication by sqrt(2) is to account for line joints that + // meet at 90-degree angle. Division by 2 is because only half of the + // stroke is sticking out of the original shape. The other half is + // inside the shape. + const double sqrtOfTwoDivByTwo = 0.70710678118; + spread += paint.strokeWidth * sqrtOfTwoDivByTwo; + } + return spread; +} diff --git a/lib/web_ui/lib/src/engine/surface/scene_builder.dart b/lib/web_ui/lib/src/engine/surface/scene_builder.dart index cbd0b2913fe62..3f9a45f3d16e4 100644 --- a/lib/web_ui/lib/src/engine/surface/scene_builder.dart +++ b/lib/web_ui/lib/src/engine/surface/scene_builder.dart @@ -244,6 +244,7 @@ class SurfaceSceneBuilder implements ui.SceneBuilder { ui.Clip clipBehavior = ui.Clip.none, ui.PhysicalShapeEngineLayer oldLayer, }) { + assert(color != null, 'color must not be null'); return _pushSurface(PersistedPhysicalShape( oldLayer, path, diff --git a/lib/web_ui/test/golden_tests/engine/recording_canvas_golden_test.dart b/lib/web_ui/test/golden_tests/engine/recording_canvas_golden_test.dart index 44c9f44720357..c015a1ea4ec45 100644 --- a/lib/web_ui/test/golden_tests/engine/recording_canvas_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/recording_canvas_golden_test.dart @@ -341,7 +341,9 @@ void main() async { path.addRect(const Rect.fromLTRB(20, 30, 100, 110)); rc.drawShadow(path, const Color(0xFFFF0000), 2.0, true); expect( - rc.computePaintBounds(), const Rect.fromLTRB(15.0, 27.0, 106.0, 117.0)); + rc.computePaintBounds(), + within(distance: 0.05, from: const Rect.fromLTRB(17.9, 28.5, 103.5, 114.1)), + ); await _checkScreenshot(rc, 'path_with_shadow'); }); @@ -440,6 +442,177 @@ void main() async { rc.restore(); await _checkScreenshot(rc, 'path_with_line_and_roundrect'); }); + + test('should include paint spread in bounds estimates', () async { + final SurfaceSceneBuilder sb = SurfaceSceneBuilder(); + + final List painters = [ + (RecordingCanvas canvas, SurfacePaint paint) { + canvas.drawLine( + const Offset(0.0, 0.0), + const Offset(20.0, 20.0), + paint, + ); + }, + (RecordingCanvas canvas, SurfacePaint paint) { + canvas.drawRect( + const Rect.fromLTRB(0.0, 0.0, 20.0, 20.0), + paint, + ); + }, + (RecordingCanvas canvas, SurfacePaint paint) { + canvas.drawRRect( + RRect.fromLTRBR(0.0, 0.0, 20.0, 20.0, Radius.circular(7.0)), + paint, + ); + }, + (RecordingCanvas canvas, SurfacePaint paint) { + canvas.drawDRRect( + RRect.fromLTRBR(0.0, 0.0, 20.0, 20.0, Radius.circular(5.0)), + RRect.fromLTRBR(4.0, 4.0, 16.0, 16.0, Radius.circular(5.0)), + paint, + ); + }, + (RecordingCanvas canvas, SurfacePaint paint) { + canvas.drawOval( + const Rect.fromLTRB(0.0, 5.0, 20.0, 15.0), + paint, + ); + }, + (RecordingCanvas canvas, SurfacePaint paint) { + canvas.drawCircle( + const Offset(10.0, 10.0), + 10.0, + paint, + ); + }, + (RecordingCanvas canvas, SurfacePaint paint) { + final SurfacePath path = SurfacePath() + ..moveTo(10, 0) + ..lineTo(20, 10) + ..lineTo(10, 20) + ..lineTo(0, 10) + ..close(); + canvas.drawPath(path, paint); + }, + + // Images are not affected by mask filter or stroke width. They use image + // filter instead. + (RecordingCanvas canvas, SurfacePaint paint) { + canvas.drawImage(_createRealTestImage(), Offset.zero, paint); + }, + (RecordingCanvas canvas, SurfacePaint paint) { + canvas.drawImageRect( + _createRealTestImage(), + const Rect.fromLTRB(0, 0, 20, 20), + const Rect.fromLTRB(5, 5, 15, 15), + paint, + ); + }, + ]; + + Picture drawBounds(Rect bounds) { + final EnginePictureRecorder recorder = EnginePictureRecorder(); + final RecordingCanvas canvas = recorder.beginRecording(Rect.largest); + canvas.drawRect( + bounds, + SurfacePaint() + ..style = PaintingStyle.stroke + ..strokeWidth = 1.0 + ..color = const Color.fromARGB(255, 0, 255, 0), + ); + return recorder.endRecording(); + } + + for (int i = 0; i < painters.length; i++) { + sb.pushOffset(0.0, 20.0 + 60.0 * i); + final PaintSpreadPainter painter = painters[i]; + + // Paint with zero paint spread. + { + sb.pushOffset(20.0, 0.0); + final EnginePictureRecorder recorder = EnginePictureRecorder(); + final RecordingCanvas canvas = recorder.beginRecording(Rect.largest); + final SurfacePaint zeroSpreadPaint = SurfacePaint(); + painter(canvas, zeroSpreadPaint); + sb.addPicture(Offset.zero, recorder.endRecording()); + sb.addPicture(Offset.zero, drawBounds(canvas.computePaintBounds())); + sb.pop(); + } + + // Paint with a thick stroke paint. + { + sb.pushOffset(80.0, 0.0); + final EnginePictureRecorder recorder = EnginePictureRecorder(); + final RecordingCanvas canvas = recorder.beginRecording(Rect.largest); + final SurfacePaint thickStrokePaint = SurfacePaint() + ..style = PaintingStyle.stroke + ..strokeWidth = 5.0; + painter(canvas, thickStrokePaint); + sb.addPicture(Offset.zero, recorder.endRecording()); + sb.addPicture(Offset.zero, drawBounds(canvas.computePaintBounds())); + sb.pop(); + } + + // Paint with a mask filter blur. + { + sb.pushOffset(140.0, 0.0); + final EnginePictureRecorder recorder = EnginePictureRecorder(); + final RecordingCanvas canvas = recorder.beginRecording(Rect.largest); + final SurfacePaint maskFilterBlurPaint = SurfacePaint() + ..maskFilter = const MaskFilter.blur(BlurStyle.normal, 5.0); + painter(canvas, maskFilterBlurPaint); + sb.addPicture(Offset.zero, recorder.endRecording()); + sb.addPicture(Offset.zero, drawBounds(canvas.computePaintBounds())); + sb.pop(); + } + + // Paint with a thick stroke paint and a mask filter blur. + { + sb.pushOffset(200.0, 0.0); + final EnginePictureRecorder recorder = EnginePictureRecorder(); + final RecordingCanvas canvas = recorder.beginRecording(Rect.largest); + final SurfacePaint thickStrokeAndBlurPaint = SurfacePaint() + ..style = PaintingStyle.stroke + ..strokeWidth = 5.0 + ..maskFilter = const MaskFilter.blur(BlurStyle.normal, 5.0); + painter(canvas, thickStrokeAndBlurPaint); + sb.addPicture(Offset.zero, recorder.endRecording()); + sb.addPicture(Offset.zero, drawBounds(canvas.computePaintBounds())); + sb.pop(); + } + + sb.pop(); + } + + final html.Element sceneElement = sb.build().webOnlyRootElement; + html.document.body.append(sceneElement); + try { + await matchGoldenFile( + 'paint_spread_bounds.png', + region: const Rect.fromLTRB(0, 0, 250, 600), + maxDiffRatePercent: 0.0, + pixelComparison: PixelComparison.precise, + ); + } finally { + sceneElement.remove(); + } + }); +} + +typedef PaintSpreadPainter = void Function(RecordingCanvas canvas, SurfacePaint paint); + +const String _base64Encoded20x20TestImage = 'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAC4jAAAuIwF4pT92AAAA' + 'B3RJTUUH5AMFFBksg4i3gQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAj' + 'SURBVDjLY2TAC/7jlWVioACMah4ZmhnxpyHG0QAb1UyZZgBjWAIm/clP0AAAAABJRU5ErkJggg=='; + +HtmlImage _createRealTestImage() { + return HtmlImage( + html.ImageElement() + ..src = 'data:text/plain;base64,$_base64Encoded20x20TestImage', + 20, + 20, + ); } class TestImage implements Image { diff --git a/lib/web_ui/test/golden_tests/engine/shadow_golden_test.dart b/lib/web_ui/test/golden_tests/engine/shadow_golden_test.dart new file mode 100644 index 0000000000000..1d84895b79f6e --- /dev/null +++ b/lib/web_ui/test/golden_tests/engine/shadow_golden_test.dart @@ -0,0 +1,162 @@ +// 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:html' as html; + +import 'package:ui/src/engine.dart'; +import 'package:ui/ui.dart'; +import 'package:test/test.dart'; + +import 'package:web_engine_tester/golden_tester.dart'; + +import 'scuba.dart'; + +const Color _kShadowColor = Color.fromARGB(255, 255, 0, 0); + +void main() async { + final Rect region = Rect.fromLTWH(0, 0, 550, 300); + + SurfaceSceneBuilder builder; + + setUpStableTestFonts(); + + setUp(() { + builder = SurfaceSceneBuilder(); + }); + + void _paintShapeOutline() { + final EnginePictureRecorder recorder = PictureRecorder(); + final RecordingCanvas canvas = recorder.beginRecording(Rect.largest); + canvas.drawRect( + const Rect.fromLTRB(0.0, 0.0, 20.0, 20.0), + SurfacePaint() + ..color = Color.fromARGB(255, 0, 0, 255) + ..style = PaintingStyle.stroke + ..strokeWidth = 1.0, + ); + builder.addPicture(Offset.zero, recorder.endRecording()); + } + + void _paintShadowBounds(SurfacePath path, double elevation) { + final Rect shadowBounds = + computePenumbraBounds(path.getBounds(), elevation); + final EnginePictureRecorder recorder = PictureRecorder(); + final RecordingCanvas canvas = recorder.beginRecording(Rect.largest); + canvas.drawRect( + shadowBounds, + SurfacePaint() + ..color = Color.fromARGB(255, 0, 255, 0) + ..style = PaintingStyle.stroke + ..strokeWidth = 1.0, + ); + builder.addPicture(Offset.zero, recorder.endRecording()); + } + + void _paintPhysicalShapeShadow(double elevation, Offset offset) { + final SurfacePath path = SurfacePath() + ..addRect(const Rect.fromLTRB(0, 0, 20, 20)); + builder.pushOffset(offset.dx, offset.dy); + builder.pushPhysicalShape( + path: path, + elevation: elevation, + shadowColor: _kShadowColor, + color: Color.fromARGB(255, 255, 255, 255), + ); + builder.pop(); // physical shape + _paintShapeOutline(); + _paintShadowBounds(path, elevation); + builder.pop(); // offset + } + + void _paintBitmapCanvasShadow(double elevation, Offset offset) { + final SurfacePath path = SurfacePath() + ..addRect(const Rect.fromLTRB(0, 0, 20, 20)); + builder.pushOffset(offset.dx, offset.dy); + + final EnginePictureRecorder recorder = PictureRecorder(); + final RecordingCanvas canvas = recorder.beginRecording(Rect.largest); + canvas + .debugEnforceArbitraryPaint(); // make sure DOM canvas doesn't take over + canvas.drawShadow( + path, + _kShadowColor, + elevation, + false, + ); + builder.addPicture(Offset.zero, recorder.endRecording()); + _paintShapeOutline(); + _paintShadowBounds(path, elevation); + + builder.pop(); // offset + } + + void _paintBitmapCanvasComplexPathShadow(double elevation, Offset offset) { + final SurfacePath path = SurfacePath() + ..moveTo(10, 0) + ..lineTo(20, 10) + ..lineTo(10, 20) + ..lineTo(0, 10) + ..close(); + builder.pushOffset(offset.dx, offset.dy); + + final EnginePictureRecorder recorder = PictureRecorder(); + final RecordingCanvas canvas = recorder.beginRecording(Rect.largest); + canvas + .debugEnforceArbitraryPaint(); // make sure DOM canvas doesn't take over + canvas.drawShadow( + path, + _kShadowColor, + elevation, + false, + ); + canvas.drawPath( + path, + SurfacePaint() + ..style = PaintingStyle.stroke + ..strokeWidth = 1 + ..color = Color.fromARGB(255, 0, 0, 255), + ); + builder.addPicture(Offset.zero, recorder.endRecording()); + _paintShadowBounds(path, elevation); + + builder.pop(); // offset + } + + test( + 'renders shadows correctly', + () async { + // Physical shape clips. We want to see that clipping in the screenshot. + debugShowClipLayers = false; + + builder.pushOffset(10, 20); + + for (int i = 0; i < 10; i++) { + _paintPhysicalShapeShadow(i.toDouble(), Offset(50.0 * i, 0)); + } + + for (int i = 0; i < 10; i++) { + _paintBitmapCanvasShadow(i.toDouble(), Offset(50.0 * i, 60)); + } + + for (int i = 0; i < 10; i++) { + _paintBitmapCanvasComplexPathShadow( + i.toDouble(), Offset(50.0 * i, 120)); + } + + builder.pop(); + + final html.Element sceneElement = builder.build().webOnlyRootElement; + html.document.body.append(sceneElement); + + await matchGoldenFile( + 'shadows.png', + region: region, + maxDiffRatePercent: 0.0, + pixelComparison: PixelComparison.precise, + ); + }, + timeout: const Timeout(Duration(seconds: 10)), + testOn: 'chrome', + ); +} From bfebadfce626cbc388de8dd8631188efd6c73ec8 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 6 Mar 2020 04:41:02 -0500 Subject: [PATCH 174/521] Roll src/third_party/skia 012f8497802e..93a2a6b8badb (4 commits) (#16974) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 6c3b5bf656d4e..70a75566e3178 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '012f8497802e74d3c092d038ed2a5b1380309a1a', + 'skia_revision': '93a2a6b8badbca9da7fe260431c4f745812d1336', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 4697b45279832..2bf48845ea33c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: d4519ab250015d83765d266d807d2d0c +Signature: 2505ad7795c2f5553d05487567d49f33 UNUSED LICENSES: From 47963a598aef6a34792a0479e31f67d9c8591f4a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 6 Mar 2020 11:11:04 -0500 Subject: [PATCH 175/521] Roll src/third_party/skia 93a2a6b8badb..74055566bd14 (2 commits) (#16981) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 9 +++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/DEPS b/DEPS index 70a75566e3178..eac77c03290b1 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '93a2a6b8badbca9da7fe260431c4f745812d1336', + 'skia_revision': '74055566bd14c9a5d374001ce7530f7b38e7d55d', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 2bf48845ea33c..9da6a1f396dce 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2505ad7795c2f5553d05487567d49f33 +Signature: eb35a18408ac71d3b634ccc4e8b9cab8 UNUSED LICENSES: @@ -1424,6 +1424,8 @@ FILE: ../../../third_party/skia/specs/web-img-decode/proposed/impl/impl.js FILE: ../../../third_party/skia/specs/web-img-decode/proposed/index.html FILE: ../../../third_party/skia/src/core/SkOrderedReadBuffer.h FILE: ../../../third_party/skia/src/opts/SkVM_opts.h +FILE: ../../../third_party/skia/src/ports/SkTLS_pthread.cpp +FILE: ../../../third_party/skia/src/ports/SkTLS_win.cpp FILE: ../../../third_party/skia/src/sksl/lex/sksl.lex FILE: ../../../third_party/skia/src/sksl/sksl_blend.inc FILE: ../../../third_party/skia/src/sksl/sksl_fp.inc @@ -2073,8 +2075,6 @@ FILE: ../../../third_party/skia/src/core/SkReadBuffer.cpp FILE: ../../../third_party/skia/src/core/SkStrokeRec.cpp FILE: ../../../third_party/skia/src/core/SkTInternalLList.h FILE: ../../../third_party/skia/src/core/SkTLList.h -FILE: ../../../third_party/skia/src/core/SkTLS.cpp -FILE: ../../../third_party/skia/src/core/SkTLS.h FILE: ../../../third_party/skia/src/core/SkWriteBuffer.cpp FILE: ../../../third_party/skia/src/gpu/GrMemoryPool.cpp FILE: ../../../third_party/skia/src/gpu/GrMemoryPool.h @@ -2821,9 +2821,6 @@ FILE: ../../../third_party/skia/src/ports/SkFontConfigTypeface.h FILE: ../../../third_party/skia/src/ports/SkFontMgr_FontConfigInterface.cpp FILE: ../../../third_party/skia/src/ports/SkOSFile_posix.cpp FILE: ../../../third_party/skia/src/ports/SkOSFile_win.cpp -FILE: ../../../third_party/skia/src/ports/SkTLS_none.cpp -FILE: ../../../third_party/skia/src/ports/SkTLS_pthread.cpp -FILE: ../../../third_party/skia/src/ports/SkTLS_win.cpp FILE: ../../../third_party/skia/src/sfnt/SkOTTable_name.cpp FILE: ../../../third_party/skia/src/sfnt/SkTTCFHeader.h FILE: ../../../third_party/skia/src/shaders/SkColorFilterShader.cpp From 98f9941843da10b7b2f9cb839d555184f22a8175 Mon Sep 17 00:00:00 2001 From: Felipe Archondo Date: Fri, 6 Mar 2020 11:33:31 -0500 Subject: [PATCH 176/521] [fuchsia] fix broken flows when under high load (#16834) --- shell/platform/fuchsia/flutter/session_connection.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/shell/platform/fuchsia/flutter/session_connection.cc b/shell/platform/fuchsia/flutter/session_connection.cc index fa2e18e74ea03..63ad94f4ff9b6 100644 --- a/shell/platform/fuchsia/flutter/session_connection.cc +++ b/shell/platform/fuchsia/flutter/session_connection.cc @@ -95,14 +95,15 @@ void SessionConnection::Present( flutter::CompositorContext::ScopedFrame* frame) { TRACE_EVENT0("gfx", "SessionConnection::Present"); + TRACE_FLOW_BEGIN("gfx", "SessionConnection::PresentSession", + next_present_session_trace_id_); + next_present_session_trace_id_++; + // Throttle frame submission to Scenic if we already have the maximum amount // of frames in flight. This allows the paint tasks for this frame to execute // in parallel with the presentation of previous frame but still provides // back-pressure to prevent us from enqueuing even more work. if (initialized_ && frames_in_flight_ < kMaxFramesInFlight) { - TRACE_FLOW_BEGIN("gfx", "SessionConnection::PresentSession", - next_present_session_trace_id_); - next_present_session_trace_id_++; PresentSession(); } else { // We should never exceed the max frames in flight. From fe051e08ac52309c7312e8b7e61542526867c619 Mon Sep 17 00:00:00 2001 From: Duong Nguyen Date: Sat, 7 Mar 2020 00:35:40 +0700 Subject: [PATCH 177/521] Fix issue viewdidload call while init FlutterViewController (#16672) Co-authored-by: Aaron Clarke --- .../ios/framework/Source/FlutterEngine.mm | 4 +++ .../framework/Source/FlutterEngine_Internal.h | 1 + .../framework/Source/FlutterViewController.mm | 14 ++++++-- .../Source/FlutterViewControllerTest.m | 16 +++++++++ shell/platform/darwin/ios/platform_view_ios.h | 1 + .../platform/darwin/ios/platform_view_ios.mm | 33 +++++++++++-------- 6 files changed, 53 insertions(+), 16 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm index 4ed3ece0b98dc..cdab6c4b0d685 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -224,6 +224,10 @@ - (void)setViewController:(FlutterViewController*)viewController { } } +- (void)attachView { + self.iosPlatformView->attachView(); +} + - (void)setFlutterViewControllerWillDeallocObserver:(id)observer { if (observer != _flutterViewControllerWillDeallocObserver) { if (_flutterViewControllerWillDeallocObserver) { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h index 573333ea732e6..277950f9d68d0 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterEngine_Internal.h @@ -44,6 +44,7 @@ - (FlutterTextInputPlugin*)textInputPlugin; - (void)launchEngine:(NSString*)entrypoint libraryURI:(NSString*)libraryOrNil; - (BOOL)createShell:(NSString*)entrypoint libraryURI:(NSString*)libraryOrNil; +- (void)attachView; @end diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 470811a5a8882..6deed5f8104d7 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -552,8 +552,8 @@ - (void)surfaceUpdated:(BOOL)appeared { #pragma mark - UIViewController lifecycle notifications -- (void)viewWillAppear:(BOOL)animated { - TRACE_EVENT0("flutter", "viewWillAppear"); +- (void)viewDidLoad { + TRACE_EVENT0("flutter", "viewDidLoad"); if (_engineNeedsLaunch) { [_engine.get() launchEngine:nil libraryURI:nil]; @@ -561,6 +561,16 @@ - (void)viewWillAppear:(BOOL)animated { _engineNeedsLaunch = NO; } + FML_DCHECK([_engine.get() viewController] != nil) + << "FlutterViewController::viewWillAppear:AttachView ViewController was nil"; + [_engine.get() attachView]; + + [super viewDidLoad]; +} + +- (void)viewWillAppear:(BOOL)animated { + TRACE_EVENT0("flutter", "viewWillAppear"); + // Send platform settings to Flutter, e.g., platform brightness. [self onUserSettingsChanged:nil]; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.m b/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.m index 31c2bcc077706..09ef7baa023fb 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.m +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.m @@ -11,6 +11,10 @@ FLUTTER_ASSERT_ARC +@interface FlutterEngine () +- (BOOL)createShell:(NSString*)entrypoint libraryURI:(NSString*)libraryURI; +@end + extern NSNotificationName const FlutterViewControllerWillDealloc; /// A simple mock class for FlutterEngine. @@ -457,4 +461,16 @@ - (void)testWillDeallocNotification { [self waitForExpectations:@[ expectation ] timeout:1.0]; } +- (void)testDoesntLoadViewInInit { + XCTestExpectation* expectation = + [[XCTestExpectation alloc] initWithDescription:@"notification called"]; + FlutterDartProject* project = [[FlutterDartProject alloc] init]; + FlutterEngine* engine = [[FlutterEngine alloc] initWithName:@"foobar" project:project]; + [engine createShell:@"" libraryURI:@""]; + FlutterViewController* realVC = [[FlutterViewController alloc] initWithEngine:engine + nibName:nil + bundle:nil]; + XCTAssertFalse([realVC isViewLoaded], @"shouldn't have loaded since it hasn't been shown"); +} + @end diff --git a/shell/platform/darwin/ios/platform_view_ios.h b/shell/platform/darwin/ios/platform_view_ios.h index d4cc7b8c519bb..00e9130f70142 100644 --- a/shell/platform/darwin/ios/platform_view_ios.h +++ b/shell/platform/darwin/ios/platform_view_ios.h @@ -34,6 +34,7 @@ class PlatformViewIOS final : public PlatformView { fml::WeakPtr GetOwnerViewController() const; void SetOwnerViewController(fml::WeakPtr owner_controller); + void attachView(); void RegisterExternalTexture(int64_t id, NSObject* texture); diff --git a/shell/platform/darwin/ios/platform_view_ios.mm b/shell/platform/darwin/ios/platform_view_ios.mm index bb37fa9610b2b..3207744c3438d 100644 --- a/shell/platform/darwin/ios/platform_view_ios.mm +++ b/shell/platform/darwin/ios/platform_view_ios.mm @@ -64,20 +64,25 @@ owner_controller_.reset(); }] retain]); - if (owner_controller_) { - ios_surface_ = - [static_cast(owner_controller.get().view) createSurface:gl_context_]; - FML_DCHECK(ios_surface_ != nullptr); - - if (accessibility_bridge_) { - accessibility_bridge_.reset( - new AccessibilityBridge(static_cast(owner_controller_.get().view), this, - [owner_controller.get() platformViewsController])); - } - // Do not call `NotifyCreated()` here - let FlutterViewController take care - // of that when its Viewport is sized. If `NotifyCreated()` is called here, - // it can occasionally get invoked before the viewport is sized resulting in - // a framebuffer that will not be able to completely attach. + if (owner_controller_ && [owner_controller_.get() isViewLoaded]) { + this->attachView(); + } + // Do not call `NotifyCreated()` here - let FlutterViewController take care + // of that when its Viewport is sized. If `NotifyCreated()` is called here, + // it can occasionally get invoked before the viewport is sized resulting in + // a framebuffer that will not be able to completely attach. +} + +void PlatformViewIOS::attachView() { + FML_DCHECK(owner_controller_); + ios_surface_ = + [static_cast(owner_controller_.get().view) createSurface:gl_context_]; + FML_DCHECK(ios_surface_ != nullptr); + + if (accessibility_bridge_) { + accessibility_bridge_.reset( + new AccessibilityBridge(static_cast(owner_controller_.get().view), this, + [owner_controller_.get() platformViewsController])); } } From 0ad54c210659cca820d3f697cea72f6d5c5f3e11 Mon Sep 17 00:00:00 2001 From: Ferhat Date: Fri, 6 Mar 2020 09:50:02 -0800 Subject: [PATCH 178/521] [web] Fixes IE11 crash due to missing canvas ellipse support and font polyfill failure (#16965) * Add context ellipse polyfill * Change call sites for ellipse * Switch fontloader polyfill font for ie11 --- lib/web_ui/lib/src/engine/canvas_pool.dart | 6 +++--- lib/web_ui/lib/src/engine/dom_renderer.dart | 20 +++++++++++++++++++ lib/web_ui/lib/src/engine/rrect_renderer.dart | 2 +- .../lib/src/engine/text/font_collection.dart | 12 +++++++---- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/lib/web_ui/lib/src/engine/canvas_pool.dart b/lib/web_ui/lib/src/engine/canvas_pool.dart index 8c3440d8a3916..b5119afb82c10 100644 --- a/lib/web_ui/lib/src/engine/canvas_pool.dart +++ b/lib/web_ui/lib/src/engine/canvas_pool.dart @@ -503,7 +503,7 @@ class _CanvasPool extends _SaveStackTracking { break; case PathCommandTypes.ellipse: final Ellipse ellipse = command; - ctx.ellipse( + DomRenderer.ellipse(ctx, ellipse.x, ellipse.y, ellipse.radiusX, @@ -563,14 +563,14 @@ class _CanvasPool extends _SaveStackTracking { void drawOval(ui.Rect rect, ui.PaintingStyle style) { context.beginPath(); - context.ellipse(rect.center.dx, rect.center.dy, rect.width / 2, + DomRenderer.ellipse(context, rect.center.dx, rect.center.dy, rect.width / 2, rect.height / 2, 0, 0, 2.0 * math.pi, false); contextHandle.paint(style); } void drawCircle(ui.Offset c, double radius, ui.PaintingStyle style) { context.beginPath(); - context.ellipse(c.dx, c.dy, radius, radius, 0, 0, 2.0 * math.pi, false); + DomRenderer.ellipse(context, c.dx, c.dy, radius, radius, 0, 0, 2.0 * math.pi, false); contextHandle.paint(style); } diff --git a/lib/web_ui/lib/src/engine/dom_renderer.dart b/lib/web_ui/lib/src/engine/dom_renderer.dart index dbabe49f4d189..8e2f585b83f20 100644 --- a/lib/web_ui/lib/src/engine/dom_renderer.dart +++ b/lib/web_ui/lib/src/engine/dom_renderer.dart @@ -489,6 +489,26 @@ flt-glass-pane * { } } + static bool _ellipseFeatureDetected; + + /// Draws CanvasElement ellipse with fallback. + static void ellipse(html.CanvasRenderingContext2D context, + double centerX, double centerY, double radiusX, double radiusY, + double rotation, double startAngle, double endAngle, bool antiClockwise) { + _ellipseFeatureDetected ??= js_util.getProperty(context, 'ellipse') != null; + if (_ellipseFeatureDetected) { + context.ellipse(centerX, centerY, radiusX, radiusY, + rotation, startAngle, endAngle, antiClockwise); + } else { + context.save(); + context.translate(centerX, centerY); + context.rotate(rotation); + context.scale(radiusX, radiusY); + context.arc(0, 0, 1, startAngle, endAngle, antiClockwise); + context.restore(); + } + } + /// The element corresponding to the only child of the root surface. html.Element get _rootApplicationElement { final html.Element lastElement = rootElement.children.last; diff --git a/lib/web_ui/lib/src/engine/rrect_renderer.dart b/lib/web_ui/lib/src/engine/rrect_renderer.dart index 628dfcf46d3dd..79e2377706042 100644 --- a/lib/web_ui/lib/src/engine/rrect_renderer.dart +++ b/lib/web_ui/lib/src/engine/rrect_renderer.dart @@ -196,7 +196,7 @@ class _RRectToCanvasRenderer extends _RRectRenderer { void ellipse(double centerX, double centerY, double radiusX, double radiusY, double rotation, double startAngle, double endAngle, bool antiClockwise) { - context.ellipse(centerX, centerY, radiusX, radiusY, rotation, startAngle, + DomRenderer.ellipse(context, centerX, centerY, radiusX, radiusY, rotation, startAngle, endAngle, antiClockwise); } } diff --git a/lib/web_ui/lib/src/engine/text/font_collection.dart b/lib/web_ui/lib/src/engine/text/font_collection.dart index 52a3ec8125223..95e8d4e684595 100644 --- a/lib/web_ui/lib/src/engine/text/font_collection.dart +++ b/lib/web_ui/lib/src/engine/text/font_collection.dart @@ -245,7 +245,9 @@ class _PolyfillFontManager extends FontManager { paragraph.style.position = 'absolute'; paragraph.style.visibility = 'hidden'; paragraph.style.fontSize = '72px'; - paragraph.style.fontFamily = 'sans-serif'; + final String fallbackFontName = browserEngine == BrowserEngine.ie11 ? + 'Times New Roman' : 'sans-serif'; + paragraph.style.fontFamily = fallbackFontName; if (descriptors['style'] != null) { paragraph.style.fontStyle = descriptors['style']; } @@ -257,7 +259,7 @@ class _PolyfillFontManager extends FontManager { html.document.body.append(paragraph); final int sansSerifWidth = paragraph.offsetWidth; - paragraph.style.fontFamily = "'$family', sans-serif"; + paragraph.style.fontFamily = "'$family', $fallbackFontName"; final Completer completer = Completer(); @@ -269,8 +271,10 @@ class _PolyfillFontManager extends FontManager { completer.complete(); } else { if (DateTime.now().difference(_fontLoadStart) > _fontLoadTimeout) { - completer.completeError( - Exception('Timed out trying to load font: $family')); + // Let application waiting for fonts continue with fallback. + completer.complete(); + // Throw unhandled exception for logging. + throw Exception('Timed out trying to load font: $family'); } else { Timer(_fontLoadRetryDuration, _watchWidth); } From f6435de88c7ab0768da80fcaa7ee2e2a011d04ef Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 6 Mar 2020 12:56:03 -0500 Subject: [PATCH 179/521] Roll fuchsia/sdk/core/mac-amd64 from J6ct_... to 95geB... (#16982) --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index eac77c03290b1..ea1c083c86113 100644 --- a/DEPS +++ b/DEPS @@ -536,7 +536,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/mac-amd64', - 'version': 'J6ct_s65RMTtGAc0zMI55SNQ1-V0oUE74VbVl8oHP0gC' + 'version': '95geBesdSL6fK7QEvdOACLyaxCi6GdUThJrPzdV86eUC' } ], 'condition': 'host_os == "mac"', From 43971caf04af0fe2cba977e5034db259a0e571ae Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 6 Mar 2020 13:01:02 -0500 Subject: [PATCH 180/521] Roll src/third_party/skia 74055566bd14..54de2fa48d85 (3 commits) (#16983) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index ea1c083c86113..455f9e915aa5a 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '74055566bd14c9a5d374001ce7530f7b38e7d55d', + 'skia_revision': '54de2fa48d85fb5792474558c731da41a257b122', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 9da6a1f396dce..561d40d25d223 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: eb35a18408ac71d3b634ccc4e8b9cab8 +Signature: 90751ce3c0285e23dcb7503852c72ab7 UNUSED LICENSES: From 45e61a6ff777c93daf7195467a2a27ed242af539 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 6 Mar 2020 13:11:01 -0500 Subject: [PATCH 181/521] Roll fuchsia/sdk/core/linux-amd64 from cTw2C... to K1wwe... (#16984) --- DEPS | 2 +- ci/licenses_golden/licenses_fuchsia | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/DEPS b/DEPS index 455f9e915aa5a..53a2e94c3050e 100644 --- a/DEPS +++ b/DEPS @@ -556,7 +556,7 @@ deps = { 'packages': [ { 'package': 'fuchsia/sdk/core/linux-amd64', - 'version': 'cTw2CHPPyHxE921m979WtotEFB96C0u9C15fQchM4lQC' + 'version': 'K1wweockjuvQ5i-vPbuhQRplYUpuEef7rJMm9qokpPsC' } ], 'condition': 'host_os == "linux"', diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index 630299d22c29f..cfc6afe9b0d4a 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -1,4 +1,4 @@ -Signature: 39e9691280dd7d69354fa72c708687fd +Signature: 92faa1ad1a02d8aa95fb090a747f73b1 UNUSED LICENSES: @@ -12,12 +12,12 @@ ORIGIN: ../../../fuchsia/sdk/linux/COPYRIGHT.musl TYPE: LicenseType.mit FILE: ../../../fuchsia/sdk/linux/.versions/core.cipd_version FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_core_validation.so +FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_khronos_validation.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_object_lifetimes.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_stateless_validation.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_thread_safety.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_unique_objects.so -FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libVkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libasync-default.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libmemfs.so @@ -220,12 +220,12 @@ FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/lib/libpthread.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_core_validation.so +FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_khronos_validation.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_object_lifetimes.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_stateless_validation.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_thread_safety.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_unique_objects.so -FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libVkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libasync-default.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libmemfs.so @@ -722,12 +722,12 @@ ORIGIN: ../../../fuchsia/sdk/linux/LICENSE TYPE: LicenseType.bsd FILE: ../../../fuchsia/sdk/linux/.versions/core.cipd_version FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_core_validation.so +FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_khronos_validation.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_object_lifetimes.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_stateless_validation.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_thread_safety.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_unique_objects.so -FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libVkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libasync-default.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libmemfs.so @@ -978,12 +978,12 @@ FILE: ../../../fuchsia/sdk/linux/arch/arm64/vdso/vmar.fidl FILE: ../../../fuchsia/sdk/linux/arch/arm64/vdso/vmo.fidl FILE: ../../../fuchsia/sdk/linux/arch/arm64/vdso/zx.fidl FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_core_validation.so +FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_khronos_validation.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_object_lifetimes.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_stateless_validation.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_thread_safety.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_unique_objects.so -FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libVkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libasync-default.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libmemfs.so @@ -1741,12 +1741,12 @@ ORIGIN: ../../../fuchsia/sdk/linux/LICENSE.vulkan TYPE: LicenseType.apache FILE: ../../../fuchsia/sdk/linux/.versions/core.cipd_version FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_core_validation.so +FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_khronos_validation.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_object_lifetimes.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_stateless_validation.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_thread_safety.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/VkLayer_unique_objects.so -FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libVkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libasync-default.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/dist/libmemfs.so @@ -1949,12 +1949,12 @@ FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/lib/libpthread.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/lib/librt.so FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/lib/libzircon.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_core_validation.so +FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_khronos_validation.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_object_lifetimes.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_stateless_validation.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_thread_safety.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/VkLayer_unique_objects.so -FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libVkLayer_image_pipe_swapchain.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libasync-default.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libfdio.so FILE: ../../../fuchsia/sdk/linux/arch/x64/dist/libmemfs.so From 1ab5c3641caa67c76afc605e6e86c6d6bae0fd2f Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 6 Mar 2020 14:36:05 -0500 Subject: [PATCH 182/521] Roll src/third_party/skia 54de2fa48d85..beaaf4700f50 (3 commits) (#16987) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 53a2e94c3050e..b39fb5d76de6f 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '54de2fa48d85fb5792474558c731da41a257b122', + 'skia_revision': 'beaaf4700f50e5f4760e45dbf4e82dca61f8c652', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 561d40d25d223..14b0be47c8526 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 90751ce3c0285e23dcb7503852c72ab7 +Signature: 3468ace016fa6b7a8b9e1dfca9907c68 UNUSED LICENSES: From e2c04549a00000c2ab078dbbb7ce12c0ad717323 Mon Sep 17 00:00:00 2001 From: Yegor Date: Fri, 6 Mar 2020 12:37:52 -0800 Subject: [PATCH 183/521] remove 10s timeouts from tests (#16988) --- .../engine/canvas_arc_golden_test.dart | 2 +- .../engine/canvas_draw_points_test.dart | 2 +- .../engine/canvas_golden_test.dart | 10 ++++---- .../engine/canvas_lines_golden_test.dart | 3 +-- .../engine/canvas_rect_golden_test.dart | 3 +-- .../engine/canvas_rrect_golden_test.dart | 6 ++--- .../canvas_stroke_joins_golden_test.dart | 2 +- .../canvas_stroke_rects_golden_test.dart | 2 +- .../engine/compositing_golden_test.dart | 23 +++++++++---------- .../engine/conic_golden_test.dart | 6 ++--- .../engine/path_to_svg_golden_test.dart | 12 +++++----- .../engine/shadow_golden_test.dart | 1 - 12 files changed, 34 insertions(+), 38 deletions(-) diff --git a/lib/web_ui/test/golden_tests/engine/canvas_arc_golden_test.dart b/lib/web_ui/test/golden_tests/engine/canvas_arc_golden_test.dart index 0710b1af1a111..b977e9b1310ed 100644 --- a/lib/web_ui/test/golden_tests/engine/canvas_arc_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/canvas_arc_golden_test.dart @@ -45,7 +45,7 @@ void main() async { html.document.body.append(canvas.rootElement); await matchGoldenFile('canvas_arc_to_point.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); } diff --git a/lib/web_ui/test/golden_tests/engine/canvas_draw_points_test.dart b/lib/web_ui/test/golden_tests/engine/canvas_draw_points_test.dart index 7c8a64cc453fd..f5c7f97299bcb 100644 --- a/lib/web_ui/test/golden_tests/engine/canvas_draw_points_test.dart +++ b/lib/web_ui/test/golden_tests/engine/canvas_draw_points_test.dart @@ -53,5 +53,5 @@ void main() async { html.document.body.append(canvas.rootElement); await matchGoldenFile('canvas_draw_points.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); } diff --git a/lib/web_ui/test/golden_tests/engine/canvas_golden_test.dart b/lib/web_ui/test/golden_tests/engine/canvas_golden_test.dart index a237554eb6b5f..e53d37d3ab080 100644 --- a/lib/web_ui/test/golden_tests/engine/canvas_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/canvas_golden_test.dart @@ -79,7 +79,7 @@ void main() async { appendToScene(); await matchGoldenFile('misaligned_pixels_in_canvas_test.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('compensates for misalignment of the canvas', () async { // Notice the 0.5 offset in the bounds rectangle. It's what causes the @@ -94,7 +94,7 @@ void main() async { appendToScene(); await matchGoldenFile('misaligned_canvas_test.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('fill the whole canvas with color even when transformed', () async { canvas = BitmapCanvas(const Rect.fromLTWH(0, 0, 50, 50)); @@ -105,7 +105,7 @@ void main() async { appendToScene(); await matchGoldenFile('bitmap_canvas_fills_color_when_transformed.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('fill the whole canvas with paint even when transformed', () async { canvas = BitmapCanvas(const Rect.fromLTWH(0, 0, 50, 50)); @@ -118,7 +118,7 @@ void main() async { appendToScene(); await matchGoldenFile('bitmap_canvas_fills_paint_when_transformed.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); // This test reproduces text blurriness when two pieces of text appear inside // two nested clips: @@ -171,7 +171,7 @@ void main() async { maxDiffRatePercent: 0.0, pixelComparison: PixelComparison.precise, ); - }, timeout: const Timeout(Duration(seconds: 10)), testOn: 'chrome'); + }, testOn: 'chrome'); // NOTE: Chrome in --headless mode does not reproduce the bug that this test // attempts to reproduce. However, it's still good to have this test diff --git a/lib/web_ui/test/golden_tests/engine/canvas_lines_golden_test.dart b/lib/web_ui/test/golden_tests/engine/canvas_lines_golden_test.dart index cf2b412a617b6..215d51da5c29e 100644 --- a/lib/web_ui/test/golden_tests/engine/canvas_lines_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/canvas_lines_golden_test.dart @@ -30,8 +30,7 @@ void main() async { html.document.body.append(canvas.rootElement); await matchGoldenFile('canvas_lines_thickness.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); - + }); } void paintLines(BitmapCanvas canvas) { diff --git a/lib/web_ui/test/golden_tests/engine/canvas_rect_golden_test.dart b/lib/web_ui/test/golden_tests/engine/canvas_rect_golden_test.dart index c1f1d2beb39a1..ea77b27ccd802 100644 --- a/lib/web_ui/test/golden_tests/engine/canvas_rect_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/canvas_rect_golden_test.dart @@ -30,8 +30,7 @@ void main() async { html.document.body.append(canvas.rootElement); await matchGoldenFile('canvas_rect_flipped.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); - + }); } void paintRects(BitmapCanvas canvas) { diff --git a/lib/web_ui/test/golden_tests/engine/canvas_rrect_golden_test.dart b/lib/web_ui/test/golden_tests/engine/canvas_rrect_golden_test.dart index f462001725b45..95d977993704c 100644 --- a/lib/web_ui/test/golden_tests/engine/canvas_rrect_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/canvas_rrect_golden_test.dart @@ -44,7 +44,7 @@ void main() async { html.document.body.append(canvas.rootElement); await matchGoldenFile('canvas_rrect_round_square.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('round rect with big radius scale down smaller radius', () async { for (int i = 0; i < 5; i++) { @@ -60,7 +60,7 @@ void main() async { html.document.body.append(canvas.rootElement); await matchGoldenFile('canvas_rrect_overlapping_radius.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('diff round rect with big radius scale down smaller radius', () async { for (int i = 0; i < 5; i++) { @@ -83,5 +83,5 @@ void main() async { html.document.body.append(canvas.rootElement); await matchGoldenFile('canvas_drrect_overlapping_radius.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); } diff --git a/lib/web_ui/test/golden_tests/engine/canvas_stroke_joins_golden_test.dart b/lib/web_ui/test/golden_tests/engine/canvas_stroke_joins_golden_test.dart index d1631a3f82b7c..0a85cc25f96aa 100644 --- a/lib/web_ui/test/golden_tests/engine/canvas_stroke_joins_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/canvas_stroke_joins_golden_test.dart @@ -30,7 +30,7 @@ void main() async { html.document.body.append(canvas.rootElement); await matchGoldenFile('canvas_stroke_joins.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); } diff --git a/lib/web_ui/test/golden_tests/engine/canvas_stroke_rects_golden_test.dart b/lib/web_ui/test/golden_tests/engine/canvas_stroke_rects_golden_test.dart index 6c24257267f42..447f9706030ec 100644 --- a/lib/web_ui/test/golden_tests/engine/canvas_stroke_rects_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/canvas_stroke_rects_golden_test.dart @@ -31,7 +31,7 @@ void main() async { html.document.body.append(canvas.rootElement); await matchGoldenFile('canvas_stroke_rects.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); } diff --git a/lib/web_ui/test/golden_tests/engine/compositing_golden_test.dart b/lib/web_ui/test/golden_tests/engine/compositing_golden_test.dart index 59caf70c2a3cd..455bceb07551f 100644 --- a/lib/web_ui/test/golden_tests/engine/compositing_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/compositing_golden_test.dart @@ -39,7 +39,7 @@ void main() async { html.document.body.append(builder.build().webOnlyRootElement); await matchGoldenFile('compositing_shifted_clip_rect.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('pushClipRect with offset and transform', () async { final SurfaceSceneBuilder builder = SurfaceSceneBuilder(); @@ -60,7 +60,7 @@ void main() async { await matchGoldenFile('compositing_clip_rect_with_offset_and_transform.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('pushClipRRect', () async { final SurfaceSceneBuilder builder = SurfaceSceneBuilder(); @@ -73,7 +73,7 @@ void main() async { html.document.body.append(builder.build().webOnlyRootElement); await matchGoldenFile('compositing_shifted_clip_rrect.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('pushPhysicalShape', () async { final SurfaceSceneBuilder builder = SurfaceSceneBuilder(); @@ -102,7 +102,7 @@ void main() async { await matchGoldenFile('compositing_shifted_physical_shape_clip.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('pushImageFilter', () async { final SurfaceSceneBuilder builder = SurfaceSceneBuilder(); @@ -115,7 +115,7 @@ void main() async { html.document.body.append(builder.build().webOnlyRootElement); await matchGoldenFile('compositing_image_filter.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); group('Cull rect computation', () { _testCullRectComputation(); @@ -246,7 +246,7 @@ void _testCullRectComputation() { final PersistedStandardPicture picture = enumeratePictures().single; expect(picture.optimalLocalCullRect, const Rect.fromLTRB(40, 40, 70, 70)); - }, timeout: const Timeout(Duration(seconds: 10))); + }); // Draw a picture inside a layer clip but position the picture such that its // paint bounds overflow the layer clip. Verify that the cull rect is the @@ -276,7 +276,7 @@ void _testCullRectComputation() { final PersistedStandardPicture picture = enumeratePictures().single; expect(picture.optimalLocalCullRect, const Rect.fromLTRB(50, 40, 70, 70)); - }, timeout: const Timeout(Duration(seconds: 10))); + }); // Draw a picture inside a layer clip that's positioned inside the clip using // an offset layer. Verify that the cull rect is the intersection between the @@ -308,7 +308,7 @@ void _testCullRectComputation() { final PersistedStandardPicture picture = enumeratePictures().single; expect(picture.optimalLocalCullRect, const Rect.fromLTRB(-15.0, -20.0, 15.0, 0.0)); - }, timeout: const Timeout(Duration(seconds: 10))); + }); // Draw a picture inside a layer clip that's positioned an offset layer such // that the picture is push completely outside the clip area. Verify that the @@ -384,7 +384,7 @@ void _testCullRectComputation() { within( distance: 0.05, from: const Rect.fromLTRB(-14.1, -14.1, 14.1, 14.1)), ); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('pushClipPath', () async { final SurfaceSceneBuilder builder = SurfaceSceneBuilder(); @@ -399,7 +399,7 @@ void _testCullRectComputation() { html.document.body.append(builder.build().webOnlyRootElement); await matchGoldenFile('compositing_clip_path.png', region: region); - }, timeout: const Timeout(Duration(seconds: 10))); + }); // Draw a picture inside a rotated clip. Verify that the cull rect is big // enough to fit the rotated clip. @@ -514,7 +514,7 @@ void _testCullRectComputation() { // from: Rect.fromLTRB( // -140, -140, screenWidth - 360.0, screenHeight + 40.0)), // ); - }, timeout: const Timeout(Duration(seconds: 10))); + }); // This test reproduces text blurriness when two pieces of text appear inside // two nested clips: @@ -597,7 +597,6 @@ void _testCullRectComputation() { pixelComparison: PixelComparison.precise, ); }, - timeout: const Timeout(Duration(seconds: 10)), testOn: 'chrome', ); } diff --git a/lib/web_ui/test/golden_tests/engine/conic_golden_test.dart b/lib/web_ui/test/golden_tests/engine/conic_golden_test.dart index 07cecb1557659..0ec9770603d40 100644 --- a/lib/web_ui/test/golden_tests/engine/conic_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/conic_golden_test.dart @@ -54,7 +54,7 @@ void main() async { path.close(); await testPath(path, 'render_conic_1_w10'); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('render conic with control point left of start point', () async { const double yStart = 20; @@ -72,7 +72,7 @@ void main() async { path.close(); await testPath(path, 'render_conic_2_w10'); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('render conic with control point above start point', () async { const double yStart = 20; @@ -90,5 +90,5 @@ void main() async { path.close(); await testPath(path, 'render_conic_2'); - }, timeout: const Timeout(Duration(seconds: 10))); + }); } diff --git a/lib/web_ui/test/golden_tests/engine/path_to_svg_golden_test.dart b/lib/web_ui/test/golden_tests/engine/path_to_svg_golden_test.dart index 12d5d818d13a7..c4a1d07a76e9b 100644 --- a/lib/web_ui/test/golden_tests/engine/path_to_svg_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/path_to_svg_golden_test.dart @@ -58,21 +58,21 @@ void main() async { ..color = const Color(0xFFFF0000) ..strokeWidth = 2.0 ..style = PaintingStyle.stroke); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('render quad bezier curve', () async { final Path path = Path(); path.moveTo(50, 60); path.quadraticBezierTo(200, 60, 50, 200); await testPath(path, 'svg_quad_bezier'); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('render cubic curve', () async { final Path path = Path(); path.moveTo(50, 60); path.cubicTo(200, 60, -100, -50, 150, 200); await testPath(path, 'svg_cubic_bezier'); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('render arcs', () async { final List arcs = [ @@ -99,14 +99,14 @@ void main() async { final Path path = sample.createPath(); await testPath(path, 'svg_arc_$sampleIndex'); } - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('render rect', () async { final Path path = Path(); path.addRect(const Rect.fromLTRB(15, 15, 60, 20)); path.addRect(const Rect.fromLTRB(35, 160, 15, 100)); await testPath(path, 'svg_rect'); - }, timeout: const Timeout(Duration(seconds: 10))); + }); test('render notch', () async { final Path path = Path(); @@ -123,7 +123,7 @@ void main() async { path.lineTo(0, 80); path.lineTo(0, 10); await testPath(path, 'svg_notch'); - }, timeout: const Timeout(Duration(seconds: 10))); + }); } html.Element pathToSvgElement(Path path, Paint paint) { diff --git a/lib/web_ui/test/golden_tests/engine/shadow_golden_test.dart b/lib/web_ui/test/golden_tests/engine/shadow_golden_test.dart index 1d84895b79f6e..d5f3dc8388e7c 100644 --- a/lib/web_ui/test/golden_tests/engine/shadow_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/shadow_golden_test.dart @@ -156,7 +156,6 @@ void main() async { pixelComparison: PixelComparison.precise, ); }, - timeout: const Timeout(Duration(seconds: 10)), testOn: 'chrome', ); } From dfc9c126d0dd534657d35f40146ae7e7c161d98a Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 6 Mar 2020 16:11:02 -0500 Subject: [PATCH 184/521] Roll src/third_party/skia beaaf4700f50..6e58290ba639 (9 commits) (#16990) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index b39fb5d76de6f..16441401d9f22 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'beaaf4700f50e5f4760e45dbf4e82dca61f8c652', + 'skia_revision': '6e58290ba6390c0032a47acdcadb0043a735fb34', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index 14b0be47c8526..acab37f0e5dad 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 3468ace016fa6b7a8b9e1dfca9907c68 +Signature: 2d0940592d7eb77e325a0c024bb6aef2 UNUSED LICENSES: @@ -3913,6 +3913,9 @@ FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DGpu.cpp FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DGpu.h FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DOpsRenderPass.cpp FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DOpsRenderPass.h +FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DResource.cpp +FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DResource.h +FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DResourceState.h FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DUtil.cpp FILE: ../../../third_party/skia/src/gpu/d3d/GrD3DUtil.h FILE: ../../../third_party/skia/src/gpu/effects/GrDeviceSpaceEffect.fp From eddda803279c737ef847d1f64200539e66a0bf53 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Fri, 6 Mar 2020 13:34:47 -0800 Subject: [PATCH 185/521] fushia licenses fix (#16992) --- ci/licenses_golden/licenses_fuchsia | 290 ++++++++++++++-------------- ci/licenses_golden/tool_signature | 2 +- sky/packages/sky_engine/LICENSE | 244 ++++++++++++----------- tools/licenses/lib/main.dart | 1 + 4 files changed, 267 insertions(+), 270 deletions(-) diff --git a/ci/licenses_golden/licenses_fuchsia b/ci/licenses_golden/licenses_fuchsia index cfc6afe9b0d4a..9909fba7ddc53 100644 --- a/ci/licenses_golden/licenses_fuchsia +++ b/ci/licenses_golden/licenses_fuchsia @@ -3082,6 +3082,151 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== +==================================================================================================== +LIBRARY: fuchsia_sdk +ORIGIN: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/boot/netboot.h + ../../../fuchsia/sdk/linux/LICENSE +TYPE: LicenseType.bsd +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/assert.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/boot/netboot.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/compiler.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/driver/binding.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/errors.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/hw/i2c.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/hw/usb.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/hw/usb/audio.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/hw/usb/hid.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/hw/usb/hub.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/hw/usb/ums.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/listnode.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/pixelformat.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/processargs.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/status.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/debug.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/exception.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/log.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/object.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/pci.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/port.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/profile.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/resource.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/types.h +FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/types.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/assert.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/boot/netboot.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/compiler.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/driver/binding.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/errors.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/hw/i2c.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/hw/usb.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/hw/usb/audio.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/hw/usb/hid.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/hw/usb/hub.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/hw/usb/ums.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/listnode.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/pixelformat.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/processargs.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/status.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/debug.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/exception.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/log.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/object.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/pci.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/port.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/profile.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/resource.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/types.h +FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/types.h +FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/interface.dart +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component.runner/component_runner.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.fonts/font_provider.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.math/math.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.media.playback/problem.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.media.playback/seeking_reader.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.media/audio.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/basemgr/base_shell.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/basemgr/user_provider.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/module/module_context.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/module/module_controller.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/session/focus.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/session/session_shell.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/story/story_controller.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/story/story_info.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/story/story_provider.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.net.oldhttp/url_body.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.sys/component_controller.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.sys/environment.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.sys/environment_controller.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.sys/launcher.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.sys/loader.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.sys/runner.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.tracing.provider/provider.fidl +FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.ui.policy/presenter.fidl +FILE: ../../../fuchsia/sdk/linux/pkg/fdio/include/lib/fdio/fdio.h +FILE: ../../../fuchsia/sdk/linux/pkg/fdio/include/lib/fdio/io.h +FILE: ../../../fuchsia/sdk/linux/pkg/fdio/include/lib/fdio/vfs.h +FILE: ../../../fuchsia/sdk/linux/pkg/fdio/include/lib/fdio/watcher.h +FILE: ../../../fuchsia/sdk/linux/pkg/media_cpp_no_converters/include/lib/media/cpp/timeline_function.h +FILE: ../../../fuchsia/sdk/linux/pkg/media_cpp_no_converters/include/lib/media/cpp/timeline_rate.h +FILE: ../../../fuchsia/sdk/linux/pkg/media_cpp_no_converters/timeline_function.cc +FILE: ../../../fuchsia/sdk/linux/pkg/media_cpp_no_converters/timeline_rate.cc +FILE: ../../../fuchsia/sdk/linux/pkg/sync/include/lib/sync/completion.h +FILE: ../../../fuchsia/sdk/linux/pkg/sys_cpp/include/lib/sys/cpp/termination_reason.h +FILE: ../../../fuchsia/sdk/linux/pkg/zx/channel.cc +FILE: ../../../fuchsia/sdk/linux/pkg/zx/event.cc +FILE: ../../../fuchsia/sdk/linux/pkg/zx/eventpair.cc +FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/channel.h +FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/event.h +FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/eventpair.h +FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/job.h +FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/object.h +FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/object_traits.h +FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/port.h +FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/process.h +FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/socket.h +FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/task.h +FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/thread.h +FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/time.h +FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/vmar.h +FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/vmo.h +FILE: ../../../fuchsia/sdk/linux/pkg/zx/job.cc +FILE: ../../../fuchsia/sdk/linux/pkg/zx/port.cc +FILE: ../../../fuchsia/sdk/linux/pkg/zx/process.cc +FILE: ../../../fuchsia/sdk/linux/pkg/zx/socket.cc +FILE: ../../../fuchsia/sdk/linux/pkg/zx/thread.cc +FILE: ../../../fuchsia/sdk/linux/pkg/zx/vmar.cc +FILE: ../../../fuchsia/sdk/linux/pkg/zx/vmo.cc +---------------------------------------------------------------------------------------------------- +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================================================== + ==================================================================================================== LIBRARY: fuchsia_sdk ORIGIN: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/string_view.h + ../../../fuchsia/sdk/linux/LICENSE @@ -3325,151 +3470,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -==================================================================================================== - -==================================================================================================== -LIBRARY: fuchsia_sdk -ORIGIN: ../../../third_party/tonic/LICENSE -TYPE: LicenseType.bsd -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/assert.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/boot/netboot.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/compiler.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/driver/binding.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/errors.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/hw/i2c.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/hw/usb.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/hw/usb/audio.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/hw/usb/hid.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/hw/usb/hub.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/hw/usb/ums.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/listnode.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/pixelformat.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/processargs.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/status.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/debug.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/exception.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/log.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/object.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/pci.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/port.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/profile.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/resource.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/syscalls/types.h -FILE: ../../../fuchsia/sdk/linux/arch/arm64/sysroot/include/zircon/types.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/assert.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/boot/netboot.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/compiler.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/driver/binding.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/errors.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/hw/i2c.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/hw/usb.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/hw/usb/audio.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/hw/usb/hid.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/hw/usb/hub.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/hw/usb/ums.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/listnode.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/pixelformat.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/processargs.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/status.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/debug.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/exception.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/log.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/object.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/pci.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/port.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/profile.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/resource.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/syscalls/types.h -FILE: ../../../fuchsia/sdk/linux/arch/x64/sysroot/include/zircon/types.h -FILE: ../../../fuchsia/sdk/linux/dart/fidl/lib/src/interface.dart -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.component.runner/component_runner.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.fonts/font_provider.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.math/math.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.media.playback/problem.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.media.playback/seeking_reader.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.media/audio.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/basemgr/base_shell.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/basemgr/user_provider.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/module/module_context.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/module/module_controller.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/session/focus.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/session/session_shell.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/story/story_controller.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/story/story_info.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.modular/story/story_provider.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.net.oldhttp/url_body.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.sys/component_controller.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.sys/environment.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.sys/environment_controller.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.sys/launcher.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.sys/loader.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.sys/runner.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.tracing.provider/provider.fidl -FILE: ../../../fuchsia/sdk/linux/fidl/fuchsia.ui.policy/presenter.fidl -FILE: ../../../fuchsia/sdk/linux/pkg/fdio/include/lib/fdio/fdio.h -FILE: ../../../fuchsia/sdk/linux/pkg/fdio/include/lib/fdio/io.h -FILE: ../../../fuchsia/sdk/linux/pkg/fdio/include/lib/fdio/vfs.h -FILE: ../../../fuchsia/sdk/linux/pkg/fdio/include/lib/fdio/watcher.h -FILE: ../../../fuchsia/sdk/linux/pkg/media_cpp_no_converters/include/lib/media/cpp/timeline_function.h -FILE: ../../../fuchsia/sdk/linux/pkg/media_cpp_no_converters/include/lib/media/cpp/timeline_rate.h -FILE: ../../../fuchsia/sdk/linux/pkg/media_cpp_no_converters/timeline_function.cc -FILE: ../../../fuchsia/sdk/linux/pkg/media_cpp_no_converters/timeline_rate.cc -FILE: ../../../fuchsia/sdk/linux/pkg/sync/include/lib/sync/completion.h -FILE: ../../../fuchsia/sdk/linux/pkg/sys_cpp/include/lib/sys/cpp/termination_reason.h -FILE: ../../../fuchsia/sdk/linux/pkg/zx/channel.cc -FILE: ../../../fuchsia/sdk/linux/pkg/zx/event.cc -FILE: ../../../fuchsia/sdk/linux/pkg/zx/eventpair.cc -FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/channel.h -FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/event.h -FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/eventpair.h -FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/job.h -FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/object.h -FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/object_traits.h -FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/port.h -FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/process.h -FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/socket.h -FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/task.h -FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/thread.h -FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/time.h -FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/vmar.h -FILE: ../../../fuchsia/sdk/linux/pkg/zx/include/lib/zx/vmo.h -FILE: ../../../fuchsia/sdk/linux/pkg/zx/job.cc -FILE: ../../../fuchsia/sdk/linux/pkg/zx/port.cc -FILE: ../../../fuchsia/sdk/linux/pkg/zx/process.cc -FILE: ../../../fuchsia/sdk/linux/pkg/zx/socket.cc -FILE: ../../../fuchsia/sdk/linux/pkg/zx/thread.cc -FILE: ../../../fuchsia/sdk/linux/pkg/zx/vmar.cc -FILE: ../../../fuchsia/sdk/linux/pkg/zx/vmo.cc ----------------------------------------------------------------------------------------------------- -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR diff --git a/ci/licenses_golden/tool_signature b/ci/licenses_golden/tool_signature index ba32055c6f1e8..c1c11fd3bb285 100644 --- a/ci/licenses_golden/tool_signature +++ b/ci/licenses_golden/tool_signature @@ -1,2 +1,2 @@ -Signature: 7f3dc50a79dfd6889b085030613e925c +Signature: a0775818831a05f46ce1628c95d834c1 diff --git a/sky/packages/sky_engine/LICENSE b/sky/packages/sky_engine/LICENSE index 17f306abefc94..5db764fbeb983 100644 --- a/sky/packages/sky_engine/LICENSE +++ b/sky/packages/sky_engine/LICENSE @@ -5143,6 +5143,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2015 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2016 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2016 The Fuchsia Authors. All rights reserved. Copyright (c) 2009 Corey Tabaka @@ -5174,6 +5234,66 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- fuchsia_sdk +Copyright 2017 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + +Copyright 2018 The Fuchsia Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +fuchsia_sdk + Copyright 2020 The Fuchsia Authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -5570,130 +5690,6 @@ distribution. contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2015 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2016 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2017 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -fuchsia_sdk -tonic - -Copyright 2018 The Fuchsia Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index be20ed71b3b46..927863f82aa8a 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -915,6 +915,7 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { // direct child of this directory's filesystem node. List<_RepositoryDirectory> get virtualSubdirectories => <_RepositoryDirectory>[]; + // TODO(nurhan): soon add e2etests here. bool shouldRecurse(fs.IoNode entry) { return !entry.fullName.endsWith('third_party/gn') && entry.name != '.cipd' && From c15f239c1e9ea4794a086fe8b30309cf5406739c Mon Sep 17 00:00:00 2001 From: gaaclarke <30870216+gaaclarke@users.noreply.github.com> Date: Fri, 6 Mar 2020 14:28:56 -0800 Subject: [PATCH 186/521] documented fluttertexture.h (#16950) --- .../common/framework/Headers/FlutterTexture.h | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/shell/platform/darwin/common/framework/Headers/FlutterTexture.h b/shell/platform/darwin/common/framework/Headers/FlutterTexture.h index bfb66b092a684..cfda1e2df83d7 100644 --- a/shell/platform/darwin/common/framework/Headers/FlutterTexture.h +++ b/shell/platform/darwin/common/framework/Headers/FlutterTexture.h @@ -13,7 +13,13 @@ NS_ASSUME_NONNULL_BEGIN FLUTTER_EXPORT +/** + * Represents a texture that can be shared with Flutter. + * + * See also: https://github.com/flutter/plugins/tree/master/packages/camera + */ @protocol FlutterTexture +/** Copy the contents of the texture into a `CVPixelBuffer`. */ - (CVPixelBufferRef _Nullable)copyPixelBuffer; /** @@ -26,9 +32,26 @@ FLUTTER_EXPORT @end FLUTTER_EXPORT +/** + * A collection of registered `FlutterTexture`'s. + */ @protocol FlutterTextureRegistry +/** + * Registers a `FlutterTexture` for usage in Flutter and returns an id that can be used to reference + * that texture when calling into Flutter with channels. + */ - (int64_t)registerTexture:(NSObject*)texture; +/** + * Notifies Flutter that the content of the previously registered texture has been updated. + * + * This will trigger a call to `-[FlutterTexture copyPixelBuffer]` on the GPU thread. + */ - (void)textureFrameAvailable:(int64_t)textureId; +/** + * Unregisters a `FlutterTexture` that has previously regeistered with `registerTexture:`. + * + * @param textureId The result that was previously returned from `registerTexture:`. + */ - (void)unregisterTexture:(int64_t)textureId; @end From e1ba7a18f4568a82f49b2cbd84fc0679aecbbcdf Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Fri, 6 Mar 2020 18:01:02 -0500 Subject: [PATCH 187/521] Roll src/third_party/skia 6e58290ba639..24a8e9e170f7 (5 commits) (#16996) --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/DEPS b/DEPS index 16441401d9f22..3b148b4b5fc84 100644 --- a/DEPS +++ b/DEPS @@ -26,7 +26,7 @@ vars = { 'skia_git': 'https://skia.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': '6e58290ba6390c0032a47acdcadb0043a735fb34', + 'skia_revision': '24a8e9e170f737683630c072951cbba037c3388b', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index acab37f0e5dad..be5094e2e9f88 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 2d0940592d7eb77e325a0c024bb6aef2 +Signature: 45f0a8ea1f5efe268a113d060eacab81 UNUSED LICENSES: @@ -1209,7 +1209,6 @@ FILE: ../../../third_party/skia/infra/bots/recipes/recreate_skps.expected/failed FILE: ../../../third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_CCPR_Skpbench.json FILE: ../../../third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_Skpbench_Mskp.json FILE: ../../../third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan_Skpbench.json -FILE: ../../../third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan_Skpbench_DDLRecord_9x9.json FILE: ../../../third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan_Skpbench_DDLTotal_9x9.json FILE: ../../../third_party/skia/infra/bots/recipes/skpbench.expected/trybot.json FILE: ../../../third_party/skia/infra/bots/recipes/skqp_test.expected/Test-Debian9-Clang-GCE-CPU-AVX2-universal-devrel-All-Android_SKQP.json From fc5963d2d17d9265a6820858e8e9e25b8e627047 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Fri, 6 Mar 2020 15:34:11 -0800 Subject: [PATCH 188/521] [web] Engine integration test (#16930) * squashing the commits together * directory rename, project rename. addressing reviewer comments * update cirrus file * change tool signature --- .cirrus.yml | 21 ++++ .gitignore | 99 +++++++++++++++++++ ci/licenses_golden/tool_signature | 2 +- .../web/regular_integration_tests/README.md | 16 +++ .../lib/text_editing_main.dart | 60 +++++++++++ .../regular_integration_tests/pubspec.yaml | 18 ++++ .../test_driver/text_editing_e2e.dart | 43 ++++++++ .../test_driver/text_editing_e2e_test.dart | 19 ++++ .../regular_integration_tests/web/index.html | 12 +++ tools/licenses/lib/main.dart | 3 + 10 files changed, 292 insertions(+), 1 deletion(-) create mode 100644 e2etests/web/regular_integration_tests/README.md create mode 100644 e2etests/web/regular_integration_tests/lib/text_editing_main.dart create mode 100644 e2etests/web/regular_integration_tests/pubspec.yaml create mode 100644 e2etests/web/regular_integration_tests/test_driver/text_editing_e2e.dart create mode 100644 e2etests/web/regular_integration_tests/test_driver/text_editing_e2e_test.dart create mode 100644 e2etests/web/regular_integration_tests/web/index.html diff --git a/.cirrus.yml b/.cirrus.yml index 454f849b81064..d7ce4adc52af9 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -124,6 +124,27 @@ task: - name: web_tests-7_last-linux # last Web shard must end with _last << : *WEB_SHARD_TEMPLATE + - name: web_engine_integration_test_linux + compile_host_script: | + cd $ENGINE_PATH/src + ./flutter/tools/gn --unoptimized --full-dart-sdk + ninja -C out/host_debug_unopt + fetch_framework_script: | + cd $ENGINE_PATH/src/flutter/tools + ./clone_flutter.sh + cd $FRAMEWORK_PATH/flutter + bin/flutter update-packages --local-engine=host_debug_unopt + script: + - git clone https://github.com/flutter/web_installers.git + - cd web_installers/packages/web_drivers/ + - $ENGINE_PATH/src/third_party/dart/tools/sdks/dart-sdk/bin/pub get + - $ENGINE_PATH/src/third_party/dart/tools/sdks/dart-sdk/bin/dart lib/web_driver_installer.dart chromedriver --install-only + - ./chromedriver/chromedriver --port=4444 & + - cd $ENGINE_PATH/src/flutter/e2etests/web/regular_integration_tests + - $FRAMEWORK_PATH/flutter/bin/flutter config --local-engine=host_debug_unopt --no-analytics --enable-web + - $FRAMEWORK_PATH/flutter/bin/flutter pub get --local-engine=host_debug_unopt + - $FRAMEWORK_PATH/flutter/bin/flutter drive -v --target=test_driver/text_editing_e2e.dart -d web-server --release --browser-name=chrome --local-engine=host_debug_unopt + - name: build_and_test_web_linux_firefox compile_host_script: | cd $ENGINE_PATH/src diff --git a/.gitignore b/.gitignore index 70d501a1a4b38..f92944ad0c5ff 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,102 @@ xcuserdata third_party/gn/ +# Miscellaneous +*.class +*.lock +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# Visual Studio Code related +.classpath +.project +.settings/ +.vscode/ + +# packages file containing multi-root paths +.packages.generated + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +build/ +flutter_*.png +linked_*.ds +unlinked.ds +unlinked_spec.ds + +# Android related +**/android/**/gradle-wrapper.jar +**/android/.gradle +**/android/captures/ +**/android/gradlew +**/android/gradlew.bat +**/android/local.properties +**/android/**/GeneratedPluginRegistrant.java +**/android/key.properties +*.jks + +# iOS/XCode related +**/ios/**/*.mode1v3 +**/ios/**/*.mode2v3 +**/ios/**/*.moved-aside +**/ios/**/*.pbxuser +**/ios/**/*.perspectivev3 +**/ios/**/*sync/ +**/ios/**/.sconsign.dblite +**/ios/**/.tags* +**/ios/**/.vagrant/ +**/ios/**/DerivedData/ +**/ios/**/Icon? +**/ios/**/Pods/ +**/ios/**/.symlinks/ +**/ios/**/profile +**/ios/**/xcuserdata +**/ios/.generated/ +**/ios/Flutter/App.framework +**/ios/Flutter/Flutter.framework +**/ios/Flutter/Flutter.podspec +**/ios/Flutter/Generated.xcconfig +**/ios/Flutter/app.flx +**/ios/Flutter/app.zip +**/ios/Flutter/flutter_assets/ +**/ios/Flutter/flutter_export_environment.sh +**/ios/ServiceDefinitions.json +**/ios/Runner/GeneratedPluginRegistrant.* + +# macOS +**/macos/Flutter/GeneratedPluginRegistrant.swift +**/macos/Flutter/Flutter-Debug.xcconfig +**/macos/Flutter/Flutter-Release.xcconfig +**/macos/Flutter/Flutter-Profile.xcconfig + +# Coverage +coverage/ + +# Symbols +app.*.symbols + +# Exceptions to above rules. +!**/ios/**/default.mode1v3 +!**/ios/**/default.mode2v3 +!**/ios/**/default.pbxuser +!**/ios/**/default.perspectivev3 +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages +!/dev/ci/**/Gemfile.lock diff --git a/ci/licenses_golden/tool_signature b/ci/licenses_golden/tool_signature index c1c11fd3bb285..732b5d9430cd7 100644 --- a/ci/licenses_golden/tool_signature +++ b/ci/licenses_golden/tool_signature @@ -1,2 +1,2 @@ -Signature: a0775818831a05f46ce1628c95d834c1 +Signature: 9ad4afaa43bd81d0e6a011688ca40377 diff --git a/e2etests/web/regular_integration_tests/README.md b/e2etests/web/regular_integration_tests/README.md new file mode 100644 index 0000000000000..7889ef4971482 --- /dev/null +++ b/e2etests/web/regular_integration_tests/README.md @@ -0,0 +1,16 @@ +``` +This directory is for Flutter Web engine integration tests that does not +need a specific configuration. If an e2e test needs specialized app +configuration (e.g. PWA vs non-PWA packaging), please create another +directory under e2etests/web. Otherwise tests such as text_editing, history, +scrolling, pointer events... should all go under this package. + +# To run the application under test for traouble shooting purposes. +flutter run -d web-server lib/text_editing_main.dart --local-engine=host_debug_unopt + +# To run the Text Editing test and use the developer tools in the browser. +flutter run --target=test_driver/text_editing_e2e.dart -d web-server --web-port=8080 --release --local-engine=host_debug_unopt + +# To test the Text Editing test with driver: +flutter drive -v --target=test_driver/text_editing_e2e.dart -d web-server --release --browser-name=chrome --local-engine=host_debug_unopt +``` diff --git a/e2etests/web/regular_integration_tests/lib/text_editing_main.dart b/e2etests/web/regular_integration_tests/lib/text_editing_main.dart new file mode 100644 index 0000000000000..1962900718551 --- /dev/null +++ b/e2etests/web/regular_integration_tests/lib/text_editing_main.dart @@ -0,0 +1,60 @@ +// 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 'package:flutter/material.dart'; + +void main() => runApp(MyApp()); + +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return MaterialApp( + key: const Key('mainapp'), + title: 'Integration Test App', + home: MyHomePage(title: 'Integration Test App'), + ); + } +} + +class MyHomePage extends StatefulWidget { + MyHomePage({Key key, this.title}) : super(key: key); + + final String title; + + @override + _MyHomePageState createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + final TextEditingController _controller = + TextEditingController(text: 'Text1'); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(widget.title), + ), + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text( + 'Text Editing Test', + ), + TextFormField( + key: const Key('input'), + enabled: true, + controller: _controller, + //initialValue: 'Text1', + decoration: const InputDecoration( + labelText: 'Text Input Field:', + ), + ), + ], + ), + ), + ); + } +} diff --git a/e2etests/web/regular_integration_tests/pubspec.yaml b/e2etests/web/regular_integration_tests/pubspec.yaml new file mode 100644 index 0000000000000..98fa40773834e --- /dev/null +++ b/e2etests/web/regular_integration_tests/pubspec.yaml @@ -0,0 +1,18 @@ +name: regular_integration_tests +publish_to: none + +environment: + sdk: ">=2.2.2 <3.0.0" + +dependencies: + flutter: + sdk: flutter + +dev_dependencies: + flutter_driver: + sdk: flutter + flutter_test: + sdk: flutter + e2e: 0.2.4+4 + http: 0.12.0+2 + test: any diff --git a/e2etests/web/regular_integration_tests/test_driver/text_editing_e2e.dart b/e2etests/web/regular_integration_tests/test_driver/text_editing_e2e.dart new file mode 100644 index 0000000000000..4719766e3e6c4 --- /dev/null +++ b/e2etests/web/regular_integration_tests/test_driver/text_editing_e2e.dart @@ -0,0 +1,43 @@ +// 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:html'; +import 'package:flutter/services.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:regular_integration_tests/text_editing_main.dart' as app; +import 'package:flutter/material.dart'; + +import 'package:e2e/e2e.dart'; + +void main() { + E2EWidgetsFlutterBinding.ensureInitialized() as E2EWidgetsFlutterBinding; + + testWidgets('Focused text field creates a native input element', + (WidgetTester tester) async { + app.main(); + await tester.pumpAndSettle(); + + // TODO(nurhan): https://github.com/flutter/flutter/issues/51885 + SystemChannels.textInput.setMockMethodCallHandler(null); + + // Focus on a TextFormField. + final Finder finder = find.byKey(const Key('input')); + expect(finder, findsOneWidget); + await tester.tap(find.byKey(const Key('input'))); + + // A native input element will be appended to the DOM. + final List nodeList = document.getElementsByTagName('input'); + expect(nodeList.length, equals(1)); + final InputElement input = + document.getElementsByTagName('input')[0] as InputElement; + // The element's value will be the same as the textFormField's value. + expect(input.value, 'Text1'); + + // Change the value of the TextFormField. + final TextFormField textFormField = tester.widget(finder); + textFormField.controller.text = 'New Value'; + // DOM element's value also changes. + expect(input.value, 'New Value'); + }); +} diff --git a/e2etests/web/regular_integration_tests/test_driver/text_editing_e2e_test.dart b/e2etests/web/regular_integration_tests/test_driver/text_editing_e2e_test.dart new file mode 100644 index 0000000000000..26f4278d6505f --- /dev/null +++ b/e2etests/web/regular_integration_tests/test_driver/text_editing_e2e_test.dart @@ -0,0 +1,19 @@ +// 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:flutter_driver/flutter_driver.dart'; + +Future main() async { + final FlutterDriver driver = await FlutterDriver.connect(); + + // TODO(nurhan): https://github.com/flutter/flutter/issues/51940 + final String dataRequest = + await driver.requestData(null, timeout: const Duration(seconds: 1)); + print('result $dataRequest'); + await driver.close(); + + exit(dataRequest == 'pass' ? 0 : 1); +} diff --git a/e2etests/web/regular_integration_tests/web/index.html b/e2etests/web/regular_integration_tests/web/index.html new file mode 100644 index 0000000000000..4134d6bc48c1f --- /dev/null +++ b/e2etests/web/regular_integration_tests/web/index.html @@ -0,0 +1,12 @@ + + + + + Web Integration Tests + + + + + diff --git a/tools/licenses/lib/main.dart b/tools/licenses/lib/main.dart index 927863f82aa8a..fc948e23134b8 100644 --- a/tools/licenses/lib/main.dart +++ b/tools/licenses/lib/main.dart @@ -930,6 +930,9 @@ class _RepositoryDirectory extends _RepositoryEntry implements LicenseSource { entry.name != 'tests' && entry.name != 'javatests' && entry.name != 'testing' && + // The directory that containts end to end tests. + // Shoul be excluded from the licence checks. + entry.name != 'e2etests' && entry.name != '.dart_tool'; // Generated by various Dart tools, such as pub and // build_runner. Skip it because it does not contain // source code. From d323bace5f6f280e455fca1318e33753fe5ab6c9 Mon Sep 17 00:00:00 2001 From: gaaclarke <30870216+gaaclarke@users.noreply.github.com> Date: Fri, 6 Mar 2020 16:06:06 -0800 Subject: [PATCH 189/521] doxygen tooling updates and doxygen for FlutterCodecs.h (#16947) - added tools to help us document Flutter.framework for iOS - filled in FlutterCodecs.h's missing documentation --- shell/platform/darwin/Doxyfile | 2556 +++++++++++++++++ .../common/framework/Headers/FlutterCodecs.h | 59 +- .../platform/darwin/find-undocumented-ios.sh | 1 + 3 files changed, 2614 insertions(+), 2 deletions(-) create mode 100644 shell/platform/darwin/Doxyfile create mode 100755 shell/platform/darwin/find-undocumented-ios.sh diff --git a/shell/platform/darwin/Doxyfile b/shell/platform/darwin/Doxyfile new file mode 100644 index 0000000000000..6f9fb5ddbd453 --- /dev/null +++ b/shell/platform/darwin/Doxyfile @@ -0,0 +1,2556 @@ +# Doxyfile 1.8.17 + +############################################################################## +# This is a Doxyfile to help identify holes in iOS's Flutter.framework. +############################################################################## + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "Flutter.framework" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all generated output in the proper direction. +# Possible values are: None, LTR, RTL and Context. +# The default value is: None. + +OUTPUT_TEXT_DIRECTION = None + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines (in the resulting output). You can put ^^ in the value part of an +# alias to insert a newline as if a physical newline was in the original file. +# When you need a literal { or } or , in the value part of an alias you have to +# escape them by means of a backslash (\), this can lead to conflicts with the +# commands \{ and \} for these it is advised to use the version @{ and @} or use +# a double escape (\\{ and \\}) + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, +# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files), VHDL, tcl. For instance to make doxygen treat +# .inc files as Fortran files (default is PHP), and .f files as C (default is +# Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# (including Cygwin) ands Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. If +# EXTRACT_ALL is set to YES then this flag will automatically be disabled. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = common/framework/Headers \ + ios/framework/Headers + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: https://www.gnu.org/software/libiconv/) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), +# *.doc (to be provided as doxygen C comment), *.txt (to be provided as doxygen +# C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f, *.for, *.tcl, *.vhd, +# *.vhdl, *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.markdown \ + *.md \ + *.dox \ + *.doc \ + *.txt \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f \ + *.for \ + *.tcl \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.ice + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: https://developer.apple.com/xcode/), introduced with OSX +# 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. +# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/ + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /