From 017b32dae6a2dc9a6e89b01ce0f3de6db77d5fc9 Mon Sep 17 00:00:00 2001 From: Pavel Date: Thu, 11 Mar 2021 04:22:32 +0300 Subject: [PATCH 1/5] add httpHeaders to pigeon --- .../video_player_platform_interface/lib/messages.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 eb847e807042493d057b7ed4f2272a15b2324416 Mon Sep 17 00:00:00 2001 From: Pavel Date: Thu, 11 Mar 2021 04:23:11 +0300 Subject: [PATCH 2/5] headers implementation --- .../lib/method_channel_video_player.dart | 1 + .../lib/video_player_platform_interface.dart | 5 +++++ 2 files changed, 6 insertions(+) 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 7a5ae84a85ededbb4523b69cefb955207990d62e Mon Sep 17 00:00:00 2001 From: Pavel Date: Thu, 11 Mar 2021 04:23:33 +0300 Subject: [PATCH 3/5] tests --- .../method_channel_video_player_test.dart | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) 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 1a1127fcb27d3d89250474c2051f2f2ce9f9b8f7 Mon Sep 17 00:00:00 2001 From: Pavel Date: Thu, 11 Mar 2021 04:23:51 +0300 Subject: [PATCH 4/5] version and changelog --- .../video_player/video_player_platform_interface/CHANGELOG.md | 4 ++++ .../video_player/video_player_platform_interface/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) 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 2f2ab61ef9cf8abd5c53951ee9bfc2bf9be96a1d Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 23 Mar 2021 20:50:18 +0300 Subject: [PATCH 5/5] make headers non-nullable in DataSource --- .../lib/video_player_platform_interface.dart | 5 +++-- .../test/method_channel_video_player_test.dart | 15 --------------- 2 files changed, 3 insertions(+), 17 deletions(-) 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); });