blob: 54a4f594fe077dd89e41fc64a1ebd8cce43626e4 [file] [log] [blame]
// 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:html';
import 'dart:ui';
import 'package:camera_web/src/camera.dart';
import 'package:camera_web/src/camera_settings.dart';
import 'package:cross_file/cross_file.dart';
import 'package:mocktail/mocktail.dart';
class MockWindow extends Mock implements Window {}
class MockNavigator extends Mock implements Navigator {}
class MockMediaDevices extends Mock implements MediaDevices {}
class MockCameraSettings extends Mock implements CameraSettings {}
class MockMediaStreamTrack extends Mock implements MediaStreamTrack {}
class MockCamera extends Mock implements Camera {}
class MockXFile extends Mock implements XFile {}
/// A fake [MediaStream] that returns the provided [_videoTracks].
class FakeMediaStream extends Fake implements MediaStream {
FakeMediaStream(this._videoTracks);
final List<MediaStreamTrack> _videoTracks;
@override
List<MediaStreamTrack> getVideoTracks() => _videoTracks;
}
/// A fake [MediaDeviceInfo] that returns the provided [_deviceId], [_label] and [_kind].
class FakeMediaDeviceInfo extends Fake implements MediaDeviceInfo {
FakeMediaDeviceInfo(this._deviceId, this._label, this._kind);
final String _deviceId;
final String _label;
final String _kind;
@override
String? get deviceId => _deviceId;
@override
String? get label => _label;
@override
String? get kind => _kind;
}
/// A fake [DomException] that returns the provided error [_name].
class FakeDomException extends Fake implements DomException {
FakeDomException(this._name);
final String _name;
@override
String get name => _name;
}
/// Returns a video element with a blank stream of size [videoSize].
///
/// Can be used to mock a video stream:
/// ```dart
/// final videoElement = getVideoElementWithBlankStream(Size(100, 100));
/// final videoStream = videoElement.captureStream();
/// ```
VideoElement getVideoElementWithBlankStream(Size videoSize) {
final canvasElement = CanvasElement(
width: videoSize.width.toInt(),
height: videoSize.height.toInt(),
)..context2D.fillRect(0, 0, videoSize.width, videoSize.height);
final videoElement = VideoElement()
..srcObject = canvasElement.captureStream();
return videoElement;
}