Revert "Replace deprecated onReportTimings w/ frameTimings (#38861)" (#39778)

This reverts commit 6ef80b447f.
This commit is contained in:
liyuqian 2019-09-05 09:58:08 -07:00 committed by GitHub
parent dd7694256e
commit 7c0dfd5362
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 41 additions and 19 deletions

View file

@ -202,10 +202,14 @@ mixin SchedulerBinding on BindingBase, ServicesBinding {
if (!kReleaseMode) {
int frameNumber = 0;
window.frameTimings.listen((FrameTiming frameTiming) {
// use frameTimings. https://github.com/flutter/flutter/issues/38838
// ignore: deprecated_member_use
window.onReportTimings = (List<FrameTiming> timings) {
for (FrameTiming frameTiming in timings) {
frameNumber += 1;
_profileFramePostEvent(frameNumber, frameTiming);
});
}
};
}
}

View file

@ -4,7 +4,7 @@
import 'dart:async';
import 'dart:developer' as developer;
import 'dart:ui' show AppLifecycleState, Locale, AccessibilityFeatures, FrameTiming;
import 'dart:ui' show AppLifecycleState, Locale, AccessibilityFeatures, FrameTiming, TimingsCallback;
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
@ -747,13 +747,25 @@ mixin WidgetsBinding on BindingBase, SchedulerBinding, GestureBinding, RendererB
if (_needToReportFirstFrame && _reportFirstFrame) {
assert(!_firstFrameCompleter.isCompleted);
WidgetsBinding.instance.window.frameTimings.first.then((FrameTiming _) {
// TODO(liyuqian): use a broadcast stream approach
// use frameTimings. https://github.com/flutter/flutter/issues/38838
// ignore: deprecated_member_use
final TimingsCallback oldCallback = WidgetsBinding.instance.window.onReportTimings;
// use frameTimings. https://github.com/flutter/flutter/issues/38838
// ignore: deprecated_member_use
WidgetsBinding.instance.window.onReportTimings = (List<FrameTiming> timings) {
if (!kReleaseMode) {
developer.Timeline.instantSync('Rasterized first useful frame');
developer.postEvent('Flutter.FirstFrame', <String, dynamic>{});
}
if (oldCallback != null) {
oldCallback(timings);
}
// use frameTimings. https://github.com/flutter/flutter/issues/38838
// ignore: deprecated_member_use
WidgetsBinding.instance.window.onReportTimings = oldCallback;
_firstFrameCompleter.complete();
});
};
}
try {

View file

@ -79,11 +79,12 @@ class TestServiceExtensionsBinding extends BindingBase
await flushMicrotasks();
if (ui.window.onDrawFrame != null)
ui.window.onDrawFrame();
final Future<ui.FrameTiming> firstFrameEventFired = window.frameTimings.first;
ui.window.debugReportTimings(<ui.FrameTiming>[
ui.FrameTiming(List<int>.filled(ui.FramePhase.values.length, 0)),
]);
await firstFrameEventFired;
// use frameTimings. https://github.com/flutter/flutter/issues/38838
// ignore: deprecated_member_use
if (ui.window.onReportTimings != null)
// use frameTimings. https://github.com/flutter/flutter/issues/38838
// ignore: deprecated_member_use
ui.window.onReportTimings(<ui.FrameTiming>[]);
}
@override

View file

@ -132,18 +132,15 @@ void main() {
});
test('Flutter.Frame event fired', () async {
// We can't use Future in scheduler_test so we'll use dynamic instead.
final dynamic firstFrameEventFired = window.frameTimings.first;
window.debugReportTimings(<FrameTiming>[FrameTiming(<int>[
// use frameTimings. https://github.com/flutter/flutter/issues/38838
// ignore: deprecated_member_use
window.onReportTimings(<FrameTiming>[FrameTiming(<int>[
// build start, build finish
10000, 15000,
// raster start, raster finish
16000, 20000,
])]);
await firstFrameEventFired;
final List<Map<String, dynamic>> events = scheduler.getEventsDispatched('Flutter.Frame');
expect(events, hasLength(1));

View file

@ -286,7 +286,15 @@ class TestWindow implements Window {
}
@override
Stream<FrameTiming> get frameTimings => _window.frameTimings;
// use frameTimings. https://github.com/flutter/flutter/issues/38838
// ignore: deprecated_member_use
TimingsCallback get onReportTimings => _window.onReportTimings;
@override
set onReportTimings(TimingsCallback callback) {
// use frameTimings. https://github.com/flutter/flutter/issues/38838
// ignore: deprecated_member_use
_window.onReportTimings = callback;
}
@override
PointerDataPacketCallback get onPointerDataPacket => _window.onPointerDataPacket;