image_test_utils.dart 1.65 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
2 3 4 5 6 7 8
// 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:ui' as ui;

import 'package:flutter/foundation.dart';
9
import 'package:flutter/painting.dart';
10 11 12 13 14 15

class TestImageProvider extends ImageProvider<TestImageProvider> {
  TestImageProvider(this.testImage);

  final ui.Image testImage;

16
  final Completer<ImageInfo> _completer = Completer<ImageInfo>.sync();
17
  ImageConfiguration? configuration;
18
  int loadCallCount = 0;
19 20 21

  @override
  Future<TestImageProvider> obtainKey(ImageConfiguration configuration) {
22
    return SynchronousFuture<TestImageProvider>(this);
23 24 25
  }

  @override
26
  void resolveStreamForKey(ImageConfiguration config, ImageStream stream, TestImageProvider key, ImageErrorListener handleError) {
27
    configuration = config;
28
    super.resolveStreamForKey(config, stream, key, handleError);
29 30 31
  }

  @override
32
  ImageStreamCompleter load(TestImageProvider key, DecoderCallback decode) {
33
    throw UnsupportedError('Use ImageProvider.loadImage instead.');
34 35 36 37
  }

  @override
  ImageStreamCompleter loadBuffer(TestImageProvider key, DecoderBufferCallback decode) {
38 39 40 41 42
    throw UnsupportedError('Use ImageProvider.loadImage instead.');
  }

  @override
  ImageStreamCompleter loadImage(TestImageProvider key, ImageDecoderCallback decode) {
43 44 45
    loadCallCount += 1;
    return OneFrameImageStreamCompleter(_completer.future);
  }
46 47

  ImageInfo complete() {
48
    final ImageInfo imageInfo = ImageInfo(image: testImage);
49 50 51 52 53 54 55
    _completer.complete(imageInfo);
    return imageInfo;
  }

  @override
  String toString() => '${describeIdentity(this)}()';
}