Skip to content

Commit b96e95d

Browse files
mkustermannharryterkelsen
authored andcommitted
Use utf8.encode() instead of longer const Utf8Encoder.convert() (flutter#43675)
The change in [0] has propagated now everywhere, so we can use `utf8.encode()` instead of the longer `const Utf8Encoder.convert()`. Also it cleans up code like ``` Uint8List bytes; bytes.buffer.asByteData(); ``` as that is not guaranteed to be correct, the correct version would be ``` Uint8List bytes; bytes.buffer.asByteData(bytes.offsetInBytes, bytes.length); ``` a shorter hand for that is: ``` Uint8List bytes; ByteData.sublistView(bytes); ``` [0] dart-lang/sdk#52801
1 parent 76dd542 commit b96e95d

File tree

22 files changed

+41
-49
lines changed

22 files changed

+41
-49
lines changed

lib/ui/text.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3338,7 +3338,7 @@ Future<void> loadFontFromList(Uint8List list, {String? fontFamily}) {
33383338
).then((_) => _sendFontChangeMessage());
33393339
}
33403340

3341-
final ByteData _fontChangeMessage = utf8.encoder.convert(
3341+
final ByteData _fontChangeMessage = utf8.encode(
33423342
json.encode(<String, Object?>{'type': 'fontsChange'})
33433343
).buffer.asByteData();
33443344

lib/web_ui/lib/src/engine/platform_dispatcher.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1001,7 +1001,7 @@ class EnginePlatformDispatcher extends ui.PlatformDispatcher {
10011001
void _setAppLifecycleState(ui.AppLifecycleState state) {
10021002
sendPlatformMessage(
10031003
'flutter/lifecycle',
1004-
Uint8List.fromList(utf8.encode(state.toString())).buffer.asByteData(),
1004+
ByteData.sublistView(utf8.encode(state.toString())),
10051005
null,
10061006
);
10071007
}

lib/web_ui/lib/src/engine/services/message_codecs.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class StringCodec implements MessageCodec<String> {
3939

4040
@override
4141
ByteData encodeMessage(String message) {
42-
final Uint8List encoded = utf8.encoder.convert(message);
42+
final Uint8List encoded = utf8.encode(message);
4343
return encoded.buffer.asByteData();
4444
}
4545
}
@@ -320,7 +320,7 @@ class StandardMessageCodec implements MessageCodec<dynamic> {
320320
}
321321
} else if (value is String) {
322322
buffer.putUint8(_valueString);
323-
final List<int> bytes = utf8.encoder.convert(value);
323+
final List<int> bytes = utf8.encode(value);
324324
writeSize(buffer, bytes.length);
325325
buffer.putUint8List(bytes as Uint8List);
326326
} else if (value is Uint8List) {

lib/web_ui/lib/src/engine/skwasm/skwasm_impl/raw/raw_memory.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ external void stackRestore(StackPointer pointer);
2626

2727
class StackScope {
2828
Pointer<Int8> convertStringToNative(String string) {
29-
final Utf8Encoder utf8Encoder = utf8.encoder;
30-
final Uint8List encoded = utf8Encoder.convert(string);
29+
final Uint8List encoded = utf8.encode(string);
3130
final Pointer<Int8> pointer = allocInt8Array(encoded.length + 1);
3231
for (int i = 0; i < encoded.length; i++) {
3332
pointer[i] = encoded[i];

lib/web_ui/lib/ui_web/src/ui_web/asset_manager.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class AssetManager {
9292

9393
if (response.status == 404 && asset == 'AssetManifest.json') {
9494
printWarning('Asset manifest does not exist at `$url` - ignoring.');
95-
return Uint8List.fromList(utf8.encode('{}')).buffer.asByteData();
95+
return ByteData.sublistView(utf8.encode('{}'));
9696
}
9797

9898
return (await response.payload.asByteBuffer()).asByteData();

lib/web_ui/test/canvaskit/fragment_program_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ void testMain() {
186186
});
187187

188188
test('FragmentProgram can be created from JSON IPLR bundle', () {
189-
final Uint8List data = const Utf8Encoder().convert(kJsonIPLR);
189+
final Uint8List data = utf8.encode(kJsonIPLR);
190190
final CkFragmentProgram program = CkFragmentProgram.fromBytes('test', data);
191191

192192
expect(program.effect, isNotNull);

lib/web_ui/test/common/fake_asset_manager.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ class FakeAssetScope {
9090
FakeAssetManager fakeAssetManager = FakeAssetManager();
9191

9292
ByteData stringAsUtf8Data(String string) {
93-
return ByteData.view(Uint8List.fromList(utf8.encode(string)).buffer);
93+
return ByteData.sublistView(utf8.encode(string));
9494
}
9595

9696
const String ahemFontFamily = 'Ahem';

lib/web_ui/test/engine/channel_buffers_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ void main() {
2323
}
2424

2525
ByteData _makeByteData(String str) {
26-
final Uint8List list = const Utf8Encoder().convert(str);
26+
final Uint8List list = utf8.encode(str);
2727
final ByteBuffer buffer = list.buffer;
2828
return ByteData.view(buffer);
2929
}

lib/web_ui/test/ui/fragment_shader_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ Future<void> testMain() async {
5353
assetScope = fakeAssetManager.pushAssetScope();
5454
assetScope.setAsset(
5555
'voronoi_shader',
56-
Uint8List.fromList(utf8.encode(kVoronoiShaderSksl)).buffer.asByteData()
56+
ByteData.sublistView(utf8.encode(kVoronoiShaderSksl))
5757
);
5858
});
5959

lib/web_ui/test/ui/image_golden_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Future<void> testMain() async {
6969
assetScope = fakeAssetManager.pushAssetScope();
7070
assetScope.setAsset(
7171
'glitch_shader',
72-
Uint8List.fromList(utf8.encode(kGlitchShaderSksl)).buffer.asByteData()
72+
ByteData.sublistView(utf8.encode(kGlitchShaderSksl))
7373
);
7474
});
7575

shell/common/fixtures/shell_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ void testSkiaResourceCacheSendsResponse() {
167167
}''';
168168
PlatformDispatcher.instance.sendPlatformMessage(
169169
'flutter/skia',
170-
Uint8List.fromList(utf8.encode(jsonRequest)).buffer.asByteData(),
170+
ByteData.sublistView(utf8.encode(jsonRequest)),
171171
callback,
172172
);
173173
}
@@ -294,7 +294,7 @@ void canAccessResourceFromAssetDir() async {
294294
notifySetAssetBundlePath();
295295
window.sendPlatformMessage(
296296
'flutter/assets',
297-
Uint8List.fromList(utf8.encode('kernel_blob.bin')).buffer.asByteData(),
297+
ByteData.sublistView(utf8.encode('kernel_blob.bin')),
298298
(ByteData? byteData) {
299299
notifyCanAccessResource(byteData != null);
300300
},

shell/platform/fuchsia/dart-pkg/zircon/test/zircon_tests.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import 'package:litetest/litetest.dart';
1313
/// Helper method to turn a [String] into a [ByteData] containing the
1414
/// text of the string encoded as UTF-8.
1515
ByteData utf8Bytes(final String text) {
16-
return ByteData.view(Uint8List.fromList(utf8.encode(text)).buffer);
16+
return ByteData.sublistView(utf8.encode(text));
1717
}
1818

1919
// Take from zircon constants in zircon/errors.h, zircon/rights.h, zircon/types.h

shell/platform/fuchsia/flutter/tests/integration/embedder/parent-view/lib/parent_view.dart

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -169,13 +169,11 @@ class ChildView {
169169
],
170170
};
171171

172-
final ByteData createViewMessage = utf8.encoder
173-
.convert(json.encode(<String, Object>{
174-
'method': 'View.create',
175-
'args': args,
176-
}))
177-
.buffer
178-
.asByteData();
172+
final ByteData createViewMessage =
173+
ByteData.sublistView(utf8.encode(json.encode(<String, Object>{
174+
'method': 'View.create',
175+
'args': args,
176+
})));
179177

180178
final platformViewsChannel = 'flutter/platform_views';
181179

shell/platform/fuchsia/flutter/tests/integration/mouse-input/mouse-input-view/lib/mouse-input-view.dart

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -108,20 +108,17 @@ class MyApp {
108108
double wheelXPhysicalPixel,
109109
double wheelYPhysicalPixel}) {
110110
print('mouse-input-view reporting mouse input to MouseInputListener');
111-
final message = utf8.encoder
112-
.convert(json.encode({
113-
'method': 'MouseInputListener.ReportMouseInput',
114-
'local_x': localX,
115-
'local_y': localY,
116-
'time_received': timeReceived,
117-
'component_name': 'touch-input-view',
118-
'buttons': buttons,
119-
'phase': 'asdf',
120-
'wheel_x_physical_pixel': wheelXPhysicalPixel,
121-
'wheel_y_physical_pixel': wheelYPhysicalPixel,
122-
}))
123-
.buffer
124-
.asByteData();
111+
final message = ByteData.sublistView(utf8.encode(json.encode({
112+
'method': 'MouseInputListener.ReportMouseInput',
113+
'local_x': localX,
114+
'local_y': localY,
115+
'time_received': timeReceived,
116+
'component_name': 'touch-input-view',
117+
'buttons': buttons,
118+
'phase': 'asdf',
119+
'wheel_x_physical_pixel': wheelXPhysicalPixel,
120+
'wheel_y_physical_pixel': wheelYPhysicalPixel,
121+
})));
125122
PlatformDispatcher.instance
126123
.sendPlatformMessage('fuchsia/input_test', message, null);
127124
}

shell/platform/fuchsia/flutter/tests/integration/text-input/text-input-view/lib/text_input_view.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ class TestApp {
9191
void _reportTextInput(String text) {
9292
print('text-input-view reporting keyboard input to KeyboardInputListener');
9393

94-
final message = utf8.encoder.convert(json.encode({
94+
final message = utf8.encode(json.encode({
9595
'method': 'KeyboardInputListener.ReportTextInput',
9696
'text': text,
9797
})).buffer.asByteData();

shell/platform/fuchsia/flutter/tests/integration/touch-input/embedding-flutter-view/lib/embedding-flutter-view.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ class TestApp {
168168

169169
void _reportTouchInput({double localX, double localY, int timeReceived}) {
170170
print('embedding-flutter-view reporting touch input to TouchInputListener');
171-
final message = utf8.encoder.convert(json.encode({
171+
final message = utf8.encode(json.encode({
172172
'method': 'TouchInputListener.ReportTouchInput',
173173
'local_x': localX,
174174
'local_y': localY,
@@ -204,7 +204,7 @@ class ChildView {
204204
],
205205
};
206206

207-
final ByteData createViewMessage = utf8.encoder.convert(
207+
final ByteData createViewMessage = utf8.encode(
208208
json.encode(<String, Object>{
209209
'method': 'View.create',
210210
'args': args,

shell/platform/fuchsia/flutter/tests/integration/touch-input/touch-input-view/lib/touch-input-view.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ class TestApp {
8282

8383
void _reportTouchInput({double localX, double localY, int timeReceived}) {
8484
print('touch-input-view reporting touch input to TouchInputListener');
85-
final message = utf8.encoder.convert(json.encode({
85+
final message = utf8.encode(json.encode({
8686
'method': 'TouchInputListener.ReportTouchInput',
8787
'local_x': localX,
8888
'local_y': localY,

shell/platform/windows/fixtures/main.dart

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ void exitTestExit() async {
9292
final Completer<ByteData?> closed = Completer<ByteData?>();
9393
ui.channelBuffers.setListener('flutter/platform', (ByteData? data, ui.PlatformMessageResponseCallback callback) async {
9494
final String jsonString = json.encode(<Map<String, String>>[{'response': 'exit'}]);
95-
final ByteData responseData = ByteData.sublistView(Uint8List.fromList(utf8.encode(jsonString)));
95+
final ByteData responseData = ByteData.sublistView(utf8.encode(jsonString));
9696
callback(responseData);
9797
closed.complete(data);
9898
});
@@ -104,7 +104,7 @@ void exitTestCancel() async {
104104
final Completer<ByteData?> closed = Completer<ByteData?>();
105105
ui.channelBuffers.setListener('flutter/platform', (ByteData? data, ui.PlatformMessageResponseCallback callback) async {
106106
final String jsonString = json.encode(<Map<String, String>>[{'response': 'cancel'}]);
107-
final ByteData responseData = ByteData.sublistView(Uint8List.fromList(utf8.encode(jsonString)));
107+
final ByteData responseData = ByteData.sublistView(utf8.encode(jsonString));
108108
callback(responseData);
109109
closed.complete(data);
110110
});
@@ -120,9 +120,7 @@ void exitTestCancel() async {
120120
});
121121
ui.PlatformDispatcher.instance.sendPlatformMessage(
122122
'flutter/platform',
123-
ByteData.sublistView(
124-
Uint8List.fromList(utf8.encode(jsonString))
125-
),
123+
ByteData.sublistView(utf8.encode(jsonString)),
126124
(ByteData? reply) {
127125
exited.complete(reply);
128126
});

testing/dart/assets_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ void main() {
6868

6969
test('Tester can still load through dart:ui', () async {
7070
/// Manually load font asset through dart.
71-
final Uint8List encoded = utf8.encoder.convert(Uri(path: Uri.encodeFull('Roboto-Medium.ttf')).path);
71+
final Uint8List encoded = utf8.encode(Uri(path: Uri.encodeFull('Roboto-Medium.ttf')).path);
7272
final Completer<Uint8List> result = Completer<Uint8List>();
7373
PlatformDispatcher.instance.sendPlatformMessage('flutter/assets', encoded.buffer.asByteData(), (ByteData? data) {
7474
result.complete(data!.buffer.asUint8List());

testing/dart/channel_buffers_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import 'dart:ui' as ui;
1212
import 'package:litetest/litetest.dart';
1313

1414
ByteData _makeByteData(String str) {
15-
final Uint8List list = const Utf8Encoder().convert(str);
15+
final Uint8List list = utf8.encode(str);
1616
final ByteBuffer buffer = list.buffer;
1717
return ByteData.view(buffer);
1818
}

testing/scenario_app/lib/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ void _handleDriverMessage(ByteData? data, PlatformMessageResponseCallback? callb
5656

5757
Future<void> _handleWriteTimelineMessage(ByteData? data, PlatformMessageResponseCallback? callback) async {
5858
final String timelineData = await _getTimelineData();
59-
callback!(Uint8List.fromList(utf8.encode(timelineData)).buffer.asByteData());
59+
callback!(ByteData.sublistView(utf8.encode(timelineData)));
6060
}
6161

6262
Future<String> _getTimelineData() async {

testing/scenario_app/lib/src/channel_util.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ void sendJsonMessage({
3535
channel,
3636
// This recreates a combination of OptionalMethodChannel, JSONMethodCodec,
3737
// and _DefaultBinaryMessenger in the framework.
38-
utf8.encoder.convert(
38+
utf8.encode(
3939
const JsonCodec().encode(json)
4040
).buffer.asByteData(),
4141
callback,

0 commit comments

Comments
 (0)