From 5bfb2200b0e5a7981900a2811e7586c0f7773145 Mon Sep 17 00:00:00 2001 From: gaaclarke <30870216+gaaclarke@users.noreply.github.com> Date: Tue, 24 Oct 2023 14:08:45 -0700 Subject: [PATCH] Migrated away from UnmodifiableUint8ListView (flutter/engine#47276) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide] and the [C++, Objective-C, Java style guides]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I added new tests to check the change I am making or feature I am adding, or the PR is [test-exempt]. See [testing the engine] for instructions on writing and running engine tests. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I signed the [CLA]. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene [test-exempt]: https://github.com/flutter/flutter/wiki/Tree-hygiene#tests [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style [testing the engine]: https://github.com/flutter/flutter/wiki/Testing-the-engine [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/wiki/Chat --- engine/src/flutter/lib/ui/fixtures/ui_test.dart | 13 ++++++++++--- engine/src/flutter/lib/ui/platform_dispatcher.dart | 2 +- .../fuchsia/dart-pkg/zircon/test/zircon_tests.dart | 4 ++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/engine/src/flutter/lib/ui/fixtures/ui_test.dart b/engine/src/flutter/lib/ui/fixtures/ui_test.dart index dc4f75bb67f..7a79cda95ca 100644 --- a/engine/src/flutter/lib/ui/fixtures/ui_test.dart +++ b/engine/src/flutter/lib/ui/fixtures/ui_test.dart @@ -273,9 +273,16 @@ void platformMessagePortResponseTest() async { @pragma('vm:entry-point') void platformMessageResponseTest() { _callPlatformMessageResponseDart((ByteData? result) { - if (result is UnmodifiableByteDataView && - result.lengthInBytes == 100) { - _finishCallResponse(true); + if (result is ByteData && result.lengthInBytes == 100) { + int value = result.getInt8(0); + bool didThrowOnModify = false; + try { + result.setInt8(0, value); + } catch (e) { + didThrowOnModify = true; + } + // This should be a read only buffer. + _finishCallResponse(didThrowOnModify); } else { _finishCallResponse(false); } diff --git a/engine/src/flutter/lib/ui/platform_dispatcher.dart b/engine/src/flutter/lib/ui/platform_dispatcher.dart index 66e68b88be5..aac78856563 100644 --- a/engine/src/flutter/lib/ui/platform_dispatcher.dart +++ b/engine/src/flutter/lib/ui/platform_dispatcher.dart @@ -73,7 +73,7 @@ const String _kFlutterKeyDataChannel = 'flutter/keydata'; @pragma('vm:entry-point') ByteData? _wrapUnmodifiableByteData(ByteData? byteData) => - byteData == null ? null : UnmodifiableByteDataView(byteData); + byteData?.asUnmodifiableView(); /// A token that represents a root isolate. class RootIsolateToken { diff --git a/engine/src/flutter/shell/platform/fuchsia/dart-pkg/zircon/test/zircon_tests.dart b/engine/src/flutter/shell/platform/fuchsia/dart-pkg/zircon/test/zircon_tests.dart index a3760a20ccb..a0e380fb34d 100644 --- a/engine/src/flutter/shell/platform/fuchsia/dart-pkg/zircon/test/zircon_tests.dart +++ b/engine/src/flutter/shell/platform/fuchsia/dart-pkg/zircon/test/zircon_tests.dart @@ -589,7 +589,7 @@ void main() { expect(fileResult.status, equals(ZX.OK)); MapResult mapResult = System.vmoMap(fileResult.handle); expect(mapResult.status, equals(ZX.OK)); - Uint8List fileData = UnmodifiableUint8ListView(mapResult.data); + Uint8List fileData = mapResult.data.asUnmodifiableView(); String fileString = utf8.decode(fileData.sublist(0, fileResult.numBytes)); expect(fileString, equals(fuchsia)); }); @@ -610,7 +610,7 @@ void main() { // Read from the duplicate. MapResult mapResult = System.vmoMap(duplicate); expect(mapResult.status, equals(ZX.OK)); - Uint8List vmoData = UnmodifiableUint8ListView(mapResult.data); + Uint8List vmoData = mapResult.data.asUnmodifiableView(); String vmoString = utf8.decode(vmoData.sublist(0, data.length)); expect(vmoString, equals(fuchsia)); });