Skip to content

Commit 7df2085

Browse files
authored
[web] Removes a few deprecated API usages. (#6177)
This PR removes a bunch of deprecated APIs from the following packages: * `web_benchmarks` * `file_selector_web` * `cross_file` * `image_picker_platform_interface` ## Issues * Fixes flutter/flutter#143113 * Fixes flutter/flutter#143399 * Fixes flutter/flutter#143878 * Fixes flutter/flutter#143892 * Closes #5248
1 parent 67470fc commit 7df2085

File tree

17 files changed

+67
-43
lines changed

17 files changed

+67
-43
lines changed

packages/cross_file/CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.3.4+1
2+
3+
* Removes a few deprecated API usages.
4+
15
## 0.3.4
26

37
* Updates to web code to package `web: ^0.5.0`.

packages/cross_file/lib/src/types/html.dart

+20-16
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import 'dart:js_interop';
88
import 'dart:typed_data';
99

1010
import 'package:meta/meta.dart';
11-
import 'package:web/helpers.dart';
11+
import 'package:web/web.dart';
1212

1313
import '../web_helpers/web_helpers.dart';
1414
import 'base.dart';
@@ -133,22 +133,26 @@ class XFile extends XFileBase {
133133
throw Exception('Safari cannot handle XFiles larger than 4GB.');
134134
}
135135

136-
late XMLHttpRequest request;
137-
try {
138-
request = await HttpRequest.request(path, responseType: 'blob');
139-
} on ProgressEvent catch (e) {
140-
if (e.type == 'error') {
141-
throw Exception(
142-
'Could not load Blob from its URL. Has it been revoked?');
143-
}
144-
rethrow;
145-
}
146-
147-
_browserBlob = request.response as Blob?;
136+
final Completer<Blob> blobCompleter = Completer<Blob>();
148137

149-
assert(_browserBlob != null, 'The Blob backing this XFile cannot be null!');
150-
151-
return _browserBlob!;
138+
late XMLHttpRequest request;
139+
request = XMLHttpRequest()
140+
..open('get', path, true)
141+
..responseType = 'blob'
142+
..onLoad.listen((ProgressEvent e) {
143+
assert(request.response != null,
144+
'The Blob backing this XFile cannot be null!');
145+
blobCompleter.complete(request.response! as Blob);
146+
})
147+
..onError.listen((ProgressEvent e) {
148+
if (e.type == 'error') {
149+
blobCompleter.completeError(Exception(
150+
'Could not load Blob from its URL. Has it been revoked?'));
151+
}
152+
})
153+
..send();
154+
155+
return blobCompleter.future;
152156
}
153157

154158
@override

packages/cross_file/lib/src/web_helpers/web_helpers.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'package:web/helpers.dart';
5+
import 'package:web/web.dart';
66

