// 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:ui';

/// A scenario to run for testing.
abstract class Scenario {
  /// Creates a new scenario using a specific Window instance.
  const Scenario(this.window);

  /// The window used by this scenario. May be mocked.
  final Window window;

  /// Called by the program when a frame is ready to be drawn.
  ///
  /// See [Window.onBeginFrame] for more details.
  void onBeginFrame(Duration duration);

  /// Called by the program when the microtasks from [onBeginFrame] have been
  /// flushed.
  ///
  /// See [Window.onDrawFrame] for more details.
  void onDrawFrame();

  /// Called by the program when the window metrics have changed.
  ///
  /// See [Window.onMetricsChanged].
  void onMetricsChanged();
}