From 84f0aad8078355ec2bab102a842d2a61591d31f9 Mon Sep 17 00:00:00 2001 From: Aaron Clarke Date: Wed, 2 Feb 2022 16:38:58 -0800 Subject: [PATCH 1/6] [video_player] Updated Pigeon version --- .../video_player_avfoundation/CHANGELOG.md | 4 + .../video_player_avfoundation/CONTRIBUTING.md | 10 +- .../ios/Classes/FLTVideoPlayerPlugin.m | 2 +- .../ios/Classes/{messages.h => messages.g.h} | 60 +- .../ios/Classes/messages.g.m | 555 ++++++++++++++++++ .../ios/Classes/messages.m | 379 ------------ .../lib/src/avfoundation_video_player.dart | 43 +- .../src/{messages.dart => messages.g.dart} | 380 +++++++----- .../pigeons/copyright.txt | 3 + .../pigeons/messages.dart | 66 ++- .../video_player_avfoundation/pubspec.yaml | 4 +- .../test/avfoundation_video_player_test.dart | 2 +- .../test/test_api.dart | 254 +++++--- 13 files changed, 1093 insertions(+), 669 deletions(-) rename packages/video_player/video_player_avfoundation/ios/Classes/{messages.h => messages.g.h} (52%) create mode 100644 packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m delete mode 100644 packages/video_player/video_player_avfoundation/ios/Classes/messages.m rename packages/video_player/video_player_avfoundation/lib/src/{messages.dart => messages.g.dart} (50%) create mode 100644 packages/video_player/video_player_avfoundation/pigeons/copyright.txt diff --git a/packages/video_player/video_player_avfoundation/CHANGELOG.md b/packages/video_player/video_player_avfoundation/CHANGELOG.md index 161e9002902e..1b417e128905 100644 --- a/packages/video_player/video_player_avfoundation/CHANGELOG.md +++ b/packages/video_player/video_player_avfoundation/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.3.0 + +* Update Pigeon to 1.0.x. + ## 2.2.18 * Wait to initialize m3u8 videos until size is set, fixing aspect ratio. diff --git a/packages/video_player/video_player_avfoundation/CONTRIBUTING.md b/packages/video_player/video_player_avfoundation/CONTRIBUTING.md index 387551bda2f6..8dfec9faf809 100644 --- a/packages/video_player/video_player_avfoundation/CONTRIBUTING.md +++ b/packages/video_player/video_player_avfoundation/CONTRIBUTING.md @@ -1,12 +1,11 @@ ## Updating pigeon-generated files If you update files in the pigeons/ directory, run the following -command in this directory (ignore the errors you get about -dependencies in the examples directory): +command in this directory: ```bash flutter pub upgrade -flutter pub run pigeon --dart_null_safety --input pigeons/messages.dart +flutter pub run pigeon --input pigeons/messages.dart # git commit your changes so that your working environment is clean (cd ../../../; ./script/tool_runner.sh format --clang-format=clang-format-7) ``` @@ -28,6 +27,5 @@ publish pigeon before you can land the updates to this package, since the CI tests run the analysis using latest published version of pigeon, not your version or the version on master. -In either case, the configuration will be obtained automatically from -the `pigeons/messages.dart` file (see `configurePigeon` at the bottom -of that file). +In either case, the configuration will be obtained automatically from the +`pigeons/messages.dart` file (see `ConfigurePigeon` at the top of that file). diff --git a/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m b/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m index 55021cce64f9..9203556b0649 100644 --- a/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m +++ b/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m @@ -5,7 +5,7 @@ #import "FLTVideoPlayerPlugin.h" #import #import -#import "messages.h" +#import "messages.g.h" #if !__has_feature(objc_arc) #error Code Requires ARC. diff --git a/packages/video_player/video_player_avfoundation/ios/Classes/messages.h b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.h similarity index 52% rename from packages/video_player/video_player_avfoundation/ios/Classes/messages.h rename to packages/video_player/video_player_avfoundation/ios/Classes/messages.g.h index e21e7860ba09..e9a9645f3b5a 100644 --- a/packages/video_player/video_player_avfoundation/ios/Classes/messages.h +++ b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.h @@ -1,79 +1,95 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - -// Autogenerated from Pigeon (v0.1.21), do not edit directly. +// Autogenerated from Pigeon (v1.0.16), do not edit directly. // See also: https://pub.dev/packages/pigeon #import @protocol FlutterBinaryMessenger; +@protocol FlutterMessageCodec; @class FlutterError; @class FlutterStandardTypedData; NS_ASSUME_NONNULL_BEGIN @class FLTTextureMessage; -@class FLTCreateMessage; @class FLTLoopingMessage; @class FLTVolumeMessage; @class FLTPlaybackSpeedMessage; @class FLTPositionMessage; +@class FLTCreateMessage; @class FLTMixWithOthersMessage; @interface FLTTextureMessage : NSObject ++ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId; @property(nonatomic, strong, nullable) NSNumber *textureId; @end -@interface FLTCreateMessage : NSObject -@property(nonatomic, copy, nullable) NSString *asset; -@property(nonatomic, copy, nullable) NSString *uri; -@property(nonatomic, copy, nullable) NSString *packageName; -@property(nonatomic, copy, nullable) NSString *formatHint; -@property(nonatomic, strong, nullable) NSDictionary *httpHeaders; -@end - @interface FLTLoopingMessage : NSObject ++ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId + isLooping:(nullable NSNumber *)isLooping; @property(nonatomic, strong, nullable) NSNumber *textureId; @property(nonatomic, strong, nullable) NSNumber *isLooping; @end @interface FLTVolumeMessage : NSObject ++ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId volume:(nullable NSNumber *)volume; @property(nonatomic, strong, nullable) NSNumber *textureId; @property(nonatomic, strong, nullable) NSNumber *volume; @end @interface FLTPlaybackSpeedMessage : NSObject ++ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId speed:(nullable NSNumber *)speed; @property(nonatomic, strong, nullable) NSNumber *textureId; @property(nonatomic, strong, nullable) NSNumber *speed; @end @interface FLTPositionMessage : NSObject ++ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId + position:(nullable NSNumber *)position; @property(nonatomic, strong, nullable) NSNumber *textureId; @property(nonatomic, strong, nullable) NSNumber *position; @end +@interface FLTCreateMessage : NSObject ++ (instancetype)makeWithAsset:(nullable NSString *)asset + uri:(nullable NSString *)uri + packageName:(nullable NSString *)packageName + formatHint:(nullable NSString *)formatHint + httpHeaders:(nullable NSDictionary *)httpHeaders; +@property(nonatomic, copy, nullable) NSString *asset; +@property(nonatomic, copy, nullable) NSString *uri; +@property(nonatomic, copy, nullable) NSString *packageName; +@property(nonatomic, copy, nullable) NSString *formatHint; +@property(nonatomic, strong, nullable) NSDictionary *httpHeaders; +@end + @interface FLTMixWithOthersMessage : NSObject ++ (instancetype)makeWithMixWithOthers:(nullable NSNumber *)mixWithOthers; @property(nonatomic, strong, nullable) NSNumber *mixWithOthers; @end +/// The codec used by FLTVideoPlayerApi. +NSObject *FLTVideoPlayerApiGetCodec(void); + @protocol FLTVideoPlayerApi - (void)initialize:(FlutterError *_Nullable *_Nonnull)error; -- (nullable FLTTextureMessage *)create:(FLTCreateMessage *)input +- (nullable FLTTextureMessage *)create:(FLTCreateMessage *)msg error:(FlutterError *_Nullable *_Nonnull)error; -- (void)dispose:(FLTTextureMessage *)input error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setLooping:(FLTLoopingMessage *)input error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setVolume:(FLTVolumeMessage *)input error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setPlaybackSpeed:(FLTPlaybackSpeedMessage *)input +- (void)dispose:(FLTTextureMessage *)msg error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setLooping:(FLTLoopingMessage *)msg error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setVolume:(FLTVolumeMessage *)msg error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setPlaybackSpeed:(FLTPlaybackSpeedMessage *)msg error:(FlutterError *_Nullable *_Nonnull)error; -- (void)play:(FLTTextureMessage *)input error:(FlutterError *_Nullable *_Nonnull)error; -- (nullable FLTPositionMessage *)position:(FLTTextureMessage *)input +- (void)play:(FLTTextureMessage *)msg error:(FlutterError *_Nullable *_Nonnull)error; +- (nullable FLTPositionMessage *)position:(FLTTextureMessage *)msg error:(FlutterError *_Nullable *_Nonnull)error; -- (void)seekTo:(FLTPositionMessage *)input error:(FlutterError *_Nullable *_Nonnull)error; -- (void)pause:(FLTTextureMessage *)input error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setMixWithOthers:(FLTMixWithOthersMessage *)input +- (void)seekTo:(FLTPositionMessage *)msg error:(FlutterError *_Nullable *_Nonnull)error; +- (void)pause:(FLTTextureMessage *)msg error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setMixWithOthers:(FLTMixWithOthersMessage *)msg error:(FlutterError *_Nullable *_Nonnull)error; @end extern void FLTVideoPlayerApiSetup(id binaryMessenger, - id _Nullable api); + NSObject *_Nullable api); NS_ASSUME_NONNULL_END diff --git a/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m new file mode 100644 index 000000000000..ce7f71d4a3a4 --- /dev/null +++ b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m @@ -0,0 +1,555 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// Autogenerated from Pigeon (v1.0.16), do not edit directly. +// See also: https://pub.dev/packages/pigeon +#import "messages.g.h" +#import + +#if !__has_feature(objc_arc) +#error File requires ARC to be enabled. +#endif + +static NSDictionary *wrapResult(id result, FlutterError *error) { + NSDictionary *errorDict = (NSDictionary *)[NSNull null]; + if (error) { + errorDict = @{ + @"code" : (error.code ? error.code : [NSNull null]), + @"message" : (error.message ? error.message : [NSNull null]), + @"details" : (error.details ? error.details : [NSNull null]), + }; + } + return @{ + @"result" : (result ? result : [NSNull null]), + @"error" : errorDict, + }; +} + +@interface FLTTextureMessage () ++ (FLTTextureMessage *)fromMap:(NSDictionary *)dict; +- (NSDictionary *)toMap; +@end +@interface FLTLoopingMessage () ++ (FLTLoopingMessage *)fromMap:(NSDictionary *)dict; +- (NSDictionary *)toMap; +@end +@interface FLTVolumeMessage () ++ (FLTVolumeMessage *)fromMap:(NSDictionary *)dict; +- (NSDictionary *)toMap; +@end +@interface FLTPlaybackSpeedMessage () ++ (FLTPlaybackSpeedMessage *)fromMap:(NSDictionary *)dict; +- (NSDictionary *)toMap; +@end +@interface FLTPositionMessage () ++ (FLTPositionMessage *)fromMap:(NSDictionary *)dict; +- (NSDictionary *)toMap; +@end +@interface FLTCreateMessage () ++ (FLTCreateMessage *)fromMap:(NSDictionary *)dict; +- (NSDictionary *)toMap; +@end +@interface FLTMixWithOthersMessage () ++ (FLTMixWithOthersMessage *)fromMap:(NSDictionary *)dict; +- (NSDictionary *)toMap; +@end + +@implementation FLTTextureMessage ++ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId { + FLTTextureMessage *pigeonResult = [[FLTTextureMessage alloc] init]; + pigeonResult.textureId = textureId; + return pigeonResult; +} ++ (FLTTextureMessage *)fromMap:(NSDictionary *)dict { + FLTTextureMessage *pigeonResult = [[FLTTextureMessage alloc] init]; + pigeonResult.textureId = dict[@"textureId"]; + if ((NSNull *)pigeonResult.textureId == [NSNull null]) { + pigeonResult.textureId = nil; + } + return pigeonResult; +} +- (NSDictionary *)toMap { + return + [NSDictionary dictionaryWithObjectsAndKeys:(self.textureId ? self.textureId : [NSNull null]), + @"textureId", nil]; +} +@end + +@implementation FLTLoopingMessage ++ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId + isLooping:(nullable NSNumber *)isLooping { + FLTLoopingMessage *pigeonResult = [[FLTLoopingMessage alloc] init]; + pigeonResult.textureId = textureId; + pigeonResult.isLooping = isLooping; + return pigeonResult; +} ++ (FLTLoopingMessage *)fromMap:(NSDictionary *)dict { + FLTLoopingMessage *pigeonResult = [[FLTLoopingMessage alloc] init]; + pigeonResult.textureId = dict[@"textureId"]; + if ((NSNull *)pigeonResult.textureId == [NSNull null]) { + pigeonResult.textureId = nil; + } + pigeonResult.isLooping = dict[@"isLooping"]; + if ((NSNull *)pigeonResult.isLooping == [NSNull null]) { + pigeonResult.isLooping = nil; + } + return pigeonResult; +} +- (NSDictionary *)toMap { + return [NSDictionary + dictionaryWithObjectsAndKeys:(self.textureId ? self.textureId : [NSNull null]), @"textureId", + (self.isLooping ? self.isLooping : [NSNull null]), @"isLooping", + nil]; +} +@end + +@implementation FLTVolumeMessage ++ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId + volume:(nullable NSNumber *)volume { + FLTVolumeMessage *pigeonResult = [[FLTVolumeMessage alloc] init]; + pigeonResult.textureId = textureId; + pigeonResult.volume = volume; + return pigeonResult; +} ++ (FLTVolumeMessage *)fromMap:(NSDictionary *)dict { + FLTVolumeMessage *pigeonResult = [[FLTVolumeMessage alloc] init]; + pigeonResult.textureId = dict[@"textureId"]; + if ((NSNull *)pigeonResult.textureId == [NSNull null]) { + pigeonResult.textureId = nil; + } + pigeonResult.volume = dict[@"volume"]; + if ((NSNull *)pigeonResult.volume == [NSNull null]) { + pigeonResult.volume = nil; + } + return pigeonResult; +} +- (NSDictionary *)toMap { + return [NSDictionary + dictionaryWithObjectsAndKeys:(self.textureId ? self.textureId : [NSNull null]), @"textureId", + (self.volume ? self.volume : [NSNull null]), @"volume", nil]; +} +@end + +@implementation FLTPlaybackSpeedMessage ++ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId speed:(nullable NSNumber *)speed { + FLTPlaybackSpeedMessage *pigeonResult = [[FLTPlaybackSpeedMessage alloc] init]; + pigeonResult.textureId = textureId; + pigeonResult.speed = speed; + return pigeonResult; +} ++ (FLTPlaybackSpeedMessage *)fromMap:(NSDictionary *)dict { + FLTPlaybackSpeedMessage *pigeonResult = [[FLTPlaybackSpeedMessage alloc] init]; + pigeonResult.textureId = dict[@"textureId"]; + if ((NSNull *)pigeonResult.textureId == [NSNull null]) { + pigeonResult.textureId = nil; + } + pigeonResult.speed = dict[@"speed"]; + if ((NSNull *)pigeonResult.speed == [NSNull null]) { + pigeonResult.speed = nil; + } + return pigeonResult; +} +- (NSDictionary *)toMap { + return [NSDictionary + dictionaryWithObjectsAndKeys:(self.textureId ? self.textureId : [NSNull null]), @"textureId", + (self.speed ? self.speed : [NSNull null]), @"speed", nil]; +} +@end + +@implementation FLTPositionMessage ++ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId + position:(nullable NSNumber *)position { + FLTPositionMessage *pigeonResult = [[FLTPositionMessage alloc] init]; + pigeonResult.textureId = textureId; + pigeonResult.position = position; + return pigeonResult; +} ++ (FLTPositionMessage *)fromMap:(NSDictionary *)dict { + FLTPositionMessage *pigeonResult = [[FLTPositionMessage alloc] init]; + pigeonResult.textureId = dict[@"textureId"]; + if ((NSNull *)pigeonResult.textureId == [NSNull null]) { + pigeonResult.textureId = nil; + } + pigeonResult.position = dict[@"position"]; + if ((NSNull *)pigeonResult.position == [NSNull null]) { + pigeonResult.position = nil; + } + return pigeonResult; +} +- (NSDictionary *)toMap { + return [NSDictionary + dictionaryWithObjectsAndKeys:(self.textureId ? self.textureId : [NSNull null]), @"textureId", + (self.position ? self.position : [NSNull null]), @"position", + nil]; +} +@end + +@implementation FLTCreateMessage ++ (instancetype)makeWithAsset:(nullable NSString *)asset + uri:(nullable NSString *)uri + packageName:(nullable NSString *)packageName + formatHint:(nullable NSString *)formatHint + httpHeaders:(nullable NSDictionary *)httpHeaders { + FLTCreateMessage *pigeonResult = [[FLTCreateMessage alloc] init]; + pigeonResult.asset = asset; + pigeonResult.uri = uri; + pigeonResult.packageName = packageName; + pigeonResult.formatHint = formatHint; + pigeonResult.httpHeaders = httpHeaders; + return pigeonResult; +} ++ (FLTCreateMessage *)fromMap:(NSDictionary *)dict { + FLTCreateMessage *pigeonResult = [[FLTCreateMessage alloc] init]; + pigeonResult.asset = dict[@"asset"]; + if ((NSNull *)pigeonResult.asset == [NSNull null]) { + pigeonResult.asset = nil; + } + pigeonResult.uri = dict[@"uri"]; + if ((NSNull *)pigeonResult.uri == [NSNull null]) { + pigeonResult.uri = nil; + } + pigeonResult.packageName = dict[@"packageName"]; + if ((NSNull *)pigeonResult.packageName == [NSNull null]) { + pigeonResult.packageName = nil; + } + pigeonResult.formatHint = dict[@"formatHint"]; + if ((NSNull *)pigeonResult.formatHint == [NSNull null]) { + pigeonResult.formatHint = nil; + } + pigeonResult.httpHeaders = dict[@"httpHeaders"]; + if ((NSNull *)pigeonResult.httpHeaders == [NSNull null]) { + pigeonResult.httpHeaders = nil; + } + return pigeonResult; +} +- (NSDictionary *)toMap { + return [NSDictionary + dictionaryWithObjectsAndKeys:(self.asset ? self.asset : [NSNull null]), @"asset", + (self.uri ? self.uri : [NSNull null]), @"uri", + (self.packageName ? self.packageName : [NSNull null]), + @"packageName", + (self.formatHint ? self.formatHint : [NSNull null]), + @"formatHint", + (self.httpHeaders ? self.httpHeaders : [NSNull null]), + @"httpHeaders", nil]; +} +@end + +@implementation FLTMixWithOthersMessage ++ (instancetype)makeWithMixWithOthers:(nullable NSNumber *)mixWithOthers { + FLTMixWithOthersMessage *pigeonResult = [[FLTMixWithOthersMessage alloc] init]; + pigeonResult.mixWithOthers = mixWithOthers; + return pigeonResult; +} ++ (FLTMixWithOthersMessage *)fromMap:(NSDictionary *)dict { + FLTMixWithOthersMessage *pigeonResult = [[FLTMixWithOthersMessage alloc] init]; + pigeonResult.mixWithOthers = dict[@"mixWithOthers"]; + if ((NSNull *)pigeonResult.mixWithOthers == [NSNull null]) { + pigeonResult.mixWithOthers = nil; + } + return pigeonResult; +} +- (NSDictionary *)toMap { + return [NSDictionary + dictionaryWithObjectsAndKeys:(self.mixWithOthers ? self.mixWithOthers : [NSNull null]), + @"mixWithOthers", nil]; +} +@end + +@interface FLTVideoPlayerApiCodecReader : FlutterStandardReader +@end +@implementation FLTVideoPlayerApiCodecReader +- (nullable id)readValueOfType:(UInt8)type { + switch (type) { + case 128: + return [FLTCreateMessage fromMap:[self readValue]]; + + case 129: + return [FLTLoopingMessage fromMap:[self readValue]]; + + case 130: + return [FLTMixWithOthersMessage fromMap:[self readValue]]; + + case 131: + return [FLTPlaybackSpeedMessage fromMap:[self readValue]]; + + case 132: + return [FLTPositionMessage fromMap:[self readValue]]; + + case 133: + return [FLTTextureMessage fromMap:[self readValue]]; + + case 134: + return [FLTVolumeMessage fromMap:[self readValue]]; + + default: + return [super readValueOfType:type]; + } +} +@end + +@interface FLTVideoPlayerApiCodecWriter : FlutterStandardWriter +@end +@implementation FLTVideoPlayerApiCodecWriter +- (void)writeValue:(id)value { + if ([value isKindOfClass:[FLTCreateMessage class]]) { + [self writeByte:128]; + [self writeValue:[value toMap]]; + } else if ([value isKindOfClass:[FLTLoopingMessage class]]) { + [self writeByte:129]; + [self writeValue:[value toMap]]; + } else if ([value isKindOfClass:[FLTMixWithOthersMessage class]]) { + [self writeByte:130]; + [self writeValue:[value toMap]]; + } else if ([value isKindOfClass:[FLTPlaybackSpeedMessage class]]) { + [self writeByte:131]; + [self writeValue:[value toMap]]; + } else if ([value isKindOfClass:[FLTPositionMessage class]]) { + [self writeByte:132]; + [self writeValue:[value toMap]]; + } else if ([value isKindOfClass:[FLTTextureMessage class]]) { + [self writeByte:133]; + [self writeValue:[value toMap]]; + } else if ([value isKindOfClass:[FLTVolumeMessage class]]) { + [self writeByte:134]; + [self writeValue:[value toMap]]; + } else { + [super writeValue:value]; + } +} +@end + +@interface FLTVideoPlayerApiCodecReaderWriter : FlutterStandardReaderWriter +@end +@implementation FLTVideoPlayerApiCodecReaderWriter +- (FlutterStandardWriter *)writerWithData:(NSMutableData *)data { + return [[FLTVideoPlayerApiCodecWriter alloc] initWithData:data]; +} +- (FlutterStandardReader *)readerWithData:(NSData *)data { + return [[FLTVideoPlayerApiCodecReader alloc] initWithData:data]; +} +@end + +NSObject *FLTVideoPlayerApiGetCodec() { + static dispatch_once_t s_pred = 0; + static FlutterStandardMessageCodec *s_sharedObject = nil; + dispatch_once(&s_pred, ^{ + FLTVideoPlayerApiCodecReaderWriter *readerWriter = + [[FLTVideoPlayerApiCodecReaderWriter alloc] init]; + s_sharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; + }); + return s_sharedObject; +} + +void FLTVideoPlayerApiSetup(id binaryMessenger, + NSObject *api) { + { + FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.initialize" + binaryMessenger:binaryMessenger + codec:FLTVideoPlayerApiGetCodec()]; + if (api) { + NSCAssert([api respondsToSelector:@selector(initialize:)], + @"FLTVideoPlayerApi api (%@) doesn't respond to @selector(initialize:)", api); + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + FlutterError *error; + [api initialize:&error]; + callback(wrapResult(nil, error)); + }]; + } else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.create" + binaryMessenger:binaryMessenger + codec:FLTVideoPlayerApiGetCodec()]; + if (api) { + NSCAssert([api respondsToSelector:@selector(create:error:)], + @"FLTVideoPlayerApi api (%@) doesn't respond to @selector(create:error:)", api); + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + NSArray *args = message; + FLTCreateMessage *arg_msg = args[0]; + FlutterError *error; + FLTTextureMessage *output = [api create:arg_msg error:&error]; + callback(wrapResult(output, error)); + }]; + } else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.dispose" + binaryMessenger:binaryMessenger + codec:FLTVideoPlayerApiGetCodec()]; + if (api) { + NSCAssert([api respondsToSelector:@selector(dispose:error:)], + @"FLTVideoPlayerApi api (%@) doesn't respond to @selector(dispose:error:)", api); + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + NSArray *args = message; + FLTTextureMessage *arg_msg = args[0]; + FlutterError *error; + [api dispose:arg_msg error:&error]; + callback(wrapResult(nil, error)); + }]; + } else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.setLooping" + binaryMessenger:binaryMessenger + codec:FLTVideoPlayerApiGetCodec()]; + if (api) { + NSCAssert([api respondsToSelector:@selector(setLooping:error:)], + @"FLTVideoPlayerApi api (%@) doesn't respond to @selector(setLooping:error:)", api); + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + NSArray *args = message; + FLTLoopingMessage *arg_msg = args[0]; + FlutterError *error; + [api setLooping:arg_msg error:&error]; + callback(wrapResult(nil, error)); + }]; + } else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.setVolume" + binaryMessenger:binaryMessenger + codec:FLTVideoPlayerApiGetCodec()]; + if (api) { + NSCAssert([api respondsToSelector:@selector(setVolume:error:)], + @"FLTVideoPlayerApi api (%@) doesn't respond to @selector(setVolume:error:)", api); + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + NSArray *args = message; + FLTVolumeMessage *arg_msg = args[0]; + FlutterError *error; + [api setVolume:arg_msg error:&error]; + callback(wrapResult(nil, error)); + }]; + } else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed" + binaryMessenger:binaryMessenger + codec:FLTVideoPlayerApiGetCodec()]; + if (api) { + NSCAssert([api respondsToSelector:@selector(setPlaybackSpeed:error:)], + @"FLTVideoPlayerApi api (%@) doesn't respond to @selector(setPlaybackSpeed:error:)", + api); + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + NSArray *args = message; + FLTPlaybackSpeedMessage *arg_msg = args[0]; + FlutterError *error; + [api setPlaybackSpeed:arg_msg error:&error]; + callback(wrapResult(nil, error)); + }]; + } else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.play" + binaryMessenger:binaryMessenger + codec:FLTVideoPlayerApiGetCodec()]; + if (api) { + NSCAssert([api respondsToSelector:@selector(play:error:)], + @"FLTVideoPlayerApi api (%@) doesn't respond to @selector(play:error:)", api); + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + NSArray *args = message; + FLTTextureMessage *arg_msg = args[0]; + FlutterError *error; + [api play:arg_msg error:&error]; + callback(wrapResult(nil, error)); + }]; + } else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.position" + binaryMessenger:binaryMessenger + codec:FLTVideoPlayerApiGetCodec()]; + if (api) { + NSCAssert([api respondsToSelector:@selector(position:error:)], + @"FLTVideoPlayerApi api (%@) doesn't respond to @selector(position:error:)", api); + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + NSArray *args = message; + FLTTextureMessage *arg_msg = args[0]; + FlutterError *error; + FLTPositionMessage *output = [api position:arg_msg error:&error]; + callback(wrapResult(output, error)); + }]; + } else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.seekTo" + binaryMessenger:binaryMessenger + codec:FLTVideoPlayerApiGetCodec()]; + if (api) { + NSCAssert([api respondsToSelector:@selector(seekTo:error:)], + @"FLTVideoPlayerApi api (%@) doesn't respond to @selector(seekTo:error:)", api); + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + NSArray *args = message; + FLTPositionMessage *arg_msg = args[0]; + FlutterError *error; + [api seekTo:arg_msg error:&error]; + callback(wrapResult(nil, error)); + }]; + } else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.pause" + binaryMessenger:binaryMessenger + codec:FLTVideoPlayerApiGetCodec()]; + if (api) { + NSCAssert([api respondsToSelector:@selector(pause:error:)], + @"FLTVideoPlayerApi api (%@) doesn't respond to @selector(pause:error:)", api); + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + NSArray *args = message; + FLTTextureMessage *arg_msg = args[0]; + FlutterError *error; + [api pause:arg_msg error:&error]; + callback(wrapResult(nil, error)); + }]; + } else { + [channel setMessageHandler:nil]; + } + } + { + FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers" + binaryMessenger:binaryMessenger + codec:FLTVideoPlayerApiGetCodec()]; + if (api) { + NSCAssert([api respondsToSelector:@selector(setMixWithOthers:error:)], + @"FLTVideoPlayerApi api (%@) doesn't respond to @selector(setMixWithOthers:error:)", + api); + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + NSArray *args = message; + FLTMixWithOthersMessage *arg_msg = args[0]; + FlutterError *error; + [api setMixWithOthers:arg_msg error:&error]; + callback(wrapResult(nil, error)); + }]; + } else { + [channel setMessageHandler:nil]; + } + } +} diff --git a/packages/video_player/video_player_avfoundation/ios/Classes/messages.m b/packages/video_player/video_player_avfoundation/ios/Classes/messages.m deleted file mode 100644 index 0936bbc7d995..000000000000 --- a/packages/video_player/video_player_avfoundation/ios/Classes/messages.m +++ /dev/null @@ -1,379 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Autogenerated from Pigeon (v0.1.21), do not edit directly. -// See also: https://pub.dev/packages/pigeon -#import "messages.h" -#import - -#if !__has_feature(objc_arc) -#error File requires ARC to be enabled. -#endif - -static NSDictionary *wrapResult(NSDictionary *result, FlutterError *error) { - NSDictionary *errorDict = (NSDictionary *)[NSNull null]; - if (error) { - errorDict = @{ - @"code" : (error.code ? error.code : [NSNull null]), - @"message" : (error.message ? error.message : [NSNull null]), - @"details" : (error.details ? error.details : [NSNull null]), - }; - } - return @{ - @"result" : (result ? result : [NSNull null]), - @"error" : errorDict, - }; -} - -@interface FLTTextureMessage () -+ (FLTTextureMessage *)fromMap:(NSDictionary *)dict; -- (NSDictionary *)toMap; -@end -@interface FLTCreateMessage () -+ (FLTCreateMessage *)fromMap:(NSDictionary *)dict; -- (NSDictionary *)toMap; -@end -@interface FLTLoopingMessage () -+ (FLTLoopingMessage *)fromMap:(NSDictionary *)dict; -- (NSDictionary *)toMap; -@end -@interface FLTVolumeMessage () -+ (FLTVolumeMessage *)fromMap:(NSDictionary *)dict; -- (NSDictionary *)toMap; -@end -@interface FLTPlaybackSpeedMessage () -+ (FLTPlaybackSpeedMessage *)fromMap:(NSDictionary *)dict; -- (NSDictionary *)toMap; -@end -@interface FLTPositionMessage () -+ (FLTPositionMessage *)fromMap:(NSDictionary *)dict; -- (NSDictionary *)toMap; -@end -@interface FLTMixWithOthersMessage () -+ (FLTMixWithOthersMessage *)fromMap:(NSDictionary *)dict; -- (NSDictionary *)toMap; -@end - -@implementation FLTTextureMessage -+ (FLTTextureMessage *)fromMap:(NSDictionary *)dict { - FLTTextureMessage *result = [[FLTTextureMessage alloc] init]; - result.textureId = dict[@"textureId"]; - if ((NSNull *)result.textureId == [NSNull null]) { - result.textureId = nil; - } - return result; -} -- (NSDictionary *)toMap { - return [NSDictionary - dictionaryWithObjectsAndKeys:(self.textureId != nil ? self.textureId : [NSNull null]), - @"textureId", nil]; -} -@end - -@implementation FLTCreateMessage -+ (FLTCreateMessage *)fromMap:(NSDictionary *)dict { - FLTCreateMessage *result = [[FLTCreateMessage alloc] init]; - result.asset = dict[@"asset"]; - if ((NSNull *)result.asset == [NSNull null]) { - result.asset = nil; - } - result.uri = dict[@"uri"]; - if ((NSNull *)result.uri == [NSNull null]) { - result.uri = nil; - } - result.packageName = dict[@"packageName"]; - if ((NSNull *)result.packageName == [NSNull null]) { - result.packageName = nil; - } - result.formatHint = dict[@"formatHint"]; - if ((NSNull *)result.formatHint == [NSNull null]) { - result.formatHint = nil; - } - result.httpHeaders = dict[@"httpHeaders"]; - if ((NSNull *)result.httpHeaders == [NSNull null]) { - result.httpHeaders = nil; - } - return result; -} -- (NSDictionary *)toMap { - return [NSDictionary - dictionaryWithObjectsAndKeys:(self.asset ? self.asset : [NSNull null]), @"asset", - (self.uri ? self.uri : [NSNull null]), @"uri", - (self.packageName ? self.packageName : [NSNull null]), - @"packageName", - (self.formatHint ? self.formatHint : [NSNull null]), - @"formatHint", - (self.httpHeaders ? self.httpHeaders : [NSNull null]), - @"httpHeaders", nil]; -} -@end - -@implementation FLTLoopingMessage -+ (FLTLoopingMessage *)fromMap:(NSDictionary *)dict { - FLTLoopingMessage *result = [[FLTLoopingMessage alloc] init]; - result.textureId = dict[@"textureId"]; - if ((NSNull *)result.textureId == [NSNull null]) { - result.textureId = nil; - } - result.isLooping = dict[@"isLooping"]; - if ((NSNull *)result.isLooping == [NSNull null]) { - result.isLooping = nil; - } - return result; -} -- (NSDictionary *)toMap { - return [NSDictionary - dictionaryWithObjectsAndKeys:(self.textureId != nil ? self.textureId : [NSNull null]), - @"textureId", - (self.isLooping != nil ? self.isLooping : [NSNull null]), - @"isLooping", nil]; -} -@end - -@implementation FLTVolumeMessage -+ (FLTVolumeMessage *)fromMap:(NSDictionary *)dict { - FLTVolumeMessage *result = [[FLTVolumeMessage alloc] init]; - result.textureId = dict[@"textureId"]; - if ((NSNull *)result.textureId == [NSNull null]) { - result.textureId = nil; - } - result.volume = dict[@"volume"]; - if ((NSNull *)result.volume == [NSNull null]) { - result.volume = nil; - } - return result; -} -- (NSDictionary *)toMap { - return [NSDictionary - dictionaryWithObjectsAndKeys:(self.textureId != nil ? self.textureId : [NSNull null]), - @"textureId", (self.volume != nil ? self.volume : [NSNull null]), - @"volume", nil]; -} -@end - -@implementation FLTPlaybackSpeedMessage -+ (FLTPlaybackSpeedMessage *)fromMap:(NSDictionary *)dict { - FLTPlaybackSpeedMessage *result = [[FLTPlaybackSpeedMessage alloc] init]; - result.textureId = dict[@"textureId"]; - if ((NSNull *)result.textureId == [NSNull null]) { - result.textureId = nil; - } - result.speed = dict[@"speed"]; - if ((NSNull *)result.speed == [NSNull null]) { - result.speed = nil; - } - return result; -} -- (NSDictionary *)toMap { - return [NSDictionary - dictionaryWithObjectsAndKeys:(self.textureId != nil ? self.textureId : [NSNull null]), - @"textureId", (self.speed != nil ? self.speed : [NSNull null]), - @"speed", nil]; -} -@end - -@implementation FLTPositionMessage -+ (FLTPositionMessage *)fromMap:(NSDictionary *)dict { - FLTPositionMessage *result = [[FLTPositionMessage alloc] init]; - result.textureId = dict[@"textureId"]; - if ((NSNull *)result.textureId == [NSNull null]) { - result.textureId = nil; - } - result.position = dict[@"position"]; - if ((NSNull *)result.position == [NSNull null]) { - result.position = nil; - } - return result; -} -- (NSDictionary *)toMap { - return [NSDictionary - dictionaryWithObjectsAndKeys:(self.textureId != nil ? self.textureId : [NSNull null]), - @"textureId", - (self.position != nil ? self.position : [NSNull null]), - @"position", nil]; -} -@end - -@implementation FLTMixWithOthersMessage -+ (FLTMixWithOthersMessage *)fromMap:(NSDictionary *)dict { - FLTMixWithOthersMessage *result = [[FLTMixWithOthersMessage alloc] init]; - result.mixWithOthers = dict[@"mixWithOthers"]; - if ((NSNull *)result.mixWithOthers == [NSNull null]) { - result.mixWithOthers = nil; - } - return result; -} -- (NSDictionary *)toMap { - return [NSDictionary - dictionaryWithObjectsAndKeys:(self.mixWithOthers != nil ? self.mixWithOthers : [NSNull null]), - @"mixWithOthers", nil]; -} -@end - -void FLTVideoPlayerApiSetup(id binaryMessenger, id api) { - { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.initialize" - binaryMessenger:binaryMessenger]; - if (api) { - [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { - FlutterError *error; - [api initialize:&error]; - callback(wrapResult(nil, error)); - }]; - } else { - [channel setMessageHandler:nil]; - } - } - { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.create" - binaryMessenger:binaryMessenger]; - if (api) { - [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { - FLTCreateMessage *input = [FLTCreateMessage fromMap:message]; - FlutterError *error; - FLTTextureMessage *output = [api create:input error:&error]; - callback(wrapResult([output toMap], error)); - }]; - } else { - [channel setMessageHandler:nil]; - } - } - { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.dispose" - binaryMessenger:binaryMessenger]; - if (api) { - [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { - FLTTextureMessage *input = [FLTTextureMessage fromMap:message]; - FlutterError *error; - [api dispose:input error:&error]; - callback(wrapResult(nil, error)); - }]; - } else { - [channel setMessageHandler:nil]; - } - } - { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.setLooping" - binaryMessenger:binaryMessenger]; - if (api) { - [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { - FLTLoopingMessage *input = [FLTLoopingMessage fromMap:message]; - FlutterError *error; - [api setLooping:input error:&error]; - callback(wrapResult(nil, error)); - }]; - } else { - [channel setMessageHandler:nil]; - } - } - { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.setVolume" - binaryMessenger:binaryMessenger]; - if (api) { - [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { - FLTVolumeMessage *input = [FLTVolumeMessage fromMap:message]; - FlutterError *error; - [api setVolume:input error:&error]; - callback(wrapResult(nil, error)); - }]; - } else { - [channel setMessageHandler:nil]; - } - } - { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed" - binaryMessenger:binaryMessenger]; - if (api) { - [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { - FLTPlaybackSpeedMessage *input = [FLTPlaybackSpeedMessage fromMap:message]; - FlutterError *error; - [api setPlaybackSpeed:input error:&error]; - callback(wrapResult(nil, error)); - }]; - } else { - [channel setMessageHandler:nil]; - } - } - { - FlutterBasicMessageChannel *channel = - [FlutterBasicMessageChannel messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.play" - binaryMessenger:binaryMessenger]; - if (api) { - [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { - FLTTextureMessage *input = [FLTTextureMessage fromMap:message]; - FlutterError *error; - [api play:input error:&error]; - callback(wrapResult(nil, error)); - }]; - } else { - [channel setMessageHandler:nil]; - } - } - { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.position" - binaryMessenger:binaryMessenger]; - if (api) { - [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { - FLTTextureMessage *input = [FLTTextureMessage fromMap:message]; - FlutterError *error; - FLTPositionMessage *output = [api position:input error:&error]; - callback(wrapResult([output toMap], error)); - }]; - } else { - [channel setMessageHandler:nil]; - } - } - { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.seekTo" - binaryMessenger:binaryMessenger]; - if (api) { - [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { - FLTPositionMessage *input = [FLTPositionMessage fromMap:message]; - FlutterError *error; - [api seekTo:input error:&error]; - callback(wrapResult(nil, error)); - }]; - } else { - [channel setMessageHandler:nil]; - } - } - { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.pause" - binaryMessenger:binaryMessenger]; - if (api) { - [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { - FLTTextureMessage *input = [FLTTextureMessage fromMap:message]; - FlutterError *error; - [api pause:input error:&error]; - callback(wrapResult(nil, error)); - }]; - } else { - [channel setMessageHandler:nil]; - } - } - { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers" - binaryMessenger:binaryMessenger]; - if (api) { - [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { - FLTMixWithOthersMessage *input = [FLTMixWithOthersMessage fromMap:message]; - FlutterError *error; - [api setMixWithOthers:input error:&error]; - callback(wrapResult(nil, error)); - }]; - } else { - [channel setMessageHandler:nil]; - } - } -} diff --git a/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart b/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart index db7e04bd682a..3fcaa1e2ffe3 100644 --- a/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart +++ b/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart @@ -9,7 +9,7 @@ import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; import 'package:video_player_platform_interface/video_player_platform_interface.dart'; -import 'messages.dart'; +import 'messages.g.dart'; /// An iOS implementation of [VideoPlayerPlatform] that uses the /// Pigeon-generated [VideoPlayerApi]. @@ -28,7 +28,7 @@ class AVFoundationVideoPlayer extends VideoPlayerPlatform { @override Future dispose(int textureId) { - return _api.dispose(TextureMessage()..textureId = textureId); + return _api.dispose(TextureMessage(textureId: textureId)); } @override @@ -59,48 +59,52 @@ class AVFoundationVideoPlayer extends VideoPlayerPlatform { @override Future setLooping(int textureId, bool looping) { - return _api.setLooping(LoopingMessage() - ..textureId = textureId - ..isLooping = looping); + return _api.setLooping(LoopingMessage( + textureId: textureId, + isLooping: looping, + )); } @override Future play(int textureId) { - return _api.play(TextureMessage()..textureId = textureId); + return _api.play(TextureMessage(textureId: textureId)); } @override Future pause(int textureId) { - return _api.pause(TextureMessage()..textureId = textureId); + return _api.pause(TextureMessage(textureId: textureId)); } @override Future setVolume(int textureId, double volume) { - return _api.setVolume(VolumeMessage() - ..textureId = textureId - ..volume = volume); + return _api.setVolume(VolumeMessage( + textureId: textureId, + volume: volume, + )); } @override Future setPlaybackSpeed(int textureId, double speed) { assert(speed > 0); - return _api.setPlaybackSpeed(PlaybackSpeedMessage() - ..textureId = textureId - ..speed = speed); + return _api.setPlaybackSpeed(PlaybackSpeedMessage( + textureId: textureId, + speed: speed, + )); } @override Future seekTo(int textureId, Duration position) { - return _api.seekTo(PositionMessage() - ..textureId = textureId - ..position = position.inMilliseconds); + return _api.seekTo(PositionMessage( + textureId: textureId, + position: position.inMilliseconds, + )); } @override Future getPosition(int textureId) async { final PositionMessage response = - await _api.position(TextureMessage()..textureId = textureId); + await _api.position(TextureMessage(textureId: textureId)); return Duration(milliseconds: response.position!); } @@ -146,9 +150,8 @@ class AVFoundationVideoPlayer extends VideoPlayerPlatform { @override Future setMixWithOthers(bool mixWithOthers) { - return _api.setMixWithOthers( - MixWithOthersMessage()..mixWithOthers = mixWithOthers, - ); + return _api + .setMixWithOthers(MixWithOthersMessage(mixWithOthers: mixWithOthers)); } EventChannel _eventChannelFor(int textureId) { diff --git a/packages/video_player/video_player_avfoundation/lib/src/messages.dart b/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart similarity index 50% rename from packages/video_player/video_player_avfoundation/lib/src/messages.dart rename to packages/video_player/video_player_avfoundation/lib/src/messages.g.dart index 831f4e3755d9..810627771e7c 100644 --- a/packages/video_player/video_player_avfoundation/lib/src/messages.dart +++ b/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart @@ -1,17 +1,21 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - -// Autogenerated from Pigeon (v0.1.21), do not edit directly. +// Autogenerated from Pigeon (v1.0.16), do not edit directly. // See also: https://pub.dev/packages/pigeon -// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, cast_nullable_to_non_nullable +// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name // @dart = 2.12 import 'dart:async'; import 'dart:typed_data' show Uint8List, Int32List, Int64List, Float64List; +import 'package:flutter/foundation.dart' show WriteBuffer, ReadBuffer; import 'package:flutter/services.dart'; class TextureMessage { + TextureMessage({ + this.textureId, + }); + int? textureId; Object encode() { @@ -22,39 +26,18 @@ class TextureMessage { static TextureMessage decode(Object message) { final Map pigeonMap = message as Map; - return TextureMessage()..textureId = pigeonMap['textureId'] as int?; - } -} - -class CreateMessage { - String? asset; - String? uri; - String? packageName; - String? formatHint; - Map? httpHeaders; - - Object encode() { - final Map pigeonMap = {}; - pigeonMap['asset'] = asset; - pigeonMap['uri'] = uri; - pigeonMap['packageName'] = packageName; - pigeonMap['formatHint'] = formatHint; - pigeonMap['httpHeaders'] = httpHeaders; - return pigeonMap; - } - - static CreateMessage decode(Object message) { - final Map pigeonMap = message as Map; - return CreateMessage() - ..asset = pigeonMap['asset'] as String? - ..uri = pigeonMap['uri'] as String? - ..packageName = pigeonMap['packageName'] as String? - ..formatHint = pigeonMap['formatHint'] as String? - ..httpHeaders = pigeonMap['httpHeaders'] as Map?; + return TextureMessage( + textureId: pigeonMap['textureId'] as int?, + ); } } class LoopingMessage { + LoopingMessage({ + this.textureId, + this.isLooping, + }); + int? textureId; bool? isLooping; @@ -67,13 +50,19 @@ class LoopingMessage { static LoopingMessage decode(Object message) { final Map pigeonMap = message as Map; - return LoopingMessage() - ..textureId = pigeonMap['textureId'] as int? - ..isLooping = pigeonMap['isLooping'] as bool?; + return LoopingMessage( + textureId: pigeonMap['textureId'] as int?, + isLooping: pigeonMap['isLooping'] as bool?, + ); } } class VolumeMessage { + VolumeMessage({ + this.textureId, + this.volume, + }); + int? textureId; double? volume; @@ -86,13 +75,19 @@ class VolumeMessage { static VolumeMessage decode(Object message) { final Map pigeonMap = message as Map; - return VolumeMessage() - ..textureId = pigeonMap['textureId'] as int? - ..volume = pigeonMap['volume'] as double?; + return VolumeMessage( + textureId: pigeonMap['textureId'] as int?, + volume: pigeonMap['volume'] as double?, + ); } } class PlaybackSpeedMessage { + PlaybackSpeedMessage({ + this.textureId, + this.speed, + }); + int? textureId; double? speed; @@ -105,13 +100,19 @@ class PlaybackSpeedMessage { static PlaybackSpeedMessage decode(Object message) { final Map pigeonMap = message as Map; - return PlaybackSpeedMessage() - ..textureId = pigeonMap['textureId'] as int? - ..speed = pigeonMap['speed'] as double?; + return PlaybackSpeedMessage( + textureId: pigeonMap['textureId'] as int?, + speed: pigeonMap['speed'] as double?, + ); } } class PositionMessage { + PositionMessage({ + this.textureId, + this.position, + }); + int? textureId; int? position; @@ -124,13 +125,56 @@ class PositionMessage { static PositionMessage decode(Object message) { final Map pigeonMap = message as Map; - return PositionMessage() - ..textureId = pigeonMap['textureId'] as int? - ..position = pigeonMap['position'] as int?; + return PositionMessage( + textureId: pigeonMap['textureId'] as int?, + position: pigeonMap['position'] as int?, + ); + } +} + +class CreateMessage { + CreateMessage({ + this.asset, + this.uri, + this.packageName, + this.formatHint, + this.httpHeaders, + }); + + String? asset; + String? uri; + String? packageName; + String? formatHint; + Map? httpHeaders; + + Object encode() { + final Map pigeonMap = {}; + pigeonMap['asset'] = asset; + pigeonMap['uri'] = uri; + pigeonMap['packageName'] = packageName; + pigeonMap['formatHint'] = formatHint; + pigeonMap['httpHeaders'] = httpHeaders; + return pigeonMap; + } + + static CreateMessage decode(Object message) { + final Map pigeonMap = message as Map; + return CreateMessage( + asset: pigeonMap['asset'] as String?, + uri: pigeonMap['uri'] as String?, + packageName: pigeonMap['packageName'] as String?, + formatHint: pigeonMap['formatHint'] as String?, + httpHeaders: (pigeonMap['httpHeaders'] as Map?) + ?.cast(), + ); } } class MixWithOthersMessage { + MixWithOthersMessage({ + this.mixWithOthers, + }); + bool? mixWithOthers; Object encode() { @@ -141,15 +185,87 @@ class MixWithOthersMessage { static MixWithOthersMessage decode(Object message) { final Map pigeonMap = message as Map; - return MixWithOthersMessage() - ..mixWithOthers = pigeonMap['mixWithOthers'] as bool?; + return MixWithOthersMessage( + mixWithOthers: pigeonMap['mixWithOthers'] as bool?, + ); + } +} + +class _VideoPlayerApiCodec extends StandardMessageCodec { + const _VideoPlayerApiCodec(); + @override + void writeValue(WriteBuffer buffer, Object? value) { + if (value is CreateMessage) { + buffer.putUint8(128); + writeValue(buffer, value.encode()); + } else if (value is LoopingMessage) { + buffer.putUint8(129); + writeValue(buffer, value.encode()); + } else if (value is MixWithOthersMessage) { + buffer.putUint8(130); + writeValue(buffer, value.encode()); + } else if (value is PlaybackSpeedMessage) { + buffer.putUint8(131); + writeValue(buffer, value.encode()); + } else if (value is PositionMessage) { + buffer.putUint8(132); + writeValue(buffer, value.encode()); + } else if (value is TextureMessage) { + buffer.putUint8(133); + writeValue(buffer, value.encode()); + } else if (value is VolumeMessage) { + buffer.putUint8(134); + writeValue(buffer, value.encode()); + } else { + super.writeValue(buffer, value); + } + } + + @override + Object? readValueOfType(int type, ReadBuffer buffer) { + switch (type) { + case 128: + return CreateMessage.decode(readValue(buffer)!); + + case 129: + return LoopingMessage.decode(readValue(buffer)!); + + case 130: + return MixWithOthersMessage.decode(readValue(buffer)!); + + case 131: + return PlaybackSpeedMessage.decode(readValue(buffer)!); + + case 132: + return PositionMessage.decode(readValue(buffer)!); + + case 133: + return TextureMessage.decode(readValue(buffer)!); + + case 134: + return VolumeMessage.decode(readValue(buffer)!); + + default: + return super.readValueOfType(type, buffer); + } } } class VideoPlayerApi { + /// Constructor for [VideoPlayerApi]. The [binaryMessenger] named argument is + /// available for dependency injection. If it is left null, the default + /// BinaryMessenger will be used which routes to the host platform. + VideoPlayerApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; + + final BinaryMessenger? _binaryMessenger; + + static const MessageCodec codec = _VideoPlayerApiCodec(); + Future initialize() async { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.initialize', StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.initialize', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = await channel.send(null) as Map?; if (replyMap == null) { @@ -160,23 +276,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future create(CreateMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.create', StandardMessageCodec()); + Future create(CreateMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.create', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -185,23 +301,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - return TextureMessage.decode(replyMap['result']!); + return (replyMap['result'] as TextureMessage?)!; } } - Future dispose(TextureMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.dispose', StandardMessageCodec()); + Future dispose(TextureMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.dispose', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -210,23 +326,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future setLooping(LoopingMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setLooping', StandardMessageCodec()); + Future setLooping(LoopingMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setLooping', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -235,23 +351,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future setVolume(VolumeMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setVolume', StandardMessageCodec()); + Future setVolume(VolumeMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setVolume', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -260,24 +376,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future setPlaybackSpeed(PlaybackSpeedMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed', - StandardMessageCodec()); + Future setPlaybackSpeed(PlaybackSpeedMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -286,23 +401,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future play(TextureMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.play', StandardMessageCodec()); + Future play(TextureMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.play', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -311,23 +426,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future position(TextureMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.position', StandardMessageCodec()); + Future position(TextureMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.position', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -336,23 +451,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - return PositionMessage.decode(replyMap['result']!); + return (replyMap['result'] as PositionMessage?)!; } } - Future seekTo(PositionMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.seekTo', StandardMessageCodec()); + Future seekTo(PositionMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.seekTo', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -361,23 +476,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future pause(TextureMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.pause', StandardMessageCodec()); + Future pause(TextureMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.pause', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -386,24 +501,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future setMixWithOthers(MixWithOthersMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers', - StandardMessageCodec()); + Future setMixWithOthers(MixWithOthersMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -412,14 +526,14 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } } diff --git a/packages/video_player/video_player_avfoundation/pigeons/copyright.txt b/packages/video_player/video_player_avfoundation/pigeons/copyright.txt new file mode 100644 index 000000000000..1236b63caf3a --- /dev/null +++ b/packages/video_player/video_player_avfoundation/pigeons/copyright.txt @@ -0,0 +1,3 @@ +Copyright 2013 The Flutter Authors. All rights reserved. +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. diff --git a/packages/video_player/video_player_avfoundation/pigeons/messages.dart b/packages/video_player/video_player_avfoundation/pigeons/messages.dart index 42d96408da87..02ea59c0bef8 100644 --- a/packages/video_player/video_player_avfoundation/pigeons/messages.dart +++ b/packages/video_player/video_player_avfoundation/pigeons/messages.dart @@ -2,68 +2,76 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 - -import 'package:pigeon/pigeon_lib.dart'; +import 'package:pigeon/pigeon.dart'; +@ConfigurePigeon(PigeonOptions( + dartOut: 'lib/src/messages.g.dart', + dartTestOut: 'test/test_api.dart', + objcHeaderOut: 'ios/Classes/messages.g.h', + objcSourceOut: 'ios/Classes/messages.g.m', + objcOptions: ObjcOptions( + prefix: 'FLT', + ), + copyrightHeader: 'pigeons/copyright.txt', +)) class TextureMessage { - int textureId; + int? textureId; } class LoopingMessage { - int textureId; - bool isLooping; + int? textureId; + bool? isLooping; } class VolumeMessage { - int textureId; - double volume; + int? textureId; + double? volume; } class PlaybackSpeedMessage { - int textureId; - double speed; + int? textureId; + double? speed; } class PositionMessage { - int textureId; - int position; + int? textureId; + int? position; } class CreateMessage { - String asset; - String uri; - String packageName; - String formatHint; - Map httpHeaders; + String? asset; + String? uri; + String? packageName; + String? formatHint; + Map? httpHeaders; } class MixWithOthersMessage { - bool mixWithOthers; + bool? mixWithOthers; } @HostApi(dartHostTestHandler: 'TestHostVideoPlayerApi') abstract class VideoPlayerApi { + @ObjCSelector('initialize') void initialize(); + @ObjCSelector('create:') TextureMessage create(CreateMessage msg); + @ObjCSelector('dispose:') void dispose(TextureMessage msg); + @ObjCSelector('setLooping:') void setLooping(LoopingMessage msg); + @ObjCSelector('setVolume:') void setVolume(VolumeMessage msg); + @ObjCSelector('setPlaybackSpeed:') void setPlaybackSpeed(PlaybackSpeedMessage msg); + @ObjCSelector('play:') void play(TextureMessage msg); + @ObjCSelector('position:') PositionMessage position(TextureMessage msg); + @ObjCSelector('seekTo:') void seekTo(PositionMessage msg); + @ObjCSelector('pause:') void pause(TextureMessage msg); + @ObjCSelector('setMixWithOthers:') void setMixWithOthers(MixWithOthersMessage msg); } - -void configurePigeon(PigeonOptions opts) { - opts.dartOut = 'lib/src/messages.dart'; - opts.dartTestOut = 'test/test_api.dart'; - opts.objcHeaderOut = 'ios/Classes/messages.h'; - opts.objcSourceOut = 'ios/Classes/messages.m'; - opts.objcOptions.prefix = 'FLT'; - opts.javaOut = - 'android/src/main/java/io/flutter/plugins/videoplayer/Messages.java'; - opts.javaOptions.package = 'io.flutter.plugins.videoplayer'; -} diff --git a/packages/video_player/video_player_avfoundation/pubspec.yaml b/packages/video_player/video_player_avfoundation/pubspec.yaml index 8b00249ee453..e05864e5ef81 100644 --- a/packages/video_player/video_player_avfoundation/pubspec.yaml +++ b/packages/video_player/video_player_avfoundation/pubspec.yaml @@ -2,7 +2,7 @@ name: video_player_avfoundation description: iOS implementation of the video_player plugin. repository: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player_avfoundation issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22 -version: 2.2.18 +version: 2.3.0 environment: sdk: ">=2.14.0 <3.0.0" @@ -24,4 +24,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - pigeon: ^0.1.21 + pigeon: ^1.0.16 diff --git a/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart b/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart index adb29a53562f..f13cb91453a8 100644 --- a/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart +++ b/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart @@ -6,7 +6,7 @@ import 'dart:ui'; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:video_player_avfoundation/src/messages.dart'; +import 'package:video_player_avfoundation/src/messages.g.dart'; import 'package:video_player_avfoundation/video_player_avfoundation.dart'; import 'package:video_player_platform_interface/video_player_platform_interface.dart'; diff --git a/packages/video_player/video_player_avfoundation/test/test_api.dart b/packages/video_player/video_player_avfoundation/test/test_api.dart index b173705891d5..d4c37aad09ac 100644 --- a/packages/video_player/video_player_avfoundation/test/test_api.dart +++ b/packages/video_player/video_player_avfoundation/test/test_api.dart @@ -1,34 +1,100 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - -// Autogenerated from Pigeon (v0.1.21), do not edit directly. +// Autogenerated from Pigeon (v1.0.16), do not edit directly. // See also: https://pub.dev/packages/pigeon -// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import +// TODO(gaaclarke): `unnecessary_parenthesis` had to be added manually. +// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis // @dart = 2.12 import 'dart:async'; import 'dart:typed_data' show Uint8List, Int32List, Int64List, Float64List; +import 'package:flutter/foundation.dart' show WriteBuffer, ReadBuffer; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:video_player_avfoundation/src/messages.dart'; + +// TODO(gaaclarke): The following output had to be tweaked from a relative path to a uri. +import 'package:video_player_avfoundation/src/messages.g.dart'; + +class _TestHostVideoPlayerApiCodec extends StandardMessageCodec { + const _TestHostVideoPlayerApiCodec(); + @override + void writeValue(WriteBuffer buffer, Object? value) { + if (value is CreateMessage) { + buffer.putUint8(128); + writeValue(buffer, value.encode()); + } else if (value is LoopingMessage) { + buffer.putUint8(129); + writeValue(buffer, value.encode()); + } else if (value is MixWithOthersMessage) { + buffer.putUint8(130); + writeValue(buffer, value.encode()); + } else if (value is PlaybackSpeedMessage) { + buffer.putUint8(131); + writeValue(buffer, value.encode()); + } else if (value is PositionMessage) { + buffer.putUint8(132); + writeValue(buffer, value.encode()); + } else if (value is TextureMessage) { + buffer.putUint8(133); + writeValue(buffer, value.encode()); + } else if (value is VolumeMessage) { + buffer.putUint8(134); + writeValue(buffer, value.encode()); + } else { + super.writeValue(buffer, value); + } + } + + @override + Object? readValueOfType(int type, ReadBuffer buffer) { + switch (type) { + case 128: + return CreateMessage.decode(readValue(buffer)!); + + case 129: + return LoopingMessage.decode(readValue(buffer)!); + + case 130: + return MixWithOthersMessage.decode(readValue(buffer)!); + + case 131: + return PlaybackSpeedMessage.decode(readValue(buffer)!); + + case 132: + return PositionMessage.decode(readValue(buffer)!); + + case 133: + return TextureMessage.decode(readValue(buffer)!); + + case 134: + return VolumeMessage.decode(readValue(buffer)!); + + default: + return super.readValueOfType(type, buffer); + } + } +} abstract class TestHostVideoPlayerApi { + static const MessageCodec codec = _TestHostVideoPlayerApiCodec(); + void initialize(); - TextureMessage create(CreateMessage arg); - void dispose(TextureMessage arg); - void setLooping(LoopingMessage arg); - void setVolume(VolumeMessage arg); - void setPlaybackSpeed(PlaybackSpeedMessage arg); - void play(TextureMessage arg); - PositionMessage position(TextureMessage arg); - void seekTo(PositionMessage arg); - void pause(TextureMessage arg); - void setMixWithOthers(MixWithOthersMessage arg); - static void setup(TestHostVideoPlayerApi? api) { + TextureMessage create(CreateMessage msg); + void dispose(TextureMessage msg); + void setLooping(LoopingMessage msg); + void setVolume(VolumeMessage msg); + void setPlaybackSpeed(PlaybackSpeedMessage msg); + void play(TextureMessage msg); + PositionMessage position(TextureMessage msg); + void seekTo(PositionMessage msg); + void pause(TextureMessage msg); + void setMixWithOthers(MixWithOthersMessage msg); + static void setup(TestHostVideoPlayerApi? api, + {BinaryMessenger? binaryMessenger}) { { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.initialize', - StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.initialize', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { @@ -40,157 +106,193 @@ abstract class TestHostVideoPlayerApi { } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.create', StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.create', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.create was null. Expected CreateMessage.'); - final CreateMessage input = CreateMessage.decode(message!); - final TextureMessage output = api.create(input); - return {'result': output.encode()}; + 'Argument for dev.flutter.pigeon.VideoPlayerApi.create was null.'); + final List args = (message as List?)!; + final CreateMessage? arg_msg = (args[0] as CreateMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.create was null, expected non-null CreateMessage.'); + final TextureMessage output = api.create(arg_msg!); + return {'result': output}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.dispose', StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.dispose', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.dispose was null. Expected TextureMessage.'); - final TextureMessage input = TextureMessage.decode(message!); - api.dispose(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.dispose was null.'); + final List args = (message as List?)!; + final TextureMessage? arg_msg = (args[0] as TextureMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.dispose was null, expected non-null TextureMessage.'); + api.dispose(arg_msg!); return {}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setLooping', - StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setLooping', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.setLooping was null. Expected LoopingMessage.'); - final LoopingMessage input = LoopingMessage.decode(message!); - api.setLooping(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setLooping was null.'); + final List args = (message as List?)!; + final LoopingMessage? arg_msg = (args[0] as LoopingMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setLooping was null, expected non-null LoopingMessage.'); + api.setLooping(arg_msg!); return {}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setVolume', - StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setVolume', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.setVolume was null. Expected VolumeMessage.'); - final VolumeMessage input = VolumeMessage.decode(message!); - api.setVolume(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setVolume was null.'); + final List args = (message as List?)!; + final VolumeMessage? arg_msg = (args[0] as VolumeMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setVolume was null, expected non-null VolumeMessage.'); + api.setVolume(arg_msg!); return {}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed', - StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed was null. Expected PlaybackSpeedMessage.'); - final PlaybackSpeedMessage input = - PlaybackSpeedMessage.decode(message!); - api.setPlaybackSpeed(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed was null.'); + final List args = (message as List?)!; + final PlaybackSpeedMessage? arg_msg = + (args[0] as PlaybackSpeedMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed was null, expected non-null PlaybackSpeedMessage.'); + api.setPlaybackSpeed(arg_msg!); return {}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.play', StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.play', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.play was null. Expected TextureMessage.'); - final TextureMessage input = TextureMessage.decode(message!); - api.play(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.play was null.'); + final List args = (message as List?)!; + final TextureMessage? arg_msg = (args[0] as TextureMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.play was null, expected non-null TextureMessage.'); + api.play(arg_msg!); return {}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.position', StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.position', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.position was null. Expected TextureMessage.'); - final TextureMessage input = TextureMessage.decode(message!); - final PositionMessage output = api.position(input); - return {'result': output.encode()}; + 'Argument for dev.flutter.pigeon.VideoPlayerApi.position was null.'); + final List args = (message as List?)!; + final TextureMessage? arg_msg = (args[0] as TextureMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.position was null, expected non-null TextureMessage.'); + final PositionMessage output = api.position(arg_msg!); + return {'result': output}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.seekTo', StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.seekTo', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.seekTo was null. Expected PositionMessage.'); - final PositionMessage input = PositionMessage.decode(message!); - api.seekTo(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.seekTo was null.'); + final List args = (message as List?)!; + final PositionMessage? arg_msg = (args[0] as PositionMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.seekTo was null, expected non-null PositionMessage.'); + api.seekTo(arg_msg!); return {}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.pause', StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.pause', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.pause was null. Expected TextureMessage.'); - final TextureMessage input = TextureMessage.decode(message!); - api.pause(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.pause was null.'); + final List args = (message as List?)!; + final TextureMessage? arg_msg = (args[0] as TextureMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.pause was null, expected non-null TextureMessage.'); + api.pause(arg_msg!); return {}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers', - StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers was null. Expected MixWithOthersMessage.'); - final MixWithOthersMessage input = - MixWithOthersMessage.decode(message!); - api.setMixWithOthers(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers was null.'); + final List args = (message as List?)!; + final MixWithOthersMessage? arg_msg = + (args[0] as MixWithOthersMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers was null, expected non-null MixWithOthersMessage.'); + api.setMixWithOthers(arg_msg!); return {}; }); } From ee7ce00bb4480cea02b8ef6ebf1ac96c3137dd87 Mon Sep 17 00:00:00 2001 From: Aaron Clarke Date: Wed, 2 Feb 2022 17:35:53 -0800 Subject: [PATCH 2/6] updated android --- .../video_player_android/CHANGELOG.md | 4 + .../video_player_android/CONTRIBUTING.md | 10 +- .../flutter/plugins/videoplayer/Messages.java | 776 ++++++++++++------ .../lib/src/android_video_player.dart | 43 +- .../src/{messages.dart => messages.g.dart} | 380 ++++++--- .../pigeons/copyright.txt | 3 + .../pigeons/messages.dart | 54 +- .../video_player_android/pubspec.yaml | 4 +- .../test/android_video_player_test.dart | 2 +- .../video_player_android/test/test_api.dart | 255 ++++-- 10 files changed, 1005 insertions(+), 526 deletions(-) rename packages/video_player/video_player_android/lib/src/{messages.dart => messages.g.dart} (50%) create mode 100644 packages/video_player/video_player_android/pigeons/copyright.txt diff --git a/packages/video_player/video_player_android/CHANGELOG.md b/packages/video_player/video_player_android/CHANGELOG.md index 626b9ef887cf..ad49bd11e6ea 100644 --- a/packages/video_player/video_player_android/CHANGELOG.md +++ b/packages/video_player/video_player_android/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.3.0 + +* Update Pigeon to ^1.0.16. + ## 2.2.17 * Splits from `video_player` as a federated implementation. diff --git a/packages/video_player/video_player_android/CONTRIBUTING.md b/packages/video_player/video_player_android/CONTRIBUTING.md index 387551bda2f6..8dfec9faf809 100644 --- a/packages/video_player/video_player_android/CONTRIBUTING.md +++ b/packages/video_player/video_player_android/CONTRIBUTING.md @@ -1,12 +1,11 @@ ## Updating pigeon-generated files If you update files in the pigeons/ directory, run the following -command in this directory (ignore the errors you get about -dependencies in the examples directory): +command in this directory: ```bash flutter pub upgrade -flutter pub run pigeon --dart_null_safety --input pigeons/messages.dart +flutter pub run pigeon --input pigeons/messages.dart # git commit your changes so that your working environment is clean (cd ../../../; ./script/tool_runner.sh format --clang-format=clang-format-7) ``` @@ -28,6 +27,5 @@ publish pigeon before you can land the updates to this package, since the CI tests run the analysis using latest published version of pigeon, not your version or the version on master. -In either case, the configuration will be obtained automatically from -the `pigeons/messages.dart` file (see `configurePigeon` at the bottom -of that file). +In either case, the configuration will be obtained automatically from the +`pigeons/messages.dart` file (see `ConfigurePigeon` at the top of that file). diff --git a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java index e0a4a3b8dd08..3c824d5568c0 100644 --- a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java +++ b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java @@ -1,322 +1,567 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - -// Autogenerated from Pigeon (v0.1.21), do not edit directly. +// Autogenerated from Pigeon (v1.0.16), do not edit directly. // See also: https://pub.dev/packages/pigeon package io.flutter.plugins.videoplayer; +import android.util.Log; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import io.flutter.plugin.common.BasicMessageChannel; import io.flutter.plugin.common.BinaryMessenger; +import io.flutter.plugin.common.MessageCodec; import io.flutter.plugin.common.StandardMessageCodec; +import java.io.ByteArrayOutputStream; +import java.nio.ByteBuffer; +import java.util.ArrayList; import java.util.HashMap; +import java.util.Map; /** Generated class from Pigeon. */ -@SuppressWarnings("unused") +@SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression"}) public class Messages { - /** Generated class from Pigeon that represents data sent in messages. */ public static class TextureMessage { - private Long textureId; + private @Nullable Long textureId; - public Long getTextureId() { + public @Nullable Long getTextureId() { return textureId; } - public void setTextureId(Long setterArg) { + public void setTextureId(@Nullable Long setterArg) { this.textureId = setterArg; } - HashMap toMap() { - HashMap toMapResult = new HashMap<>(); + public static class Builder { + private @Nullable Long textureId; + + public @NonNull Builder setTextureId(@Nullable Long setterArg) { + this.textureId = setterArg; + return this; + } + + public @NonNull TextureMessage build() { + TextureMessage pigeonReturn = new TextureMessage(); + pigeonReturn.setTextureId(textureId); + return pigeonReturn; + } + } + + @NonNull + Map toMap() { + Map toMapResult = new HashMap<>(); toMapResult.put("textureId", textureId); return toMapResult; } - static TextureMessage fromMap(HashMap map) { - TextureMessage fromMapResult = new TextureMessage(); + static @NonNull TextureMessage fromMap(@NonNull Map map) { + TextureMessage pigeonResult = new TextureMessage(); Object textureId = map.get("textureId"); - fromMapResult.textureId = + pigeonResult.setTextureId( (textureId == null) ? null - : ((textureId instanceof Integer) ? (Integer) textureId : (Long) textureId); - return fromMapResult; + : ((textureId instanceof Integer) ? (Integer) textureId : (Long) textureId)); + return pigeonResult; } } /** Generated class from Pigeon that represents data sent in messages. */ - public static class CreateMessage { - private String asset; - - public String getAsset() { - return asset; - } - - public void setAsset(String setterArg) { - this.asset = setterArg; - } - - private String uri; - - public String getUri() { - return uri; - } - - public void setUri(String setterArg) { - this.uri = setterArg; - } - - private String packageName; - - public String getPackageName() { - return packageName; - } - - public void setPackageName(String setterArg) { - this.packageName = setterArg; - } - - private String formatHint; - - public String getFormatHint() { - return formatHint; - } + public static class LoopingMessage { + private @Nullable Long textureId; - public void setFormatHint(String setterArg) { - this.formatHint = setterArg; + public @Nullable Long getTextureId() { + return textureId; } - private HashMap httpHeaders; - - public HashMap getHttpHeaders() { - return httpHeaders; + public void setTextureId(@Nullable Long setterArg) { + this.textureId = setterArg; } - public void setHttpHeaders(HashMap setterArg) { - this.httpHeaders = setterArg; - } + private @Nullable Boolean isLooping; - HashMap toMap() { - HashMap toMapResult = new HashMap<>(); - toMapResult.put("asset", asset); - toMapResult.put("uri", uri); - toMapResult.put("packageName", packageName); - toMapResult.put("formatHint", formatHint); - toMapResult.put("httpHeaders", httpHeaders); - return toMapResult; + public @Nullable Boolean getIsLooping() { + return isLooping; } - static CreateMessage fromMap(HashMap map) { - CreateMessage fromMapResult = new CreateMessage(); - Object asset = map.get("asset"); - fromMapResult.asset = (String) asset; - Object uri = map.get("uri"); - fromMapResult.uri = (String) uri; - Object packageName = map.get("packageName"); - fromMapResult.packageName = (String) packageName; - Object formatHint = map.get("formatHint"); - fromMapResult.formatHint = (String) formatHint; - Object httpHeaders = map.get("httpHeaders"); - fromMapResult.httpHeaders = (HashMap) httpHeaders; - return fromMapResult; + public void setIsLooping(@Nullable Boolean setterArg) { + this.isLooping = setterArg; } - } - - /** Generated class from Pigeon that represents data sent in messages. */ - public static class LoopingMessage { - private Long textureId; - public Long getTextureId() { - return textureId; - } + public static class Builder { + private @Nullable Long textureId; - public void setTextureId(Long setterArg) { - this.textureId = setterArg; - } + public @NonNull Builder setTextureId(@Nullable Long setterArg) { + this.textureId = setterArg; + return this; + } - private Boolean isLooping; + private @Nullable Boolean isLooping; - public Boolean getIsLooping() { - return isLooping; - } + public @NonNull Builder setIsLooping(@Nullable Boolean setterArg) { + this.isLooping = setterArg; + return this; + } - public void setIsLooping(Boolean setterArg) { - this.isLooping = setterArg; + public @NonNull LoopingMessage build() { + LoopingMessage pigeonReturn = new LoopingMessage(); + pigeonReturn.setTextureId(textureId); + pigeonReturn.setIsLooping(isLooping); + return pigeonReturn; + } } - HashMap toMap() { - HashMap toMapResult = new HashMap<>(); + @NonNull + Map toMap() { + Map toMapResult = new HashMap<>(); toMapResult.put("textureId", textureId); toMapResult.put("isLooping", isLooping); return toMapResult; } - static LoopingMessage fromMap(HashMap map) { - LoopingMessage fromMapResult = new LoopingMessage(); + static @NonNull LoopingMessage fromMap(@NonNull Map map) { + LoopingMessage pigeonResult = new LoopingMessage(); Object textureId = map.get("textureId"); - fromMapResult.textureId = + pigeonResult.setTextureId( (textureId == null) ? null - : ((textureId instanceof Integer) ? (Integer) textureId : (Long) textureId); + : ((textureId instanceof Integer) ? (Integer) textureId : (Long) textureId)); Object isLooping = map.get("isLooping"); - fromMapResult.isLooping = (Boolean) isLooping; - return fromMapResult; + pigeonResult.setIsLooping((Boolean) isLooping); + return pigeonResult; } } /** Generated class from Pigeon that represents data sent in messages. */ public static class VolumeMessage { - private Long textureId; + private @Nullable Long textureId; - public Long getTextureId() { + public @Nullable Long getTextureId() { return textureId; } - public void setTextureId(Long setterArg) { + public void setTextureId(@Nullable Long setterArg) { this.textureId = setterArg; } - private Double volume; + private @Nullable Double volume; - public Double getVolume() { + public @Nullable Double getVolume() { return volume; } - public void setVolume(Double setterArg) { + public void setVolume(@Nullable Double setterArg) { this.volume = setterArg; } - HashMap toMap() { - HashMap toMapResult = new HashMap<>(); + public static class Builder { + private @Nullable Long textureId; + + public @NonNull Builder setTextureId(@Nullable Long setterArg) { + this.textureId = setterArg; + return this; + } + + private @Nullable Double volume; + + public @NonNull Builder setVolume(@Nullable Double setterArg) { + this.volume = setterArg; + return this; + } + + public @NonNull VolumeMessage build() { + VolumeMessage pigeonReturn = new VolumeMessage(); + pigeonReturn.setTextureId(textureId); + pigeonReturn.setVolume(volume); + return pigeonReturn; + } + } + + @NonNull + Map toMap() { + Map toMapResult = new HashMap<>(); toMapResult.put("textureId", textureId); toMapResult.put("volume", volume); return toMapResult; } - static VolumeMessage fromMap(HashMap map) { - VolumeMessage fromMapResult = new VolumeMessage(); + static @NonNull VolumeMessage fromMap(@NonNull Map map) { + VolumeMessage pigeonResult = new VolumeMessage(); Object textureId = map.get("textureId"); - fromMapResult.textureId = + pigeonResult.setTextureId( (textureId == null) ? null - : ((textureId instanceof Integer) ? (Integer) textureId : (Long) textureId); + : ((textureId instanceof Integer) ? (Integer) textureId : (Long) textureId)); Object volume = map.get("volume"); - fromMapResult.volume = (Double) volume; - return fromMapResult; + pigeonResult.setVolume((Double) volume); + return pigeonResult; } } /** Generated class from Pigeon that represents data sent in messages. */ public static class PlaybackSpeedMessage { - private Long textureId; + private @Nullable Long textureId; - public Long getTextureId() { + public @Nullable Long getTextureId() { return textureId; } - public void setTextureId(Long setterArg) { + public void setTextureId(@Nullable Long setterArg) { this.textureId = setterArg; } - private Double speed; + private @Nullable Double speed; - public Double getSpeed() { + public @Nullable Double getSpeed() { return speed; } - public void setSpeed(Double setterArg) { + public void setSpeed(@Nullable Double setterArg) { this.speed = setterArg; } - HashMap toMap() { - HashMap toMapResult = new HashMap<>(); + public static class Builder { + private @Nullable Long textureId; + + public @NonNull Builder setTextureId(@Nullable Long setterArg) { + this.textureId = setterArg; + return this; + } + + private @Nullable Double speed; + + public @NonNull Builder setSpeed(@Nullable Double setterArg) { + this.speed = setterArg; + return this; + } + + public @NonNull PlaybackSpeedMessage build() { + PlaybackSpeedMessage pigeonReturn = new PlaybackSpeedMessage(); + pigeonReturn.setTextureId(textureId); + pigeonReturn.setSpeed(speed); + return pigeonReturn; + } + } + + @NonNull + Map toMap() { + Map toMapResult = new HashMap<>(); toMapResult.put("textureId", textureId); toMapResult.put("speed", speed); return toMapResult; } - static PlaybackSpeedMessage fromMap(HashMap map) { - PlaybackSpeedMessage fromMapResult = new PlaybackSpeedMessage(); + static @NonNull PlaybackSpeedMessage fromMap(@NonNull Map map) { + PlaybackSpeedMessage pigeonResult = new PlaybackSpeedMessage(); Object textureId = map.get("textureId"); - fromMapResult.textureId = + pigeonResult.setTextureId( (textureId == null) ? null - : ((textureId instanceof Integer) ? (Integer) textureId : (Long) textureId); + : ((textureId instanceof Integer) ? (Integer) textureId : (Long) textureId)); Object speed = map.get("speed"); - fromMapResult.speed = (Double) speed; - return fromMapResult; + pigeonResult.setSpeed((Double) speed); + return pigeonResult; } } /** Generated class from Pigeon that represents data sent in messages. */ public static class PositionMessage { - private Long textureId; + private @Nullable Long textureId; - public Long getTextureId() { + public @Nullable Long getTextureId() { return textureId; } - public void setTextureId(Long setterArg) { + public void setTextureId(@Nullable Long setterArg) { this.textureId = setterArg; } - private Long position; + private @Nullable Long position; - public Long getPosition() { + public @Nullable Long getPosition() { return position; } - public void setPosition(Long setterArg) { + public void setPosition(@Nullable Long setterArg) { this.position = setterArg; } - HashMap toMap() { - HashMap toMapResult = new HashMap<>(); + public static class Builder { + private @Nullable Long textureId; + + public @NonNull Builder setTextureId(@Nullable Long setterArg) { + this.textureId = setterArg; + return this; + } + + private @Nullable Long position; + + public @NonNull Builder setPosition(@Nullable Long setterArg) { + this.position = setterArg; + return this; + } + + public @NonNull PositionMessage build() { + PositionMessage pigeonReturn = new PositionMessage(); + pigeonReturn.setTextureId(textureId); + pigeonReturn.setPosition(position); + return pigeonReturn; + } + } + + @NonNull + Map toMap() { + Map toMapResult = new HashMap<>(); toMapResult.put("textureId", textureId); toMapResult.put("position", position); return toMapResult; } - static PositionMessage fromMap(HashMap map) { - PositionMessage fromMapResult = new PositionMessage(); + static @NonNull PositionMessage fromMap(@NonNull Map map) { + PositionMessage pigeonResult = new PositionMessage(); Object textureId = map.get("textureId"); - fromMapResult.textureId = + pigeonResult.setTextureId( (textureId == null) ? null - : ((textureId instanceof Integer) ? (Integer) textureId : (Long) textureId); + : ((textureId instanceof Integer) ? (Integer) textureId : (Long) textureId)); Object position = map.get("position"); - fromMapResult.position = + pigeonResult.setPosition( (position == null) ? null - : ((position instanceof Integer) ? (Integer) position : (Long) position); - return fromMapResult; + : ((position instanceof Integer) ? (Integer) position : (Long) position)); + return pigeonResult; + } + } + + /** Generated class from Pigeon that represents data sent in messages. */ + public static class CreateMessage { + private @Nullable String asset; + + public @Nullable String getAsset() { + return asset; + } + + public void setAsset(@Nullable String setterArg) { + this.asset = setterArg; + } + + private @Nullable String uri; + + public @Nullable String getUri() { + return uri; + } + + public void setUri(@Nullable String setterArg) { + this.uri = setterArg; + } + + private @Nullable String packageName; + + public @Nullable String getPackageName() { + return packageName; + } + + public void setPackageName(@Nullable String setterArg) { + this.packageName = setterArg; + } + + private @Nullable String formatHint; + + public @Nullable String getFormatHint() { + return formatHint; + } + + public void setFormatHint(@Nullable String setterArg) { + this.formatHint = setterArg; + } + + private @Nullable Map httpHeaders; + + public @Nullable Map getHttpHeaders() { + return httpHeaders; + } + + public void setHttpHeaders(@Nullable Map setterArg) { + this.httpHeaders = setterArg; + } + + public static class Builder { + private @Nullable String asset; + + public @NonNull Builder setAsset(@Nullable String setterArg) { + this.asset = setterArg; + return this; + } + + private @Nullable String uri; + + public @NonNull Builder setUri(@Nullable String setterArg) { + this.uri = setterArg; + return this; + } + + private @Nullable String packageName; + + public @NonNull Builder setPackageName(@Nullable String setterArg) { + this.packageName = setterArg; + return this; + } + + private @Nullable String formatHint; + + public @NonNull Builder setFormatHint(@Nullable String setterArg) { + this.formatHint = setterArg; + return this; + } + + private @Nullable Map httpHeaders; + + public @NonNull Builder setHttpHeaders(@Nullable Map setterArg) { + this.httpHeaders = setterArg; + return this; + } + + public @NonNull CreateMessage build() { + CreateMessage pigeonReturn = new CreateMessage(); + pigeonReturn.setAsset(asset); + pigeonReturn.setUri(uri); + pigeonReturn.setPackageName(packageName); + pigeonReturn.setFormatHint(formatHint); + pigeonReturn.setHttpHeaders(httpHeaders); + return pigeonReturn; + } + } + + @NonNull + Map toMap() { + Map toMapResult = new HashMap<>(); + toMapResult.put("asset", asset); + toMapResult.put("uri", uri); + toMapResult.put("packageName", packageName); + toMapResult.put("formatHint", formatHint); + toMapResult.put("httpHeaders", httpHeaders); + return toMapResult; + } + + static @NonNull CreateMessage fromMap(@NonNull Map map) { + CreateMessage pigeonResult = new CreateMessage(); + Object asset = map.get("asset"); + pigeonResult.setAsset((String) asset); + Object uri = map.get("uri"); + pigeonResult.setUri((String) uri); + Object packageName = map.get("packageName"); + pigeonResult.setPackageName((String) packageName); + Object formatHint = map.get("formatHint"); + pigeonResult.setFormatHint((String) formatHint); + Object httpHeaders = map.get("httpHeaders"); + pigeonResult.setHttpHeaders((Map) httpHeaders); + return pigeonResult; } } /** Generated class from Pigeon that represents data sent in messages. */ public static class MixWithOthersMessage { - private Boolean mixWithOthers; + private @Nullable Boolean mixWithOthers; - public Boolean getMixWithOthers() { + public @Nullable Boolean getMixWithOthers() { return mixWithOthers; } - public void setMixWithOthers(Boolean setterArg) { + public void setMixWithOthers(@Nullable Boolean setterArg) { this.mixWithOthers = setterArg; } - HashMap toMap() { - HashMap toMapResult = new HashMap<>(); + public static class Builder { + private @Nullable Boolean mixWithOthers; + + public @NonNull Builder setMixWithOthers(@Nullable Boolean setterArg) { + this.mixWithOthers = setterArg; + return this; + } + + public @NonNull MixWithOthersMessage build() { + MixWithOthersMessage pigeonReturn = new MixWithOthersMessage(); + pigeonReturn.setMixWithOthers(mixWithOthers); + return pigeonReturn; + } + } + + @NonNull + Map toMap() { + Map toMapResult = new HashMap<>(); toMapResult.put("mixWithOthers", mixWithOthers); return toMapResult; } - static MixWithOthersMessage fromMap(HashMap map) { - MixWithOthersMessage fromMapResult = new MixWithOthersMessage(); + static @NonNull MixWithOthersMessage fromMap(@NonNull Map map) { + MixWithOthersMessage pigeonResult = new MixWithOthersMessage(); Object mixWithOthers = map.get("mixWithOthers"); - fromMapResult.mixWithOthers = (Boolean) mixWithOthers; - return fromMapResult; + pigeonResult.setMixWithOthers((Boolean) mixWithOthers); + return pigeonResult; + } + } + + private static class VideoPlayerApiCodec extends StandardMessageCodec { + public static final VideoPlayerApiCodec INSTANCE = new VideoPlayerApiCodec(); + + private VideoPlayerApiCodec() {} + + @Override + protected Object readValueOfType(byte type, ByteBuffer buffer) { + switch (type) { + case (byte) 128: + return CreateMessage.fromMap((Map) readValue(buffer)); + + case (byte) 129: + return LoopingMessage.fromMap((Map) readValue(buffer)); + + case (byte) 130: + return MixWithOthersMessage.fromMap((Map) readValue(buffer)); + + case (byte) 131: + return PlaybackSpeedMessage.fromMap((Map) readValue(buffer)); + + case (byte) 132: + return PositionMessage.fromMap((Map) readValue(buffer)); + + case (byte) 133: + return TextureMessage.fromMap((Map) readValue(buffer)); + + case (byte) 134: + return VolumeMessage.fromMap((Map) readValue(buffer)); + + default: + return super.readValueOfType(type, buffer); + } + } + + @Override + protected void writeValue(ByteArrayOutputStream stream, Object value) { + if (value instanceof CreateMessage) { + stream.write(128); + writeValue(stream, ((CreateMessage) value).toMap()); + } else if (value instanceof LoopingMessage) { + stream.write(129); + writeValue(stream, ((LoopingMessage) value).toMap()); + } else if (value instanceof MixWithOthersMessage) { + stream.write(130); + writeValue(stream, ((MixWithOthersMessage) value).toMap()); + } else if (value instanceof PlaybackSpeedMessage) { + stream.write(131); + writeValue(stream, ((PlaybackSpeedMessage) value).toMap()); + } else if (value instanceof PositionMessage) { + stream.write(132); + writeValue(stream, ((PositionMessage) value).toMap()); + } else if (value instanceof TextureMessage) { + stream.write(133); + writeValue(stream, ((TextureMessage) value).toMap()); + } else if (value instanceof VolumeMessage) { + stream.write(134); + writeValue(stream, ((VolumeMessage) value).toMap()); + } else { + super.writeValue(stream, value); + } } } @@ -324,42 +569,45 @@ static MixWithOthersMessage fromMap(HashMap map) { public interface VideoPlayerApi { void initialize(); - TextureMessage create(CreateMessage arg); + TextureMessage create(CreateMessage msg); - void dispose(TextureMessage arg); + void dispose(TextureMessage msg); - void setLooping(LoopingMessage arg); + void setLooping(LoopingMessage msg); - void setVolume(VolumeMessage arg); + void setVolume(VolumeMessage msg); - void setPlaybackSpeed(PlaybackSpeedMessage arg); + void setPlaybackSpeed(PlaybackSpeedMessage msg); - void play(TextureMessage arg); + void play(TextureMessage msg); - PositionMessage position(TextureMessage arg); + PositionMessage position(TextureMessage msg); - void seekTo(PositionMessage arg); + void seekTo(PositionMessage msg); - void pause(TextureMessage arg); + void pause(TextureMessage msg); - void setMixWithOthers(MixWithOthersMessage arg); + void setMixWithOthers(MixWithOthersMessage msg); + + /** The codec used by VideoPlayerApi. */ + static MessageCodec getCodec() { + return VideoPlayerApiCodec.INSTANCE; + } - /** Sets up an instance of `VideoPlayerApi` to handle messages through the `binaryMessenger` */ + /** Sets up an instance of `VideoPlayerApi` to handle messages through the `binaryMessenger`. */ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.VideoPlayerApi.initialize", - new StandardMessageCodec()); + binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.initialize", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { api.initialize(); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -371,19 +619,20 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.VideoPlayerApi.create", - new StandardMessageCodec()); + binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.create", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { - @SuppressWarnings("ConstantConditions") - CreateMessage input = CreateMessage.fromMap((HashMap) message); - TextureMessage output = api.create(input); - wrapped.put("result", output.toMap()); - } catch (Exception exception) { + ArrayList args = (ArrayList) message; + CreateMessage msgArg = (CreateMessage) args.get(0); + if (msgArg == null) { + throw new NullPointerException("msgArg unexpectedly null."); + } + TextureMessage output = api.create(msgArg); + wrapped.put("result", output); + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -395,19 +644,20 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.VideoPlayerApi.dispose", - new StandardMessageCodec()); + binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.dispose", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { - @SuppressWarnings("ConstantConditions") - TextureMessage input = TextureMessage.fromMap((HashMap) message); - api.dispose(input); + ArrayList args = (ArrayList) message; + TextureMessage msgArg = (TextureMessage) args.get(0); + if (msgArg == null) { + throw new NullPointerException("msgArg unexpectedly null."); + } + api.dispose(msgArg); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -419,19 +669,20 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.VideoPlayerApi.setLooping", - new StandardMessageCodec()); + binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.setLooping", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { - @SuppressWarnings("ConstantConditions") - LoopingMessage input = LoopingMessage.fromMap((HashMap) message); - api.setLooping(input); + ArrayList args = (ArrayList) message; + LoopingMessage msgArg = (LoopingMessage) args.get(0); + if (msgArg == null) { + throw new NullPointerException("msgArg unexpectedly null."); + } + api.setLooping(msgArg); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -443,19 +694,20 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.VideoPlayerApi.setVolume", - new StandardMessageCodec()); + binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.setVolume", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { - @SuppressWarnings("ConstantConditions") - VolumeMessage input = VolumeMessage.fromMap((HashMap) message); - api.setVolume(input); + ArrayList args = (ArrayList) message; + VolumeMessage msgArg = (VolumeMessage) args.get(0); + if (msgArg == null) { + throw new NullPointerException("msgArg unexpectedly null."); + } + api.setVolume(msgArg); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -467,19 +719,20 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed", - new StandardMessageCodec()); + binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { - @SuppressWarnings("ConstantConditions") - PlaybackSpeedMessage input = PlaybackSpeedMessage.fromMap((HashMap) message); - api.setPlaybackSpeed(input); + ArrayList args = (ArrayList) message; + PlaybackSpeedMessage msgArg = (PlaybackSpeedMessage) args.get(0); + if (msgArg == null) { + throw new NullPointerException("msgArg unexpectedly null."); + } + api.setPlaybackSpeed(msgArg); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -491,19 +744,20 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.VideoPlayerApi.play", - new StandardMessageCodec()); + binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.play", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { - @SuppressWarnings("ConstantConditions") - TextureMessage input = TextureMessage.fromMap((HashMap) message); - api.play(input); + ArrayList args = (ArrayList) message; + TextureMessage msgArg = (TextureMessage) args.get(0); + if (msgArg == null) { + throw new NullPointerException("msgArg unexpectedly null."); + } + api.play(msgArg); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -515,19 +769,20 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.VideoPlayerApi.position", - new StandardMessageCodec()); + binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.position", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { - @SuppressWarnings("ConstantConditions") - TextureMessage input = TextureMessage.fromMap((HashMap) message); - PositionMessage output = api.position(input); - wrapped.put("result", output.toMap()); - } catch (Exception exception) { + ArrayList args = (ArrayList) message; + TextureMessage msgArg = (TextureMessage) args.get(0); + if (msgArg == null) { + throw new NullPointerException("msgArg unexpectedly null."); + } + PositionMessage output = api.position(msgArg); + wrapped.put("result", output); + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -539,19 +794,20 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.VideoPlayerApi.seekTo", - new StandardMessageCodec()); + binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.seekTo", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { - @SuppressWarnings("ConstantConditions") - PositionMessage input = PositionMessage.fromMap((HashMap) message); - api.seekTo(input); + ArrayList args = (ArrayList) message; + PositionMessage msgArg = (PositionMessage) args.get(0); + if (msgArg == null) { + throw new NullPointerException("msgArg unexpectedly null."); + } + api.seekTo(msgArg); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -563,19 +819,20 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.VideoPlayerApi.pause", - new StandardMessageCodec()); + binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.pause", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { - @SuppressWarnings("ConstantConditions") - TextureMessage input = TextureMessage.fromMap((HashMap) message); - api.pause(input); + ArrayList args = (ArrayList) message; + TextureMessage msgArg = (TextureMessage) args.get(0); + if (msgArg == null) { + throw new NullPointerException("msgArg unexpectedly null."); + } + api.pause(msgArg); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -587,19 +844,20 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers", - new StandardMessageCodec()); + binaryMessenger, "dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { - @SuppressWarnings("ConstantConditions") - MixWithOthersMessage input = MixWithOthersMessage.fromMap((HashMap) message); - api.setMixWithOthers(input); + ArrayList args = (ArrayList) message; + MixWithOthersMessage msgArg = (MixWithOthersMessage) args.get(0); + if (msgArg == null) { + throw new NullPointerException("msgArg unexpectedly null."); + } + api.setMixWithOthers(msgArg); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -611,11 +869,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { } } - private static HashMap wrapError(Exception exception) { - HashMap errorMap = new HashMap<>(); + private static Map wrapError(Throwable exception) { + Map errorMap = new HashMap<>(); errorMap.put("message", exception.toString()); errorMap.put("code", exception.getClass().getSimpleName()); - errorMap.put("details", null); + errorMap.put( + "details", + "Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception)); return errorMap; } } diff --git a/packages/video_player/video_player_android/lib/src/android_video_player.dart b/packages/video_player/video_player_android/lib/src/android_video_player.dart index adb386afa2b8..dfcf82af2a43 100644 --- a/packages/video_player/video_player_android/lib/src/android_video_player.dart +++ b/packages/video_player/video_player_android/lib/src/android_video_player.dart @@ -9,7 +9,7 @@ import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; import 'package:video_player_platform_interface/video_player_platform_interface.dart'; -import 'messages.dart'; +import 'messages.g.dart'; /// An Android implementation of [VideoPlayerPlatform] that uses the /// Pigeon-generated [VideoPlayerApi]. @@ -28,7 +28,7 @@ class AndroidVideoPlayer extends VideoPlayerPlatform { @override Future dispose(int textureId) { - return _api.dispose(TextureMessage()..textureId = textureId); + return _api.dispose(TextureMessage(textureId: textureId)); } @override @@ -59,48 +59,52 @@ class AndroidVideoPlayer extends VideoPlayerPlatform { @override Future setLooping(int textureId, bool looping) { - return _api.setLooping(LoopingMessage() - ..textureId = textureId - ..isLooping = looping); + return _api.setLooping(LoopingMessage( + textureId: textureId, + isLooping: looping, + )); } @override Future play(int textureId) { - return _api.play(TextureMessage()..textureId = textureId); + return _api.play(TextureMessage(textureId: textureId)); } @override Future pause(int textureId) { - return _api.pause(TextureMessage()..textureId = textureId); + return _api.pause(TextureMessage(textureId: textureId)); } @override Future setVolume(int textureId, double volume) { - return _api.setVolume(VolumeMessage() - ..textureId = textureId - ..volume = volume); + return _api.setVolume(VolumeMessage( + textureId: textureId, + volume: volume, + )); } @override Future setPlaybackSpeed(int textureId, double speed) { assert(speed > 0); - return _api.setPlaybackSpeed(PlaybackSpeedMessage() - ..textureId = textureId - ..speed = speed); + return _api.setPlaybackSpeed(PlaybackSpeedMessage( + textureId: textureId, + speed: speed, + )); } @override Future seekTo(int textureId, Duration position) { - return _api.seekTo(PositionMessage() - ..textureId = textureId - ..position = position.inMilliseconds); + return _api.seekTo(PositionMessage( + textureId: textureId, + position: position.inMilliseconds, + )); } @override Future getPosition(int textureId) async { final PositionMessage response = - await _api.position(TextureMessage()..textureId = textureId); + await _api.position(TextureMessage(textureId: textureId)); return Duration(milliseconds: response.position!); } @@ -146,9 +150,8 @@ class AndroidVideoPlayer extends VideoPlayerPlatform { @override Future setMixWithOthers(bool mixWithOthers) { - return _api.setMixWithOthers( - MixWithOthersMessage()..mixWithOthers = mixWithOthers, - ); + return _api + .setMixWithOthers(MixWithOthersMessage(mixWithOthers: mixWithOthers)); } EventChannel _eventChannelFor(int textureId) { diff --git a/packages/video_player/video_player_android/lib/src/messages.dart b/packages/video_player/video_player_android/lib/src/messages.g.dart similarity index 50% rename from packages/video_player/video_player_android/lib/src/messages.dart rename to packages/video_player/video_player_android/lib/src/messages.g.dart index 831f4e3755d9..810627771e7c 100644 --- a/packages/video_player/video_player_android/lib/src/messages.dart +++ b/packages/video_player/video_player_android/lib/src/messages.g.dart @@ -1,17 +1,21 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - -// Autogenerated from Pigeon (v0.1.21), do not edit directly. +// Autogenerated from Pigeon (v1.0.16), do not edit directly. // See also: https://pub.dev/packages/pigeon -// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, cast_nullable_to_non_nullable +// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name // @dart = 2.12 import 'dart:async'; import 'dart:typed_data' show Uint8List, Int32List, Int64List, Float64List; +import 'package:flutter/foundation.dart' show WriteBuffer, ReadBuffer; import 'package:flutter/services.dart'; class TextureMessage { + TextureMessage({ + this.textureId, + }); + int? textureId; Object encode() { @@ -22,39 +26,18 @@ class TextureMessage { static TextureMessage decode(Object message) { final Map pigeonMap = message as Map; - return TextureMessage()..textureId = pigeonMap['textureId'] as int?; - } -} - -class CreateMessage { - String? asset; - String? uri; - String? packageName; - String? formatHint; - Map? httpHeaders; - - Object encode() { - final Map pigeonMap = {}; - pigeonMap['asset'] = asset; - pigeonMap['uri'] = uri; - pigeonMap['packageName'] = packageName; - pigeonMap['formatHint'] = formatHint; - pigeonMap['httpHeaders'] = httpHeaders; - return pigeonMap; - } - - static CreateMessage decode(Object message) { - final Map pigeonMap = message as Map; - return CreateMessage() - ..asset = pigeonMap['asset'] as String? - ..uri = pigeonMap['uri'] as String? - ..packageName = pigeonMap['packageName'] as String? - ..formatHint = pigeonMap['formatHint'] as String? - ..httpHeaders = pigeonMap['httpHeaders'] as Map?; + return TextureMessage( + textureId: pigeonMap['textureId'] as int?, + ); } } class LoopingMessage { + LoopingMessage({ + this.textureId, + this.isLooping, + }); + int? textureId; bool? isLooping; @@ -67,13 +50,19 @@ class LoopingMessage { static LoopingMessage decode(Object message) { final Map pigeonMap = message as Map; - return LoopingMessage() - ..textureId = pigeonMap['textureId'] as int? - ..isLooping = pigeonMap['isLooping'] as bool?; + return LoopingMessage( + textureId: pigeonMap['textureId'] as int?, + isLooping: pigeonMap['isLooping'] as bool?, + ); } } class VolumeMessage { + VolumeMessage({ + this.textureId, + this.volume, + }); + int? textureId; double? volume; @@ -86,13 +75,19 @@ class VolumeMessage { static VolumeMessage decode(Object message) { final Map pigeonMap = message as Map; - return VolumeMessage() - ..textureId = pigeonMap['textureId'] as int? - ..volume = pigeonMap['volume'] as double?; + return VolumeMessage( + textureId: pigeonMap['textureId'] as int?, + volume: pigeonMap['volume'] as double?, + ); } } class PlaybackSpeedMessage { + PlaybackSpeedMessage({ + this.textureId, + this.speed, + }); + int? textureId; double? speed; @@ -105,13 +100,19 @@ class PlaybackSpeedMessage { static PlaybackSpeedMessage decode(Object message) { final Map pigeonMap = message as Map; - return PlaybackSpeedMessage() - ..textureId = pigeonMap['textureId'] as int? - ..speed = pigeonMap['speed'] as double?; + return PlaybackSpeedMessage( + textureId: pigeonMap['textureId'] as int?, + speed: pigeonMap['speed'] as double?, + ); } } class PositionMessage { + PositionMessage({ + this.textureId, + this.position, + }); + int? textureId; int? position; @@ -124,13 +125,56 @@ class PositionMessage { static PositionMessage decode(Object message) { final Map pigeonMap = message as Map; - return PositionMessage() - ..textureId = pigeonMap['textureId'] as int? - ..position = pigeonMap['position'] as int?; + return PositionMessage( + textureId: pigeonMap['textureId'] as int?, + position: pigeonMap['position'] as int?, + ); + } +} + +class CreateMessage { + CreateMessage({ + this.asset, + this.uri, + this.packageName, + this.formatHint, + this.httpHeaders, + }); + + String? asset; + String? uri; + String? packageName; + String? formatHint; + Map? httpHeaders; + + Object encode() { + final Map pigeonMap = {}; + pigeonMap['asset'] = asset; + pigeonMap['uri'] = uri; + pigeonMap['packageName'] = packageName; + pigeonMap['formatHint'] = formatHint; + pigeonMap['httpHeaders'] = httpHeaders; + return pigeonMap; + } + + static CreateMessage decode(Object message) { + final Map pigeonMap = message as Map; + return CreateMessage( + asset: pigeonMap['asset'] as String?, + uri: pigeonMap['uri'] as String?, + packageName: pigeonMap['packageName'] as String?, + formatHint: pigeonMap['formatHint'] as String?, + httpHeaders: (pigeonMap['httpHeaders'] as Map?) + ?.cast(), + ); } } class MixWithOthersMessage { + MixWithOthersMessage({ + this.mixWithOthers, + }); + bool? mixWithOthers; Object encode() { @@ -141,15 +185,87 @@ class MixWithOthersMessage { static MixWithOthersMessage decode(Object message) { final Map pigeonMap = message as Map; - return MixWithOthersMessage() - ..mixWithOthers = pigeonMap['mixWithOthers'] as bool?; + return MixWithOthersMessage( + mixWithOthers: pigeonMap['mixWithOthers'] as bool?, + ); + } +} + +class _VideoPlayerApiCodec extends StandardMessageCodec { + const _VideoPlayerApiCodec(); + @override + void writeValue(WriteBuffer buffer, Object? value) { + if (value is CreateMessage) { + buffer.putUint8(128); + writeValue(buffer, value.encode()); + } else if (value is LoopingMessage) { + buffer.putUint8(129); + writeValue(buffer, value.encode()); + } else if (value is MixWithOthersMessage) { + buffer.putUint8(130); + writeValue(buffer, value.encode()); + } else if (value is PlaybackSpeedMessage) { + buffer.putUint8(131); + writeValue(buffer, value.encode()); + } else if (value is PositionMessage) { + buffer.putUint8(132); + writeValue(buffer, value.encode()); + } else if (value is TextureMessage) { + buffer.putUint8(133); + writeValue(buffer, value.encode()); + } else if (value is VolumeMessage) { + buffer.putUint8(134); + writeValue(buffer, value.encode()); + } else { + super.writeValue(buffer, value); + } + } + + @override + Object? readValueOfType(int type, ReadBuffer buffer) { + switch (type) { + case 128: + return CreateMessage.decode(readValue(buffer)!); + + case 129: + return LoopingMessage.decode(readValue(buffer)!); + + case 130: + return MixWithOthersMessage.decode(readValue(buffer)!); + + case 131: + return PlaybackSpeedMessage.decode(readValue(buffer)!); + + case 132: + return PositionMessage.decode(readValue(buffer)!); + + case 133: + return TextureMessage.decode(readValue(buffer)!); + + case 134: + return VolumeMessage.decode(readValue(buffer)!); + + default: + return super.readValueOfType(type, buffer); + } } } class VideoPlayerApi { + /// Constructor for [VideoPlayerApi]. The [binaryMessenger] named argument is + /// available for dependency injection. If it is left null, the default + /// BinaryMessenger will be used which routes to the host platform. + VideoPlayerApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; + + final BinaryMessenger? _binaryMessenger; + + static const MessageCodec codec = _VideoPlayerApiCodec(); + Future initialize() async { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.initialize', StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.initialize', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = await channel.send(null) as Map?; if (replyMap == null) { @@ -160,23 +276,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future create(CreateMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.create', StandardMessageCodec()); + Future create(CreateMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.create', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -185,23 +301,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - return TextureMessage.decode(replyMap['result']!); + return (replyMap['result'] as TextureMessage?)!; } } - Future dispose(TextureMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.dispose', StandardMessageCodec()); + Future dispose(TextureMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.dispose', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -210,23 +326,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future setLooping(LoopingMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setLooping', StandardMessageCodec()); + Future setLooping(LoopingMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setLooping', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -235,23 +351,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future setVolume(VolumeMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setVolume', StandardMessageCodec()); + Future setVolume(VolumeMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setVolume', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -260,24 +376,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future setPlaybackSpeed(PlaybackSpeedMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed', - StandardMessageCodec()); + Future setPlaybackSpeed(PlaybackSpeedMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -286,23 +401,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future play(TextureMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.play', StandardMessageCodec()); + Future play(TextureMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.play', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -311,23 +426,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future position(TextureMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.position', StandardMessageCodec()); + Future position(TextureMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.position', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -336,23 +451,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - return PositionMessage.decode(replyMap['result']!); + return (replyMap['result'] as PositionMessage?)!; } } - Future seekTo(PositionMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.seekTo', StandardMessageCodec()); + Future seekTo(PositionMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.seekTo', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -361,23 +476,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future pause(TextureMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.pause', StandardMessageCodec()); + Future pause(TextureMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.pause', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -386,24 +501,23 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } - Future setMixWithOthers(MixWithOthersMessage arg) async { - final Object encoded = arg.encode(); - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers', - StandardMessageCodec()); + Future setMixWithOthers(MixWithOthersMessage arg_msg) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers', codec, + binaryMessenger: _binaryMessenger); final Map? replyMap = - await channel.send(encoded) as Map?; + await channel.send([arg_msg]) as Map?; if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -412,14 +526,14 @@ class VideoPlayerApi { ); } else if (replyMap['error'] != null) { final Map error = - replyMap['error'] as Map; + (replyMap['error'] as Map?)!; throw PlatformException( - code: error['code'] as String, + code: (error['code'] as String?)!, message: error['message'] as String?, details: error['details'], ); } else { - // noop + return; } } } diff --git a/packages/video_player/video_player_android/pigeons/copyright.txt b/packages/video_player/video_player_android/pigeons/copyright.txt new file mode 100644 index 000000000000..1236b63caf3a --- /dev/null +++ b/packages/video_player/video_player_android/pigeons/copyright.txt @@ -0,0 +1,3 @@ +Copyright 2013 The Flutter Authors. All rights reserved. +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. diff --git a/packages/video_player/video_player_android/pigeons/messages.dart b/packages/video_player/video_player_android/pigeons/messages.dart index 42d96408da87..559c38d9fbaa 100644 --- a/packages/video_player/video_player_android/pigeons/messages.dart +++ b/packages/video_player/video_player_android/pigeons/messages.dart @@ -2,44 +2,51 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 - -import 'package:pigeon/pigeon_lib.dart'; +import 'package:pigeon/pigeon.dart'; +@ConfigurePigeon(PigeonOptions( + dartOut: 'lib/src/messages.g.dart', + dartTestOut: 'test/test_api.dart', + javaOut: 'android/src/main/java/io/flutter/plugins/videoplayer/Messages.java', + javaOptions: JavaOptions( + package: 'io.flutter.plugins.videoplayer', + ), + copyrightHeader: 'pigeons/copyright.txt', +)) class TextureMessage { - int textureId; + int? textureId; } class LoopingMessage { - int textureId; - bool isLooping; + int? textureId; + bool? isLooping; } class VolumeMessage { - int textureId; - double volume; + int? textureId; + double? volume; } class PlaybackSpeedMessage { - int textureId; - double speed; + int? textureId; + double? speed; } class PositionMessage { - int textureId; - int position; + int? textureId; + int? position; } class CreateMessage { - String asset; - String uri; - String packageName; - String formatHint; - Map httpHeaders; + String? asset; + String? uri; + String? packageName; + String? formatHint; + Map? httpHeaders; } class MixWithOthersMessage { - bool mixWithOthers; + bool? mixWithOthers; } @HostApi(dartHostTestHandler: 'TestHostVideoPlayerApi') @@ -56,14 +63,3 @@ abstract class VideoPlayerApi { void pause(TextureMessage msg); void setMixWithOthers(MixWithOthersMessage msg); } - -void configurePigeon(PigeonOptions opts) { - opts.dartOut = 'lib/src/messages.dart'; - opts.dartTestOut = 'test/test_api.dart'; - opts.objcHeaderOut = 'ios/Classes/messages.h'; - opts.objcSourceOut = 'ios/Classes/messages.m'; - opts.objcOptions.prefix = 'FLT'; - opts.javaOut = - 'android/src/main/java/io/flutter/plugins/videoplayer/Messages.java'; - opts.javaOptions.package = 'io.flutter.plugins.videoplayer'; -} diff --git a/packages/video_player/video_player_android/pubspec.yaml b/packages/video_player/video_player_android/pubspec.yaml index 423c5ade0ac8..c40d5185e854 100644 --- a/packages/video_player/video_player_android/pubspec.yaml +++ b/packages/video_player/video_player_android/pubspec.yaml @@ -2,7 +2,7 @@ name: video_player_android description: Android implementation of the video_player plugin. repository: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22 -version: 2.2.17 +version: 2.3.0 environment: sdk: ">=2.14.0 <3.0.0" @@ -25,4 +25,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - pigeon: ^0.1.21 + pigeon: ^1.0.16 diff --git a/packages/video_player/video_player_android/test/android_video_player_test.dart b/packages/video_player/video_player_android/test/android_video_player_test.dart index 9eac540160a0..c6769a3077e3 100644 --- a/packages/video_player/video_player_android/test/android_video_player_test.dart +++ b/packages/video_player/video_player_android/test/android_video_player_test.dart @@ -6,7 +6,7 @@ import 'dart:ui'; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:video_player_android/src/messages.dart'; +import 'package:video_player_android/src/messages.g.dart'; import 'package:video_player_android/video_player_android.dart'; import 'package:video_player_platform_interface/video_player_platform_interface.dart'; diff --git a/packages/video_player/video_player_android/test/test_api.dart b/packages/video_player/video_player_android/test/test_api.dart index 2fbcbcf9e898..183ad38f2ecd 100644 --- a/packages/video_player/video_player_android/test/test_api.dart +++ b/packages/video_player/video_player_android/test/test_api.dart @@ -1,35 +1,100 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - -// Autogenerated from Pigeon (v0.1.21), do not edit directly. +// Autogenerated from Pigeon (v1.0.16), do not edit directly. // See also: https://pub.dev/packages/pigeon -// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import +// TODO(gaaclarke): `unnecessary_parenthesis had to be added manually. +// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis // @dart = 2.12 import 'dart:async'; import 'dart:typed_data' show Uint8List, Int32List, Int64List, Float64List; - +import 'package:flutter/foundation.dart' show WriteBuffer, ReadBuffer; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:video_player_android/src/messages.dart'; + +// TODO(gaaclarke): This had to be hand tweaked from a relative path. +import 'package:video_player_android/src/messages.g.dart'; + +class _TestHostVideoPlayerApiCodec extends StandardMessageCodec { + const _TestHostVideoPlayerApiCodec(); + @override + void writeValue(WriteBuffer buffer, Object? value) { + if (value is CreateMessage) { + buffer.putUint8(128); + writeValue(buffer, value.encode()); + } else if (value is LoopingMessage) { + buffer.putUint8(129); + writeValue(buffer, value.encode()); + } else if (value is MixWithOthersMessage) { + buffer.putUint8(130); + writeValue(buffer, value.encode()); + } else if (value is PlaybackSpeedMessage) { + buffer.putUint8(131); + writeValue(buffer, value.encode()); + } else if (value is PositionMessage) { + buffer.putUint8(132); + writeValue(buffer, value.encode()); + } else if (value is TextureMessage) { + buffer.putUint8(133); + writeValue(buffer, value.encode()); + } else if (value is VolumeMessage) { + buffer.putUint8(134); + writeValue(buffer, value.encode()); + } else { + super.writeValue(buffer, value); + } + } + + @override + Object? readValueOfType(int type, ReadBuffer buffer) { + switch (type) { + case 128: + return CreateMessage.decode(readValue(buffer)!); + + case 129: + return LoopingMessage.decode(readValue(buffer)!); + + case 130: + return MixWithOthersMessage.decode(readValue(buffer)!); + + case 131: + return PlaybackSpeedMessage.decode(readValue(buffer)!); + + case 132: + return PositionMessage.decode(readValue(buffer)!); + + case 133: + return TextureMessage.decode(readValue(buffer)!); + + case 134: + return VolumeMessage.decode(readValue(buffer)!); + + default: + return super.readValueOfType(type, buffer); + } + } +} abstract class TestHostVideoPlayerApi { + static const MessageCodec codec = _TestHostVideoPlayerApiCodec(); + void initialize(); - TextureMessage create(CreateMessage arg); - void dispose(TextureMessage arg); - void setLooping(LoopingMessage arg); - void setVolume(VolumeMessage arg); - void setPlaybackSpeed(PlaybackSpeedMessage arg); - void play(TextureMessage arg); - PositionMessage position(TextureMessage arg); - void seekTo(PositionMessage arg); - void pause(TextureMessage arg); - void setMixWithOthers(MixWithOthersMessage arg); - static void setup(TestHostVideoPlayerApi? api) { + TextureMessage create(CreateMessage msg); + void dispose(TextureMessage msg); + void setLooping(LoopingMessage msg); + void setVolume(VolumeMessage msg); + void setPlaybackSpeed(PlaybackSpeedMessage msg); + void play(TextureMessage msg); + PositionMessage position(TextureMessage msg); + void seekTo(PositionMessage msg); + void pause(TextureMessage msg); + void setMixWithOthers(MixWithOthersMessage msg); + static void setup(TestHostVideoPlayerApi? api, + {BinaryMessenger? binaryMessenger}) { { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.initialize', - StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.initialize', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { @@ -41,157 +106,193 @@ abstract class TestHostVideoPlayerApi { } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.create', StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.create', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.create was null. Expected CreateMessage.'); - final CreateMessage input = CreateMessage.decode(message!); - final TextureMessage output = api.create(input); - return {'result': output.encode()}; + 'Argument for dev.flutter.pigeon.VideoPlayerApi.create was null.'); + final List args = (message as List?)!; + final CreateMessage? arg_msg = (args[0] as CreateMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.create was null, expected non-null CreateMessage.'); + final TextureMessage output = api.create(arg_msg!); + return {'result': output}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.dispose', StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.dispose', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.dispose was null. Expected TextureMessage.'); - final TextureMessage input = TextureMessage.decode(message!); - api.dispose(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.dispose was null.'); + final List args = (message as List?)!; + final TextureMessage? arg_msg = (args[0] as TextureMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.dispose was null, expected non-null TextureMessage.'); + api.dispose(arg_msg!); return {}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setLooping', - StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setLooping', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.setLooping was null. Expected LoopingMessage.'); - final LoopingMessage input = LoopingMessage.decode(message!); - api.setLooping(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setLooping was null.'); + final List args = (message as List?)!; + final LoopingMessage? arg_msg = (args[0] as LoopingMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setLooping was null, expected non-null LoopingMessage.'); + api.setLooping(arg_msg!); return {}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setVolume', - StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setVolume', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.setVolume was null. Expected VolumeMessage.'); - final VolumeMessage input = VolumeMessage.decode(message!); - api.setVolume(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setVolume was null.'); + final List args = (message as List?)!; + final VolumeMessage? arg_msg = (args[0] as VolumeMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setVolume was null, expected non-null VolumeMessage.'); + api.setVolume(arg_msg!); return {}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed', - StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed was null. Expected PlaybackSpeedMessage.'); - final PlaybackSpeedMessage input = - PlaybackSpeedMessage.decode(message!); - api.setPlaybackSpeed(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed was null.'); + final List args = (message as List?)!; + final PlaybackSpeedMessage? arg_msg = + (args[0] as PlaybackSpeedMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed was null, expected non-null PlaybackSpeedMessage.'); + api.setPlaybackSpeed(arg_msg!); return {}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.play', StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.play', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.play was null. Expected TextureMessage.'); - final TextureMessage input = TextureMessage.decode(message!); - api.play(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.play was null.'); + final List args = (message as List?)!; + final TextureMessage? arg_msg = (args[0] as TextureMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.play was null, expected non-null TextureMessage.'); + api.play(arg_msg!); return {}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.position', StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.position', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.position was null. Expected TextureMessage.'); - final TextureMessage input = TextureMessage.decode(message!); - final PositionMessage output = api.position(input); - return {'result': output.encode()}; + 'Argument for dev.flutter.pigeon.VideoPlayerApi.position was null.'); + final List args = (message as List?)!; + final TextureMessage? arg_msg = (args[0] as TextureMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.position was null, expected non-null TextureMessage.'); + final PositionMessage output = api.position(arg_msg!); + return {'result': output}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.seekTo', StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.seekTo', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.seekTo was null. Expected PositionMessage.'); - final PositionMessage input = PositionMessage.decode(message!); - api.seekTo(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.seekTo was null.'); + final List args = (message as List?)!; + final PositionMessage? arg_msg = (args[0] as PositionMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.seekTo was null, expected non-null PositionMessage.'); + api.seekTo(arg_msg!); return {}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.pause', StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.pause', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.pause was null. Expected TextureMessage.'); - final TextureMessage input = TextureMessage.decode(message!); - api.pause(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.pause was null.'); + final List args = (message as List?)!; + final TextureMessage? arg_msg = (args[0] as TextureMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.pause was null, expected non-null TextureMessage.'); + api.pause(arg_msg!); return {}; }); } } { - const BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers', - StandardMessageCodec()); + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers was null. Expected MixWithOthersMessage.'); - final MixWithOthersMessage input = - MixWithOthersMessage.decode(message!); - api.setMixWithOthers(input); + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers was null.'); + final List args = (message as List?)!; + final MixWithOthersMessage? arg_msg = + (args[0] as MixWithOthersMessage?); + assert(arg_msg != null, + 'Argument for dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers was null, expected non-null MixWithOthersMessage.'); + api.setMixWithOthers(arg_msg!); return {}; }); } From d9a93074d37b76294c902f8e5fca5f39c1d2f290 Mon Sep 17 00:00:00 2001 From: Aaron Clarke Date: Thu, 3 Feb 2022 09:41:00 -0800 Subject: [PATCH 3/6] updated the changelog messages --- packages/video_player/video_player_android/CHANGELOG.md | 2 +- packages/video_player/video_player_avfoundation/CHANGELOG.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/video_player/video_player_android/CHANGELOG.md b/packages/video_player/video_player_android/CHANGELOG.md index ad49bd11e6ea..ec526ee1c7c9 100644 --- a/packages/video_player/video_player_android/CHANGELOG.md +++ b/packages/video_player/video_player_android/CHANGELOG.md @@ -1,6 +1,6 @@ ## 2.3.0 -* Update Pigeon to ^1.0.16. +* Updates Pigeon to ^1.0.16. ## 2.2.17 diff --git a/packages/video_player/video_player_avfoundation/CHANGELOG.md b/packages/video_player/video_player_avfoundation/CHANGELOG.md index 1b417e128905..d6ecabd4b9ad 100644 --- a/packages/video_player/video_player_avfoundation/CHANGELOG.md +++ b/packages/video_player/video_player_avfoundation/CHANGELOG.md @@ -1,6 +1,6 @@ ## 2.3.0 -* Update Pigeon to 1.0.x. +* Updates Pigeon to ^1.0.16. ## 2.2.18 From c702665eacd399b1a2b987ea62d7c51ed97766fc Mon Sep 17 00:00:00 2001 From: Aaron Clarke Date: Fri, 4 Feb 2022 15:48:04 -0800 Subject: [PATCH 4/6] [video_player] updated nullability in pigeon files --- .../flutter/plugins/videoplayer/Messages.java | 129 ++++++++++++------ .../videoplayer/VideoPlayerPlugin.java | 10 +- .../lib/src/android_video_player.dart | 2 +- .../lib/src/messages.g.dart | 60 ++++---- .../pigeons/messages.dart | 26 ++-- .../test/android_video_player_test.dart | 4 +- .../video_player_android/test/test_api.dart | 1 - .../ios/RunnerTests/VideoPlayerTests.m | 13 +- .../ios/Classes/FLTVideoPlayerPlugin.m | 7 +- .../ios/Classes/messages.g.h | 48 ++++--- .../ios/Classes/messages.g.m | 116 ++++++---------- .../lib/src/avfoundation_video_player.dart | 2 +- .../lib/src/messages.g.dart | 62 ++++----- .../pigeons/messages.dart | 26 ++-- .../video_player_avfoundation/pubspec.yaml | 2 +- .../test/avfoundation_video_player_test.dart | 4 +- .../test/test_api.dart | 4 +- 17 files changed, 274 insertions(+), 242 deletions(-) diff --git a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java index 3c824d5568c0..360b32680e1d 100644 --- a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java +++ b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java @@ -22,22 +22,29 @@ /** Generated class from Pigeon. */ @SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression"}) public class Messages { + /** Generated class from Pigeon that represents data sent in messages. */ public static class TextureMessage { - private @Nullable Long textureId; + private @NonNull Long textureId; - public @Nullable Long getTextureId() { + public @NonNull Long getTextureId() { return textureId; } - public void setTextureId(@Nullable Long setterArg) { + public void setTextureId(@NonNull Long setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"textureId\" is null."); + } this.textureId = setterArg; } + /** Constructor is private to enforce null safety; use Builder. */ + private TextureMessage() {} + public static class Builder { private @Nullable Long textureId; - public @NonNull Builder setTextureId(@Nullable Long setterArg) { + public @NonNull Builder setTextureId(@NonNull Long setterArg) { this.textureId = setterArg; return this; } @@ -69,37 +76,46 @@ Map toMap() { /** Generated class from Pigeon that represents data sent in messages. */ public static class LoopingMessage { - private @Nullable Long textureId; + private @NonNull Long textureId; - public @Nullable Long getTextureId() { + public @NonNull Long getTextureId() { return textureId; } - public void setTextureId(@Nullable Long setterArg) { + public void setTextureId(@NonNull Long setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"textureId\" is null."); + } this.textureId = setterArg; } - private @Nullable Boolean isLooping; + private @NonNull Boolean isLooping; - public @Nullable Boolean getIsLooping() { + public @NonNull Boolean getIsLooping() { return isLooping; } - public void setIsLooping(@Nullable Boolean setterArg) { + public void setIsLooping(@NonNull Boolean setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"isLooping\" is null."); + } this.isLooping = setterArg; } + /** Constructor is private to enforce null safety; use Builder. */ + private LoopingMessage() {} + public static class Builder { private @Nullable Long textureId; - public @NonNull Builder setTextureId(@Nullable Long setterArg) { + public @NonNull Builder setTextureId(@NonNull Long setterArg) { this.textureId = setterArg; return this; } private @Nullable Boolean isLooping; - public @NonNull Builder setIsLooping(@Nullable Boolean setterArg) { + public @NonNull Builder setIsLooping(@NonNull Boolean setterArg) { this.isLooping = setterArg; return this; } @@ -135,37 +151,46 @@ Map toMap() { /** Generated class from Pigeon that represents data sent in messages. */ public static class VolumeMessage { - private @Nullable Long textureId; + private @NonNull Long textureId; - public @Nullable Long getTextureId() { + public @NonNull Long getTextureId() { return textureId; } - public void setTextureId(@Nullable Long setterArg) { + public void setTextureId(@NonNull Long setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"textureId\" is null."); + } this.textureId = setterArg; } - private @Nullable Double volume; + private @NonNull Double volume; - public @Nullable Double getVolume() { + public @NonNull Double getVolume() { return volume; } - public void setVolume(@Nullable Double setterArg) { + public void setVolume(@NonNull Double setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"volume\" is null."); + } this.volume = setterArg; } + /** Constructor is private to enforce null safety; use Builder. */ + private VolumeMessage() {} + public static class Builder { private @Nullable Long textureId; - public @NonNull Builder setTextureId(@Nullable Long setterArg) { + public @NonNull Builder setTextureId(@NonNull Long setterArg) { this.textureId = setterArg; return this; } private @Nullable Double volume; - public @NonNull Builder setVolume(@Nullable Double setterArg) { + public @NonNull Builder setVolume(@NonNull Double setterArg) { this.volume = setterArg; return this; } @@ -201,37 +226,46 @@ Map toMap() { /** Generated class from Pigeon that represents data sent in messages. */ public static class PlaybackSpeedMessage { - private @Nullable Long textureId; + private @NonNull Long textureId; - public @Nullable Long getTextureId() { + public @NonNull Long getTextureId() { return textureId; } - public void setTextureId(@Nullable Long setterArg) { + public void setTextureId(@NonNull Long setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"textureId\" is null."); + } this.textureId = setterArg; } - private @Nullable Double speed; + private @NonNull Double speed; - public @Nullable Double getSpeed() { + public @NonNull Double getSpeed() { return speed; } - public void setSpeed(@Nullable Double setterArg) { + public void setSpeed(@NonNull Double setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"speed\" is null."); + } this.speed = setterArg; } + /** Constructor is private to enforce null safety; use Builder. */ + private PlaybackSpeedMessage() {} + public static class Builder { private @Nullable Long textureId; - public @NonNull Builder setTextureId(@Nullable Long setterArg) { + public @NonNull Builder setTextureId(@NonNull Long setterArg) { this.textureId = setterArg; return this; } private @Nullable Double speed; - public @NonNull Builder setSpeed(@Nullable Double setterArg) { + public @NonNull Builder setSpeed(@NonNull Double setterArg) { this.speed = setterArg; return this; } @@ -267,37 +301,46 @@ Map toMap() { /** Generated class from Pigeon that represents data sent in messages. */ public static class PositionMessage { - private @Nullable Long textureId; + private @NonNull Long textureId; - public @Nullable Long getTextureId() { + public @NonNull Long getTextureId() { return textureId; } - public void setTextureId(@Nullable Long setterArg) { + public void setTextureId(@NonNull Long setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"textureId\" is null."); + } this.textureId = setterArg; } - private @Nullable Long position; + private @NonNull Long position; - public @Nullable Long getPosition() { + public @NonNull Long getPosition() { return position; } - public void setPosition(@Nullable Long setterArg) { + public void setPosition(@NonNull Long setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"position\" is null."); + } this.position = setterArg; } + /** Constructor is private to enforce null safety; use Builder. */ + private PositionMessage() {} + public static class Builder { private @Nullable Long textureId; - public @NonNull Builder setTextureId(@Nullable Long setterArg) { + public @NonNull Builder setTextureId(@NonNull Long setterArg) { this.textureId = setterArg; return this; } private @Nullable Long position; - public @NonNull Builder setPosition(@Nullable Long setterArg) { + public @NonNull Builder setPosition(@NonNull Long setterArg) { this.position = setterArg; return this; } @@ -462,20 +505,26 @@ Map toMap() { /** Generated class from Pigeon that represents data sent in messages. */ public static class MixWithOthersMessage { - private @Nullable Boolean mixWithOthers; + private @NonNull Boolean mixWithOthers; - public @Nullable Boolean getMixWithOthers() { + public @NonNull Boolean getMixWithOthers() { return mixWithOthers; } - public void setMixWithOthers(@Nullable Boolean setterArg) { + public void setMixWithOthers(@NonNull Boolean setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"mixWithOthers\" is null."); + } this.mixWithOthers = setterArg; } + /** Constructor is private to enforce null safety; use Builder. */ + private MixWithOthersMessage() {} + public static class Builder { private @Nullable Boolean mixWithOthers; - public @NonNull Builder setMixWithOthers(@Nullable Boolean setterArg) { + public @NonNull Builder setMixWithOthers(@NonNull Boolean setterArg) { this.mixWithOthers = setterArg; return this; } diff --git a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java index d77b45e03d4b..168d90d8a57a 100644 --- a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java +++ b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java @@ -156,8 +156,7 @@ public TextureMessage create(CreateMessage arg) { } videoPlayers.put(handle.id(), player); - TextureMessage result = new TextureMessage(); - result.setTextureId(handle.id()); + TextureMessage result = new TextureMessage.Builder().setTextureId(handle.id()).build(); return result; } @@ -189,8 +188,11 @@ public void play(TextureMessage arg) { public PositionMessage position(TextureMessage arg) { VideoPlayer player = videoPlayers.get(arg.getTextureId()); - PositionMessage result = new PositionMessage(); - result.setPosition(player.getPosition()); + PositionMessage result = + new PositionMessage.Builder() + .setPosition(player.getPosition()) + .setTextureId(arg.getTextureId()) + .build(); player.sendBufferingUpdate(); return result; } diff --git a/packages/video_player/video_player_android/lib/src/android_video_player.dart b/packages/video_player/video_player_android/lib/src/android_video_player.dart index dfcf82af2a43..04183e12d5dd 100644 --- a/packages/video_player/video_player_android/lib/src/android_video_player.dart +++ b/packages/video_player/video_player_android/lib/src/android_video_player.dart @@ -105,7 +105,7 @@ class AndroidVideoPlayer extends VideoPlayerPlatform { Future getPosition(int textureId) async { final PositionMessage response = await _api.position(TextureMessage(textureId: textureId)); - return Duration(milliseconds: response.position!); + return Duration(milliseconds: response.position); } @override diff --git a/packages/video_player/video_player_android/lib/src/messages.g.dart b/packages/video_player/video_player_android/lib/src/messages.g.dart index 810627771e7c..8370001846ea 100644 --- a/packages/video_player/video_player_android/lib/src/messages.g.dart +++ b/packages/video_player/video_player_android/lib/src/messages.g.dart @@ -13,10 +13,10 @@ import 'package:flutter/services.dart'; class TextureMessage { TextureMessage({ - this.textureId, + required this.textureId, }); - int? textureId; + int textureId; Object encode() { final Map pigeonMap = {}; @@ -27,19 +27,19 @@ class TextureMessage { static TextureMessage decode(Object message) { final Map pigeonMap = message as Map; return TextureMessage( - textureId: pigeonMap['textureId'] as int?, + textureId: pigeonMap['textureId']! as int, ); } } class LoopingMessage { LoopingMessage({ - this.textureId, - this.isLooping, + required this.textureId, + required this.isLooping, }); - int? textureId; - bool? isLooping; + int textureId; + bool isLooping; Object encode() { final Map pigeonMap = {}; @@ -51,20 +51,20 @@ class LoopingMessage { static LoopingMessage decode(Object message) { final Map pigeonMap = message as Map; return LoopingMessage( - textureId: pigeonMap['textureId'] as int?, - isLooping: pigeonMap['isLooping'] as bool?, + textureId: pigeonMap['textureId']! as int, + isLooping: pigeonMap['isLooping']! as bool, ); } } class VolumeMessage { VolumeMessage({ - this.textureId, - this.volume, + required this.textureId, + required this.volume, }); - int? textureId; - double? volume; + int textureId; + double volume; Object encode() { final Map pigeonMap = {}; @@ -76,20 +76,20 @@ class VolumeMessage { static VolumeMessage decode(Object message) { final Map pigeonMap = message as Map; return VolumeMessage( - textureId: pigeonMap['textureId'] as int?, - volume: pigeonMap['volume'] as double?, + textureId: pigeonMap['textureId']! as int, + volume: pigeonMap['volume']! as double, ); } } class PlaybackSpeedMessage { PlaybackSpeedMessage({ - this.textureId, - this.speed, + required this.textureId, + required this.speed, }); - int? textureId; - double? speed; + int textureId; + double speed; Object encode() { final Map pigeonMap = {}; @@ -101,20 +101,20 @@ class PlaybackSpeedMessage { static PlaybackSpeedMessage decode(Object message) { final Map pigeonMap = message as Map; return PlaybackSpeedMessage( - textureId: pigeonMap['textureId'] as int?, - speed: pigeonMap['speed'] as double?, + textureId: pigeonMap['textureId']! as int, + speed: pigeonMap['speed']! as double, ); } } class PositionMessage { PositionMessage({ - this.textureId, - this.position, + required this.textureId, + required this.position, }); - int? textureId; - int? position; + int textureId; + int position; Object encode() { final Map pigeonMap = {}; @@ -126,8 +126,8 @@ class PositionMessage { static PositionMessage decode(Object message) { final Map pigeonMap = message as Map; return PositionMessage( - textureId: pigeonMap['textureId'] as int?, - position: pigeonMap['position'] as int?, + textureId: pigeonMap['textureId']! as int, + position: pigeonMap['position']! as int, ); } } @@ -172,10 +172,10 @@ class CreateMessage { class MixWithOthersMessage { MixWithOthersMessage({ - this.mixWithOthers, + required this.mixWithOthers, }); - bool? mixWithOthers; + bool mixWithOthers; Object encode() { final Map pigeonMap = {}; @@ -186,7 +186,7 @@ class MixWithOthersMessage { static MixWithOthersMessage decode(Object message) { final Map pigeonMap = message as Map; return MixWithOthersMessage( - mixWithOthers: pigeonMap['mixWithOthers'] as bool?, + mixWithOthers: pigeonMap['mixWithOthers']! as bool, ); } } diff --git a/packages/video_player/video_player_android/pigeons/messages.dart b/packages/video_player/video_player_android/pigeons/messages.dart index 559c38d9fbaa..48ad97feb1ed 100644 --- a/packages/video_player/video_player_android/pigeons/messages.dart +++ b/packages/video_player/video_player_android/pigeons/messages.dart @@ -14,27 +14,32 @@ import 'package:pigeon/pigeon.dart'; copyrightHeader: 'pigeons/copyright.txt', )) class TextureMessage { - int? textureId; + TextureMessage(this.textureId); + int textureId; } class LoopingMessage { - int? textureId; - bool? isLooping; + LoopingMessage(this.textureId, this.isLooping); + int textureId; + bool isLooping; } class VolumeMessage { - int? textureId; - double? volume; + VolumeMessage(this.textureId, this.volume); + int textureId; + double volume; } class PlaybackSpeedMessage { - int? textureId; - double? speed; + PlaybackSpeedMessage(this.textureId, this.speed); + int textureId; + double speed; } class PositionMessage { - int? textureId; - int? position; + PositionMessage(this.textureId, this.position); + int textureId; + int position; } class CreateMessage { @@ -46,7 +51,8 @@ class CreateMessage { } class MixWithOthersMessage { - bool? mixWithOthers; + MixWithOthersMessage(this.mixWithOthers); + bool mixWithOthers; } @HostApi(dartHostTestHandler: 'TestHostVideoPlayerApi') diff --git a/packages/video_player/video_player_android/test/android_video_player_test.dart b/packages/video_player/video_player_android/test/android_video_player_test.dart index c6769a3077e3..b7cf763e16a6 100644 --- a/packages/video_player/video_player_android/test/android_video_player_test.dart +++ b/packages/video_player/video_player_android/test/android_video_player_test.dart @@ -26,7 +26,7 @@ class _ApiLogger implements TestHostVideoPlayerApi { TextureMessage create(CreateMessage arg) { log.add('create'); createMessage = arg; - return TextureMessage()..textureId = 3; + return TextureMessage(textureId: 3); } @override @@ -62,7 +62,7 @@ class _ApiLogger implements TestHostVideoPlayerApi { PositionMessage position(TextureMessage arg) { log.add('position'); textureMessage = arg; - return PositionMessage()..position = 234; + return PositionMessage(textureId: arg.textureId, position: 234); } @override diff --git a/packages/video_player/video_player_android/test/test_api.dart b/packages/video_player/video_player_android/test/test_api.dart index 183ad38f2ecd..e8bc9d85283f 100644 --- a/packages/video_player/video_player_android/test/test_api.dart +++ b/packages/video_player/video_player_android/test/test_api.dart @@ -3,7 +3,6 @@ // found in the LICENSE file. // Autogenerated from Pigeon (v1.0.16), do not edit directly. // See also: https://pub.dev/packages/pigeon -// TODO(gaaclarke): `unnecessary_parenthesis had to be added manually. // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis // @dart = 2.12 import 'dart:async'; 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 d7044faf2332..ee9a5b80a943 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 @@ -33,9 +33,7 @@ - (void)testSeekToInvokesTextureFrameAvailableOnTextureRegistry { OCMStub([partialRegistrar textures]).andReturn(mockTextureRegistry); FLTVideoPlayerPlugin *videoPlayerPlugin = (FLTVideoPlayerPlugin *)[[FLTVideoPlayerPlugin alloc] initWithRegistrar:partialRegistrar]; - FLTPositionMessage *message = [[FLTPositionMessage alloc] init]; - message.textureId = @101; - message.position = @0; + FLTPositionMessage *message = [FLTPositionMessage makeWithTextureId:@101 position:@0]; FlutterError *error; [videoPlayerPlugin seekTo:message error:&error]; OCMVerify([mockTextureRegistry textureFrameAvailable:message.textureId.intValue]); @@ -152,18 +150,15 @@ - (void)testHLSControls { XCTAssertEqual(avPlayer.timeControlStatus, AVPlayerTimeControlStatusPaused); // Change playback speed. - FLTPlaybackSpeedMessage *playback = [[FLTPlaybackSpeedMessage alloc] init]; - playback.textureId = textureId; - playback.speed = @2; + FLTPlaybackSpeedMessage *playback = [FLTPlaybackSpeedMessage makeWithTextureId:textureId + speed:@2]; [videoPlayerPlugin setPlaybackSpeed:playback error:&error]; XCTAssertNil(error); XCTAssertEqual(avPlayer.rate, 2); XCTAssertEqual(avPlayer.timeControlStatus, AVPlayerTimeControlStatusWaitingToPlayAtSpecifiedRate); // Volume - FLTVolumeMessage *volume = [[FLTVolumeMessage alloc] init]; - volume.textureId = textureId; - volume.volume = @(0.1); + FLTVolumeMessage *volume = [FLTVolumeMessage makeWithTextureId:textureId volume:@0.1]; [videoPlayerPlugin setVolume:volume error:&error]; XCTAssertNil(error); XCTAssertEqual(avPlayer.volume, 0.1f); diff --git a/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m b/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m index 9203556b0649..fab744bcd5bc 100644 --- a/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m +++ b/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m @@ -544,8 +544,7 @@ - (FLTTextureMessage *)onPlayerSetup:(FLTVideoPlayer *)player [eventChannel setStreamHandler:player]; player.eventChannel = eventChannel; self.playersByTextureId[@(textureId)] = player; - FLTTextureMessage *result = [[FLTTextureMessage alloc] init]; - result.textureId = @(textureId); + FLTTextureMessage *result = [FLTTextureMessage makeWithTextureId:@(textureId)]; return result; } @@ -628,8 +627,8 @@ - (void)play:(FLTTextureMessage *)input error:(FlutterError **)error { - (FLTPositionMessage *)position:(FLTTextureMessage *)input error:(FlutterError **)error { FLTVideoPlayer *player = self.playersByTextureId[input.textureId]; - FLTPositionMessage *result = [[FLTPositionMessage alloc] init]; - result.position = @([player position]); + FLTPositionMessage *result = [FLTPositionMessage makeWithTextureId:input.textureId + position:@([player position])]; return result; } diff --git a/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.h b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.h index e9a9645f3b5a..d251c24e5108 100644 --- a/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.h +++ b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.h @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v1.0.16), do not edit directly. +// Autogenerated from Pigeon (v1.0.17), do not edit directly. // See also: https://pub.dev/packages/pigeon #import @protocol FlutterBinaryMessenger; @@ -20,34 +20,42 @@ NS_ASSUME_NONNULL_BEGIN @class FLTMixWithOthersMessage; @interface FLTTextureMessage : NSObject -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId; -@property(nonatomic, strong, nullable) NSNumber *textureId; +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithTextureId:(NSNumber *)textureId; +@property(nonatomic, strong) NSNumber *textureId; @end @interface FLTLoopingMessage : NSObject -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId - isLooping:(nullable NSNumber *)isLooping; -@property(nonatomic, strong, nullable) NSNumber *textureId; -@property(nonatomic, strong, nullable) NSNumber *isLooping; +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithTextureId:(NSNumber *)textureId isLooping:(NSNumber *)isLooping; +@property(nonatomic, strong) NSNumber *textureId; +@property(nonatomic, strong) NSNumber *isLooping; @end @interface FLTVolumeMessage : NSObject -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId volume:(nullable NSNumber *)volume; -@property(nonatomic, strong, nullable) NSNumber *textureId; -@property(nonatomic, strong, nullable) NSNumber *volume; +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithTextureId:(NSNumber *)textureId volume:(NSNumber *)volume; +@property(nonatomic, strong) NSNumber *textureId; +@property(nonatomic, strong) NSNumber *volume; @end @interface FLTPlaybackSpeedMessage : NSObject -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId speed:(nullable NSNumber *)speed; -@property(nonatomic, strong, nullable) NSNumber *textureId; -@property(nonatomic, strong, nullable) NSNumber *speed; +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithTextureId:(NSNumber *)textureId speed:(NSNumber *)speed; +@property(nonatomic, strong) NSNumber *textureId; +@property(nonatomic, strong) NSNumber *speed; @end @interface FLTPositionMessage : NSObject -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId - position:(nullable NSNumber *)position; -@property(nonatomic, strong, nullable) NSNumber *textureId; -@property(nonatomic, strong, nullable) NSNumber *position; +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithTextureId:(NSNumber *)textureId position:(NSNumber *)position; +@property(nonatomic, strong) NSNumber *textureId; +@property(nonatomic, strong) NSNumber *position; @end @interface FLTCreateMessage : NSObject @@ -64,8 +72,10 @@ NS_ASSUME_NONNULL_BEGIN @end @interface FLTMixWithOthersMessage : NSObject -+ (instancetype)makeWithMixWithOthers:(nullable NSNumber *)mixWithOthers; -@property(nonatomic, strong, nullable) NSNumber *mixWithOthers; +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithMixWithOthers:(NSNumber *)mixWithOthers; +@property(nonatomic, strong) NSNumber *mixWithOthers; @end /// The codec used by FLTVideoPlayerApi. diff --git a/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m index ce7f71d4a3a4..f5ec6670a697 100644 --- a/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m +++ b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v1.0.16), do not edit directly. +// Autogenerated from Pigeon (v1.0.17), do not edit directly. // See also: https://pub.dev/packages/pigeon #import "messages.g.h" #import @@ -24,6 +24,10 @@ @"error" : errorDict, }; } +static id GetNullableObject(NSDictionary *dict, id key) { + id result = dict[key]; + return (result == [NSNull null]) ? nil : result; +} @interface FLTTextureMessage () + (FLTTextureMessage *)fromMap:(NSDictionary *)dict; @@ -55,17 +59,15 @@ - (NSDictionary *)toMap; @end @implementation FLTTextureMessage -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId { ++ (instancetype)makeWithTextureId:(NSNumber *)textureId { FLTTextureMessage *pigeonResult = [[FLTTextureMessage alloc] init]; pigeonResult.textureId = textureId; return pigeonResult; } + (FLTTextureMessage *)fromMap:(NSDictionary *)dict { FLTTextureMessage *pigeonResult = [[FLTTextureMessage alloc] init]; - pigeonResult.textureId = dict[@"textureId"]; - if ((NSNull *)pigeonResult.textureId == [NSNull null]) { - pigeonResult.textureId = nil; - } + pigeonResult.textureId = GetNullableObject(dict, @"textureId"); + NSAssert(pigeonResult.textureId != nil, @""); return pigeonResult; } - (NSDictionary *)toMap { @@ -76,8 +78,7 @@ - (NSDictionary *)toMap { @end @implementation FLTLoopingMessage -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId - isLooping:(nullable NSNumber *)isLooping { ++ (instancetype)makeWithTextureId:(NSNumber *)textureId isLooping:(NSNumber *)isLooping { FLTLoopingMessage *pigeonResult = [[FLTLoopingMessage alloc] init]; pigeonResult.textureId = textureId; pigeonResult.isLooping = isLooping; @@ -85,14 +86,10 @@ + (instancetype)makeWithTextureId:(nullable NSNumber *)textureId } + (FLTLoopingMessage *)fromMap:(NSDictionary *)dict { FLTLoopingMessage *pigeonResult = [[FLTLoopingMessage alloc] init]; - pigeonResult.textureId = dict[@"textureId"]; - if ((NSNull *)pigeonResult.textureId == [NSNull null]) { - pigeonResult.textureId = nil; - } - pigeonResult.isLooping = dict[@"isLooping"]; - if ((NSNull *)pigeonResult.isLooping == [NSNull null]) { - pigeonResult.isLooping = nil; - } + pigeonResult.textureId = GetNullableObject(dict, @"textureId"); + NSAssert(pigeonResult.textureId != nil, @""); + pigeonResult.isLooping = GetNullableObject(dict, @"isLooping"); + NSAssert(pigeonResult.isLooping != nil, @""); return pigeonResult; } - (NSDictionary *)toMap { @@ -104,8 +101,7 @@ - (NSDictionary *)toMap { @end @implementation FLTVolumeMessage -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId - volume:(nullable NSNumber *)volume { ++ (instancetype)makeWithTextureId:(NSNumber *)textureId volume:(NSNumber *)volume { FLTVolumeMessage *pigeonResult = [[FLTVolumeMessage alloc] init]; pigeonResult.textureId = textureId; pigeonResult.volume = volume; @@ -113,14 +109,10 @@ + (instancetype)makeWithTextureId:(nullable NSNumber *)textureId } + (FLTVolumeMessage *)fromMap:(NSDictionary *)dict { FLTVolumeMessage *pigeonResult = [[FLTVolumeMessage alloc] init]; - pigeonResult.textureId = dict[@"textureId"]; - if ((NSNull *)pigeonResult.textureId == [NSNull null]) { - pigeonResult.textureId = nil; - } - pigeonResult.volume = dict[@"volume"]; - if ((NSNull *)pigeonResult.volume == [NSNull null]) { - pigeonResult.volume = nil; - } + pigeonResult.textureId = GetNullableObject(dict, @"textureId"); + NSAssert(pigeonResult.textureId != nil, @""); + pigeonResult.volume = GetNullableObject(dict, @"volume"); + NSAssert(pigeonResult.volume != nil, @""); return pigeonResult; } - (NSDictionary *)toMap { @@ -131,7 +123,7 @@ - (NSDictionary *)toMap { @end @implementation FLTPlaybackSpeedMessage -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId speed:(nullable NSNumber *)speed { ++ (instancetype)makeWithTextureId:(NSNumber *)textureId speed:(NSNumber *)speed { FLTPlaybackSpeedMessage *pigeonResult = [[FLTPlaybackSpeedMessage alloc] init]; pigeonResult.textureId = textureId; pigeonResult.speed = speed; @@ -139,14 +131,10 @@ + (instancetype)makeWithTextureId:(nullable NSNumber *)textureId speed:(nullable } + (FLTPlaybackSpeedMessage *)fromMap:(NSDictionary *)dict { FLTPlaybackSpeedMessage *pigeonResult = [[FLTPlaybackSpeedMessage alloc] init]; - pigeonResult.textureId = dict[@"textureId"]; - if ((NSNull *)pigeonResult.textureId == [NSNull null]) { - pigeonResult.textureId = nil; - } - pigeonResult.speed = dict[@"speed"]; - if ((NSNull *)pigeonResult.speed == [NSNull null]) { - pigeonResult.speed = nil; - } + pigeonResult.textureId = GetNullableObject(dict, @"textureId"); + NSAssert(pigeonResult.textureId != nil, @""); + pigeonResult.speed = GetNullableObject(dict, @"speed"); + NSAssert(pigeonResult.speed != nil, @""); return pigeonResult; } - (NSDictionary *)toMap { @@ -157,8 +145,7 @@ - (NSDictionary *)toMap { @end @implementation FLTPositionMessage -+ (instancetype)makeWithTextureId:(nullable NSNumber *)textureId - position:(nullable NSNumber *)position { ++ (instancetype)makeWithTextureId:(NSNumber *)textureId position:(NSNumber *)position { FLTPositionMessage *pigeonResult = [[FLTPositionMessage alloc] init]; pigeonResult.textureId = textureId; pigeonResult.position = position; @@ -166,14 +153,10 @@ + (instancetype)makeWithTextureId:(nullable NSNumber *)textureId } + (FLTPositionMessage *)fromMap:(NSDictionary *)dict { FLTPositionMessage *pigeonResult = [[FLTPositionMessage alloc] init]; - pigeonResult.textureId = dict[@"textureId"]; - if ((NSNull *)pigeonResult.textureId == [NSNull null]) { - pigeonResult.textureId = nil; - } - pigeonResult.position = dict[@"position"]; - if ((NSNull *)pigeonResult.position == [NSNull null]) { - pigeonResult.position = nil; - } + pigeonResult.textureId = GetNullableObject(dict, @"textureId"); + NSAssert(pigeonResult.textureId != nil, @""); + pigeonResult.position = GetNullableObject(dict, @"position"); + NSAssert(pigeonResult.position != nil, @""); return pigeonResult; } - (NSDictionary *)toMap { @@ -200,26 +183,11 @@ + (instancetype)makeWithAsset:(nullable NSString *)asset } + (FLTCreateMessage *)fromMap:(NSDictionary *)dict { FLTCreateMessage *pigeonResult = [[FLTCreateMessage alloc] init]; - pigeonResult.asset = dict[@"asset"]; - if ((NSNull *)pigeonResult.asset == [NSNull null]) { - pigeonResult.asset = nil; - } - pigeonResult.uri = dict[@"uri"]; - if ((NSNull *)pigeonResult.uri == [NSNull null]) { - pigeonResult.uri = nil; - } - pigeonResult.packageName = dict[@"packageName"]; - if ((NSNull *)pigeonResult.packageName == [NSNull null]) { - pigeonResult.packageName = nil; - } - pigeonResult.formatHint = dict[@"formatHint"]; - if ((NSNull *)pigeonResult.formatHint == [NSNull null]) { - pigeonResult.formatHint = nil; - } - pigeonResult.httpHeaders = dict[@"httpHeaders"]; - if ((NSNull *)pigeonResult.httpHeaders == [NSNull null]) { - pigeonResult.httpHeaders = nil; - } + pigeonResult.asset = GetNullableObject(dict, @"asset"); + pigeonResult.uri = GetNullableObject(dict, @"uri"); + pigeonResult.packageName = GetNullableObject(dict, @"packageName"); + pigeonResult.formatHint = GetNullableObject(dict, @"formatHint"); + pigeonResult.httpHeaders = GetNullableObject(dict, @"httpHeaders"); return pigeonResult; } - (NSDictionary *)toMap { @@ -236,17 +204,15 @@ - (NSDictionary *)toMap { @end @implementation FLTMixWithOthersMessage -+ (instancetype)makeWithMixWithOthers:(nullable NSNumber *)mixWithOthers { ++ (instancetype)makeWithMixWithOthers:(NSNumber *)mixWithOthers { FLTMixWithOthersMessage *pigeonResult = [[FLTMixWithOthersMessage alloc] init]; pigeonResult.mixWithOthers = mixWithOthers; return pigeonResult; } + (FLTMixWithOthersMessage *)fromMap:(NSDictionary *)dict { FLTMixWithOthersMessage *pigeonResult = [[FLTMixWithOthersMessage alloc] init]; - pigeonResult.mixWithOthers = dict[@"mixWithOthers"]; - if ((NSNull *)pigeonResult.mixWithOthers == [NSNull null]) { - pigeonResult.mixWithOthers = nil; - } + pigeonResult.mixWithOthers = GetNullableObject(dict, @"mixWithOthers"); + NSAssert(pigeonResult.mixWithOthers != nil, @""); return pigeonResult; } - (NSDictionary *)toMap { @@ -331,14 +297,14 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { @end NSObject *FLTVideoPlayerApiGetCodec() { - static dispatch_once_t s_pred = 0; - static FlutterStandardMessageCodec *s_sharedObject = nil; - dispatch_once(&s_pred, ^{ + static dispatch_once_t sPred = 0; + static FlutterStandardMessageCodec *sSharedObject = nil; + dispatch_once(&sPred, ^{ FLTVideoPlayerApiCodecReaderWriter *readerWriter = [[FLTVideoPlayerApiCodecReaderWriter alloc] init]; - s_sharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; + sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); - return s_sharedObject; + return sSharedObject; } void FLTVideoPlayerApiSetup(id binaryMessenger, diff --git a/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart b/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart index 3fcaa1e2ffe3..3c1ec34b3758 100644 --- a/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart +++ b/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart @@ -105,7 +105,7 @@ class AVFoundationVideoPlayer extends VideoPlayerPlatform { Future getPosition(int textureId) async { final PositionMessage response = await _api.position(TextureMessage(textureId: textureId)); - return Duration(milliseconds: response.position!); + return Duration(milliseconds: response.position); } @override diff --git a/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart b/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart index 810627771e7c..f5f7e41327db 100644 --- a/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart +++ b/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v1.0.16), do not edit directly. +// Autogenerated from Pigeon (v1.0.17), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name // @dart = 2.12 @@ -13,10 +13,10 @@ import 'package:flutter/services.dart'; class TextureMessage { TextureMessage({ - this.textureId, + required this.textureId, }); - int? textureId; + int textureId; Object encode() { final Map pigeonMap = {}; @@ -27,19 +27,19 @@ class TextureMessage { static TextureMessage decode(Object message) { final Map pigeonMap = message as Map; return TextureMessage( - textureId: pigeonMap['textureId'] as int?, + textureId: pigeonMap['textureId']! as int, ); } } class LoopingMessage { LoopingMessage({ - this.textureId, - this.isLooping, + required this.textureId, + required this.isLooping, }); - int? textureId; - bool? isLooping; + int textureId; + bool isLooping; Object encode() { final Map pigeonMap = {}; @@ -51,20 +51,20 @@ class LoopingMessage { static LoopingMessage decode(Object message) { final Map pigeonMap = message as Map; return LoopingMessage( - textureId: pigeonMap['textureId'] as int?, - isLooping: pigeonMap['isLooping'] as bool?, + textureId: pigeonMap['textureId']! as int, + isLooping: pigeonMap['isLooping']! as bool, ); } } class VolumeMessage { VolumeMessage({ - this.textureId, - this.volume, + required this.textureId, + required this.volume, }); - int? textureId; - double? volume; + int textureId; + double volume; Object encode() { final Map pigeonMap = {}; @@ -76,20 +76,20 @@ class VolumeMessage { static VolumeMessage decode(Object message) { final Map pigeonMap = message as Map; return VolumeMessage( - textureId: pigeonMap['textureId'] as int?, - volume: pigeonMap['volume'] as double?, + textureId: pigeonMap['textureId']! as int, + volume: pigeonMap['volume']! as double, ); } } class PlaybackSpeedMessage { PlaybackSpeedMessage({ - this.textureId, - this.speed, + required this.textureId, + required this.speed, }); - int? textureId; - double? speed; + int textureId; + double speed; Object encode() { final Map pigeonMap = {}; @@ -101,20 +101,20 @@ class PlaybackSpeedMessage { static PlaybackSpeedMessage decode(Object message) { final Map pigeonMap = message as Map; return PlaybackSpeedMessage( - textureId: pigeonMap['textureId'] as int?, - speed: pigeonMap['speed'] as double?, + textureId: pigeonMap['textureId']! as int, + speed: pigeonMap['speed']! as double, ); } } class PositionMessage { PositionMessage({ - this.textureId, - this.position, + required this.textureId, + required this.position, }); - int? textureId; - int? position; + int textureId; + int position; Object encode() { final Map pigeonMap = {}; @@ -126,8 +126,8 @@ class PositionMessage { static PositionMessage decode(Object message) { final Map pigeonMap = message as Map; return PositionMessage( - textureId: pigeonMap['textureId'] as int?, - position: pigeonMap['position'] as int?, + textureId: pigeonMap['textureId']! as int, + position: pigeonMap['position']! as int, ); } } @@ -172,10 +172,10 @@ class CreateMessage { class MixWithOthersMessage { MixWithOthersMessage({ - this.mixWithOthers, + required this.mixWithOthers, }); - bool? mixWithOthers; + bool mixWithOthers; Object encode() { final Map pigeonMap = {}; @@ -186,7 +186,7 @@ class MixWithOthersMessage { static MixWithOthersMessage decode(Object message) { final Map pigeonMap = message as Map; return MixWithOthersMessage( - mixWithOthers: pigeonMap['mixWithOthers'] as bool?, + mixWithOthers: pigeonMap['mixWithOthers']! as bool, ); } } diff --git a/packages/video_player/video_player_avfoundation/pigeons/messages.dart b/packages/video_player/video_player_avfoundation/pigeons/messages.dart index 02ea59c0bef8..bbb753867645 100644 --- a/packages/video_player/video_player_avfoundation/pigeons/messages.dart +++ b/packages/video_player/video_player_avfoundation/pigeons/messages.dart @@ -15,27 +15,32 @@ import 'package:pigeon/pigeon.dart'; copyrightHeader: 'pigeons/copyright.txt', )) class TextureMessage { - int? textureId; + TextureMessage(this.textureId); + int textureId; } class LoopingMessage { - int? textureId; - bool? isLooping; + LoopingMessage(this.textureId, this.isLooping); + int textureId; + bool isLooping; } class VolumeMessage { - int? textureId; - double? volume; + VolumeMessage(this.textureId, this.volume); + int textureId; + double volume; } class PlaybackSpeedMessage { - int? textureId; - double? speed; + PlaybackSpeedMessage(this.textureId, this.speed); + int textureId; + double speed; } class PositionMessage { - int? textureId; - int? position; + PositionMessage(this.textureId, this.position); + int textureId; + int position; } class CreateMessage { @@ -47,7 +52,8 @@ class CreateMessage { } class MixWithOthersMessage { - bool? mixWithOthers; + MixWithOthersMessage(this.mixWithOthers); + bool mixWithOthers; } @HostApi(dartHostTestHandler: 'TestHostVideoPlayerApi') diff --git a/packages/video_player/video_player_avfoundation/pubspec.yaml b/packages/video_player/video_player_avfoundation/pubspec.yaml index e05864e5ef81..044d15b890b2 100644 --- a/packages/video_player/video_player_avfoundation/pubspec.yaml +++ b/packages/video_player/video_player_avfoundation/pubspec.yaml @@ -24,4 +24,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - pigeon: ^1.0.16 + pigeon: ^1.0.17 diff --git a/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart b/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart index f13cb91453a8..9b6d1dfa195c 100644 --- a/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart +++ b/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart @@ -26,7 +26,7 @@ class _ApiLogger implements TestHostVideoPlayerApi { TextureMessage create(CreateMessage arg) { log.add('create'); createMessage = arg; - return TextureMessage()..textureId = 3; + return TextureMessage(textureId: 3); } @override @@ -62,7 +62,7 @@ class _ApiLogger implements TestHostVideoPlayerApi { PositionMessage position(TextureMessage arg) { log.add('position'); textureMessage = arg; - return PositionMessage()..position = 234; + return PositionMessage(textureId: arg.textureId, position: 234); } @override diff --git a/packages/video_player/video_player_avfoundation/test/test_api.dart b/packages/video_player/video_player_avfoundation/test/test_api.dart index d4c37aad09ac..191358e23024 100644 --- a/packages/video_player/video_player_avfoundation/test/test_api.dart +++ b/packages/video_player/video_player_avfoundation/test/test_api.dart @@ -1,10 +1,10 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v1.0.16), do not edit directly. +// Autogenerated from Pigeon (v1.0.17), do not edit directly. // See also: https://pub.dev/packages/pigeon -// TODO(gaaclarke): `unnecessary_parenthesis` had to be added manually. // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis +// ignore_for_file: avoid_relative_lib_imports // @dart = 2.12 import 'dart:async'; import 'dart:typed_data' show Uint8List, Int32List, Int64List, Float64List; From 32bb3f80f75aaed765d0ba5ceebb9dac8207e40c Mon Sep 17 00:00:00 2001 From: Aaron Clarke Date: Mon, 14 Feb 2022 11:41:43 -0800 Subject: [PATCH 5/6] made httpheaders not null --- .../flutter/plugins/videoplayer/Messages.java | 14 +++++++--- .../plugins/videoplayer/VideoPlayer.java | 3 +- .../lib/src/android_video_player.dart | 28 +++++++++++++------ .../lib/src/messages.g.dart | 8 +++--- .../pigeons/messages.dart | 3 +- .../ios/Classes/FLTVideoPlayerPlugin.m | 6 ++-- .../ios/Classes/messages.g.h | 6 ++-- .../ios/Classes/messages.g.m | 3 +- .../lib/src/avfoundation_video_player.dart | 28 +++++++++++++------ .../lib/src/messages.g.dart | 8 +++--- .../pigeons/messages.dart | 3 +- 11 files changed, 71 insertions(+), 39 deletions(-) diff --git a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java index 360b32680e1d..0cdf3564d334 100644 --- a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java +++ b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java @@ -419,16 +419,22 @@ public void setFormatHint(@Nullable String setterArg) { this.formatHint = setterArg; } - private @Nullable Map httpHeaders; + private @NonNull Map httpHeaders; - public @Nullable Map getHttpHeaders() { + public @NonNull Map getHttpHeaders() { return httpHeaders; } - public void setHttpHeaders(@Nullable Map setterArg) { + public void setHttpHeaders(@NonNull Map setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"httpHeaders\" is null."); + } this.httpHeaders = setterArg; } + /** Constructor is private to enforce null safety; use Builder. */ + private CreateMessage() {} + public static class Builder { private @Nullable String asset; @@ -460,7 +466,7 @@ public static class Builder { private @Nullable Map httpHeaders; - public @NonNull Builder setHttpHeaders(@Nullable Map setterArg) { + public @NonNull Builder setHttpHeaders(@NonNull Map setterArg) { this.httpHeaders = setterArg; return this; } diff --git a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java index 887d3d15f175..33593267338c 100644 --- a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java +++ b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java @@ -10,6 +10,7 @@ import android.content.Context; import android.net.Uri; import android.view.Surface; +import androidx.annotation.NonNull; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.Format; @@ -64,7 +65,7 @@ final class VideoPlayer { TextureRegistry.SurfaceTextureEntry textureEntry, String dataSource, String formatHint, - Map httpHeaders, + @NonNull Map httpHeaders, VideoPlayerOptions options) { this.eventChannel = eventChannel; this.textureEntry = textureEntry; diff --git a/packages/video_player/video_player_android/lib/src/android_video_player.dart b/packages/video_player/video_player_android/lib/src/android_video_player.dart index 04183e12d5dd..d713b282d197 100644 --- a/packages/video_player/video_player_android/lib/src/android_video_player.dart +++ b/packages/video_player/video_player_android/lib/src/android_video_player.dart @@ -33,25 +33,35 @@ class AndroidVideoPlayer extends VideoPlayerPlatform { @override Future create(DataSource dataSource) async { - final CreateMessage message = CreateMessage(); - + String? asset; + String? packageName; + String? uri; + String? formatHint; + Map httpHeaders = {}; switch (dataSource.sourceType) { case DataSourceType.asset: - message.asset = dataSource.asset; - message.packageName = dataSource.package; + asset = dataSource.asset; + packageName = dataSource.package; break; case DataSourceType.network: - message.uri = dataSource.uri; - message.formatHint = _videoFormatStringMap[dataSource.formatHint]; - message.httpHeaders = dataSource.httpHeaders; + uri = dataSource.uri; + formatHint = _videoFormatStringMap[dataSource.formatHint]; + httpHeaders = dataSource.httpHeaders; break; case DataSourceType.file: - message.uri = dataSource.uri; + uri = dataSource.uri; break; case DataSourceType.contentUri: - message.uri = dataSource.uri; + uri = dataSource.uri; break; } + final CreateMessage message = CreateMessage( + asset: asset, + packageName: packageName, + uri: uri, + httpHeaders: httpHeaders, + formatHint: formatHint, + ); final TextureMessage response = await _api.create(message); return response.textureId; diff --git a/packages/video_player/video_player_android/lib/src/messages.g.dart b/packages/video_player/video_player_android/lib/src/messages.g.dart index 8370001846ea..5fa09e33bc7e 100644 --- a/packages/video_player/video_player_android/lib/src/messages.g.dart +++ b/packages/video_player/video_player_android/lib/src/messages.g.dart @@ -138,14 +138,14 @@ class CreateMessage { this.uri, this.packageName, this.formatHint, - this.httpHeaders, + required this.httpHeaders, }); String? asset; String? uri; String? packageName; String? formatHint; - Map? httpHeaders; + Map httpHeaders; Object encode() { final Map pigeonMap = {}; @@ -164,8 +164,8 @@ class CreateMessage { uri: pigeonMap['uri'] as String?, packageName: pigeonMap['packageName'] as String?, formatHint: pigeonMap['formatHint'] as String?, - httpHeaders: (pigeonMap['httpHeaders'] as Map?) - ?.cast(), + httpHeaders: (pigeonMap['httpHeaders'] as Map?)! + .cast(), ); } } diff --git a/packages/video_player/video_player_android/pigeons/messages.dart b/packages/video_player/video_player_android/pigeons/messages.dart index 48ad97feb1ed..9efbfc947b5c 100644 --- a/packages/video_player/video_player_android/pigeons/messages.dart +++ b/packages/video_player/video_player_android/pigeons/messages.dart @@ -43,11 +43,12 @@ class PositionMessage { } class CreateMessage { + CreateMessage({required this.httpHeaders}); String? asset; String? uri; String? packageName; String? formatHint; - Map? httpHeaders; + Map httpHeaders; } class MixWithOthersMessage { diff --git a/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m b/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m index fab744bcd5bc..18129de7648d 100644 --- a/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m +++ b/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m @@ -43,7 +43,7 @@ @interface FLTVideoPlayer : NSObject @property(nonatomic, readonly) BOOL isInitialized; - (instancetype)initWithURL:(NSURL *)url frameUpdater:(FLTFrameUpdater *)frameUpdater - httpHeaders:(NSDictionary *)headers; + httpHeaders:(nonnull NSDictionary *)headers; @end static void *timeRangeContext = &timeRangeContext; @@ -57,7 +57,7 @@ - (instancetype)initWithURL:(NSURL *)url @implementation FLTVideoPlayer - (instancetype)initWithAsset:(NSString *)asset frameUpdater:(FLTFrameUpdater *)frameUpdater { NSString *path = [[NSBundle mainBundle] pathForResource:asset ofType:nil]; - return [self initWithURL:[NSURL fileURLWithPath:path] frameUpdater:frameUpdater httpHeaders:nil]; + return [self initWithURL:[NSURL fileURLWithPath:path] frameUpdater:frameUpdater httpHeaders:@{}]; } - (void)addObservers:(AVPlayerItem *)item { @@ -177,7 +177,7 @@ - (void)createVideoOutputAndDisplayLink:(FLTFrameUpdater *)frameUpdater { - (instancetype)initWithURL:(NSURL *)url frameUpdater:(FLTFrameUpdater *)frameUpdater - httpHeaders:(NSDictionary *)headers { + httpHeaders:(nonnull NSDictionary *)headers { NSDictionary *options = nil; if (headers != nil && [headers count] != 0) { options = @{@"AVURLAssetHTTPHeaderFieldsKey" : headers}; diff --git a/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.h b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.h index d251c24e5108..96d02d2f7360 100644 --- a/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.h +++ b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.h @@ -59,16 +59,18 @@ NS_ASSUME_NONNULL_BEGIN @end @interface FLTCreateMessage : NSObject +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithAsset:(nullable NSString *)asset uri:(nullable NSString *)uri packageName:(nullable NSString *)packageName formatHint:(nullable NSString *)formatHint - httpHeaders:(nullable NSDictionary *)httpHeaders; + httpHeaders:(NSDictionary *)httpHeaders; @property(nonatomic, copy, nullable) NSString *asset; @property(nonatomic, copy, nullable) NSString *uri; @property(nonatomic, copy, nullable) NSString *packageName; @property(nonatomic, copy, nullable) NSString *formatHint; -@property(nonatomic, strong, nullable) NSDictionary *httpHeaders; +@property(nonatomic, strong) NSDictionary *httpHeaders; @end @interface FLTMixWithOthersMessage : NSObject diff --git a/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m index f5ec6670a697..c9acee44593c 100644 --- a/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m +++ b/packages/video_player/video_player_avfoundation/ios/Classes/messages.g.m @@ -172,7 +172,7 @@ + (instancetype)makeWithAsset:(nullable NSString *)asset uri:(nullable NSString *)uri packageName:(nullable NSString *)packageName formatHint:(nullable NSString *)formatHint - httpHeaders:(nullable NSDictionary *)httpHeaders { + httpHeaders:(NSDictionary *)httpHeaders { FLTCreateMessage *pigeonResult = [[FLTCreateMessage alloc] init]; pigeonResult.asset = asset; pigeonResult.uri = uri; @@ -188,6 +188,7 @@ + (FLTCreateMessage *)fromMap:(NSDictionary *)dict { pigeonResult.packageName = GetNullableObject(dict, @"packageName"); pigeonResult.formatHint = GetNullableObject(dict, @"formatHint"); pigeonResult.httpHeaders = GetNullableObject(dict, @"httpHeaders"); + NSAssert(pigeonResult.httpHeaders != nil, @""); return pigeonResult; } - (NSDictionary *)toMap { diff --git a/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart b/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart index 3c1ec34b3758..bf1518dfa32a 100644 --- a/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart +++ b/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart @@ -33,25 +33,35 @@ class AVFoundationVideoPlayer extends VideoPlayerPlatform { @override Future create(DataSource dataSource) async { - final CreateMessage message = CreateMessage(); - + String? asset; + String? packageName; + String? uri; + String? formatHint; + Map httpHeaders = {}; switch (dataSource.sourceType) { case DataSourceType.asset: - message.asset = dataSource.asset; - message.packageName = dataSource.package; + asset = dataSource.asset; + packageName = dataSource.package; break; case DataSourceType.network: - message.uri = dataSource.uri; - message.formatHint = _videoFormatStringMap[dataSource.formatHint]; - message.httpHeaders = dataSource.httpHeaders; + uri = dataSource.uri; + formatHint = _videoFormatStringMap[dataSource.formatHint]; + httpHeaders = dataSource.httpHeaders; break; case DataSourceType.file: - message.uri = dataSource.uri; + uri = dataSource.uri; break; case DataSourceType.contentUri: - message.uri = dataSource.uri; + uri = dataSource.uri; break; } + final CreateMessage message = CreateMessage( + asset: asset, + packageName: packageName, + uri: uri, + httpHeaders: httpHeaders, + formatHint: formatHint, + ); final TextureMessage response = await _api.create(message); return response.textureId; diff --git a/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart b/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart index f5f7e41327db..1a679d5915b4 100644 --- a/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart +++ b/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart @@ -138,14 +138,14 @@ class CreateMessage { this.uri, this.packageName, this.formatHint, - this.httpHeaders, + required this.httpHeaders, }); String? asset; String? uri; String? packageName; String? formatHint; - Map? httpHeaders; + Map httpHeaders; Object encode() { final Map pigeonMap = {}; @@ -164,8 +164,8 @@ class CreateMessage { uri: pigeonMap['uri'] as String?, packageName: pigeonMap['packageName'] as String?, formatHint: pigeonMap['formatHint'] as String?, - httpHeaders: (pigeonMap['httpHeaders'] as Map?) - ?.cast(), + httpHeaders: (pigeonMap['httpHeaders'] as Map?)! + .cast(), ); } } diff --git a/packages/video_player/video_player_avfoundation/pigeons/messages.dart b/packages/video_player/video_player_avfoundation/pigeons/messages.dart index bbb753867645..d357caf81e3d 100644 --- a/packages/video_player/video_player_avfoundation/pigeons/messages.dart +++ b/packages/video_player/video_player_avfoundation/pigeons/messages.dart @@ -44,11 +44,12 @@ class PositionMessage { } class CreateMessage { + CreateMessage({required this.httpHeaders}); String? asset; String? uri; String? packageName; String? formatHint; - Map? httpHeaders; + Map httpHeaders; } class MixWithOthersMessage { From df6a66a14963b06670871c2f31b35eb6293bcffc Mon Sep 17 00:00:00 2001 From: Aaron Clarke Date: Mon, 14 Feb 2022 14:05:41 -0800 Subject: [PATCH 6/6] removed nil check and switched away from init --- .../example/ios/RunnerTests/VideoPlayerTests.m | 15 +++++++++++---- .../ios/Classes/FLTVideoPlayerPlugin.m | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) 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 ee9a5b80a943..6d8b3965fd94 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 @@ -51,8 +51,12 @@ - (void)testDeregistersFromPlayer { [videoPlayerPlugin initialize:&error]; XCTAssertNil(error); - FLTCreateMessage *create = [[FLTCreateMessage alloc] init]; - create.uri = @"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4"; + 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); @@ -123,8 +127,11 @@ - (void)testHLSControls { [videoPlayerPlugin initialize:&error]; XCTAssertNil(error); - FLTCreateMessage *create = [[FLTCreateMessage alloc] init]; - create.uri = uri; + FLTCreateMessage *create = [FLTCreateMessage makeWithAsset:nil + uri:uri + packageName:nil + formatHint:nil + httpHeaders:@{}]; FLTTextureMessage *textureMessage = [videoPlayerPlugin create:create error:&error]; NSNumber *textureId = textureMessage.textureId; diff --git a/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m b/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m index 18129de7648d..026b576cdb10 100644 --- a/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m +++ b/packages/video_player/video_player_avfoundation/ios/Classes/FLTVideoPlayerPlugin.m @@ -179,7 +179,7 @@ - (instancetype)initWithURL:(NSURL *)url frameUpdater:(FLTFrameUpdater *)frameUpdater httpHeaders:(nonnull NSDictionary *)headers { NSDictionary *options = nil; - if (headers != nil && [headers count] != 0) { + if ([headers count] != 0) { options = @{@"AVURLAssetHTTPHeaderFieldsKey" : headers}; } AVURLAsset *urlAsset = [AVURLAsset URLAssetWithURL:url options:options];