77
/// Create anchor element with download attribute
88
HTMLAnchorElement createAnchorElement(String href, String? suggestedName) =>
@@ -20,11 +20,11 @@ void addElementToContainerAndClick(Element container, HTMLElement element) {
2020

2121
/// Initializes a DOM container where elements can be injected.
2222
Element ensureInitialized(String id) {
23-
Element? target = querySelector('#$id');
23+
Element? target = document.querySelector('#$id');
2424
if (target == null) {
2525
final Element targetElement = document.createElement('flt-x-file')..id = id;
2626

27-
querySelector('body')!.appendChild(targetElement);
27+
document.body!.appendChild(targetElement);
2828
target = targetElement;
2929
}
3030
return target;

packages/cross_file/pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: cross_file
22
description: An abstraction to allow working with files across multiple platforms.
33
repository: https://github.com/flutter/packages/tree/main/packages/cross_file
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+cross_file%22
5-
version: 0.3.4
5+
version: 0.3.4+1
66

77
environment:
88
sdk: ^3.3.0

packages/cross_file/test/x_file_html_test.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import 'dart:typed_data';
1111

1212
import 'package:cross_file/cross_file.dart';
1313
import 'package:test/test.dart';
14-
import 'package:web/helpers.dart' as html;
14+
import 'package:web/web.dart' as html;
1515

1616
const String expectedStringContents = 'Hello, world! I ❤ ñ! 空手';
1717
final Uint8List bytes = Uint8List.fromList(utf8.encode(expectedStringContents));
@@ -95,7 +95,7 @@ void main() {
9595
await file.saveTo('');
9696

9797
final html.Element? container =
98-
html.querySelector('#$crossFileDomElementId');
98+
html.document.querySelector('#$crossFileDomElementId');
9999

100100
expect(container, isNotNull);
101101
});
@@ -106,7 +106,7 @@ void main() {
106106
await file.saveTo('path');
107107

108108
final html.Element container =
109-
html.querySelector('#$crossFileDomElementId')!;
109+
html.document.querySelector('#$crossFileDomElementId')!;
110110

111111
late html.HTMLAnchorElement element;
112112
for (int i = 0; i < container.childNodes.length; i++) {

packages/file_selector/file_selector_web/CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.9.4+1
2+
3+
* Removes a few deprecated API usages.
4+
15
## 0.9.4
26

37
* Updates web code to package `web: ^0.5.0`.

packages/file_selector/file_selector_web/example/integration_test/dom_helper_test.dart

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import 'package:file_selector_platform_interface/file_selector_platform_interfac
88
import 'package:file_selector_web/src/dom_helper.dart';
99
import 'package:flutter_test/flutter_test.dart';
1010
import 'package:integration_test/integration_test.dart';
11-
import 'package:web/helpers.dart';
11+
import 'package:web/web.dart';
1212

1313
void main() {
1414
group('dom_helper', () {
@@ -41,7 +41,8 @@ void main() {
4141

4242
setUp(() {
4343
domHelper = DomHelper();
44-
input = (createElementTag('input') as HTMLInputElement)..type = 'file';
44+
input = (document.createElement('input') as HTMLInputElement)
45+
..type = 'file';
4546
});
4647

4748
group('getFiles', () {

packages/file_selector/file_selector_web/example/integration_test/file_selector_web_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import 'package:file_selector_web/file_selector_web.dart';
99
import 'package:file_selector_web/src/dom_helper.dart';
1010
import 'package:flutter_test/flutter_test.dart';
1111
import 'package:integration_test/integration_test.dart';
12-
import 'package:web/helpers.dart';
12+
import 'package:web/web.dart';
1313

1414
void main() {
1515
group('FileSelectorWeb', () {

packages/file_selector/file_selector_web/lib/src/dom_helper.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import 'dart:js_interop';
88
import 'package:file_selector_platform_interface/file_selector_platform_interface.dart';
99
import 'package:flutter/foundation.dart' show visibleForTesting;
1010
import 'package:flutter/services.dart';
11-
import 'package:web/helpers.dart';
11+
import 'package:web/web.dart';
1212

1313
/// Class to manipulate the DOM with the intention of reading files from it.
1414
class DomHelper {

packages/file_selector/file_selector_web/pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: file_selector_web
22
description: Web platform implementation of file_selector
33
repository: https://github.com/flutter/packages/tree/main/packages/file_selector/file_selector_web
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+file_selector%22
5-
version: 0.9.4
5+
version: 0.9.4+1
66

77
environment:
88
sdk: ^3.3.0

packages/image_picker/image_picker_platform_interface/CHANGELOG.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
## NEXT
1+
## 2.9.4
22

3-
* Updates minimum supported SDK version to Flutter 3.13/Dart 3.1.
3+
* Updates minimum supported SDK version to Flutter 3.19/Dart 3.3.
4+
* Removes a few deprecated API usages.
45

56
## 2.9.3
67

packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/html.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class PickedFile extends PickedFileBase {
2727

2828
Future<Uint8List> get _bytes async {
2929
if (_initBytes != null) {
30-
return Future<Uint8List>.value(UnmodifiableUint8ListView(_initBytes!));
30+
return _initBytes.asUnmodifiableView();
3131
}
3232
return http.readBytes(Uri.parse(path));
3333
}

packages/image_picker/image_picker_platform_interface/pubspec.yaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ repository: https://github.com/flutter/packages/tree/main/packages/image_picker/
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+image_picker%22
55
# NOTE: We strongly prefer non-breaking changes, even at the expense of a
66
# less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
7-
version: 2.9.3
7+
version: 2.9.4
88

99
environment:
10-
sdk: ^3.1.0
11-
flutter: ">=3.13.0"
10+
sdk: ^3.3.0
11+
flutter: ">=3.19.0"
1212

1313
dependencies:
1414
cross_file: ^0.3.1+1

packages/web_benchmarks/CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 1.2.1
2+
3+
* Removes a few deprecated API usages.
4+
15
## 1.2.0
26

37
* Updates to web code to package `web: ^0.5.0`.

packages/web_benchmarks/lib/client.dart

+10-6
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ class LocalBenchmarkServerClient {
318318
/// DevTools Protocol.
319319
Future<void> startPerformanceTracing(String? benchmarkName) async {
320320
_checkNotManualMode();
321-
await HttpRequest.request(
321+
await _requestXhr(
322322
'/start-performance-tracing?label=$benchmarkName',
323323
method: 'POST',
324324
mimeType: 'application/json',
@@ -328,7 +328,7 @@ class LocalBenchmarkServerClient {
328328
/// Stops the performance tracing session started by [startPerformanceTracing].
329329
Future<void> stopPerformanceTracing() async {
330330
_checkNotManualMode();
331-
await HttpRequest.request(
331+
await _requestXhr(
332332
'/stop-performance-tracing',
333333
method: 'POST',
334334
mimeType: 'application/json',
@@ -356,7 +356,7 @@ class LocalBenchmarkServerClient {
356356
/// The server will halt the devicelab task and log the error.
357357
Future<void> reportError(dynamic error, StackTrace stackTrace) async {
358358
_checkNotManualMode();
359-
await HttpRequest.request(
359+
await _requestXhr(
360360
'/on-error',
361361
method: 'POST',
362362
mimeType: 'application/json',
@@ -370,7 +370,7 @@ class LocalBenchmarkServerClient {
370370
/// Reports a message about the demo to the benchmark server.
371371
Future<void> printToConsole(String report) async {
372372
_checkNotManualMode();
373-
await HttpRequest.request(
373+
await _requestXhr(
374374
'/print-to-console',
375375
method: 'POST',
376376
mimeType: 'text/plain',
@@ -384,7 +384,7 @@ class LocalBenchmarkServerClient {
384384
String url, {
385385
required String method,
386386
required String mimeType,
387-
required String sendData,
387+
String? sendData,
388388
}) {
389389
final Completer<XMLHttpRequest> completer = Completer<XMLHttpRequest>();
390390
final XMLHttpRequest xhr = XMLHttpRequest();
@@ -394,7 +394,11 @@ class LocalBenchmarkServerClient {
394394
completer.complete(xhr);
395395
});
396396
xhr.onError.listen(completer.completeError);
397-
xhr.send(sendData.toJS);
397+
if (sendData != null) {
398+
xhr.send(sendData.toJS);
399+
} else {
400+
xhr.send();
401+
}
398402
return completer.future;
399403
}
400404
}

packages/web_benchmarks/lib/src/recorder.dart

+4-1
Original file line numberDiff line numberDiff line change
@@ -248,14 +248,17 @@ abstract class SceneBuilderRecorder extends Recorder {
248248
}
249249
};
250250
PlatformDispatcher.instance.onDrawFrame = () {
251+
final FlutterView? view = PlatformDispatcher.instance.implicitView;
251252
try {
252253
_profile.record('drawFrameDuration', () {
253254
final SceneBuilder sceneBuilder = SceneBuilder();
254255
onDrawFrame(sceneBuilder);
255256
_profile.record('sceneBuildDuration', () {
256257
final Scene scene = sceneBuilder.build();
257258
_profile.record('windowRenderDuration', () {
258-
window.render(scene);
259+
assert(view != null,
260+
'Cannot profile windowRenderDuration on a null View.');
261+
view!.render(scene);
259262
}, reported: false);
260263
}, reported: false);
261264
}, reported: true);

packages/web_benchmarks/pubspec.yaml

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: web_benchmarks
22
description: A benchmark harness for performance-testing Flutter apps in Chrome.
33
repository: https://github.com/flutter/packages/tree/main/packages/web_benchmarks
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+web_benchmarks%22
5-
version: 1.2.0
5+
version: 1.2.1
66

77
environment:
88
sdk: ^3.3.0
@@ -14,7 +14,6 @@ dependencies:
1414
sdk: flutter
1515
flutter_test:
1616
sdk: flutter
17-
http: ^1.0.0
1817
logging: ^1.0.2
1918
meta: ^1.7.0
2019
path: ^1.8.0

0 commit comments

Comments
 (0)