blob: 72d4e2523aa595f2cd3bf1762f96e81b43bf1634 [file] [log] [blame]
// Copyright 2014 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:ui';
import 'package:fake_async/fake_async.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
test('Deferred frames will trigger the first frame callback', () {
FakeAsync().run((FakeAsync fakeAsync) {
final WidgetsBinding binding = WidgetsFlutterBinding.ensureInitialized();
binding.deferFirstFrame();
runApp(const Placeholder());
fakeAsync.flushTimers();
// Simulates the engine completing a frame render to trigger the
// appropriate callback setting [WidgetBinding.firstFrameRasterized].
binding.window.onReportTimings!(<FrameTiming>[]);
expect(binding.firstFrameRasterized, isFalse);
binding.allowFirstFrame();
fakeAsync.flushTimers();
// Simulates the engine again.
binding.window.onReportTimings!(<FrameTiming>[]);
expect(binding.firstFrameRasterized, isTrue);
});
});
}