From f82e55a83bb4ee5ab0344c13cbe25ead9fab3aa9 Mon Sep 17 00:00:00 2001 From: Pavel Date: Mon, 1 Mar 2021 16:34:29 +0300 Subject: [PATCH 01/14] [video_player] update pigeon generated files --- .../flutter/plugins/videoplayer/Messages.java | 2 +- .../video_player/ios/Classes/messages.h | 2 +- .../video_player/ios/Classes/messages.m | 42 +++++++++---------- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java index 053e3faa9694..f72fd31706d1 100644 --- a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java +++ b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v0.1.19), do not edit directly. +// Autogenerated from Pigeon (v0.1.21), do not edit directly. // See also: https://pub.dev/packages/pigeon package io.flutter.plugins.videoplayer; diff --git a/packages/video_player/video_player/ios/Classes/messages.h b/packages/video_player/video_player/ios/Classes/messages.h index 80137c9d61f5..8ce42dd38b08 100644 --- a/packages/video_player/video_player/ios/Classes/messages.h +++ b/packages/video_player/video_player/ios/Classes/messages.h @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v0.1.19), do not edit directly. +// Autogenerated from Pigeon (v0.1.21), do not edit directly. // See also: https://pub.dev/packages/pigeon #import @protocol FlutterBinaryMessenger; diff --git a/packages/video_player/video_player/ios/Classes/messages.m b/packages/video_player/video_player/ios/Classes/messages.m index 3f787fcdf92d..7400919653be 100644 --- a/packages/video_player/video_player/ios/Classes/messages.m +++ b/packages/video_player/video_player/ios/Classes/messages.m @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v0.1.19), do not edit directly. +// Autogenerated from Pigeon (v0.1.21), do not edit directly. // See also: https://pub.dev/packages/pigeon #import "messages.h" #import @@ -7,18 +7,19 @@ #error File requires ARC to be enabled. #endif -#ifndef __clang_analyzer__ -static NSDictionary *wrapResult(NSDictionary *result, FlutterError *error) { +static NSDictionary *wrapResult(NSDictionary *result, FlutterError *error) { NSDictionary *errorDict = (NSDictionary *)[NSNull null]; if (error) { - errorDict = [NSDictionary - dictionaryWithObjectsAndKeys:(error.code ? error.code : [NSNull null]), @"code", - (error.message ? error.message : [NSNull null]), @"message", - (error.details ? error.details : [NSNull null]), @"details", - nil]; + errorDict = @{ + @"code" : (error.code ? error.code : [NSNull null]), + @"message" : (error.message ? error.message : [NSNull null]), + @"details" : (error.details ? error.details : [NSNull null]), + }; } - return [NSDictionary dictionaryWithObjectsAndKeys:(result ? result : [NSNull null]), @"result", - errorDict, @"error", nil]; + return @{ + @"result" : (result ? result : [NSNull null]), + @"error" : errorDict, + }; } @interface FLTTextureMessage () @@ -217,8 +218,8 @@ void FLTVideoPlayerApiSetup(id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id Date: Mon, 1 Mar 2021 16:34:29 +0300 Subject: [PATCH 02/14] [video_player] update pigeon generated files --- .../flutter/plugins/videoplayer/Messages.java | 2 +- .../video_player/ios/Classes/messages.h | 2 +- .../video_player/ios/Classes/messages.m | 42 +++++++++---------- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java index 053e3faa9694..f72fd31706d1 100644 --- a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java +++ b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v0.1.19), do not edit directly. +// Autogenerated from Pigeon (v0.1.21), do not edit directly. // See also: https://pub.dev/packages/pigeon package io.flutter.plugins.videoplayer; diff --git a/packages/video_player/video_player/ios/Classes/messages.h b/packages/video_player/video_player/ios/Classes/messages.h index 80137c9d61f5..8ce42dd38b08 100644 --- a/packages/video_player/video_player/ios/Classes/messages.h +++ b/packages/video_player/video_player/ios/Classes/messages.h @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v0.1.19), do not edit directly. +// Autogenerated from Pigeon (v0.1.21), do not edit directly. // See also: https://pub.dev/packages/pigeon #import @protocol FlutterBinaryMessenger; diff --git a/packages/video_player/video_player/ios/Classes/messages.m b/packages/video_player/video_player/ios/Classes/messages.m index 3f787fcdf92d..7400919653be 100644 --- a/packages/video_player/video_player/ios/Classes/messages.m +++ b/packages/video_player/video_player/ios/Classes/messages.m @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v0.1.19), do not edit directly. +// Autogenerated from Pigeon (v0.1.21), do not edit directly. // See also: https://pub.dev/packages/pigeon #import "messages.h" #import @@ -7,18 +7,19 @@ #error File requires ARC to be enabled. #endif -#ifndef __clang_analyzer__ -static NSDictionary *wrapResult(NSDictionary *result, FlutterError *error) { +static NSDictionary *wrapResult(NSDictionary *result, FlutterError *error) { NSDictionary *errorDict = (NSDictionary *)[NSNull null]; if (error) { - errorDict = [NSDictionary - dictionaryWithObjectsAndKeys:(error.code ? error.code : [NSNull null]), @"code", - (error.message ? error.message : [NSNull null]), @"message", - (error.details ? error.details : [NSNull null]), @"details", - nil]; + errorDict = @{ + @"code" : (error.code ? error.code : [NSNull null]), + @"message" : (error.message ? error.message : [NSNull null]), + @"details" : (error.details ? error.details : [NSNull null]), + }; } - return [NSDictionary dictionaryWithObjectsAndKeys:(result ? result : [NSNull null]), @"result", - errorDict, @"error", nil]; + return @{ + @"result" : (result ? result : [NSNull null]), + @"error" : errorDict, + }; } @interface FLTTextureMessage () @@ -217,8 +218,8 @@ void FLTVideoPlayerApiSetup(id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id binaryMessenger, id Date: Mon, 1 Mar 2021 17:26:47 +0300 Subject: [PATCH 03/14] add httpHeaders to pigeon --- .../io/flutter/plugins/videoplayer/Messages.java | 13 +++++++++++++ .../video_player/ios/Classes/messages.h | 1 + .../video_player/ios/Classes/messages.m | 8 +++++++- .../video_player/video_player/pigeons/messages.dart | 1 + .../lib/messages.dart | 5 ++++- 5 files changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java index f72fd31706d1..109ba9586e41 100644 --- a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java +++ b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java @@ -83,12 +83,23 @@ public void setFormatHint(String setterArg) { this.formatHint = setterArg; } + private HashMap httpHeaders; + + public HashMap getHttpHeaders() { + return httpHeaders; + } + + public void setHttpHeaders(HashMap setterArg) { + this.httpHeaders = setterArg; + } + 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; } @@ -102,6 +113,8 @@ static CreateMessage fromMap(HashMap map) { fromMapResult.packageName = (String) packageName; Object formatHint = map.get("formatHint"); fromMapResult.formatHint = (String) formatHint; + Object httpHeaders = map.get("httpHeaders"); + fromMapResult.httpHeaders = (HashMap) httpHeaders; return fromMapResult; } } diff --git a/packages/video_player/video_player/ios/Classes/messages.h b/packages/video_player/video_player/ios/Classes/messages.h index 8ce42dd38b08..c4f0c2a53356 100644 --- a/packages/video_player/video_player/ios/Classes/messages.h +++ b/packages/video_player/video_player/ios/Classes/messages.h @@ -24,6 +24,7 @@ NS_ASSUME_NONNULL_BEGIN @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 diff --git a/packages/video_player/video_player/ios/Classes/messages.m b/packages/video_player/video_player/ios/Classes/messages.m index 7400919653be..8c52332595e2 100644 --- a/packages/video_player/video_player/ios/Classes/messages.m +++ b/packages/video_player/video_player/ios/Classes/messages.m @@ -86,6 +86,10 @@ + (FLTCreateMessage *)fromMap:(NSDictionary *)dict { 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 { @@ -95,7 +99,9 @@ - (NSDictionary *)toMap { (self.packageName ? self.packageName : [NSNull null]), @"packageName", (self.formatHint ? self.formatHint : [NSNull null]), - @"formatHint", nil]; + @"formatHint", + (self.httpHeaders ? self.httpHeaders : [NSNull null]), + @"httpHeaders", nil]; } @end diff --git a/packages/video_player/video_player/pigeons/messages.dart b/packages/video_player/video_player/pigeons/messages.dart index ebef9e526b6a..a57b4f8a955e 100644 --- a/packages/video_player/video_player/pigeons/messages.dart +++ b/packages/video_player/video_player/pigeons/messages.dart @@ -31,6 +31,7 @@ class CreateMessage { String uri; String packageName; String formatHint; + Map httpHeaders; } class MixWithOthersMessage { diff --git a/packages/video_player/video_player_platform_interface/lib/messages.dart b/packages/video_player/video_player_platform_interface/lib/messages.dart index dc5237f2e151..1728d9f72cc9 100644 --- a/packages/video_player/video_player_platform_interface/lib/messages.dart +++ b/packages/video_player/video_player_platform_interface/lib/messages.dart @@ -27,6 +27,7 @@ class CreateMessage { String? uri; String? packageName; String? formatHint; + Map? httpHeaders; Object encode() { final Map pigeonMap = {}; @@ -34,6 +35,7 @@ class CreateMessage { pigeonMap['uri'] = uri; pigeonMap['packageName'] = packageName; pigeonMap['formatHint'] = formatHint; + pigeonMap['httpHeaders'] = httpHeaders; return pigeonMap; } @@ -43,7 +45,8 @@ class CreateMessage { ..asset = pigeonMap['asset'] as String? ..uri = pigeonMap['uri'] as String? ..packageName = pigeonMap['packageName'] as String? - ..formatHint = pigeonMap['formatHint'] as String?; + ..formatHint = pigeonMap['formatHint'] as String? + ..httpHeaders = pigeonMap['httpHeaders'] as Map?; } } From b6bb4193c4c2bfbba1298e5f1854e725129dd075 Mon Sep 17 00:00:00 2001 From: Pavel Date: Mon, 1 Mar 2021 20:18:02 +0300 Subject: [PATCH 04/14] headers implementation based on https://github.com/tvip/flutter-plugins/tree/videoplayer_http_headers/packages/video_player @Yarikk26 https://github.com/tvip/flutter-plugins/commit/1bc99e9d89acdd31bdfd2fc07dec5a04fcd0bccf --- .../plugins/videoplayer/VideoPlayer.java | 7 ++++++- .../videoplayer/VideoPlayerPlugin.java | 5 +++++ .../ios/Classes/FLTVideoPlayerPlugin.m | 20 ++++++++++++++----- .../video_player/lib/video_player.dart | 13 +++++++++++- .../video_player/test/video_player_test.dart | 3 +++ .../lib/method_channel_video_player.dart | 1 + .../lib/video_player_platform_interface.dart | 5 +++++ 7 files changed, 47 insertions(+), 7 deletions(-) diff --git a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java index 65657509b49f..68b95a545707 100644 --- a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java +++ b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java @@ -62,6 +62,7 @@ final class VideoPlayer { TextureRegistry.SurfaceTextureEntry textureEntry, String dataSource, String formatHint, + Map httpHeaders, VideoPlayerOptions options) { this.eventChannel = eventChannel; this.textureEntry = textureEntry; @@ -73,13 +74,17 @@ final class VideoPlayer { DataSource.Factory dataSourceFactory; if (isHTTP(uri)) { - dataSourceFactory = + DefaultHttpDataSourceFactory httpDataSourceFactory = new DefaultHttpDataSourceFactory( "ExoPlayer", null, DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS, DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS, true); + if (httpHeaders != null) { + httpDataSourceFactory.getDefaultRequestProperties().set(httpHeaders); + } + dataSourceFactory = httpDataSourceFactory; } else { dataSourceFactory = new DefaultDataSourceFactory(context, "ExoPlayer"); } diff --git a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java index 0c5854f4bc83..6e8536116b35 100644 --- a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java +++ b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java @@ -23,6 +23,7 @@ import io.flutter.view.TextureRegistry; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; +import java.util.Map; import javax.net.ssl.HttpsURLConnection; /** Android platform implementation of the VideoPlayerPlugin. */ @@ -138,8 +139,11 @@ public TextureMessage create(CreateMessage arg) { handle, "asset:///" + assetLookupKey, null, + null, options); } else { + @SuppressWarnings("unchecked") + Map httpHeaders = arg.getHttpHeaders(); player = new VideoPlayer( flutterState.applicationContext, @@ -147,6 +151,7 @@ public TextureMessage create(CreateMessage arg) { handle, arg.getUri(), arg.getFormatHint(), + httpHeaders, options); } videoPlayers.put(handle.id(), player); diff --git a/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m b/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m index c2a1a40aa4fe..026f67ee81c6 100644 --- a/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m +++ b/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m @@ -46,7 +46,9 @@ @interface FLTVideoPlayer : NSObject @property(nonatomic, readonly) bool isPlaying; @property(nonatomic) bool isLooping; @property(nonatomic, readonly) bool isInitialized; -- (instancetype)initWithURL:(NSURL*)url frameUpdater:(FLTFrameUpdater*)frameUpdater; +- (instancetype)initWithURL:(NSURL*)url + frameUpdater:(FLTFrameUpdater*)frameUpdater + httpHeaders:(NSDictionary*)headers; - (void)play; - (void)pause; - (void)setIsLooping:(bool)isLooping; @@ -62,7 +64,7 @@ - (void)updatePlayingState; @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]; + return [self initWithURL:[NSURL fileURLWithPath:path] frameUpdater:frameUpdater httpHeaders:nil]; } - (void)addObservers:(AVPlayerItem*)item { @@ -162,8 +164,15 @@ - (void)createVideoOutputAndDisplayLink:(FLTFrameUpdater*)frameUpdater { _displayLink.paused = YES; } -- (instancetype)initWithURL:(NSURL*)url frameUpdater:(FLTFrameUpdater*)frameUpdater { - AVPlayerItem* item = [AVPlayerItem playerItemWithURL:url]; +- (instancetype)initWithURL:(NSURL*)url + frameUpdater:(FLTFrameUpdater*)frameUpdater + httpHeaders:(NSDictionary*)headers { + NSDictionary* options = nil; + if (headers != NULL) { + options = @{@"AVURLAssetHTTPHeaderFieldsKey" : headers}; + } + AVURLAsset* urlAsset = [AVURLAsset URLAssetWithURL:url options:options]; + AVPlayerItem* item = [AVPlayerItem playerItemWithAsset:urlAsset]; return [self initWithPlayerItem:item frameUpdater:frameUpdater]; } @@ -522,7 +531,8 @@ - (FLTTextureMessage*)create:(FLTCreateMessage*)input error:(FlutterError**)erro return [self onPlayerSetup:player frameUpdater:frameUpdater]; } else if (input.uri) { player = [[FLTVideoPlayer alloc] initWithURL:[NSURL URLWithString:input.uri] - frameUpdater:frameUpdater]; + frameUpdater:frameUpdater + httpHeaders:input.httpHeaders]; return [self onPlayerSetup:player frameUpdater:frameUpdater]; } else { *error = [FlutterError errorWithCode:@"video_player" message:@"not implemented" details:nil]; diff --git a/packages/video_player/video_player/lib/video_player.dart b/packages/video_player/video_player/lib/video_player.dart index 6a2af76fa547..9c9d52ff507d 100644 --- a/packages/video_player/video_player/lib/video_player.dart +++ b/packages/video_player/video_player/lib/video_player.dart @@ -185,6 +185,7 @@ class VideoPlayerController extends ValueNotifier { {this.package, this.closedCaptionFile, this.videoPlayerOptions}) : dataSourceType = DataSourceType.asset, formatHint = null, + httpHeaders = null, super(VideoPlayerValue(duration: Duration.zero)); /// Constructs a [VideoPlayerController] playing a video from obtained from @@ -194,8 +195,13 @@ class VideoPlayerController extends ValueNotifier { /// null. /// **Android only**: The [formatHint] option allows the caller to override /// the video format detection code. + /// [httpHeaders] option allows to specify HTTP headers + /// for the request to the [dataSource]. VideoPlayerController.network(this.dataSource, - {this.formatHint, this.closedCaptionFile, this.videoPlayerOptions}) + {this.formatHint, + this.closedCaptionFile, + this.videoPlayerOptions, + this.httpHeaders}) : dataSourceType = DataSourceType.network, package = null, super(VideoPlayerValue(duration: Duration.zero)); @@ -210,12 +216,16 @@ class VideoPlayerController extends ValueNotifier { dataSourceType = DataSourceType.file, package = null, formatHint = null, + httpHeaders = null, super(VideoPlayerValue(duration: Duration.zero)); /// The URI to the video file. This will be in different formats depending on /// the [DataSourceType] of the original video. final String dataSource; + /// HTTP headers used for the request to the [dataSource]. + final Map? httpHeaders; + /// **Android only**. Will override the platform's generic file format /// detection with whatever is set here. final VideoFormat? formatHint; @@ -274,6 +284,7 @@ class VideoPlayerController extends ValueNotifier { sourceType: DataSourceType.network, uri: dataSource, formatHint: formatHint, + httpHeaders: httpHeaders, ); break; case DataSourceType.file: diff --git a/packages/video_player/video_player/test/video_player_test.dart b/packages/video_player/video_player/test/video_player_test.dart index 582012097b71..344e9b680c8c 100644 --- a/packages/video_player/video_player/test/video_player_test.dart +++ b/packages/video_player/video_player/test/video_player_test.dart @@ -30,6 +30,9 @@ class FakeController extends ValueNotifier @override String get dataSource => ''; + @override + Map? get httpHeaders => null; + @override DataSourceType get dataSourceType => DataSourceType.file; diff --git a/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart b/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart index 9b007d00d6a9..8f2f5de6be62 100644 --- a/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart +++ b/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart @@ -37,6 +37,7 @@ class MethodChannelVideoPlayer extends VideoPlayerPlatform { case DataSourceType.network: message.uri = dataSource.uri; message.formatHint = _videoFormatStringMap[dataSource.formatHint]; + message.httpHeaders = dataSource.httpHeaders; break; case DataSourceType.file: message.uri = dataSource.uri; diff --git a/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart b/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart index 77b34f46bc10..2294d6ca194d 100644 --- a/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart +++ b/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart @@ -151,6 +151,7 @@ class DataSource { this.formatHint, this.asset, this.package, + this.httpHeaders, }); /// The way in which the video was originally loaded. @@ -169,6 +170,10 @@ class DataSource { /// detection with whatever is set here. final VideoFormat? formatHint; + /// HTTP headers used for the request to the [uri]. + /// Only for [DataSourceType.network] videos. + Map? httpHeaders; + /// The name of the asset. Only set for [DataSourceType.asset] videos. final String? asset; From 45bda5921178bf47369fdfc0eb0c5cca2ee32f1b Mon Sep 17 00:00:00 2001 From: Pavel Date: Wed, 3 Mar 2021 13:57:18 +0300 Subject: [PATCH 05/14] tests --- .../video_player/example/pubspec.yaml | 9 +++++ .../video_player/video_player/pubspec.yaml | 4 +++ .../method_channel_video_player_test.dart | 33 +++++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/packages/video_player/video_player/example/pubspec.yaml b/packages/video_player/video_player/example/pubspec.yaml index 4bfb3e5fefad..b885da0df244 100644 --- a/packages/video_player/video_player/example/pubspec.yaml +++ b/packages/video_player/video_player/example/pubspec.yaml @@ -14,6 +14,15 @@ dependencies: # the parent directory to use the current plugin's version. path: ../ +# For development / testing purpose only. +# When using video_player in a real application +# you won't directly depend on video_player_platform_interface at all. +# The example app is bundled with the plugin so we use a path dependency on +# the parent directory to use the current plugin's version. +dependency_overrides: + video_player_platform_interface: + path: ../../video_player_platform_interface + dev_dependencies: flutter_test: sdk: flutter diff --git a/packages/video_player/video_player/pubspec.yaml b/packages/video_player/video_player/pubspec.yaml index fedc46c721b1..bddfdf41f782 100644 --- a/packages/video_player/video_player/pubspec.yaml +++ b/packages/video_player/video_player/pubspec.yaml @@ -32,6 +32,10 @@ dependencies: flutter_test: sdk: flutter +dependency_overrides: + video_player_platform_interface: + path: ../video_player_platform_interface + dev_dependencies: pedantic: ^1.10.0 pigeon: ^0.1.21 diff --git a/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart b/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart index fae4b746bf05..6c2bd66fecb0 100644 --- a/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart +++ b/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart @@ -141,8 +141,41 @@ void main() { formatHint: VideoFormat.dash, )); expect(log.log.last, 'create'); + expect(log.createMessage?.asset, null); expect(log.createMessage?.uri, 'someUri'); + expect(log.createMessage?.packageName, null); expect(log.createMessage?.formatHint, 'dash'); + expect(log.createMessage?.httpHeaders, null); + expect(textureId, 3); + }); + + test('create with network (empty headers)', () async { + final int? textureId = await player.create(DataSource( + sourceType: DataSourceType.network, + uri: 'someUri', + httpHeaders: {}, + )); + expect(log.log.last, 'create'); + expect(log.createMessage?.asset, null); + expect(log.createMessage?.uri, 'someUri'); + expect(log.createMessage?.packageName, null); + expect(log.createMessage?.formatHint, null); + expect(log.createMessage?.httpHeaders, {}); + expect(textureId, 3); + }); + + test('create with network (some headers)', () async { + final int? textureId = await player.create(DataSource( + sourceType: DataSourceType.network, + uri: 'someUri', + httpHeaders: {'Authorization': 'Bearer token'}, + )); + expect(log.log.last, 'create'); + expect(log.createMessage?.asset, null); + expect(log.createMessage?.uri, 'someUri'); + expect(log.createMessage?.packageName, null); + expect(log.createMessage?.formatHint, null); + expect(log.createMessage?.httpHeaders, {'Authorization': 'Bearer token'}); expect(textureId, 3); }); From 0761edf6402e8b3e1321effb003cf21b92262490 Mon Sep 17 00:00:00 2001 From: Pavel Date: Wed, 3 Mar 2021 14:10:52 +0300 Subject: [PATCH 06/14] version and changelog --- packages/video_player/video_player/CHANGELOG.md | 4 ++++ packages/video_player/video_player/pubspec.yaml | 4 ++-- .../video_player/video_player_platform_interface/CHANGELOG.md | 4 ++++ .../video_player/video_player_platform_interface/pubspec.yaml | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/video_player/video_player/CHANGELOG.md b/packages/video_player/video_player/CHANGELOG.md index 57ba54e0a7bc..6a20e4294b0f 100644 --- a/packages/video_player/video_player/CHANGELOG.md +++ b/packages/video_player/video_player/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.1.0 + +* Add `httpHeaders` option to `VideoPlayerController.network` + ## 2.0.0 * Migrate to null safety. diff --git a/packages/video_player/video_player/pubspec.yaml b/packages/video_player/video_player/pubspec.yaml index bddfdf41f782..aa3bfb094797 100644 --- a/packages/video_player/video_player/pubspec.yaml +++ b/packages/video_player/video_player/pubspec.yaml @@ -1,7 +1,7 @@ name: video_player description: Flutter plugin for displaying inline video with other Flutter widgets on Android, iOS, and web. -version: 2.0.0 +version: 2.1.0 homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player flutter: @@ -17,7 +17,7 @@ flutter: dependencies: meta: ^1.3.0 - video_player_platform_interface: ^4.0.0 + video_player_platform_interface: ^4.1.0 # The design on https://flutter.dev/go/federated-plugins was to leave # this constraint as "any". We cannot do it right now as it fails pub publish diff --git a/packages/video_player/video_player_platform_interface/CHANGELOG.md b/packages/video_player/video_player_platform_interface/CHANGELOG.md index d0c59bd05023..24631513f800 100644 --- a/packages/video_player/video_player_platform_interface/CHANGELOG.md +++ b/packages/video_player/video_player_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.1.0 + +* Add `httpHeaders` to `DataSource` + ## 4.0.0 * **Breaking Changes**: diff --git a/packages/video_player/video_player_platform_interface/pubspec.yaml b/packages/video_player/video_player_platform_interface/pubspec.yaml index c85f483d041f..98e1c95a8e8f 100644 --- a/packages/video_player/video_player_platform_interface/pubspec.yaml +++ b/packages/video_player/video_player_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the video_player plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 4.0.0 +version: 4.1.0 dependencies: flutter: From af5388619dd633f8af0c18acee1d399a737abb47 Mon Sep 17 00:00:00 2001 From: Pavel Date: Thu, 11 Mar 2021 03:20:34 +0300 Subject: [PATCH 07/14] minor fixes --- .../video_player/ios/Classes/FLTVideoPlayerPlugin.m | 2 +- .../video_player/video_player/lib/video_player.dart | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m b/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m index 026f67ee81c6..b6117cc06728 100644 --- a/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m +++ b/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m @@ -168,7 +168,7 @@ - (instancetype)initWithURL:(NSURL*)url frameUpdater:(FLTFrameUpdater*)frameUpdater httpHeaders:(NSDictionary*)headers { NSDictionary* options = nil; - if (headers != NULL) { + if (headers != nil) { options = @{@"AVURLAssetHTTPHeaderFieldsKey" : headers}; } AVURLAsset* urlAsset = [AVURLAsset URLAssetWithURL:url options:options]; diff --git a/packages/video_player/video_player/lib/video_player.dart b/packages/video_player/video_player/lib/video_player.dart index 9c9d52ff507d..30d9842fa294 100644 --- a/packages/video_player/video_player/lib/video_player.dart +++ b/packages/video_player/video_player/lib/video_player.dart @@ -197,12 +197,13 @@ class VideoPlayerController extends ValueNotifier { /// the video format detection code. /// [httpHeaders] option allows to specify HTTP headers /// for the request to the [dataSource]. - VideoPlayerController.network(this.dataSource, - {this.formatHint, - this.closedCaptionFile, - this.videoPlayerOptions, - this.httpHeaders}) - : dataSourceType = DataSourceType.network, + VideoPlayerController.network( + this.dataSource, { + this.formatHint, + this.closedCaptionFile, + this.videoPlayerOptions, + this.httpHeaders, + }) : dataSourceType = DataSourceType.network, package = null, super(VideoPlayerValue(duration: Duration.zero)); From 083ac9f3ad2660c0e08fc6325e94068897b1dccb Mon Sep 17 00:00:00 2001 From: Pavel Date: Thu, 11 Mar 2021 04:01:52 +0300 Subject: [PATCH 08/14] tests --- .../video_player/test/video_player_test.dart | 77 ++++++++++++++++--- 1 file changed, 68 insertions(+), 9 deletions(-) diff --git a/packages/video_player/video_player/test/video_player_test.dart b/packages/video_player/video_player/test/video_player_test.dart index 344e9b680c8c..74ff75eb3d86 100644 --- a/packages/video_player/video_player/test/video_player_test.dart +++ b/packages/video_player/video_player/test/video_player_test.dart @@ -203,22 +203,81 @@ void main() { ); await controller.initialize(); - expect(fakeVideoPlayerPlatform.dataSourceDescriptions[0].uri, - 'https://127.0.0.1'); expect( - fakeVideoPlayerPlatform.dataSourceDescriptions[0].formatHint, null); + fakeVideoPlayerPlatform.dataSourceDescriptions[0].uri, + 'https://127.0.0.1', + ); + expect( + fakeVideoPlayerPlatform.dataSourceDescriptions[0].formatHint, + null, + ); + expect( + fakeVideoPlayerPlatform.dataSourceDescriptions[0].httpHeaders, + null, + ); }); test('network with hint', () async { final VideoPlayerController controller = VideoPlayerController.network( - 'https://127.0.0.1', - formatHint: VideoFormat.dash); + 'https://127.0.0.1', + formatHint: VideoFormat.dash, + ); await controller.initialize(); - expect(fakeVideoPlayerPlatform.dataSourceDescriptions[0].uri, - 'https://127.0.0.1'); - expect(fakeVideoPlayerPlatform.dataSourceDescriptions[0].formatHint, - 'dash'); + expect( + fakeVideoPlayerPlatform.dataSourceDescriptions[0].uri, + 'https://127.0.0.1', + ); + expect( + fakeVideoPlayerPlatform.dataSourceDescriptions[0].formatHint, + 'dash', + ); + expect( + fakeVideoPlayerPlatform.dataSourceDescriptions[0].httpHeaders, + null, + ); + }); + + test('network with empty headers', () async { + final VideoPlayerController controller = VideoPlayerController.network( + 'https://127.0.0.1', + httpHeaders: {}, + ); + await controller.initialize(); + + expect( + fakeVideoPlayerPlatform.dataSourceDescriptions[0].uri, + 'https://127.0.0.1', + ); + expect( + fakeVideoPlayerPlatform.dataSourceDescriptions[0].formatHint, + null, + ); + expect( + fakeVideoPlayerPlatform.dataSourceDescriptions[0].httpHeaders, + {}, + ); + }); + + test('network with some headers', () async { + final VideoPlayerController controller = VideoPlayerController.network( + 'https://127.0.0.1', + httpHeaders: {'Authorization': 'Bearer token'}, + ); + await controller.initialize(); + + expect( + fakeVideoPlayerPlatform.dataSourceDescriptions[0].uri, + 'https://127.0.0.1', + ); + expect( + fakeVideoPlayerPlatform.dataSourceDescriptions[0].formatHint, + null, + ); + expect( + fakeVideoPlayerPlatform.dataSourceDescriptions[0].httpHeaders, + {'Authorization': 'Bearer token'}, + ); }); test('init errors', () async { From ff013d66b3b1aea355057ab803ac31b22b776682 Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 23 Mar 2021 19:07:24 +0300 Subject: [PATCH 09/14] update pigeon --- .../flutter/plugins/videoplayer/Messages.java | 127 +++++++++--------- .../video_player/ios/Classes/messages.h | 2 +- .../video_player/ios/Classes/messages.m | 2 +- .../lib/messages.dart | 52 ++++--- .../lib/test.dart | 2 +- 5 files changed, 92 insertions(+), 93 deletions(-) diff --git a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java index e0a4a3b8dd08..9fdffc3f4678 100644 --- a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java +++ b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java @@ -2,7 +2,7 @@ // 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 (v0.1.23), do not edit directly. // See also: https://pub.dev/packages/pigeon package io.flutter.plugins.videoplayer; @@ -11,9 +11,10 @@ import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.StandardMessageCodec; 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. */ @@ -28,13 +29,13 @@ public void setTextureId(Long setterArg) { this.textureId = setterArg; } - HashMap toMap() { - HashMap toMapResult = new HashMap<>(); + Map toMap() { + Map toMapResult = new HashMap<>(); toMapResult.put("textureId", textureId); return toMapResult; } - static TextureMessage fromMap(HashMap map) { + static TextureMessage fromMap(Map map) { TextureMessage fromMapResult = new TextureMessage(); Object textureId = map.get("textureId"); fromMapResult.textureId = @@ -87,18 +88,18 @@ public void setFormatHint(String setterArg) { this.formatHint = setterArg; } - private HashMap httpHeaders; + private Map httpHeaders; - public HashMap getHttpHeaders() { + public Map getHttpHeaders() { return httpHeaders; } - public void setHttpHeaders(HashMap setterArg) { + public void setHttpHeaders(Map setterArg) { this.httpHeaders = setterArg; } - HashMap toMap() { - HashMap toMapResult = new HashMap<>(); + Map toMap() { + Map toMapResult = new HashMap<>(); toMapResult.put("asset", asset); toMapResult.put("uri", uri); toMapResult.put("packageName", packageName); @@ -107,7 +108,7 @@ HashMap toMap() { return toMapResult; } - static CreateMessage fromMap(HashMap map) { + static CreateMessage fromMap(Map map) { CreateMessage fromMapResult = new CreateMessage(); Object asset = map.get("asset"); fromMapResult.asset = (String) asset; @@ -118,7 +119,7 @@ static CreateMessage fromMap(HashMap map) { Object formatHint = map.get("formatHint"); fromMapResult.formatHint = (String) formatHint; Object httpHeaders = map.get("httpHeaders"); - fromMapResult.httpHeaders = (HashMap) httpHeaders; + fromMapResult.httpHeaders = (Map) httpHeaders; return fromMapResult; } } @@ -145,14 +146,14 @@ public void setIsLooping(Boolean setterArg) { this.isLooping = setterArg; } - HashMap toMap() { - HashMap toMapResult = new HashMap<>(); + Map toMap() { + Map toMapResult = new HashMap<>(); toMapResult.put("textureId", textureId); toMapResult.put("isLooping", isLooping); return toMapResult; } - static LoopingMessage fromMap(HashMap map) { + static LoopingMessage fromMap(Map map) { LoopingMessage fromMapResult = new LoopingMessage(); Object textureId = map.get("textureId"); fromMapResult.textureId = @@ -187,14 +188,14 @@ public void setVolume(Double setterArg) { this.volume = setterArg; } - HashMap toMap() { - HashMap toMapResult = new HashMap<>(); + Map toMap() { + Map toMapResult = new HashMap<>(); toMapResult.put("textureId", textureId); toMapResult.put("volume", volume); return toMapResult; } - static VolumeMessage fromMap(HashMap map) { + static VolumeMessage fromMap(Map map) { VolumeMessage fromMapResult = new VolumeMessage(); Object textureId = map.get("textureId"); fromMapResult.textureId = @@ -229,14 +230,14 @@ public void setSpeed(Double setterArg) { this.speed = setterArg; } - HashMap toMap() { - HashMap toMapResult = new HashMap<>(); + Map toMap() { + Map toMapResult = new HashMap<>(); toMapResult.put("textureId", textureId); toMapResult.put("speed", speed); return toMapResult; } - static PlaybackSpeedMessage fromMap(HashMap map) { + static PlaybackSpeedMessage fromMap(Map map) { PlaybackSpeedMessage fromMapResult = new PlaybackSpeedMessage(); Object textureId = map.get("textureId"); fromMapResult.textureId = @@ -271,14 +272,14 @@ public void setPosition(Long setterArg) { this.position = setterArg; } - HashMap toMap() { - HashMap toMapResult = new HashMap<>(); + Map toMap() { + Map toMapResult = new HashMap<>(); toMapResult.put("textureId", textureId); toMapResult.put("position", position); return toMapResult; } - static PositionMessage fromMap(HashMap map) { + static PositionMessage fromMap(Map map) { PositionMessage fromMapResult = new PositionMessage(); Object textureId = map.get("textureId"); fromMapResult.textureId = @@ -306,13 +307,13 @@ public void setMixWithOthers(Boolean setterArg) { this.mixWithOthers = setterArg; } - HashMap toMap() { - HashMap toMapResult = new HashMap<>(); + Map toMap() { + Map toMapResult = new HashMap<>(); toMapResult.put("mixWithOthers", mixWithOthers); return toMapResult; } - static MixWithOthersMessage fromMap(HashMap map) { + static MixWithOthersMessage fromMap(Map map) { MixWithOthersMessage fromMapResult = new MixWithOthersMessage(); Object mixWithOthers = map.get("mixWithOthers"); fromMapResult.mixWithOthers = (Boolean) mixWithOthers; @@ -344,7 +345,7 @@ public interface VideoPlayerApi { void setMixWithOthers(MixWithOthersMessage arg); - /** 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 = @@ -355,11 +356,11 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { 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); @@ -377,13 +378,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - CreateMessage input = CreateMessage.fromMap((HashMap) message); + CreateMessage input = CreateMessage.fromMap((Map) message); TextureMessage output = api.create(input); wrapped.put("result", output.toMap()); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -401,13 +402,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - TextureMessage input = TextureMessage.fromMap((HashMap) message); + TextureMessage input = TextureMessage.fromMap((Map) message); api.dispose(input); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -425,13 +426,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - LoopingMessage input = LoopingMessage.fromMap((HashMap) message); + LoopingMessage input = LoopingMessage.fromMap((Map) message); api.setLooping(input); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -449,13 +450,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - VolumeMessage input = VolumeMessage.fromMap((HashMap) message); + VolumeMessage input = VolumeMessage.fromMap((Map) message); api.setVolume(input); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -473,13 +474,14 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - PlaybackSpeedMessage input = PlaybackSpeedMessage.fromMap((HashMap) message); + PlaybackSpeedMessage input = + PlaybackSpeedMessage.fromMap((Map) message); api.setPlaybackSpeed(input); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -497,13 +499,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - TextureMessage input = TextureMessage.fromMap((HashMap) message); + TextureMessage input = TextureMessage.fromMap((Map) message); api.play(input); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -521,13 +523,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - TextureMessage input = TextureMessage.fromMap((HashMap) message); + TextureMessage input = TextureMessage.fromMap((Map) message); PositionMessage output = api.position(input); wrapped.put("result", output.toMap()); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -545,13 +547,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - PositionMessage input = PositionMessage.fromMap((HashMap) message); + PositionMessage input = PositionMessage.fromMap((Map) message); api.seekTo(input); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -569,13 +571,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - TextureMessage input = TextureMessage.fromMap((HashMap) message); + TextureMessage input = TextureMessage.fromMap((Map) message); api.pause(input); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -593,13 +595,14 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - HashMap wrapped = new HashMap<>(); + Map wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - MixWithOthersMessage input = MixWithOthersMessage.fromMap((HashMap) message); + MixWithOthersMessage input = + MixWithOthersMessage.fromMap((Map) message); api.setMixWithOthers(input); wrapped.put("result", null); - } catch (Exception exception) { + } catch (Error | RuntimeException exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -611,8 +614,8 @@ 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); diff --git a/packages/video_player/video_player/ios/Classes/messages.h b/packages/video_player/video_player/ios/Classes/messages.h index e21e7860ba09..88264cefd26c 100644 --- a/packages/video_player/video_player/ios/Classes/messages.h +++ b/packages/video_player/video_player/ios/Classes/messages.h @@ -2,7 +2,7 @@ // 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 (v0.1.23), do not edit directly. // See also: https://pub.dev/packages/pigeon #import @protocol FlutterBinaryMessenger; diff --git a/packages/video_player/video_player/ios/Classes/messages.m b/packages/video_player/video_player/ios/Classes/messages.m index 14e375b33378..759f66ce24ce 100644 --- a/packages/video_player/video_player/ios/Classes/messages.m +++ b/packages/video_player/video_player/ios/Classes/messages.m @@ -2,7 +2,7 @@ // 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 (v0.1.23), do not edit directly. // See also: https://pub.dev/packages/pigeon #import "messages.h" #import diff --git a/packages/video_player/video_player_platform_interface/lib/messages.dart b/packages/video_player/video_player_platform_interface/lib/messages.dart index 0ddbfaeaf247..5bd4b3ce97f0 100644 --- a/packages/video_player/video_player_platform_interface/lib/messages.dart +++ b/packages/video_player/video_player_platform_interface/lib/messages.dart @@ -1,10 +1,6 @@ -// 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 (v0.1.23), 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 +// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators // @dart = 2.12 import 'dart:async'; import 'dart:typed_data' show Uint8List, Int32List, Int64List, Float64List; @@ -160,9 +156,9 @@ 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'], ); @@ -185,9 +181,9 @@ 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'], ); @@ -210,9 +206,9 @@ 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'], ); @@ -235,9 +231,9 @@ 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'], ); @@ -260,9 +256,9 @@ 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'], ); @@ -286,9 +282,9 @@ 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'], ); @@ -311,9 +307,9 @@ 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'], ); @@ -336,9 +332,9 @@ 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'], ); @@ -361,9 +357,9 @@ 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'], ); @@ -386,9 +382,9 @@ 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'], ); @@ -412,9 +408,9 @@ 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'], ); diff --git a/packages/video_player/video_player_platform_interface/lib/test.dart b/packages/video_player/video_player_platform_interface/lib/test.dart index b4fd81f44f41..cad1eb7aeb2e 100644 --- a/packages/video_player/video_player_platform_interface/lib/test.dart +++ b/packages/video_player/video_player_platform_interface/lib/test.dart @@ -2,7 +2,7 @@ // 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 (v0.1.23), 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 // @dart = 2.12 From 3d7d737558ab0b7127bd4bed14526600bbac7325 Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 23 Mar 2021 20:01:36 +0300 Subject: [PATCH 10/14] Revert "update pigeon" This reverts commit ff013d66 --- .../flutter/plugins/videoplayer/Messages.java | 127 +++++++++--------- .../video_player/ios/Classes/messages.h | 2 +- .../video_player/ios/Classes/messages.m | 2 +- .../lib/messages.dart | 52 +++---- .../lib/test.dart | 2 +- 5 files changed, 93 insertions(+), 92 deletions(-) diff --git a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java index 9fdffc3f4678..e0a4a3b8dd08 100644 --- a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java +++ b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java @@ -2,7 +2,7 @@ // 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.23), do not edit directly. +// Autogenerated from Pigeon (v0.1.21), do not edit directly. // See also: https://pub.dev/packages/pigeon package io.flutter.plugins.videoplayer; @@ -11,10 +11,9 @@ import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.StandardMessageCodec; import java.util.HashMap; -import java.util.Map; /** Generated class from Pigeon. */ -@SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression"}) +@SuppressWarnings("unused") public class Messages { /** Generated class from Pigeon that represents data sent in messages. */ @@ -29,13 +28,13 @@ public void setTextureId(Long setterArg) { this.textureId = setterArg; } - Map toMap() { - Map toMapResult = new HashMap<>(); + HashMap toMap() { + HashMap toMapResult = new HashMap<>(); toMapResult.put("textureId", textureId); return toMapResult; } - static TextureMessage fromMap(Map map) { + static TextureMessage fromMap(HashMap map) { TextureMessage fromMapResult = new TextureMessage(); Object textureId = map.get("textureId"); fromMapResult.textureId = @@ -88,18 +87,18 @@ public void setFormatHint(String setterArg) { this.formatHint = setterArg; } - private Map httpHeaders; + private HashMap httpHeaders; - public Map getHttpHeaders() { + public HashMap getHttpHeaders() { return httpHeaders; } - public void setHttpHeaders(Map setterArg) { + public void setHttpHeaders(HashMap setterArg) { this.httpHeaders = setterArg; } - Map toMap() { - Map toMapResult = new HashMap<>(); + HashMap toMap() { + HashMap toMapResult = new HashMap<>(); toMapResult.put("asset", asset); toMapResult.put("uri", uri); toMapResult.put("packageName", packageName); @@ -108,7 +107,7 @@ Map toMap() { return toMapResult; } - static CreateMessage fromMap(Map map) { + static CreateMessage fromMap(HashMap map) { CreateMessage fromMapResult = new CreateMessage(); Object asset = map.get("asset"); fromMapResult.asset = (String) asset; @@ -119,7 +118,7 @@ static CreateMessage fromMap(Map map) { Object formatHint = map.get("formatHint"); fromMapResult.formatHint = (String) formatHint; Object httpHeaders = map.get("httpHeaders"); - fromMapResult.httpHeaders = (Map) httpHeaders; + fromMapResult.httpHeaders = (HashMap) httpHeaders; return fromMapResult; } } @@ -146,14 +145,14 @@ public void setIsLooping(Boolean setterArg) { this.isLooping = setterArg; } - Map toMap() { - Map toMapResult = new HashMap<>(); + HashMap toMap() { + HashMap toMapResult = new HashMap<>(); toMapResult.put("textureId", textureId); toMapResult.put("isLooping", isLooping); return toMapResult; } - static LoopingMessage fromMap(Map map) { + static LoopingMessage fromMap(HashMap map) { LoopingMessage fromMapResult = new LoopingMessage(); Object textureId = map.get("textureId"); fromMapResult.textureId = @@ -188,14 +187,14 @@ public void setVolume(Double setterArg) { this.volume = setterArg; } - Map toMap() { - Map toMapResult = new HashMap<>(); + HashMap toMap() { + HashMap toMapResult = new HashMap<>(); toMapResult.put("textureId", textureId); toMapResult.put("volume", volume); return toMapResult; } - static VolumeMessage fromMap(Map map) { + static VolumeMessage fromMap(HashMap map) { VolumeMessage fromMapResult = new VolumeMessage(); Object textureId = map.get("textureId"); fromMapResult.textureId = @@ -230,14 +229,14 @@ public void setSpeed(Double setterArg) { this.speed = setterArg; } - Map toMap() { - Map toMapResult = new HashMap<>(); + HashMap toMap() { + HashMap toMapResult = new HashMap<>(); toMapResult.put("textureId", textureId); toMapResult.put("speed", speed); return toMapResult; } - static PlaybackSpeedMessage fromMap(Map map) { + static PlaybackSpeedMessage fromMap(HashMap map) { PlaybackSpeedMessage fromMapResult = new PlaybackSpeedMessage(); Object textureId = map.get("textureId"); fromMapResult.textureId = @@ -272,14 +271,14 @@ public void setPosition(Long setterArg) { this.position = setterArg; } - Map toMap() { - Map toMapResult = new HashMap<>(); + HashMap toMap() { + HashMap toMapResult = new HashMap<>(); toMapResult.put("textureId", textureId); toMapResult.put("position", position); return toMapResult; } - static PositionMessage fromMap(Map map) { + static PositionMessage fromMap(HashMap map) { PositionMessage fromMapResult = new PositionMessage(); Object textureId = map.get("textureId"); fromMapResult.textureId = @@ -307,13 +306,13 @@ public void setMixWithOthers(Boolean setterArg) { this.mixWithOthers = setterArg; } - Map toMap() { - Map toMapResult = new HashMap<>(); + HashMap toMap() { + HashMap toMapResult = new HashMap<>(); toMapResult.put("mixWithOthers", mixWithOthers); return toMapResult; } - static MixWithOthersMessage fromMap(Map map) { + static MixWithOthersMessage fromMap(HashMap map) { MixWithOthersMessage fromMapResult = new MixWithOthersMessage(); Object mixWithOthers = map.get("mixWithOthers"); fromMapResult.mixWithOthers = (Boolean) mixWithOthers; @@ -345,7 +344,7 @@ public interface VideoPlayerApi { void setMixWithOthers(MixWithOthersMessage arg); - /** 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 = @@ -356,11 +355,11 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - Map wrapped = new HashMap<>(); + HashMap wrapped = new HashMap<>(); try { api.initialize(); wrapped.put("result", null); - } catch (Error | RuntimeException exception) { + } catch (Exception exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -378,13 +377,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - Map wrapped = new HashMap<>(); + HashMap wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - CreateMessage input = CreateMessage.fromMap((Map) message); + CreateMessage input = CreateMessage.fromMap((HashMap) message); TextureMessage output = api.create(input); wrapped.put("result", output.toMap()); - } catch (Error | RuntimeException exception) { + } catch (Exception exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -402,13 +401,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - Map wrapped = new HashMap<>(); + HashMap wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - TextureMessage input = TextureMessage.fromMap((Map) message); + TextureMessage input = TextureMessage.fromMap((HashMap) message); api.dispose(input); wrapped.put("result", null); - } catch (Error | RuntimeException exception) { + } catch (Exception exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -426,13 +425,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - Map wrapped = new HashMap<>(); + HashMap wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - LoopingMessage input = LoopingMessage.fromMap((Map) message); + LoopingMessage input = LoopingMessage.fromMap((HashMap) message); api.setLooping(input); wrapped.put("result", null); - } catch (Error | RuntimeException exception) { + } catch (Exception exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -450,13 +449,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - Map wrapped = new HashMap<>(); + HashMap wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - VolumeMessage input = VolumeMessage.fromMap((Map) message); + VolumeMessage input = VolumeMessage.fromMap((HashMap) message); api.setVolume(input); wrapped.put("result", null); - } catch (Error | RuntimeException exception) { + } catch (Exception exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -474,14 +473,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - Map wrapped = new HashMap<>(); + HashMap wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - PlaybackSpeedMessage input = - PlaybackSpeedMessage.fromMap((Map) message); + PlaybackSpeedMessage input = PlaybackSpeedMessage.fromMap((HashMap) message); api.setPlaybackSpeed(input); wrapped.put("result", null); - } catch (Error | RuntimeException exception) { + } catch (Exception exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -499,13 +497,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - Map wrapped = new HashMap<>(); + HashMap wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - TextureMessage input = TextureMessage.fromMap((Map) message); + TextureMessage input = TextureMessage.fromMap((HashMap) message); api.play(input); wrapped.put("result", null); - } catch (Error | RuntimeException exception) { + } catch (Exception exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -523,13 +521,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - Map wrapped = new HashMap<>(); + HashMap wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - TextureMessage input = TextureMessage.fromMap((Map) message); + TextureMessage input = TextureMessage.fromMap((HashMap) message); PositionMessage output = api.position(input); wrapped.put("result", output.toMap()); - } catch (Error | RuntimeException exception) { + } catch (Exception exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -547,13 +545,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - Map wrapped = new HashMap<>(); + HashMap wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - PositionMessage input = PositionMessage.fromMap((Map) message); + PositionMessage input = PositionMessage.fromMap((HashMap) message); api.seekTo(input); wrapped.put("result", null); - } catch (Error | RuntimeException exception) { + } catch (Exception exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -571,13 +569,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - Map wrapped = new HashMap<>(); + HashMap wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - TextureMessage input = TextureMessage.fromMap((Map) message); + TextureMessage input = TextureMessage.fromMap((HashMap) message); api.pause(input); wrapped.put("result", null); - } catch (Error | RuntimeException exception) { + } catch (Exception exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -595,14 +593,13 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { if (api != null) { channel.setMessageHandler( (message, reply) -> { - Map wrapped = new HashMap<>(); + HashMap wrapped = new HashMap<>(); try { @SuppressWarnings("ConstantConditions") - MixWithOthersMessage input = - MixWithOthersMessage.fromMap((Map) message); + MixWithOthersMessage input = MixWithOthersMessage.fromMap((HashMap) message); api.setMixWithOthers(input); wrapped.put("result", null); - } catch (Error | RuntimeException exception) { + } catch (Exception exception) { wrapped.put("error", wrapError(exception)); } reply.reply(wrapped); @@ -614,8 +611,8 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { } } - private static Map wrapError(Throwable exception) { - Map errorMap = new HashMap<>(); + private static HashMap wrapError(Exception exception) { + HashMap errorMap = new HashMap<>(); errorMap.put("message", exception.toString()); errorMap.put("code", exception.getClass().getSimpleName()); errorMap.put("details", null); diff --git a/packages/video_player/video_player/ios/Classes/messages.h b/packages/video_player/video_player/ios/Classes/messages.h index 88264cefd26c..e21e7860ba09 100644 --- a/packages/video_player/video_player/ios/Classes/messages.h +++ b/packages/video_player/video_player/ios/Classes/messages.h @@ -2,7 +2,7 @@ // 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.23), do not edit directly. +// Autogenerated from Pigeon (v0.1.21), do not edit directly. // See also: https://pub.dev/packages/pigeon #import @protocol FlutterBinaryMessenger; diff --git a/packages/video_player/video_player/ios/Classes/messages.m b/packages/video_player/video_player/ios/Classes/messages.m index 759f66ce24ce..14e375b33378 100644 --- a/packages/video_player/video_player/ios/Classes/messages.m +++ b/packages/video_player/video_player/ios/Classes/messages.m @@ -2,7 +2,7 @@ // 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.23), do not edit directly. +// Autogenerated from Pigeon (v0.1.21), do not edit directly. // See also: https://pub.dev/packages/pigeon #import "messages.h" #import diff --git a/packages/video_player/video_player_platform_interface/lib/messages.dart b/packages/video_player/video_player_platform_interface/lib/messages.dart index 5bd4b3ce97f0..0ddbfaeaf247 100644 --- a/packages/video_player/video_player_platform_interface/lib/messages.dart +++ b/packages/video_player/video_player_platform_interface/lib/messages.dart @@ -1,6 +1,10 @@ -// Autogenerated from Pigeon (v0.1.23), do not edit directly. +// 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 -// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators +// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import // @dart = 2.12 import 'dart:async'; import 'dart:typed_data' show Uint8List, Int32List, Int64List, Float64List; @@ -156,9 +160,9 @@ 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'], ); @@ -181,9 +185,9 @@ 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'], ); @@ -206,9 +210,9 @@ 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'], ); @@ -231,9 +235,9 @@ 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'], ); @@ -256,9 +260,9 @@ 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'], ); @@ -282,9 +286,9 @@ 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'], ); @@ -307,9 +311,9 @@ 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'], ); @@ -332,9 +336,9 @@ 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'], ); @@ -357,9 +361,9 @@ 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'], ); @@ -382,9 +386,9 @@ 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'], ); @@ -408,9 +412,9 @@ 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'], ); diff --git a/packages/video_player/video_player_platform_interface/lib/test.dart b/packages/video_player/video_player_platform_interface/lib/test.dart index cad1eb7aeb2e..b4fd81f44f41 100644 --- a/packages/video_player/video_player_platform_interface/lib/test.dart +++ b/packages/video_player/video_player_platform_interface/lib/test.dart @@ -2,7 +2,7 @@ // 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.23), do not edit directly. +// Autogenerated from Pigeon (v0.1.21), 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 // @dart = 2.12 From 706456d204dead6ffff133820c7ea4097694ae78 Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 23 Mar 2021 20:35:38 +0300 Subject: [PATCH 11/14] make headers non-nullable in VideoPlayerController and DataSource --- .../plugins/videoplayer/VideoPlayer.java | 2 +- .../ios/Classes/FLTVideoPlayerPlugin.m | 2 +- .../video_player/lib/video_player.dart | 10 +++++--- .../video_player/test/video_player_test.dart | 25 ++----------------- .../lib/video_player_platform_interface.dart | 5 ++-- .../method_channel_video_player_test.dart | 15 ----------- 6 files changed, 13 insertions(+), 46 deletions(-) diff --git a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java index b3d84f349b4d..87784eebdefe 100644 --- a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java +++ b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java @@ -84,7 +84,7 @@ final class VideoPlayer { DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS, DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS, true); - if (httpHeaders != null) { + if (httpHeaders != null && !httpHeaders.isEmpty()) { httpDataSourceFactory.getDefaultRequestProperties().set(httpHeaders); } dataSourceFactory = httpDataSourceFactory; diff --git a/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m b/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m index 6b16e5b682d9..b359c1b6c898 100644 --- a/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m +++ b/packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m @@ -168,7 +168,7 @@ - (instancetype)initWithURL:(NSURL*)url frameUpdater:(FLTFrameUpdater*)frameUpdater httpHeaders:(NSDictionary*)headers { NSDictionary* options = nil; - if (headers != nil) { + if (headers != nil && [headers count] != 0) { options = @{@"AVURLAssetHTTPHeaderFieldsKey" : headers}; } AVURLAsset* urlAsset = [AVURLAsset URLAssetWithURL:url options:options]; diff --git a/packages/video_player/video_player/lib/video_player.dart b/packages/video_player/video_player/lib/video_player.dart index 7f2b2d46d01e..d5bd7d2f222d 100644 --- a/packages/video_player/video_player/lib/video_player.dart +++ b/packages/video_player/video_player/lib/video_player.dart @@ -187,7 +187,7 @@ class VideoPlayerController extends ValueNotifier { {this.package, this.closedCaptionFile, this.videoPlayerOptions}) : dataSourceType = DataSourceType.asset, formatHint = null, - httpHeaders = null, + httpHeaders = const {}, super(VideoPlayerValue(duration: Duration.zero)); /// Constructs a [VideoPlayerController] playing a video from obtained from @@ -204,7 +204,7 @@ class VideoPlayerController extends ValueNotifier { this.formatHint, this.closedCaptionFile, this.videoPlayerOptions, - this.httpHeaders, + this.httpHeaders = const {}, }) : dataSourceType = DataSourceType.network, package = null, super(VideoPlayerValue(duration: Duration.zero)); @@ -219,7 +219,7 @@ class VideoPlayerController extends ValueNotifier { dataSourceType = DataSourceType.file, package = null, formatHint = null, - httpHeaders = null, + httpHeaders = const {}, super(VideoPlayerValue(duration: Duration.zero)); /// The URI to the video file. This will be in different formats depending on @@ -227,7 +227,9 @@ class VideoPlayerController extends ValueNotifier { final String dataSource; /// HTTP headers used for the request to the [dataSource]. - final Map? httpHeaders; + /// Only for [VideoPlayerController.network]. + /// Always empty for other video types. + final Map httpHeaders; /// **Android only**. Will override the platform's generic file format /// detection with whatever is set here. diff --git a/packages/video_player/video_player/test/video_player_test.dart b/packages/video_player/video_player/test/video_player_test.dart index ca0818eb8590..e17dac7897a6 100644 --- a/packages/video_player/video_player/test/video_player_test.dart +++ b/packages/video_player/video_player/test/video_player_test.dart @@ -31,7 +31,7 @@ class FakeController extends ValueNotifier String get dataSource => ''; @override - Map? get httpHeaders => null; + Map get httpHeaders => {}; @override DataSourceType get dataSourceType => DataSourceType.file; @@ -213,7 +213,7 @@ void main() { ); expect( fakeVideoPlayerPlatform.dataSourceDescriptions[0].httpHeaders, - null, + {}, ); }); @@ -232,27 +232,6 @@ void main() { fakeVideoPlayerPlatform.dataSourceDescriptions[0].formatHint, 'dash', ); - expect( - fakeVideoPlayerPlatform.dataSourceDescriptions[0].httpHeaders, - null, - ); - }); - - test('network with empty headers', () async { - final VideoPlayerController controller = VideoPlayerController.network( - 'https://127.0.0.1', - httpHeaders: {}, - ); - await controller.initialize(); - - expect( - fakeVideoPlayerPlatform.dataSourceDescriptions[0].uri, - 'https://127.0.0.1', - ); - expect( - fakeVideoPlayerPlatform.dataSourceDescriptions[0].formatHint, - null, - ); expect( fakeVideoPlayerPlatform.dataSourceDescriptions[0].httpHeaders, {}, diff --git a/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart b/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart index e637a24f95d2..b2bff990401e 100644 --- a/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart +++ b/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart @@ -151,7 +151,7 @@ class DataSource { this.formatHint, this.asset, this.package, - this.httpHeaders, + this.httpHeaders = const {}, }); /// The way in which the video was originally loaded. @@ -172,7 +172,8 @@ class DataSource { /// HTTP headers used for the request to the [uri]. /// Only for [DataSourceType.network] videos. - Map? httpHeaders; + /// Always empty for other video types. + Map httpHeaders; /// The name of the asset. Only set for [DataSourceType.asset] videos. final String? asset; diff --git a/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart b/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart index a4e26a91cb29..33a5b34b615d 100644 --- a/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart +++ b/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart @@ -145,21 +145,6 @@ void main() { expect(log.createMessage?.uri, 'someUri'); expect(log.createMessage?.packageName, null); expect(log.createMessage?.formatHint, 'dash'); - expect(log.createMessage?.httpHeaders, null); - expect(textureId, 3); - }); - - test('create with network (empty headers)', () async { - final int? textureId = await player.create(DataSource( - sourceType: DataSourceType.network, - uri: 'someUri', - httpHeaders: {}, - )); - expect(log.log.last, 'create'); - expect(log.createMessage?.asset, null); - expect(log.createMessage?.uri, 'someUri'); - expect(log.createMessage?.packageName, null); - expect(log.createMessage?.formatHint, null); expect(log.createMessage?.httpHeaders, {}); expect(textureId, 3); }); From 7c32f0a884abde3db457caac671dc18faed01f03 Mon Sep 17 00:00:00 2001 From: PiN73 Date: Wed, 24 Mar 2021 20:12:40 +0300 Subject: [PATCH 12/14] remove dependency override from example --- packages/video_player/video_player/example/pubspec.yaml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/packages/video_player/video_player/example/pubspec.yaml b/packages/video_player/video_player/example/pubspec.yaml index 29a8a82d8898..354f3d18df00 100644 --- a/packages/video_player/video_player/example/pubspec.yaml +++ b/packages/video_player/video_player/example/pubspec.yaml @@ -14,15 +14,6 @@ dependencies: # the parent directory to use the current plugin's version. path: ../ -# For development / testing purpose only. -# When using video_player in a real application -# you won't directly depend on video_player_platform_interface at all. -# The example app is bundled with the plugin so we use a path dependency on -# the parent directory to use the current plugin's version. -dependency_overrides: - video_player_platform_interface: - path: ../../video_player_platform_interface - dev_dependencies: flutter_test: sdk: flutter From d40f0bcc11f1317054e23b47759547fcf41afc5a Mon Sep 17 00:00:00 2001 From: PiN73 Date: Wed, 24 Mar 2021 20:34:24 +0300 Subject: [PATCH 13/14] remove dependency override from main package --- packages/video_player/video_player/pubspec.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/video_player/video_player/pubspec.yaml b/packages/video_player/video_player/pubspec.yaml index aa3bfb094797..0215ead855e7 100644 --- a/packages/video_player/video_player/pubspec.yaml +++ b/packages/video_player/video_player/pubspec.yaml @@ -32,10 +32,6 @@ dependencies: flutter_test: sdk: flutter -dependency_overrides: - video_player_platform_interface: - path: ../video_player_platform_interface - dev_dependencies: pedantic: ^1.10.0 pigeon: ^0.1.21 From 2a84a9779de1ffe2f23af6d06fa84bed8710142b Mon Sep 17 00:00:00 2001 From: Pavel Date: Thu, 25 Mar 2021 00:52:23 +0300 Subject: [PATCH 14/14] _