fix(player): 收紧图片与快速切集资源占用

This commit is contained in:
Zhou Weidong committed 2026-10-26 15:10:02 +08:00
1 parent 2fef7470e0
commit 80c962a95c
10 files changed
+281 -30

No files matched your search

+36
View File
@@ -422,6 +422,42 @@ void main() {
await _drain(logic);
});
test('should_coalesce_rapid_page_selection_and_keep_pool_bounded', () async {
final factory = _RecordingFactory();
final playback = FakePlaybackRepository();
final logic = _logic(FakeWatchHistory(), playback: playback);
logic.attach(
PlayerPage(
drama: _drama('rapid', numbers: const [1, 2, 3, 4, 5, 6]),
initialIndex: 0,
),
isMounted: () => true,
);
logic.start(factory: factory.create, coordinator: PlaybackCoordinator());
await _drain(logic);
await Future.wait([
for (var index = 1; index <= 5; index++)
logic.requestEpisodeSelection(index),
]);
await _drain(logic);
expect(logic.session.currentIndex, 5);
expect(playback.requests, containsAll(['rapid-1', 'rapid-2', 'rapid-6']));
expect(playback.requests, isNot(contains('rapid-3')));
expect(playback.requests, isNot(contains('rapid-4')));
expect(playback.requests, isNot(contains('rapid-5')));
expect(logic.session.livePlayerCount, lessThanOrEqualTo(3));
expect(factory.live, lessThanOrEqualTo(3));
await logic.requestEpisodeSelection(0);
await _drain(logic);
expect(logic.session.currentIndex, 0);
logic.dispose();
await _drain(logic);
});
group('surface flags', () {
test('should_set_immersive_when_picture_in_picture_callback_fires', () async {
final factory = _RecordingFactory();