From 6bc0ae85b7ee0d34fe4c0a0c4bb8d8fe02972d83 Mon Sep 17 00:00:00 2001 From: Undefined Date: Thu, 27 Apr 2023 15:54:59 +0900 Subject: [PATCH] Add testBufferingStateFromPlayer test case and update CHANGELOG.md formatting. --- .../video_player_avfoundation/CHANGELOG.md | 2 +- .../ios/RunnerTests/VideoPlayerTests.m | 46 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/packages/video_player/video_player_avfoundation/CHANGELOG.md b/packages/video_player/video_player_avfoundation/CHANGELOG.md index 6688bddc5f68..ea13f1422945 100644 --- a/packages/video_player/video_player_avfoundation/CHANGELOG.md +++ b/packages/video_player/video_player_avfoundation/CHANGELOG.md @@ -1,6 +1,6 @@ ## 2.4.5 -* fix: add missing isPlaybackLikelyToKeepUp check for iOS video player `bufferStart` event +* Fixes missing `isPlaybackLikelyToKeepUp` check for iOS video player `bufferingEnd` event and `bufferingStart` event. ## 2.4.4 diff --git a/packages/video_player/video_player_avfoundation/example/ios/RunnerTests/VideoPlayerTests.m b/packages/video_player/video_player_avfoundation/example/ios/RunnerTests/VideoPlayerTests.m index 1ec18e762ae4..78a81e135d37 100644 --- a/packages/video_player/video_player_avfoundation/example/ios/RunnerTests/VideoPlayerTests.m +++ b/packages/video_player/video_player_avfoundation/example/ios/RunnerTests/VideoPlayerTests.m @@ -166,6 +166,52 @@ - (void)testDeregistersFromPlayer { [self waitForExpectationsWithTimeout:30.0 handler:nil]; } +- (void)testBufferingStateFromPlayer { + NSObject *registry = + (NSObject *)[[UIApplication sharedApplication] delegate]; + NSObject *registrar = + [registry registrarForPlugin:@"testLiveStreamBufferEndFromPlayer"]; + FLTVideoPlayerPlugin *videoPlayerPlugin = + (FLTVideoPlayerPlugin *)[[FLTVideoPlayerPlugin alloc] initWithRegistrar:registrar]; + + FlutterError *error; + [videoPlayerPlugin initialize:&error]; + XCTAssertNil(error); + + FLTCreateMessage *create = [FLTCreateMessage + makeWithAsset:nil + uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4" + packageName:nil + formatHint:nil + httpHeaders:@{}]; + FLTTextureMessage *textureMessage = [videoPlayerPlugin create:create error:&error]; + XCTAssertNil(error); + XCTAssertNotNil(textureMessage); + FLTVideoPlayer *player = videoPlayerPlugin.playersByTextureId[textureMessage.textureId]; + XCTAssertNotNil(player); + AVPlayer *avPlayer = player.player; + [avPlayer play]; + + [player onListenWithArguments:nil + eventSink:^(NSDictionary *event) { + if ([event[@"event"] isEqualToString:@"bufferingEnd"]) { + XCTAssertTrue(avPlayer.currentItem.isPlaybackLikelyToKeepUp); + } + + if ([event[@"event"] isEqualToString:@"bufferingStart"]) { + XCTAssertFalse(avPlayer.currentItem.isPlaybackLikelyToKeepUp); + } + }]; + XCTestExpectation *bufferingStateExpectation = + [self expectationWithDescription:@"bufferingState"]; + NSTimeInterval timeout = 10; + dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, timeout * NSEC_PER_SEC); + dispatch_after(delay, dispatch_get_main_queue(), ^{ + [bufferingStateExpectation fulfill]; + }); + [self waitForExpectationsWithTimeout:timeout + 1 handler:nil]; +} + - (void)testVideoControls { NSObject *registry = (NSObject *)[[UIApplication sharedApplication] delegate];