diff --git a/DEPS b/DEPS index aa53109d7600c..8a44976a83ce9 100644 --- a/DEPS +++ b/DEPS @@ -18,11 +18,11 @@ vars = { 'llvm_git': 'https://llvm.googlesource.com', # OCMock is for testing only so there is no google clone 'ocmock_git': 'https://github.com/erikdoe/ocmock.git', - 'skia_revision': 'dfb838747295b9109343e6f536b25e9fa3fe933e', + 'skia_revision': '9e51c2c9e231cf1350a476c2b1695066144593ce', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. - 'canvaskit_cipd_instance': 'ztaLvbs5GPmlAwUosC7VVp7EQnNVknRpNuKdv7vmzaAC', + 'canvaskit_cipd_instance': '61aeJQ9laGfEFF_Vlc_u0MCkqB6xb2hAYHRBxKH-Uw4C', # Do not download the Emscripten SDK by default. # This prevents us from downloading the Emscripten toolchain for builds diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index e8e3db2b4f29d..3d14a7415debc 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: fa9e0cdd5cd2189db5a01faa94515a3d +Signature: 6fb22ea5d126038c1276ad346f1fb34b ==================================================================================================== LIBRARY: etc1 @@ -1216,7 +1216,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== LIBRARY: skia -ORIGIN: ../../../third_party/skia/include/gpu/GrConfig.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/gpu/GrTypes.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/core/SkImageInfo.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/core/SkRasterClip.cpp + ../../../third_party/skia/LICENSE @@ -1239,7 +1238,6 @@ ORIGIN: ../../../third_party/skia/src/gpu/ganesh/geometry/GrRect.h + ../../../th ORIGIN: ../../../third_party/skia/src/ports/SkDebug_win.cpp + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/text/gpu/Glyph.h + ../../../third_party/skia/LICENSE TYPE: LicenseType.bsd -FILE: ../../../third_party/skia/include/gpu/GrConfig.h FILE: ../../../third_party/skia/include/gpu/GrTypes.h FILE: ../../../third_party/skia/src/core/SkImageInfo.cpp FILE: ../../../third_party/skia/src/core/SkRasterClip.cpp @@ -8924,15 +8922,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================================================== LIBRARY: skia -ORIGIN: ../../../third_party/skia/include/private/SkDeque.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/include/private/SkMalloc.h + ../../../third_party/skia/LICENSE -ORIGIN: ../../../third_party/skia/include/private/SkTo.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/core/SkDiscardableMemory.h + ../../../third_party/skia/LICENSE ORIGIN: ../../../third_party/skia/src/core/SkFloatingPoint.cpp + ../../../third_party/skia/LICENSE TYPE: LicenseType.bsd -FILE: ../../../third_party/skia/include/private/SkDeque.h FILE: ../../../third_party/skia/include/private/SkMalloc.h -FILE: ../../../third_party/skia/include/private/SkTo.h FILE: ../../../third_party/skia/src/core/SkDiscardableMemory.h FILE: ../../../third_party/skia/src/core/SkFloatingPoint.cpp ---------------------------------------------------------------------------------------------------- diff --git a/lib/web_ui/dev/canvaskit_lock.yaml b/lib/web_ui/dev/canvaskit_lock.yaml index 251e759555951..ab4826af1a057 100644 --- a/lib/web_ui/dev/canvaskit_lock.yaml +++ b/lib/web_ui/dev/canvaskit_lock.yaml @@ -1,4 +1,4 @@ # Specifies the version of CanvasKit to use for Flutter Web apps. # # See `lib/web_ui/README.md` for how to update this file. -canvaskit_version: "0.37.1" +canvaskit_version: "0.38.0" diff --git a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart index fc226bfa7632f..28bcd04e85294 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart @@ -2167,6 +2167,16 @@ extension SkLineMetricsExtension on SkLineMetrics { external double get lineNumber; } +@JS() +@anonymous +@staticInterop +class SkRectWithDirection {} + +extension SkRectWithDirectionExtension on SkRectWithDirection { + external Float32List rect; + external SkTextDirection dir; +} + @JS() @anonymous @staticInterop @@ -2182,13 +2192,13 @@ extension SkParagraphExtension on SkParagraph { external double getMaxIntrinsicWidth(); external double getMinIntrinsicWidth(); external double getMaxWidth(); - external /* List */ List getRectsForRange( + external /* List */ List getRectsForRange( int start, int end, SkRectHeightStyle heightStyle, SkRectWidthStyle widthStyle, ); - external /* List */ List getRectsForPlaceholders(); + external /* List */ List getRectsForPlaceholders(); external SkTextPosition getGlyphPositionAtCoordinate( double x, double y, diff --git a/lib/web_ui/lib/src/engine/canvaskit/text.dart b/lib/web_ui/lib/src/engine/canvaskit/text.dart index 0828763cdb531..11096a8fd2782 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/text.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/text.dart @@ -7,7 +7,6 @@ import 'dart:typed_data'; import 'package:meta/meta.dart'; import 'package:ui/ui.dart' as ui; -import '../safe_browser_api.dart'; import '../util.dart'; import 'canvaskit_api.dart'; import 'font_fallbacks.dart'; @@ -631,7 +630,7 @@ class CkParagraph extends SkiaObject implements ui.Paragraph { _width = paragraph.getMaxWidth(); _boxesForPlaceholders = skRectsToTextBoxes( - paragraph.getRectsForPlaceholders().cast()); + paragraph.getRectsForPlaceholders().cast()); } catch (e) { printWarning('CanvasKit threw an exception while laying ' 'out the paragraph. The font was "${_paragraphStyle._fontFamily}". ' @@ -732,23 +731,23 @@ class CkParagraph extends SkiaObject implements ui.Paragraph { } final SkParagraph paragraph = _ensureInitialized(_lastLayoutConstraints!); - final List skRects = paragraph.getRectsForRange( + final List skRects = paragraph.getRectsForRange( start, end, toSkRectHeightStyle(boxHeightStyle), toSkRectWidthStyle(boxWidthStyle), - ).cast(); + ).cast(); return skRectsToTextBoxes(skRects); } - List skRectsToTextBoxes(List skRects) { + List skRectsToTextBoxes(List skRects) { final List result = []; for (int i = 0; i < skRects.length; i++) { - final Float32List rect = skRects[i]; - final int skTextDirection = - getJsProperty(getJsProperty(rect, 'direction'), 'value'); + final SkRectWithDirection skRect = skRects[i]; + final Float32List rect = skRect.rect; + final int skTextDirection = skRect.dir.value.toInt(); result.add(ui.TextBox.fromLTRBD( rect[0], rect[1], diff --git a/lib/web_ui/lib/src/engine/configuration.dart b/lib/web_ui/lib/src/engine/configuration.dart index 1e89528992962..e1e16cae5dd8b 100644 --- a/lib/web_ui/lib/src/engine/configuration.dart +++ b/lib/web_ui/lib/src/engine/configuration.dart @@ -51,7 +51,7 @@ import 'dom.dart'; /// The version of CanvasKit used by the web engine by default. // DO NOT EDIT THE NEXT LINE OF CODE MANUALLY // See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. -const String _canvaskitVersion = '0.37.1'; +const String _canvaskitVersion = '0.38.0'; /// The Web Engine configuration for the current application. FlutterConfiguration get configuration => diff --git a/lib/web_ui/test/canvaskit/canvaskit_api_test.dart b/lib/web_ui/test/canvaskit/canvaskit_api_test.dart index cd76ddcbeb7af..2eedcc1d6891f 100644 --- a/lib/web_ui/test/canvaskit/canvaskit_api_test.dart +++ b/lib/web_ui/test/canvaskit/canvaskit_api_test.dart @@ -1669,8 +1669,14 @@ void _paragraphTests() { expectAlmost(paragraph.getMaxIntrinsicWidth(), 263); expectAlmost(paragraph.getMinIntrinsicWidth(), 135); expectAlmost(paragraph.getMaxWidth(), 500); + final SkRectWithDirection rectWithDirection = + paragraph.getRectsForRange( + 1, + 3, + canvasKit.RectHeightStyle.Tight, + canvasKit.RectWidthStyle.Max).single! as SkRectWithDirection; expect( - paragraph.getRectsForRange(1, 3, canvasKit.RectHeightStyle.Tight, canvasKit.RectWidthStyle.Max).single, + rectWithDirection.rect, hasLength(4), ); expect(paragraph.getRectsForPlaceholders(), hasLength(1)); @@ -1739,17 +1745,15 @@ void _paragraphTests() { final SkParagraph paragraph = builder.build(); paragraph.layout(500); - expect( - paragraph.getRectsForRange( - 0, - 1, - canvasKit.RectHeightStyle.Strut, - canvasKit.RectWidthStyle.Tight, - ), - >[ - [0, 0, 13.770000457763672, 75], - ], - ); + final List rects = paragraph.getRectsForRange( + 0, + 1, + canvasKit.RectHeightStyle.Strut, + canvasKit.RectWidthStyle.Tight, + ).cast(); + expect(rects.length, 1); + final SkRectWithDirection rect = rects.first; + expect(rect.rect, [0, 0, 13.770000457763672, 75]); }); test('TextHeightBehavior', () {