[video_player_platform_interface] add http headers (#3702)
platform_interface portion of #3671
diff --git a/packages/video_player/video_player_platform_interface/CHANGELOG.md b/packages/video_player/video_player_platform_interface/CHANGELOG.md
index d0c59bd..2463151 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/lib/messages.dart b/packages/video_player/video_player_platform_interface/lib/messages.dart
index 2b7d882..0ddbfae 100644
--- a/packages/video_player/video_player_platform_interface/lib/messages.dart
+++ b/packages/video_player/video_player_platform_interface/lib/messages.dart
@@ -31,6 +31,7 @@
String? uri;
String? packageName;
String? formatHint;
+ Map<Object?, Object?>? httpHeaders;
Object encode() {
final Map<Object?, Object?> pigeonMap = <Object?, Object?>{};
@@ -38,6 +39,7 @@
pigeonMap['uri'] = uri;
pigeonMap['packageName'] = packageName;
pigeonMap['formatHint'] = formatHint;
+ pigeonMap['httpHeaders'] = httpHeaders;
return pigeonMap;
}
@@ -47,7 +49,8 @@
..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<Object?, Object?>?;
}
}
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 bd9708a..e92e870 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 @@
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 1960253..b2bff99 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 @@
this.formatHint,
this.asset,
this.package,
+ this.httpHeaders = const {},
});
/// The way in which the video was originally loaded.
@@ -169,6 +170,11 @@
/// detection with whatever is set here.
final VideoFormat? formatHint;
+ /// HTTP headers used for the request to the [uri].
+ /// Only for [DataSourceType.network] videos.
+ /// Always empty for other video types.
+ Map<String, String> 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/pubspec.yaml b/packages/video_player/video_player_platform_interface/pubspec.yaml
index c85f483..98e1c95 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 @@
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:
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 00ec643..33a5b34 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,26 @@
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, {});
+ 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);
});