Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 2.8.1

* Restructures internal logic to move more code to Dart.

## 2.8.0

* Adds platform view support for macOS.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,32 +168,6 @@ - (instancetype)init {

@implementation VideoPlayerTests

- (void)testCreateWithOptionsReturnsErrorForInvalidAssetPath {
NSObject<FlutterPluginRegistrar> *registrar = OCMProtocolMock(@protocol(FlutterPluginRegistrar));
OCMStub([registrar lookupKeyForAsset:[OCMArg any]]).andReturn(nil);
FVPVideoPlayerPlugin *videoPlayerPlugin =
[[FVPVideoPlayerPlugin alloc] initWithRegistrar:registrar];

FlutterError *initializationError;
[videoPlayerPlugin initialize:&initializationError];
XCTAssertNil(initializationError);

FVPCreationOptions *create =
[FVPCreationOptions makeWithAsset:@"invalid/path/to/asset"
uri:nil
packageName:nil
formatHint:nil
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];

FlutterError *createError;
NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&createError];

XCTAssertNil(playerIdentifier);
XCTAssertNotNil(createError);
XCTAssertEqualObjects(createError.code, @"video_player");
}

- (void)testBlankVideoBugWithEncryptedVideoStreamAndInvertedAspectRatioBugForSomeVideoStream {
// This is to fix 2 bugs: 1. blank video for encrypted video streams on iOS 16
// (https://github.com/flutter/flutter/issues/111457) and 2. swapped width and height for some
Expand All @@ -218,12 +192,9 @@ - (void)testBlankVideoBugWithEncryptedVideoStreamAndInvertedAspectRatioBugForSom
XCTAssertNil(error);

FVPCreationOptions *create = [FVPCreationOptions
makeWithAsset:nil
uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4"
packageName:nil
formatHint:nil
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4"
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&error];
XCTAssertNil(error);
XCTAssertNotNil(playerIdentifier);
Expand Down Expand Up @@ -253,12 +224,9 @@ - (void)testPlayerForPlatformViewDoesNotRegisterTexture {
[videoPlayerPlugin initialize:&initalizationError];
XCTAssertNil(initalizationError);
FVPCreationOptions *create = [FVPCreationOptions
makeWithAsset:nil
uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8"
packageName:nil
formatHint:nil
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypePlatformView];
makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8"
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypePlatformView];
FlutterError *createError;
[videoPlayerPlugin createWithOptions:create error:&createError];

Expand All @@ -284,12 +252,9 @@ - (void)testSeekToWhilePausedStartsDisplayLinkTemporarily {
[videoPlayerPlugin initialize:&initalizationError];
XCTAssertNil(initalizationError);
FVPCreationOptions *create = [FVPCreationOptions
makeWithAsset:nil
uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8"
packageName:nil
formatHint:nil
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8"
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
FlutterError *createError;
NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&createError];
FVPTextureBasedVideoPlayer *player =
Expand Down Expand Up @@ -344,12 +309,9 @@ - (void)testInitStartsDisplayLinkTemporarily {
[videoPlayerPlugin initialize:&initalizationError];
XCTAssertNil(initalizationError);
FVPCreationOptions *create = [FVPCreationOptions
makeWithAsset:nil
uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8"
packageName:nil
formatHint:nil
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8"
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
FlutterError *createError;
NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&createError];

Expand Down Expand Up @@ -393,12 +355,9 @@ - (void)testSeekToWhilePlayingDoesNotStopDisplayLink {
[videoPlayerPlugin initialize:&initalizationError];
XCTAssertNil(initalizationError);
FVPCreationOptions *create = [FVPCreationOptions
makeWithAsset:nil
uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8"
packageName:nil
formatHint:nil
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8"
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
FlutterError *createError;
NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&createError];
FVPTextureBasedVideoPlayer *player =
Expand Down Expand Up @@ -451,12 +410,9 @@ - (void)testPauseWhileWaitingForFrameDoesNotStopDisplayLink {
[videoPlayerPlugin initialize:&initalizationError];
XCTAssertNil(initalizationError);
FVPCreationOptions *create = [FVPCreationOptions
makeWithAsset:nil
uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8"
packageName:nil
formatHint:nil
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8"
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
FlutterError *createError;
NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&createError];
FVPTextureBasedVideoPlayer *player =
Expand All @@ -481,12 +437,9 @@ - (void)testDeregistersFromPlayer {
XCTAssertNil(error);

FVPCreationOptions *create = [FVPCreationOptions
makeWithAsset:nil
uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4"
packageName:nil
formatHint:nil
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4"
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&error];
XCTAssertNil(error);
XCTAssertNotNil(playerIdentifier);
Expand All @@ -513,12 +466,9 @@ - (void)testBufferingStateFromPlayer {
XCTAssertNil(error);

FVPCreationOptions *create = [FVPCreationOptions
makeWithAsset:nil
uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4"
packageName:nil
formatHint:nil
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4"
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&error];
XCTAssertNil(error);
XCTAssertNotNil(playerIdentifier);
Expand Down Expand Up @@ -709,12 +659,9 @@ - (void)testDoesNotCrashOnRateObservationAfterDisposal {
XCTAssertNil(error);

FVPCreationOptions *create = [FVPCreationOptions
makeWithAsset:nil
uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4"
packageName:nil
formatHint:nil
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4"
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&error];
XCTAssertNil(error);
XCTAssertNotNil(playerIdentifier);
Expand Down Expand Up @@ -763,12 +710,9 @@ - (void)testHotReloadDoesNotCrash {
XCTAssertNil(error);

FVPCreationOptions *create = [FVPCreationOptions
makeWithAsset:nil
uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4"
packageName:nil
formatHint:nil
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4"
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&error];
XCTAssertNil(error);
XCTAssertNotNil(playerIdentifier);
Expand Down Expand Up @@ -830,13 +774,9 @@ - (void)testFailedToLoadVideoEventShouldBeAlwaysSent {

[videoPlayerPlugin initialize:&error];

FVPCreationOptions *create =
[FVPCreationOptions makeWithAsset:nil
uri:@""
packageName:nil
formatHint:nil
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
FVPCreationOptions *create = [FVPCreationOptions makeWithUri:@""
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&error];
FVPVideoPlayer *player = videoPlayerPlugin.playersByIdentifier[playerIdentifier];
XCTAssertNotNil(player);
Expand Down Expand Up @@ -896,12 +836,9 @@ - (void)testPlayerShouldNotDropEverySecondFrame {
[videoPlayerPlugin initialize:&error];
XCTAssertNil(error);
FVPCreationOptions *create = [FVPCreationOptions
makeWithAsset:nil
uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4"
packageName:nil
formatHint:nil
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4"
httpHeaders:@{}
viewType:FVPPlatformVideoViewTypeTextureView];
NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&error];
FVPTextureBasedVideoPlayer *player =
(FVPTextureBasedVideoPlayer *)videoPlayerPlugin.playersByIdentifier[playerIdentifier];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,6 @@ @interface FVPTextureBasedVideoPlayer ()
@end

@implementation FVPTextureBasedVideoPlayer
- (instancetype)initWithAsset:(NSString *)asset
frameUpdater:(FVPFrameUpdater *)frameUpdater
displayLink:(NSObject<FVPDisplayLink> *)displayLink
avFactory:(id<FVPAVFactory>)avFactory
viewProvider:(NSObject<FVPViewProvider> *)viewProvider {
return [self initWithURL:[NSURL fileURLWithPath:[FVPVideoPlayer absolutePathForAssetName:asset]]
frameUpdater:frameUpdater
displayLink:displayLink
httpHeaders:@{}
avFactory:avFactory
viewProvider:viewProvider];
}

- (instancetype)initWithURL:(NSURL *)url
frameUpdater:(FVPFrameUpdater *)frameUpdater
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,6 @@
static void *rateContext = &rateContext;

@implementation FVPVideoPlayer
- (instancetype)initWithAsset:(NSString *)asset
avFactory:(id<FVPAVFactory>)avFactory
viewProvider:(NSObject<FVPViewProvider> *)viewProvider {
return [self initWithURL:[NSURL fileURLWithPath:[FVPVideoPlayer absolutePathForAssetName:asset]]
httpHeaders:@{}
avFactory:avFactory
viewProvider:viewProvider];
}

- (instancetype)initWithURL:(NSURL *)url
httpHeaders:(nonnull NSDictionary<NSString *, NSString *> *)headers
Expand Down Expand Up @@ -122,19 +114,6 @@ - (void)dispose {
[_eventChannel setStreamHandler:nil];
}

+ (NSString *)absolutePathForAssetName:(NSString *)assetName {
NSString *path = [[NSBundle mainBundle] pathForResource:assetName ofType:nil];
#if TARGET_OS_OSX
// See https://github.com/flutter/flutter/issues/135302
// TODO(stuartmorgan): Remove this if the asset APIs are adjusted to work better for macOS.
if (!path) {
path = [NSURL URLWithString:assetName relativeToURL:NSBundle.mainBundle.bundleURL].path;
}
#endif

return path;
}

- (void)addObserversForItem:(AVPlayerItem *)item player:(AVPlayer *)player {
[item addObserver:self
forKeyPath:@"loadedTimeRanges"
Expand Down
Loading