JJ_MKVMaker/test/support/browser_doubles.dart

87 lines
2.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:jj_mkvmaker/core/download_detect.dart';
import 'package:jj_mkvmaker/services/downloader.dart';
import 'package:jj_mkvmaker/ui/browser_page.dart';
/// 브라우저 시험의 대역 (browser_test · browser_page_test 가 같이 쓴다)
/// 받기를 시작한 주소를 적어 두는 다운로드 엔진 (실제로 받지 않음)
class RecordingDownloadBackend implements DownloadBackend {
@override
final DownloadKind kind;
final started = <String>[];
void Function()? changed;
RecordingDownloadBackend(this.kind);
@override
Future<(String, List<PlaylistEntry>)?> expandPlaylist(String url) async => null;
@override
Future<void> start(DownloadTask t, void Function() changed) async {
this.changed = changed;
started.add(t.source);
t.state = DownloadState.downloading;
}
@override
Future<void> pause(DownloadTask t) async {}
@override
Future<void> cancel(DownloadTask t) async {}
@override
Future<void> shutdown() async {}
}
/// 받은 조작 (멈춤 · 스크립트 · 주소 · 뒤로 · 쿠키 · JavaScript) 을 적어 두는 웹뷰 조작
class RecordingWebNav implements WebNav {
int paused = 0;
@override
Future<void> pauseMedia() async => paused++;
final scripts = <String>[];
@override
Future<void> runScript(String js) async => scripts.add(js);
final loads = <String>[];
@override
Future<void> load(String url) async => loads.add(url);
int backs = 0;
@override
Future<void> back() async => backs++;
@override
Future<void> forward() async {}
int reloads = 0;
@override
Future<void> reload() async => reloads++;
@override
Future<void> stop() async {}
var exported = 0;
@override
Future<void> exportCookies() async => exported++;
@override
Future<void> clearData() async {}
@override
Future<Object?> evaluate(String js) async {
scripts.add(js);
return null;
}
final javaScript = <bool>[];
@override
Future<void> setJavaScript(bool on) async => javaScript.add(on);
}
/// 웹 뷰 대신: 몇 번 새로 만들어졌는지 센다 (250 - 덮개를 띄워도 웹 뷰를 다시 만들지 않아야 함)
class ViewProbe extends StatefulWidget {
static int created = 0;
const ViewProbe({super.key});
@override
State<ViewProbe> createState() => _ViewProbeState();
}
class _ViewProbeState extends State<ViewProbe> {
@override
void initState() {
super.initState();
ViewProbe.created++;
}
@override
Widget build(BuildContext context) => const ColoredBox(color: Colors.white);
}