From bed04fb2d3f9e2cff2aa0f98cd5d3903be6223c5 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Mon, 9 Dec 2019 14:25:44 -0800 Subject: [PATCH 1/9] [video_player_web] Add support for asset DataSources --- .../lib/video_player_web.dart | 21 +++++++++++++++- .../test/video_player_web_test.dart | 25 ++++++++++++++++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/packages/video_player/video_player_web/lib/video_player_web.dart b/packages/video_player/video_player_web/lib/video_player_web.dart index 24f8a91047c2..f3bba8338a5b 100644 --- a/packages/video_player/video_player_web/lib/video_player_web.dart +++ b/packages/video_player/video_player_web/lib/video_player_web.dart @@ -42,8 +42,27 @@ class VideoPlayerPlugin extends VideoPlayerPlatform { final int textureId = _textureCounter; _textureCounter++; + Uri uri; + switch (dataSource.sourceType) { + case DataSourceType.network: + uri = Uri.parse(dataSource.uri); + break; + case DataSourceType.asset: + // 'webOnlyAssetManager' is only in the web version of dart:ui + // ignore: undefined_prefixed_name + String assetUrl = ui.webOnlyAssetManager.getAssetUrl(dataSource.asset); + if (dataSource.package != null && dataSource.package.isNotEmpty) { + assetUrl = 'packages/${dataSource.package}/$assetUrl'; + } + uri = Uri.parse(assetUrl); + break; + default: + return Future.error( + UnimplementedError('video_player cannot play files on the web')); + } + final _VideoPlayer player = _VideoPlayer( - uri: Uri.parse(dataSource.uri), + uri: uri, textureId: textureId, ); diff --git a/packages/video_player/video_player_web/test/video_player_web_test.dart b/packages/video_player/video_player_web/test/video_player_web_test.dart index efe115d02e5f..ae35c30cb760 100644 --- a/packages/video_player/video_player_web/test/video_player_web_test.dart +++ b/packages/video_player/video_player_web/test/video_player_web_test.dart @@ -33,7 +33,7 @@ void main() { expect(VideoPlayerPlatform.instance.init(), completes); }); - test('can create', () { + test('can create from network', () { expect( VideoPlayerPlatform.instance.create( DataSource( @@ -44,6 +44,29 @@ void main() { completion(isNonZero)); }); + test('can create from asset', () { + expect( + VideoPlayerPlatform.instance.create( + DataSource( + sourceType: DataSourceType.asset, + asset: 'videos/bee.mp4', + package: 'bee_vids', + ), + ), + completion(isNonZero)); + }); + + test('cannot create from file', () { + expect( + VideoPlayerPlatform.instance.create( + DataSource( + sourceType: DataSourceType.file, + uri: '/videos/bee.mp4', + ), + ), + throwsUnimplementedError); + }); + test('can dispose', () { expect(VideoPlayerPlatform.instance.dispose(textureId), completes); }); From 8dc79d676041f8273cc90cee565a5826ee75677d Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Mon, 9 Dec 2019 14:30:54 -0800 Subject: [PATCH 2/9] Roll pub version --- packages/video_player/video_player_web/CHANGELOG.md | 4 ++++ packages/video_player/video_player_web/pubspec.yaml | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/video_player/video_player_web/CHANGELOG.md b/packages/video_player/video_player_web/CHANGELOG.md index 1318780830f8..0d6d6111c363 100644 --- a/packages/video_player/video_player_web/CHANGELOG.md +++ b/packages/video_player/video_player_web/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.1 + +* Support videos from assets. + ## 0.1.0 * Initial release diff --git a/packages/video_player/video_player_web/pubspec.yaml b/packages/video_player/video_player_web/pubspec.yaml index 89023d16ec8f..537987e502d0 100644 --- a/packages/video_player/video_player_web/pubspec.yaml +++ b/packages/video_player/video_player_web/pubspec.yaml @@ -2,7 +2,7 @@ name: video_player_web description: Web platform implementation of video_player author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player_web -version: 0.1.0 +version: 0.1.1 flutter: plugin: @@ -27,4 +27,4 @@ dev_dependencies: environment: sdk: ">=2.0.0-dev.28.0 <3.0.0" - flutter: ">=1.5.0 <2.0.0" \ No newline at end of file + flutter: ">=1.5.0 <2.0.0" From fa8bb7eae106e53848bbaebdbfa0cc00ec7e5258 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Mon, 9 Dec 2019 14:41:04 -0800 Subject: [PATCH 3/9] Remove deprecated author field --- packages/video_player/video_player_web/pubspec.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/video_player/video_player_web/pubspec.yaml b/packages/video_player/video_player_web/pubspec.yaml index 537987e502d0..cae634edf348 100644 --- a/packages/video_player/video_player_web/pubspec.yaml +++ b/packages/video_player/video_player_web/pubspec.yaml @@ -1,6 +1,5 @@ name: video_player_web description: Web platform implementation of video_player -author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player_web version: 0.1.1 From 33ee74e6caaf521f7c55016f3069ae889f31f9d7 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Mon, 9 Dec 2019 15:00:27 -0800 Subject: [PATCH 4/9] Respond to review comments --- .../video_player/video_player_web/lib/video_player_web.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/video_player/video_player_web/lib/video_player_web.dart b/packages/video_player/video_player_web/lib/video_player_web.dart index f3bba8338a5b..528bc1cbdd67 100644 --- a/packages/video_player/video_player_web/lib/video_player_web.dart +++ b/packages/video_player/video_player_web/lib/video_player_web.dart @@ -56,9 +56,9 @@ class VideoPlayerPlugin extends VideoPlayerPlatform { } uri = Uri.parse(assetUrl); break; - default: - return Future.error( - UnimplementedError('video_player cannot play files on the web')); + case DataSourceType.file: + return Future.error(UnimplementedError( + 'web implementation of video_player cannot play local files')); } final _VideoPlayer player = _VideoPlayer( From 078008c029f2568dd22c415edc99baae5bc0c68c Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Mon, 9 Dec 2019 15:04:30 -0800 Subject: [PATCH 5/9] Add back author field --- packages/video_player/video_player_web/pubspec.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/video_player/video_player_web/pubspec.yaml b/packages/video_player/video_player_web/pubspec.yaml index cae634edf348..537987e502d0 100644 --- a/packages/video_player/video_player_web/pubspec.yaml +++ b/packages/video_player/video_player_web/pubspec.yaml @@ -1,5 +1,6 @@ name: video_player_web description: Web platform implementation of video_player +author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player_web version: 0.1.1 From 8919a59b5d191d11ce86e13b0a4f1a84a83faed5 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Mon, 9 Dec 2019 15:05:07 -0800 Subject: [PATCH 6/9] Delete author field again --- packages/video_player/video_player_web/pubspec.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/video_player/video_player_web/pubspec.yaml b/packages/video_player/video_player_web/pubspec.yaml index 537987e502d0..cae634edf348 100644 --- a/packages/video_player/video_player_web/pubspec.yaml +++ b/packages/video_player/video_player_web/pubspec.yaml @@ -1,6 +1,5 @@ name: video_player_web description: Web platform implementation of video_player -author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player_web version: 0.1.1 From 3db42f9f929fed64bce7c6bbb2c445be505cbb46 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Mon, 9 Dec 2019 15:11:53 -0800 Subject: [PATCH 7/9] Fix pubspecs --- .../video_player/video_player_platform_interface/pubspec.yaml | 1 - packages/video_player/video_player_web/pubspec.yaml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/video_player/video_player_platform_interface/pubspec.yaml b/packages/video_player/video_player_platform_interface/pubspec.yaml index 1a9454d10fef..6b7932959bac 100644 --- a/packages/video_player/video_player_platform_interface/pubspec.yaml +++ b/packages/video_player/video_player_platform_interface/pubspec.yaml @@ -1,6 +1,5 @@ name: video_player_platform_interface description: A common platform interface for the video_player plugin. -author: Flutter Team 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 diff --git a/packages/video_player/video_player_web/pubspec.yaml b/packages/video_player/video_player_web/pubspec.yaml index cae634edf348..f5ee23e3bd38 100644 --- a/packages/video_player/video_player_web/pubspec.yaml +++ b/packages/video_player/video_player_web/pubspec.yaml @@ -26,4 +26,4 @@ dev_dependencies: environment: sdk: ">=2.0.0-dev.28.0 <3.0.0" - flutter: ">=1.5.0 <2.0.0" + flutter: ">=1.12.8 <2.0.0" From 12df24f78f516ffa907fbea79db0c94892e5f1f4 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Mon, 9 Dec 2019 15:16:03 -0800 Subject: [PATCH 8/9] Fix handling of packages --- .../video_player_web/lib/video_player_web.dart | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/video_player/video_player_web/lib/video_player_web.dart b/packages/video_player/video_player_web/lib/video_player_web.dart index 528bc1cbdd67..070e81f3b9e7 100644 --- a/packages/video_player/video_player_web/lib/video_player_web.dart +++ b/packages/video_player/video_player_web/lib/video_player_web.dart @@ -48,12 +48,13 @@ class VideoPlayerPlugin extends VideoPlayerPlatform { uri = Uri.parse(dataSource.uri); break; case DataSourceType.asset: - // 'webOnlyAssetManager' is only in the web version of dart:ui - // ignore: undefined_prefixed_name - String assetUrl = ui.webOnlyAssetManager.getAssetUrl(dataSource.asset); + String assetUrl = dataSource.asset; if (dataSource.package != null && dataSource.package.isNotEmpty) { assetUrl = 'packages/${dataSource.package}/$assetUrl'; } + // 'webOnlyAssetManager' is only in the web version of dart:ui + // ignore: undefined_prefixed_name + assetUrl = ui.webOnlyAssetManager.getAssetUrl(assetUrl); uri = Uri.parse(assetUrl); break; case DataSourceType.file: From e644252ce8a9713c57321a411b057365e0502122 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Mon, 9 Dec 2019 15:23:59 -0800 Subject: [PATCH 9/9] add back author to platform interface we will fix this when we update the pubspecs for this package --- .../video_player/video_player_platform_interface/pubspec.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/video_player/video_player_platform_interface/pubspec.yaml b/packages/video_player/video_player_platform_interface/pubspec.yaml index 6b7932959bac..1a9454d10fef 100644 --- a/packages/video_player/video_player_platform_interface/pubspec.yaml +++ b/packages/video_player/video_player_platform_interface/pubspec.yaml @@ -1,5 +1,6 @@ name: video_player_platform_interface description: A common platform interface for the video_player plugin. +author: Flutter Team 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