mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Using it, a Flutter app can monitor missing frames in the release mode, and a custom Flutter runner (e.g., Fuchsia) can add a custom FrameRasterizedCallback. Related issues: https://github.com/flutter/flutter/issues/26154 https://github.com/flutter/flutter/issues/31444 https://github.com/flutter/flutter/issues/32447 Need review as soon as possible so we can merge this before the end of May to catch the milestone. Tests added: * NoNeedToReportTimingsByDefault * NeedsReportTimingsIsSetWithCallback * ReportTimingsIsCalled * FrameRasterizedCallbackIsCalled * FrameTimingSetsAndGetsProperly * onReportTimings preserves callback zone * FrameTiming.toString has the correct format This will need a manual engine roll as the TestWindow defined in the framework needs to implement onReportTimings.
28 lines
909 B
Dart
28 lines
909 B
Dart
// 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:async';
|
|
import 'dart:typed_data';
|
|
import 'dart:ui';
|
|
|
|
import 'package:test/test.dart';
|
|
|
|
void main() {
|
|
test('window.sendPlatformMessage preserves callback zone', () {
|
|
runZoned(() {
|
|
final Zone innerZone = Zone.current;
|
|
window.sendPlatformMessage('test', ByteData.view(Uint8List(0).buffer), expectAsync1((ByteData data) {
|
|
final Zone runZone = Zone.current;
|
|
expect(runZone, isNotNull);
|
|
expect(runZone, same(innerZone));
|
|
}));
|
|
});
|
|
});
|
|
|
|
test('FrameTiming.toString has the correct format', () {
|
|
FrameTiming timing = FrameTiming(<int>[1000, 8000, 9000, 19500]);
|
|
expect(timing.toString(), 'FrameTiming(buildDuration: 7.0ms, rasterDuration: 10.5ms, totalSpan: 18.5ms)');
|
|
});
|
|
}
|