87 lines
2.6 KiB
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);
|
|
}
|