From 4747bdb21ae56271f51f42ee85e7636d2f901795 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Fri, 18 Oct 2024 16:17:09 -0400 Subject: [PATCH 1/5] Switch to Kotlin --- .../video_player_android/android/build.gradle | 11 + .../flutter/plugins/videoplayer/Messages.java | 1105 ----------------- .../videoplayer/VideoPlayerPlugin.java | 16 +- .../flutter/plugins/videoplayer/Messages.kt | 533 ++++++++ .../lib/src/messages.g.dart | 2 +- .../pigeons/messages.dart | 5 +- .../video_player_android/test/test_api.g.dart | 2 +- 7 files changed, 557 insertions(+), 1117 deletions(-) delete mode 100644 packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java create mode 100644 packages/video_player/video_player_android/android/src/main/kotlin/io/flutter/plugins/videoplayer/Messages.kt diff --git a/packages/video_player/video_player_android/android/build.gradle b/packages/video_player/video_player_android/android/build.gradle index 5cadcf23b43e..90912f322cba 100644 --- a/packages/video_player/video_player_android/android/build.gradle +++ b/packages/video_player/video_player_android/android/build.gradle @@ -2,6 +2,7 @@ group 'io.flutter.plugins.videoplayer' version '1.0-SNAPSHOT' buildscript { + ext.kotlin_version = '1.7.10' repositories { google() mavenCentral() @@ -9,6 +10,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:8.5.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -20,6 +22,7 @@ rootProject.allprojects { } apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' android { namespace 'io.flutter.plugins.videoplayer' @@ -39,6 +42,14 @@ android { targetCompatibility JavaVersion.VERSION_11 } + kotlinOptions { + jvmTarget = '11' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + dependencies { def exoplayer_version = "1.4.1" implementation "androidx.media3:media3-exoplayer:${exoplayer_version}" diff --git a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java deleted file mode 100644 index b37b3b098f28..000000000000 --- a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java +++ /dev/null @@ -1,1105 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// Autogenerated from Pigeon (v22.4.2), do not edit directly. -// See also: https://pub.dev/packages/pigeon - -package io.flutter.plugins.videoplayer; - -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.RetentionPolicy.CLASS; - -import android.util.Log; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import io.flutter.plugin.common.BasicMessageChannel; -import io.flutter.plugin.common.BinaryMessenger; -import io.flutter.plugin.common.MessageCodec; -import io.flutter.plugin.common.StandardMessageCodec; -import java.io.ByteArrayOutputStream; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.Map; -import java.util.Objects; - -/** Generated class from Pigeon. */ -@SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression", "serial"}) -public class Messages { - - /** Error class for passing custom error details to Flutter via a thrown PlatformException. */ - public static class FlutterError extends RuntimeException { - - /** The error code. */ - public final String code; - - /** The error details. Must be a datatype supported by the api codec. */ - public final Object details; - - public FlutterError(@NonNull String code, @Nullable String message, @Nullable Object details) { - super(message); - this.code = code; - this.details = details; - } - } - - @NonNull - protected static ArrayList wrapError(@NonNull Throwable exception) { - ArrayList errorList = new ArrayList<>(3); - if (exception instanceof FlutterError) { - FlutterError error = (FlutterError) exception; - errorList.add(error.code); - errorList.add(error.getMessage()); - errorList.add(error.details); - } else { - errorList.add(exception.toString()); - errorList.add(exception.getClass().getSimpleName()); - errorList.add( - "Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception)); - } - return errorList; - } - - @Target(METHOD) - @Retention(CLASS) - @interface CanIgnoreReturnValue {} - - /** Generated class from Pigeon that represents data sent in messages. */ - public static final class TextureMessage { - private @NonNull Long textureId; - - public @NonNull Long getTextureId() { - return textureId; - } - - public void setTextureId(@NonNull Long setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"textureId\" is null."); - } - this.textureId = setterArg; - } - - /** Constructor is non-public to enforce null safety; use Builder. */ - TextureMessage() {} - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - TextureMessage that = (TextureMessage) o; - return textureId.equals(that.textureId); - } - - @Override - public int hashCode() { - return Objects.hash(textureId); - } - - public static final class Builder { - - private @Nullable Long textureId; - - @CanIgnoreReturnValue - public @NonNull Builder setTextureId(@NonNull Long setterArg) { - this.textureId = setterArg; - return this; - } - - public @NonNull TextureMessage build() { - TextureMessage pigeonReturn = new TextureMessage(); - pigeonReturn.setTextureId(textureId); - return pigeonReturn; - } - } - - @NonNull - ArrayList toList() { - ArrayList toListResult = new ArrayList<>(1); - toListResult.add(textureId); - return toListResult; - } - - static @NonNull TextureMessage fromList(@NonNull ArrayList pigeonVar_list) { - TextureMessage pigeonResult = new TextureMessage(); - Object textureId = pigeonVar_list.get(0); - pigeonResult.setTextureId((Long) textureId); - return pigeonResult; - } - } - - /** Generated class from Pigeon that represents data sent in messages. */ - public static final class LoopingMessage { - private @NonNull Long textureId; - - public @NonNull Long getTextureId() { - return textureId; - } - - public void setTextureId(@NonNull Long setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"textureId\" is null."); - } - this.textureId = setterArg; - } - - private @NonNull Boolean isLooping; - - public @NonNull Boolean getIsLooping() { - return isLooping; - } - - public void setIsLooping(@NonNull Boolean setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"isLooping\" is null."); - } - this.isLooping = setterArg; - } - - /** Constructor is non-public to enforce null safety; use Builder. */ - LoopingMessage() {} - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - LoopingMessage that = (LoopingMessage) o; - return textureId.equals(that.textureId) && isLooping.equals(that.isLooping); - } - - @Override - public int hashCode() { - return Objects.hash(textureId, isLooping); - } - - public static final class Builder { - - private @Nullable Long textureId; - - @CanIgnoreReturnValue - public @NonNull Builder setTextureId(@NonNull Long setterArg) { - this.textureId = setterArg; - return this; - } - - private @Nullable Boolean isLooping; - - @CanIgnoreReturnValue - public @NonNull Builder setIsLooping(@NonNull Boolean setterArg) { - this.isLooping = setterArg; - return this; - } - - public @NonNull LoopingMessage build() { - LoopingMessage pigeonReturn = new LoopingMessage(); - pigeonReturn.setTextureId(textureId); - pigeonReturn.setIsLooping(isLooping); - return pigeonReturn; - } - } - - @NonNull - ArrayList toList() { - ArrayList toListResult = new ArrayList<>(2); - toListResult.add(textureId); - toListResult.add(isLooping); - return toListResult; - } - - static @NonNull LoopingMessage fromList(@NonNull ArrayList pigeonVar_list) { - LoopingMessage pigeonResult = new LoopingMessage(); - Object textureId = pigeonVar_list.get(0); - pigeonResult.setTextureId((Long) textureId); - Object isLooping = pigeonVar_list.get(1); - pigeonResult.setIsLooping((Boolean) isLooping); - return pigeonResult; - } - } - - /** Generated class from Pigeon that represents data sent in messages. */ - public static final class VolumeMessage { - private @NonNull Long textureId; - - public @NonNull Long getTextureId() { - return textureId; - } - - public void setTextureId(@NonNull Long setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"textureId\" is null."); - } - this.textureId = setterArg; - } - - private @NonNull Double volume; - - public @NonNull Double getVolume() { - return volume; - } - - public void setVolume(@NonNull Double setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"volume\" is null."); - } - this.volume = setterArg; - } - - /** Constructor is non-public to enforce null safety; use Builder. */ - VolumeMessage() {} - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - VolumeMessage that = (VolumeMessage) o; - return textureId.equals(that.textureId) && volume.equals(that.volume); - } - - @Override - public int hashCode() { - return Objects.hash(textureId, volume); - } - - public static final class Builder { - - private @Nullable Long textureId; - - @CanIgnoreReturnValue - public @NonNull Builder setTextureId(@NonNull Long setterArg) { - this.textureId = setterArg; - return this; - } - - private @Nullable Double volume; - - @CanIgnoreReturnValue - public @NonNull Builder setVolume(@NonNull Double setterArg) { - this.volume = setterArg; - return this; - } - - public @NonNull VolumeMessage build() { - VolumeMessage pigeonReturn = new VolumeMessage(); - pigeonReturn.setTextureId(textureId); - pigeonReturn.setVolume(volume); - return pigeonReturn; - } - } - - @NonNull - ArrayList toList() { - ArrayList toListResult = new ArrayList<>(2); - toListResult.add(textureId); - toListResult.add(volume); - return toListResult; - } - - static @NonNull VolumeMessage fromList(@NonNull ArrayList pigeonVar_list) { - VolumeMessage pigeonResult = new VolumeMessage(); - Object textureId = pigeonVar_list.get(0); - pigeonResult.setTextureId((Long) textureId); - Object volume = pigeonVar_list.get(1); - pigeonResult.setVolume((Double) volume); - return pigeonResult; - } - } - - /** Generated class from Pigeon that represents data sent in messages. */ - public static final class PlaybackSpeedMessage { - private @NonNull Long textureId; - - public @NonNull Long getTextureId() { - return textureId; - } - - public void setTextureId(@NonNull Long setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"textureId\" is null."); - } - this.textureId = setterArg; - } - - private @NonNull Double speed; - - public @NonNull Double getSpeed() { - return speed; - } - - public void setSpeed(@NonNull Double setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"speed\" is null."); - } - this.speed = setterArg; - } - - /** Constructor is non-public to enforce null safety; use Builder. */ - PlaybackSpeedMessage() {} - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - PlaybackSpeedMessage that = (PlaybackSpeedMessage) o; - return textureId.equals(that.textureId) && speed.equals(that.speed); - } - - @Override - public int hashCode() { - return Objects.hash(textureId, speed); - } - - public static final class Builder { - - private @Nullable Long textureId; - - @CanIgnoreReturnValue - public @NonNull Builder setTextureId(@NonNull Long setterArg) { - this.textureId = setterArg; - return this; - } - - private @Nullable Double speed; - - @CanIgnoreReturnValue - public @NonNull Builder setSpeed(@NonNull Double setterArg) { - this.speed = setterArg; - return this; - } - - public @NonNull PlaybackSpeedMessage build() { - PlaybackSpeedMessage pigeonReturn = new PlaybackSpeedMessage(); - pigeonReturn.setTextureId(textureId); - pigeonReturn.setSpeed(speed); - return pigeonReturn; - } - } - - @NonNull - ArrayList toList() { - ArrayList toListResult = new ArrayList<>(2); - toListResult.add(textureId); - toListResult.add(speed); - return toListResult; - } - - static @NonNull PlaybackSpeedMessage fromList(@NonNull ArrayList pigeonVar_list) { - PlaybackSpeedMessage pigeonResult = new PlaybackSpeedMessage(); - Object textureId = pigeonVar_list.get(0); - pigeonResult.setTextureId((Long) textureId); - Object speed = pigeonVar_list.get(1); - pigeonResult.setSpeed((Double) speed); - return pigeonResult; - } - } - - /** Generated class from Pigeon that represents data sent in messages. */ - public static final class PositionMessage { - private @NonNull Long textureId; - - public @NonNull Long getTextureId() { - return textureId; - } - - public void setTextureId(@NonNull Long setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"textureId\" is null."); - } - this.textureId = setterArg; - } - - private @NonNull Long position; - - public @NonNull Long getPosition() { - return position; - } - - public void setPosition(@NonNull Long setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"position\" is null."); - } - this.position = setterArg; - } - - /** Constructor is non-public to enforce null safety; use Builder. */ - PositionMessage() {} - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - PositionMessage that = (PositionMessage) o; - return textureId.equals(that.textureId) && position.equals(that.position); - } - - @Override - public int hashCode() { - return Objects.hash(textureId, position); - } - - public static final class Builder { - - private @Nullable Long textureId; - - @CanIgnoreReturnValue - public @NonNull Builder setTextureId(@NonNull Long setterArg) { - this.textureId = setterArg; - return this; - } - - private @Nullable Long position; - - @CanIgnoreReturnValue - public @NonNull Builder setPosition(@NonNull Long setterArg) { - this.position = setterArg; - return this; - } - - public @NonNull PositionMessage build() { - PositionMessage pigeonReturn = new PositionMessage(); - pigeonReturn.setTextureId(textureId); - pigeonReturn.setPosition(position); - return pigeonReturn; - } - } - - @NonNull - ArrayList toList() { - ArrayList toListResult = new ArrayList<>(2); - toListResult.add(textureId); - toListResult.add(position); - return toListResult; - } - - static @NonNull PositionMessage fromList(@NonNull ArrayList pigeonVar_list) { - PositionMessage pigeonResult = new PositionMessage(); - Object textureId = pigeonVar_list.get(0); - pigeonResult.setTextureId((Long) textureId); - Object position = pigeonVar_list.get(1); - pigeonResult.setPosition((Long) position); - return pigeonResult; - } - } - - /** Generated class from Pigeon that represents data sent in messages. */ - public static final class CreateMessage { - private @Nullable String asset; - - public @Nullable String getAsset() { - return asset; - } - - public void setAsset(@Nullable String setterArg) { - this.asset = setterArg; - } - - private @Nullable String uri; - - public @Nullable String getUri() { - return uri; - } - - public void setUri(@Nullable String setterArg) { - this.uri = setterArg; - } - - private @Nullable String packageName; - - public @Nullable String getPackageName() { - return packageName; - } - - public void setPackageName(@Nullable String setterArg) { - this.packageName = setterArg; - } - - private @Nullable String formatHint; - - public @Nullable String getFormatHint() { - return formatHint; - } - - public void setFormatHint(@Nullable String setterArg) { - this.formatHint = setterArg; - } - - private @NonNull Map httpHeaders; - - public @NonNull Map getHttpHeaders() { - return httpHeaders; - } - - public void setHttpHeaders(@NonNull Map setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"httpHeaders\" is null."); - } - this.httpHeaders = setterArg; - } - - /** Constructor is non-public to enforce null safety; use Builder. */ - CreateMessage() {} - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - CreateMessage that = (CreateMessage) o; - return Objects.equals(asset, that.asset) - && Objects.equals(uri, that.uri) - && Objects.equals(packageName, that.packageName) - && Objects.equals(formatHint, that.formatHint) - && httpHeaders.equals(that.httpHeaders); - } - - @Override - public int hashCode() { - return Objects.hash(asset, uri, packageName, formatHint, httpHeaders); - } - - public static final class Builder { - - private @Nullable String asset; - - @CanIgnoreReturnValue - public @NonNull Builder setAsset(@Nullable String setterArg) { - this.asset = setterArg; - return this; - } - - private @Nullable String uri; - - @CanIgnoreReturnValue - public @NonNull Builder setUri(@Nullable String setterArg) { - this.uri = setterArg; - return this; - } - - private @Nullable String packageName; - - @CanIgnoreReturnValue - public @NonNull Builder setPackageName(@Nullable String setterArg) { - this.packageName = setterArg; - return this; - } - - private @Nullable String formatHint; - - @CanIgnoreReturnValue - public @NonNull Builder setFormatHint(@Nullable String setterArg) { - this.formatHint = setterArg; - return this; - } - - private @Nullable Map httpHeaders; - - @CanIgnoreReturnValue - public @NonNull Builder setHttpHeaders(@NonNull Map setterArg) { - this.httpHeaders = setterArg; - return this; - } - - public @NonNull CreateMessage build() { - CreateMessage pigeonReturn = new CreateMessage(); - pigeonReturn.setAsset(asset); - pigeonReturn.setUri(uri); - pigeonReturn.setPackageName(packageName); - pigeonReturn.setFormatHint(formatHint); - pigeonReturn.setHttpHeaders(httpHeaders); - return pigeonReturn; - } - } - - @NonNull - ArrayList toList() { - ArrayList toListResult = new ArrayList<>(5); - toListResult.add(asset); - toListResult.add(uri); - toListResult.add(packageName); - toListResult.add(formatHint); - toListResult.add(httpHeaders); - return toListResult; - } - - static @NonNull CreateMessage fromList(@NonNull ArrayList pigeonVar_list) { - CreateMessage pigeonResult = new CreateMessage(); - Object asset = pigeonVar_list.get(0); - pigeonResult.setAsset((String) asset); - Object uri = pigeonVar_list.get(1); - pigeonResult.setUri((String) uri); - Object packageName = pigeonVar_list.get(2); - pigeonResult.setPackageName((String) packageName); - Object formatHint = pigeonVar_list.get(3); - pigeonResult.setFormatHint((String) formatHint); - Object httpHeaders = pigeonVar_list.get(4); - pigeonResult.setHttpHeaders((Map) httpHeaders); - return pigeonResult; - } - } - - /** Generated class from Pigeon that represents data sent in messages. */ - public static final class MixWithOthersMessage { - private @NonNull Boolean mixWithOthers; - - public @NonNull Boolean getMixWithOthers() { - return mixWithOthers; - } - - public void setMixWithOthers(@NonNull Boolean setterArg) { - if (setterArg == null) { - throw new IllegalStateException("Nonnull field \"mixWithOthers\" is null."); - } - this.mixWithOthers = setterArg; - } - - /** Constructor is non-public to enforce null safety; use Builder. */ - MixWithOthersMessage() {} - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - MixWithOthersMessage that = (MixWithOthersMessage) o; - return mixWithOthers.equals(that.mixWithOthers); - } - - @Override - public int hashCode() { - return Objects.hash(mixWithOthers); - } - - public static final class Builder { - - private @Nullable Boolean mixWithOthers; - - @CanIgnoreReturnValue - public @NonNull Builder setMixWithOthers(@NonNull Boolean setterArg) { - this.mixWithOthers = setterArg; - return this; - } - - public @NonNull MixWithOthersMessage build() { - MixWithOthersMessage pigeonReturn = new MixWithOthersMessage(); - pigeonReturn.setMixWithOthers(mixWithOthers); - return pigeonReturn; - } - } - - @NonNull - ArrayList toList() { - ArrayList toListResult = new ArrayList<>(1); - toListResult.add(mixWithOthers); - return toListResult; - } - - static @NonNull MixWithOthersMessage fromList(@NonNull ArrayList pigeonVar_list) { - MixWithOthersMessage pigeonResult = new MixWithOthersMessage(); - Object mixWithOthers = pigeonVar_list.get(0); - pigeonResult.setMixWithOthers((Boolean) mixWithOthers); - return pigeonResult; - } - } - - private static class PigeonCodec extends StandardMessageCodec { - public static final PigeonCodec INSTANCE = new PigeonCodec(); - - private PigeonCodec() {} - - @Override - protected Object readValueOfType(byte type, @NonNull ByteBuffer buffer) { - switch (type) { - case (byte) 129: - return TextureMessage.fromList((ArrayList) readValue(buffer)); - case (byte) 130: - return LoopingMessage.fromList((ArrayList) readValue(buffer)); - case (byte) 131: - return VolumeMessage.fromList((ArrayList) readValue(buffer)); - case (byte) 132: - return PlaybackSpeedMessage.fromList((ArrayList) readValue(buffer)); - case (byte) 133: - return PositionMessage.fromList((ArrayList) readValue(buffer)); - case (byte) 134: - return CreateMessage.fromList((ArrayList) readValue(buffer)); - case (byte) 135: - return MixWithOthersMessage.fromList((ArrayList) readValue(buffer)); - default: - return super.readValueOfType(type, buffer); - } - } - - @Override - protected void writeValue(@NonNull ByteArrayOutputStream stream, Object value) { - if (value instanceof TextureMessage) { - stream.write(129); - writeValue(stream, ((TextureMessage) value).toList()); - } else if (value instanceof LoopingMessage) { - stream.write(130); - writeValue(stream, ((LoopingMessage) value).toList()); - } else if (value instanceof VolumeMessage) { - stream.write(131); - writeValue(stream, ((VolumeMessage) value).toList()); - } else if (value instanceof PlaybackSpeedMessage) { - stream.write(132); - writeValue(stream, ((PlaybackSpeedMessage) value).toList()); - } else if (value instanceof PositionMessage) { - stream.write(133); - writeValue(stream, ((PositionMessage) value).toList()); - } else if (value instanceof CreateMessage) { - stream.write(134); - writeValue(stream, ((CreateMessage) value).toList()); - } else if (value instanceof MixWithOthersMessage) { - stream.write(135); - writeValue(stream, ((MixWithOthersMessage) value).toList()); - } else { - super.writeValue(stream, value); - } - } - } - - /** Generated interface from Pigeon that represents a handler of messages from Flutter. */ - public interface AndroidVideoPlayerApi { - - void initialize(); - - @NonNull - TextureMessage create(@NonNull CreateMessage msg); - - void dispose(@NonNull TextureMessage msg); - - void setLooping(@NonNull LoopingMessage msg); - - void setVolume(@NonNull VolumeMessage msg); - - void setPlaybackSpeed(@NonNull PlaybackSpeedMessage msg); - - void play(@NonNull TextureMessage msg); - - @NonNull - PositionMessage position(@NonNull TextureMessage msg); - - void seekTo(@NonNull PositionMessage msg); - - void pause(@NonNull TextureMessage msg); - - void setMixWithOthers(@NonNull MixWithOthersMessage msg); - - /** The codec used by AndroidVideoPlayerApi. */ - static @NonNull MessageCodec getCodec() { - return PigeonCodec.INSTANCE; - } - /** - * Sets up an instance of `AndroidVideoPlayerApi` to handle messages through the - * `binaryMessenger`. - */ - static void setUp( - @NonNull BinaryMessenger binaryMessenger, @Nullable AndroidVideoPlayerApi api) { - setUp(binaryMessenger, "", api); - } - - static void setUp( - @NonNull BinaryMessenger binaryMessenger, - @NonNull String messageChannelSuffix, - @Nullable AndroidVideoPlayerApi api) { - messageChannelSuffix = messageChannelSuffix.isEmpty() ? "" : "." + messageChannelSuffix; - { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.initialize" - + messageChannelSuffix, - getCodec()); - if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - try { - api.initialize(); - wrapped.add(0, null); - } catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); - } else { - channel.setMessageHandler(null); - } - } - { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.create" - + messageChannelSuffix, - getCodec()); - if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - CreateMessage msgArg = (CreateMessage) args.get(0); - try { - TextureMessage output = api.create(msgArg); - wrapped.add(0, output); - } catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); - } else { - channel.setMessageHandler(null); - } - } - { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.dispose" - + messageChannelSuffix, - getCodec()); - if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - TextureMessage msgArg = (TextureMessage) args.get(0); - try { - api.dispose(msgArg); - wrapped.add(0, null); - } catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); - } else { - channel.setMessageHandler(null); - } - } - { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setLooping" - + messageChannelSuffix, - getCodec()); - if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - LoopingMessage msgArg = (LoopingMessage) args.get(0); - try { - api.setLooping(msgArg); - wrapped.add(0, null); - } catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); - } else { - channel.setMessageHandler(null); - } - } - { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setVolume" - + messageChannelSuffix, - getCodec()); - if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - VolumeMessage msgArg = (VolumeMessage) args.get(0); - try { - api.setVolume(msgArg); - wrapped.add(0, null); - } catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); - } else { - channel.setMessageHandler(null); - } - } - { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setPlaybackSpeed" - + messageChannelSuffix, - getCodec()); - if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - PlaybackSpeedMessage msgArg = (PlaybackSpeedMessage) args.get(0); - try { - api.setPlaybackSpeed(msgArg); - wrapped.add(0, null); - } catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); - } else { - channel.setMessageHandler(null); - } - } - { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.play" - + messageChannelSuffix, - getCodec()); - if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - TextureMessage msgArg = (TextureMessage) args.get(0); - try { - api.play(msgArg); - wrapped.add(0, null); - } catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); - } else { - channel.setMessageHandler(null); - } - } - { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.position" - + messageChannelSuffix, - getCodec()); - if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - TextureMessage msgArg = (TextureMessage) args.get(0); - try { - PositionMessage output = api.position(msgArg); - wrapped.add(0, output); - } catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); - } else { - channel.setMessageHandler(null); - } - } - { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.seekTo" - + messageChannelSuffix, - getCodec()); - if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - PositionMessage msgArg = (PositionMessage) args.get(0); - try { - api.seekTo(msgArg); - wrapped.add(0, null); - } catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); - } else { - channel.setMessageHandler(null); - } - } - { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.pause" - + messageChannelSuffix, - getCodec()); - if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - TextureMessage msgArg = (TextureMessage) args.get(0); - try { - api.pause(msgArg); - wrapped.add(0, null); - } catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); - } else { - channel.setMessageHandler(null); - } - } - { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setMixWithOthers" - + messageChannelSuffix, - getCodec()); - if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList<>(); - ArrayList args = (ArrayList) message; - MixWithOthersMessage msgArg = (MixWithOthersMessage) args.get(0); - try { - api.setMixWithOthers(msgArg); - wrapped.add(0, null); - } catch (Throwable exception) { - wrapped = wrapError(exception); - } - reply.reply(wrapped); - }); - } else { - channel.setMessageHandler(null); - } - } - } - } -} diff --git a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java index de2bf8cada6b..fb767f1d7eaa 100644 --- a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java +++ b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java @@ -13,14 +13,14 @@ import io.flutter.embedding.engine.plugins.FlutterPlugin; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.EventChannel; -import io.flutter.plugins.videoplayer.Messages.AndroidVideoPlayerApi; -import io.flutter.plugins.videoplayer.Messages.CreateMessage; -import io.flutter.plugins.videoplayer.Messages.LoopingMessage; -import io.flutter.plugins.videoplayer.Messages.MixWithOthersMessage; -import io.flutter.plugins.videoplayer.Messages.PlaybackSpeedMessage; -import io.flutter.plugins.videoplayer.Messages.PositionMessage; -import io.flutter.plugins.videoplayer.Messages.TextureMessage; -import io.flutter.plugins.videoplayer.Messages.VolumeMessage; +import io.flutter.plugins.videoplayer.AndroidVideoPlayerApi; +import io.flutter.plugins.videoplayer.CreateMessage; +import io.flutter.plugins.videoplayer.LoopingMessage; +import io.flutter.plugins.videoplayer.MixWithOthersMessage; +import io.flutter.plugins.videoplayer.PlaybackSpeedMessage; +import io.flutter.plugins.videoplayer.PositionMessage; +import io.flutter.plugins.videoplayer.TextureMessage; +import io.flutter.plugins.videoplayer.VolumeMessage; import io.flutter.view.TextureRegistry; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; diff --git a/packages/video_player/video_player_android/android/src/main/kotlin/io/flutter/plugins/videoplayer/Messages.kt b/packages/video_player/video_player_android/android/src/main/kotlin/io/flutter/plugins/videoplayer/Messages.kt new file mode 100644 index 000000000000..3f58c0b8cf6b --- /dev/null +++ b/packages/video_player/video_player_android/android/src/main/kotlin/io/flutter/plugins/videoplayer/Messages.kt @@ -0,0 +1,533 @@ +// 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 (v22.5.0), do not edit directly. +// See also: https://pub.dev/packages/pigeon +@file:Suppress("UNCHECKED_CAST", "ArrayInDataClass") + +package io.flutter.plugins.videoplayer + +import android.util.Log +import io.flutter.plugin.common.BasicMessageChannel +import io.flutter.plugin.common.BinaryMessenger +import io.flutter.plugin.common.MessageCodec +import io.flutter.plugin.common.StandardMessageCodec +import java.io.ByteArrayOutputStream +import java.nio.ByteBuffer + +private fun wrapResult(result: Any?): List { + return listOf(result) +} + +private fun wrapError(exception: Throwable): List { + return if (exception is FlutterError) { + listOf(exception.code, exception.message, exception.details) + } else { + listOf( + exception.javaClass.simpleName, + exception.toString(), + "Cause: " + exception.cause + ", Stacktrace: " + Log.getStackTraceString(exception)) + } +} + +/** + * Error class for passing custom error details to Flutter via a thrown PlatformException. + * + * @property code The error code. + * @property message The error message. + * @property details The error details. Must be a datatype supported by the api codec. + */ +class FlutterError( + val code: String, + override val message: String? = null, + val details: Any? = null +) : Throwable() + +/** Generated class from Pigeon that represents data sent in messages. */ +data class TextureMessage(val textureId: Long) { + companion object { + fun fromList(pigeonVar_list: List): TextureMessage { + val textureId = pigeonVar_list[0] as Long + return TextureMessage(textureId) + } + } + + fun toList(): List { + return listOf( + textureId, + ) + } +} + +/** Generated class from Pigeon that represents data sent in messages. */ +data class LoopingMessage(val textureId: Long, val isLooping: Boolean) { + companion object { + fun fromList(pigeonVar_list: List): LoopingMessage { + val textureId = pigeonVar_list[0] as Long + val isLooping = pigeonVar_list[1] as Boolean + return LoopingMessage(textureId, isLooping) + } + } + + fun toList(): List { + return listOf( + textureId, + isLooping, + ) + } +} + +/** Generated class from Pigeon that represents data sent in messages. */ +data class VolumeMessage(val textureId: Long, val volume: Double) { + companion object { + fun fromList(pigeonVar_list: List): VolumeMessage { + val textureId = pigeonVar_list[0] as Long + val volume = pigeonVar_list[1] as Double + return VolumeMessage(textureId, volume) + } + } + + fun toList(): List { + return listOf( + textureId, + volume, + ) + } +} + +/** Generated class from Pigeon that represents data sent in messages. */ +data class PlaybackSpeedMessage(val textureId: Long, val speed: Double) { + companion object { + fun fromList(pigeonVar_list: List): PlaybackSpeedMessage { + val textureId = pigeonVar_list[0] as Long + val speed = pigeonVar_list[1] as Double + return PlaybackSpeedMessage(textureId, speed) + } + } + + fun toList(): List { + return listOf( + textureId, + speed, + ) + } +} + +/** Generated class from Pigeon that represents data sent in messages. */ +data class PositionMessage(val textureId: Long, val position: Long) { + companion object { + fun fromList(pigeonVar_list: List): PositionMessage { + val textureId = pigeonVar_list[0] as Long + val position = pigeonVar_list[1] as Long + return PositionMessage(textureId, position) + } + } + + fun toList(): List { + return listOf( + textureId, + position, + ) + } +} + +/** Generated class from Pigeon that represents data sent in messages. */ +data class CreateMessage( + val asset: String? = null, + val uri: String? = null, + val packageName: String? = null, + val formatHint: String? = null, + val httpHeaders: Map +) { + companion object { + fun fromList(pigeonVar_list: List): CreateMessage { + val asset = pigeonVar_list[0] as String? + val uri = pigeonVar_list[1] as String? + val packageName = pigeonVar_list[2] as String? + val formatHint = pigeonVar_list[3] as String? + val httpHeaders = pigeonVar_list[4] as Map + return CreateMessage(asset, uri, packageName, formatHint, httpHeaders) + } + } + + fun toList(): List { + return listOf( + asset, + uri, + packageName, + formatHint, + httpHeaders, + ) + } +} + +/** Generated class from Pigeon that represents data sent in messages. */ +data class MixWithOthersMessage(val mixWithOthers: Boolean) { + companion object { + fun fromList(pigeonVar_list: List): MixWithOthersMessage { + val mixWithOthers = pigeonVar_list[0] as Boolean + return MixWithOthersMessage(mixWithOthers) + } + } + + fun toList(): List { + return listOf( + mixWithOthers, + ) + } +} + +private open class MessagesPigeonCodec : StandardMessageCodec() { + override fun readValueOfType(type: Byte, buffer: ByteBuffer): Any? { + return when (type) { + 129.toByte() -> { + return (readValue(buffer) as? List)?.let { TextureMessage.fromList(it) } + } + 130.toByte() -> { + return (readValue(buffer) as? List)?.let { LoopingMessage.fromList(it) } + } + 131.toByte() -> { + return (readValue(buffer) as? List)?.let { VolumeMessage.fromList(it) } + } + 132.toByte() -> { + return (readValue(buffer) as? List)?.let { PlaybackSpeedMessage.fromList(it) } + } + 133.toByte() -> { + return (readValue(buffer) as? List)?.let { PositionMessage.fromList(it) } + } + 134.toByte() -> { + return (readValue(buffer) as? List)?.let { CreateMessage.fromList(it) } + } + 135.toByte() -> { + return (readValue(buffer) as? List)?.let { MixWithOthersMessage.fromList(it) } + } + else -> super.readValueOfType(type, buffer) + } + } + + override fun writeValue(stream: ByteArrayOutputStream, value: Any?) { + when (value) { + is TextureMessage -> { + stream.write(129) + writeValue(stream, value.toList()) + } + is LoopingMessage -> { + stream.write(130) + writeValue(stream, value.toList()) + } + is VolumeMessage -> { + stream.write(131) + writeValue(stream, value.toList()) + } + is PlaybackSpeedMessage -> { + stream.write(132) + writeValue(stream, value.toList()) + } + is PositionMessage -> { + stream.write(133) + writeValue(stream, value.toList()) + } + is CreateMessage -> { + stream.write(134) + writeValue(stream, value.toList()) + } + is MixWithOthersMessage -> { + stream.write(135) + writeValue(stream, value.toList()) + } + else -> super.writeValue(stream, value) + } + } +} + +/** Generated interface from Pigeon that represents a handler of messages from Flutter. */ +interface AndroidVideoPlayerApi { + fun initialize() + + fun create(msg: CreateMessage): TextureMessage + + fun dispose(msg: TextureMessage) + + fun setLooping(msg: LoopingMessage) + + fun setVolume(msg: VolumeMessage) + + fun setPlaybackSpeed(msg: PlaybackSpeedMessage) + + fun play(msg: TextureMessage) + + fun position(msg: TextureMessage): PositionMessage + + fun seekTo(msg: PositionMessage) + + fun pause(msg: TextureMessage) + + fun setMixWithOthers(msg: MixWithOthersMessage) + + companion object { + /** The codec used by AndroidVideoPlayerApi. */ + val codec: MessageCodec by lazy { MessagesPigeonCodec() } + /** + * Sets up an instance of `AndroidVideoPlayerApi` to handle messages through the + * `binaryMessenger`. + */ + @JvmOverloads + fun setUp( + binaryMessenger: BinaryMessenger, + api: AndroidVideoPlayerApi?, + messageChannelSuffix: String = "" + ) { + val separatedMessageChannelSuffix = + if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else "" + run { + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.initialize$separatedMessageChannelSuffix", + codec) + if (api != null) { + channel.setMessageHandler { _, reply -> + val wrapped: List = + try { + api.initialize() + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.create$separatedMessageChannelSuffix", + codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val msgArg = args[0] as CreateMessage + val wrapped: List = + try { + listOf(api.create(msgArg)) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.dispose$separatedMessageChannelSuffix", + codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val msgArg = args[0] as TextureMessage + val wrapped: List = + try { + api.dispose(msgArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setLooping$separatedMessageChannelSuffix", + codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val msgArg = args[0] as LoopingMessage + val wrapped: List = + try { + api.setLooping(msgArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setVolume$separatedMessageChannelSuffix", + codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val msgArg = args[0] as VolumeMessage + val wrapped: List = + try { + api.setVolume(msgArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setPlaybackSpeed$separatedMessageChannelSuffix", + codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val msgArg = args[0] as PlaybackSpeedMessage + val wrapped: List = + try { + api.setPlaybackSpeed(msgArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.play$separatedMessageChannelSuffix", + codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val msgArg = args[0] as TextureMessage + val wrapped: List = + try { + api.play(msgArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.position$separatedMessageChannelSuffix", + codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val msgArg = args[0] as TextureMessage + val wrapped: List = + try { + listOf(api.position(msgArg)) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.seekTo$separatedMessageChannelSuffix", + codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val msgArg = args[0] as PositionMessage + val wrapped: List = + try { + api.seekTo(msgArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.pause$separatedMessageChannelSuffix", + codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val msgArg = args[0] as TextureMessage + val wrapped: List = + try { + api.pause(msgArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setMixWithOthers$separatedMessageChannelSuffix", + codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val msgArg = args[0] as MixWithOthersMessage + val wrapped: List = + try { + api.setMixWithOthers(msgArg) + listOf(null) + } catch (exception: Throwable) { + wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + } + } +} diff --git a/packages/video_player/video_player_android/lib/src/messages.g.dart b/packages/video_player/video_player_android/lib/src/messages.g.dart index 9cff05e9e9dc..6137c97cbcec 100644 --- a/packages/video_player/video_player_android/lib/src/messages.g.dart +++ b/packages/video_player/video_player_android/lib/src/messages.g.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v22.4.2), do not edit directly. +// Autogenerated from Pigeon (v22.5.0), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import, no_leading_underscores_for_local_identifiers diff --git a/packages/video_player/video_player_android/pigeons/messages.dart b/packages/video_player/video_player_android/pigeons/messages.dart index 8538f52cedcf..abacd4a7edab 100644 --- a/packages/video_player/video_player_android/pigeons/messages.dart +++ b/packages/video_player/video_player_android/pigeons/messages.dart @@ -7,8 +7,9 @@ import 'package:pigeon/pigeon.dart'; @ConfigurePigeon(PigeonOptions( dartOut: 'lib/src/messages.g.dart', dartTestOut: 'test/test_api.g.dart', - javaOut: 'android/src/main/java/io/flutter/plugins/videoplayer/Messages.java', - javaOptions: JavaOptions( + kotlinOut: + 'android/src/main/kotlin/io/flutter/plugins/videoplayer/Messages.kt', + kotlinOptions: KotlinOptions( package: 'io.flutter.plugins.videoplayer', ), copyrightHeader: 'pigeons/copyright.txt', diff --git a/packages/video_player/video_player_android/test/test_api.g.dart b/packages/video_player/video_player_android/test/test_api.g.dart index 6dadde6b37e4..cebec0254bd0 100644 --- a/packages/video_player/video_player_android/test/test_api.g.dart +++ b/packages/video_player/video_player_android/test/test_api.g.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v22.4.2), do not edit directly. +// Autogenerated from Pigeon (v22.5.0), 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, unnecessary_import, no_leading_underscores_for_local_identifiers // ignore_for_file: avoid_relative_lib_imports From fdb68e91d0dc3e9c6b811855daea46b2061f76b5 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 21 Oct 2024 11:25:20 -0400 Subject: [PATCH 2/5] Replace messages --- .../videoplayer/VideoPlayerPlugin.java | 80 +++--- .../flutter/plugins/videoplayer/Messages.kt | 208 +++------------- .../lib/src/android_video_player.dart | 37 +-- .../lib/src/messages.g.dart | 230 ++---------------- .../pigeons/messages.dart | 54 +--- .../test/android_video_player_test.dart | 120 ++++----- .../video_player_android/test/test_api.g.dart | 140 +++++------ 7 files changed, 242 insertions(+), 627 deletions(-) diff --git a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java index fb767f1d7eaa..65c32e70b620 100644 --- a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java +++ b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java @@ -13,14 +13,6 @@ import io.flutter.embedding.engine.plugins.FlutterPlugin; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.EventChannel; -import io.flutter.plugins.videoplayer.AndroidVideoPlayerApi; -import io.flutter.plugins.videoplayer.CreateMessage; -import io.flutter.plugins.videoplayer.LoopingMessage; -import io.flutter.plugins.videoplayer.MixWithOthersMessage; -import io.flutter.plugins.videoplayer.PlaybackSpeedMessage; -import io.flutter.plugins.videoplayer.PositionMessage; -import io.flutter.plugins.videoplayer.TextureMessage; -import io.flutter.plugins.videoplayer.VolumeMessage; import io.flutter.view.TextureRegistry; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; @@ -88,11 +80,13 @@ public void onDestroy() { disposeAllPlayers(); } + @Override public void initialize() { disposeAllPlayers(); } - public @NonNull TextureMessage create(@NonNull CreateMessage arg) { + @Override + public long create(@NonNull CreateMessage arg) { TextureRegistry.SurfaceProducer handle = flutterState.textureRegistry.createSurfaceProducer(); EventChannel eventChannel = new EventChannel( @@ -137,7 +131,7 @@ public void initialize() { videoAsset, options)); - return new TextureMessage.Builder().setTextureId(handle.id()).build(); + return handle.id(); } @NonNull @@ -156,56 +150,60 @@ private VideoPlayer getPlayer(long textureId) { return player; } - public void dispose(@NonNull TextureMessage arg) { - VideoPlayer player = getPlayer(arg.getTextureId()); + @Override + public void dispose(long textureId) { + VideoPlayer player = getPlayer(textureId); player.dispose(); - videoPlayers.remove(arg.getTextureId()); + videoPlayers.remove(textureId); } - public void setLooping(@NonNull LoopingMessage arg) { - VideoPlayer player = getPlayer(arg.getTextureId()); - player.setLooping(arg.getIsLooping()); + @Override + public void setLooping(long textureId, boolean looping) { + VideoPlayer player = getPlayer(textureId); + player.setLooping(looping); } - public void setVolume(@NonNull VolumeMessage arg) { - VideoPlayer player = getPlayer(arg.getTextureId()); - player.setVolume(arg.getVolume()); + @Override + public void setVolume(long textureId, double volume) { + VideoPlayer player = getPlayer(textureId); + player.setVolume(volume); } - public void setPlaybackSpeed(@NonNull PlaybackSpeedMessage arg) { - VideoPlayer player = getPlayer(arg.getTextureId()); - player.setPlaybackSpeed(arg.getSpeed()); + @Override + public void setPlaybackSpeed(long textureId, double speed) { + VideoPlayer player = getPlayer(textureId); + player.setPlaybackSpeed(speed); } - public void play(@NonNull TextureMessage arg) { - VideoPlayer player = getPlayer(arg.getTextureId()); + @Override + public void play(long textureId) { + VideoPlayer player = getPlayer(textureId); player.play(); } - public @NonNull PositionMessage position(@NonNull TextureMessage arg) { - VideoPlayer player = getPlayer(arg.getTextureId()); - PositionMessage result = - new PositionMessage.Builder() - .setPosition(player.getPosition()) - .setTextureId(arg.getTextureId()) - .build(); + @Override + public long position(long textureId) { + VideoPlayer player = getPlayer(textureId); + long position = player.getPosition(); player.sendBufferingUpdate(); - return result; + return position; } - public void seekTo(@NonNull PositionMessage arg) { - VideoPlayer player = getPlayer(arg.getTextureId()); - player.seekTo(arg.getPosition().intValue()); + @Override + public void seekTo(long textureId, long position) { + VideoPlayer player = getPlayer(textureId); + player.seekTo((int) position); } - public void pause(@NonNull TextureMessage arg) { - VideoPlayer player = getPlayer(arg.getTextureId()); + @Override + public void pause(long textureId) { + VideoPlayer player = getPlayer(textureId); player.pause(); } @Override - public void setMixWithOthers(@NonNull MixWithOthersMessage arg) { - options.mixWithOthers = arg.getMixWithOthers(); + public void setMixWithOthers(boolean mixWithOthers) { + options.mixWithOthers = mixWithOthers; } private interface KeyForAssetFn { @@ -237,11 +235,11 @@ private static final class FlutterState { } void startListening(VideoPlayerPlugin methodCallHandler, BinaryMessenger messenger) { - AndroidVideoPlayerApi.setUp(messenger, methodCallHandler); + AndroidVideoPlayerApi.Companion.setUp(messenger, methodCallHandler); } void stopListening(BinaryMessenger messenger) { - AndroidVideoPlayerApi.setUp(messenger, null); + AndroidVideoPlayerApi.Companion.setUp(messenger, null); } } } diff --git a/packages/video_player/video_player_android/android/src/main/kotlin/io/flutter/plugins/videoplayer/Messages.kt b/packages/video_player/video_player_android/android/src/main/kotlin/io/flutter/plugins/videoplayer/Messages.kt index 3f58c0b8cf6b..b7d907bcb4ba 100644 --- a/packages/video_player/video_player_android/android/src/main/kotlin/io/flutter/plugins/videoplayer/Messages.kt +++ b/packages/video_player/video_player_android/android/src/main/kotlin/io/flutter/plugins/videoplayer/Messages.kt @@ -43,94 +43,6 @@ class FlutterError( val details: Any? = null ) : Throwable() -/** Generated class from Pigeon that represents data sent in messages. */ -data class TextureMessage(val textureId: Long) { - companion object { - fun fromList(pigeonVar_list: List): TextureMessage { - val textureId = pigeonVar_list[0] as Long - return TextureMessage(textureId) - } - } - - fun toList(): List { - return listOf( - textureId, - ) - } -} - -/** Generated class from Pigeon that represents data sent in messages. */ -data class LoopingMessage(val textureId: Long, val isLooping: Boolean) { - companion object { - fun fromList(pigeonVar_list: List): LoopingMessage { - val textureId = pigeonVar_list[0] as Long - val isLooping = pigeonVar_list[1] as Boolean - return LoopingMessage(textureId, isLooping) - } - } - - fun toList(): List { - return listOf( - textureId, - isLooping, - ) - } -} - -/** Generated class from Pigeon that represents data sent in messages. */ -data class VolumeMessage(val textureId: Long, val volume: Double) { - companion object { - fun fromList(pigeonVar_list: List): VolumeMessage { - val textureId = pigeonVar_list[0] as Long - val volume = pigeonVar_list[1] as Double - return VolumeMessage(textureId, volume) - } - } - - fun toList(): List { - return listOf( - textureId, - volume, - ) - } -} - -/** Generated class from Pigeon that represents data sent in messages. */ -data class PlaybackSpeedMessage(val textureId: Long, val speed: Double) { - companion object { - fun fromList(pigeonVar_list: List): PlaybackSpeedMessage { - val textureId = pigeonVar_list[0] as Long - val speed = pigeonVar_list[1] as Double - return PlaybackSpeedMessage(textureId, speed) - } - } - - fun toList(): List { - return listOf( - textureId, - speed, - ) - } -} - -/** Generated class from Pigeon that represents data sent in messages. */ -data class PositionMessage(val textureId: Long, val position: Long) { - companion object { - fun fromList(pigeonVar_list: List): PositionMessage { - val textureId = pigeonVar_list[0] as Long - val position = pigeonVar_list[1] as Long - return PositionMessage(textureId, position) - } - } - - fun toList(): List { - return listOf( - textureId, - position, - ) - } -} - /** Generated class from Pigeon that represents data sent in messages. */ data class CreateMessage( val asset: String? = null, @@ -161,78 +73,20 @@ data class CreateMessage( } } -/** Generated class from Pigeon that represents data sent in messages. */ -data class MixWithOthersMessage(val mixWithOthers: Boolean) { - companion object { - fun fromList(pigeonVar_list: List): MixWithOthersMessage { - val mixWithOthers = pigeonVar_list[0] as Boolean - return MixWithOthersMessage(mixWithOthers) - } - } - - fun toList(): List { - return listOf( - mixWithOthers, - ) - } -} - private open class MessagesPigeonCodec : StandardMessageCodec() { override fun readValueOfType(type: Byte, buffer: ByteBuffer): Any? { return when (type) { 129.toByte() -> { - return (readValue(buffer) as? List)?.let { TextureMessage.fromList(it) } - } - 130.toByte() -> { - return (readValue(buffer) as? List)?.let { LoopingMessage.fromList(it) } - } - 131.toByte() -> { - return (readValue(buffer) as? List)?.let { VolumeMessage.fromList(it) } - } - 132.toByte() -> { - return (readValue(buffer) as? List)?.let { PlaybackSpeedMessage.fromList(it) } - } - 133.toByte() -> { - return (readValue(buffer) as? List)?.let { PositionMessage.fromList(it) } - } - 134.toByte() -> { return (readValue(buffer) as? List)?.let { CreateMessage.fromList(it) } } - 135.toByte() -> { - return (readValue(buffer) as? List)?.let { MixWithOthersMessage.fromList(it) } - } else -> super.readValueOfType(type, buffer) } } override fun writeValue(stream: ByteArrayOutputStream, value: Any?) { when (value) { - is TextureMessage -> { - stream.write(129) - writeValue(stream, value.toList()) - } - is LoopingMessage -> { - stream.write(130) - writeValue(stream, value.toList()) - } - is VolumeMessage -> { - stream.write(131) - writeValue(stream, value.toList()) - } - is PlaybackSpeedMessage -> { - stream.write(132) - writeValue(stream, value.toList()) - } - is PositionMessage -> { - stream.write(133) - writeValue(stream, value.toList()) - } is CreateMessage -> { - stream.write(134) - writeValue(stream, value.toList()) - } - is MixWithOthersMessage -> { - stream.write(135) + stream.write(129) writeValue(stream, value.toList()) } else -> super.writeValue(stream, value) @@ -244,25 +98,25 @@ private open class MessagesPigeonCodec : StandardMessageCodec() { interface AndroidVideoPlayerApi { fun initialize() - fun create(msg: CreateMessage): TextureMessage + fun create(msg: CreateMessage): Long - fun dispose(msg: TextureMessage) + fun dispose(textureId: Long) - fun setLooping(msg: LoopingMessage) + fun setLooping(textureId: Long, looping: Boolean) - fun setVolume(msg: VolumeMessage) + fun setVolume(textureId: Long, volume: Double) - fun setPlaybackSpeed(msg: PlaybackSpeedMessage) + fun setPlaybackSpeed(textureId: Long, speed: Double) - fun play(msg: TextureMessage) + fun play(textureId: Long) - fun position(msg: TextureMessage): PositionMessage + fun position(textureId: Long): Long - fun seekTo(msg: PositionMessage) + fun seekTo(textureId: Long, position: Long) - fun pause(msg: TextureMessage) + fun pause(textureId: Long) - fun setMixWithOthers(msg: MixWithOthersMessage) + fun setMixWithOthers(mixWithOthers: Boolean) companion object { /** The codec used by AndroidVideoPlayerApi. */ @@ -331,10 +185,10 @@ interface AndroidVideoPlayerApi { if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List - val msgArg = args[0] as TextureMessage + val textureIdArg = args[0] as Long val wrapped: List = try { - api.dispose(msgArg) + api.dispose(textureIdArg) listOf(null) } catch (exception: Throwable) { wrapError(exception) @@ -354,10 +208,11 @@ interface AndroidVideoPlayerApi { if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List - val msgArg = args[0] as LoopingMessage + val textureIdArg = args[0] as Long + val loopingArg = args[1] as Boolean val wrapped: List = try { - api.setLooping(msgArg) + api.setLooping(textureIdArg, loopingArg) listOf(null) } catch (exception: Throwable) { wrapError(exception) @@ -377,10 +232,11 @@ interface AndroidVideoPlayerApi { if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List - val msgArg = args[0] as VolumeMessage + val textureIdArg = args[0] as Long + val volumeArg = args[1] as Double val wrapped: List = try { - api.setVolume(msgArg) + api.setVolume(textureIdArg, volumeArg) listOf(null) } catch (exception: Throwable) { wrapError(exception) @@ -400,10 +256,11 @@ interface AndroidVideoPlayerApi { if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List - val msgArg = args[0] as PlaybackSpeedMessage + val textureIdArg = args[0] as Long + val speedArg = args[1] as Double val wrapped: List = try { - api.setPlaybackSpeed(msgArg) + api.setPlaybackSpeed(textureIdArg, speedArg) listOf(null) } catch (exception: Throwable) { wrapError(exception) @@ -423,10 +280,10 @@ interface AndroidVideoPlayerApi { if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List - val msgArg = args[0] as TextureMessage + val textureIdArg = args[0] as Long val wrapped: List = try { - api.play(msgArg) + api.play(textureIdArg) listOf(null) } catch (exception: Throwable) { wrapError(exception) @@ -446,10 +303,10 @@ interface AndroidVideoPlayerApi { if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List - val msgArg = args[0] as TextureMessage + val textureIdArg = args[0] as Long val wrapped: List = try { - listOf(api.position(msgArg)) + listOf(api.position(textureIdArg)) } catch (exception: Throwable) { wrapError(exception) } @@ -468,10 +325,11 @@ interface AndroidVideoPlayerApi { if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List - val msgArg = args[0] as PositionMessage + val textureIdArg = args[0] as Long + val positionArg = args[1] as Long val wrapped: List = try { - api.seekTo(msgArg) + api.seekTo(textureIdArg, positionArg) listOf(null) } catch (exception: Throwable) { wrapError(exception) @@ -491,10 +349,10 @@ interface AndroidVideoPlayerApi { if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List - val msgArg = args[0] as TextureMessage + val textureIdArg = args[0] as Long val wrapped: List = try { - api.pause(msgArg) + api.pause(textureIdArg) listOf(null) } catch (exception: Throwable) { wrapError(exception) @@ -514,10 +372,10 @@ interface AndroidVideoPlayerApi { if (api != null) { channel.setMessageHandler { message, reply -> val args = message as List - val msgArg = args[0] as MixWithOthersMessage + val mixWithOthersArg = args[0] as Boolean val wrapped: List = try { - api.setMixWithOthers(msgArg) + api.setMixWithOthers(mixWithOthersArg) listOf(null) } catch (exception: Throwable) { wrapError(exception) diff --git a/packages/video_player/video_player_android/lib/src/android_video_player.dart b/packages/video_player/video_player_android/lib/src/android_video_player.dart index 7d4a600397d4..45665631d932 100644 --- a/packages/video_player/video_player_android/lib/src/android_video_player.dart +++ b/packages/video_player/video_player_android/lib/src/android_video_player.dart @@ -27,7 +27,7 @@ class AndroidVideoPlayer extends VideoPlayerPlatform { @override Future dispose(int textureId) { - return _api.dispose(TextureMessage(textureId: textureId)); + return _api.dispose(textureId); } @override @@ -59,59 +59,45 @@ class AndroidVideoPlayer extends VideoPlayerPlatform { formatHint: formatHint, ); - final TextureMessage response = await _api.create(message); - return response.textureId; + return _api.create(message); } @override Future setLooping(int textureId, bool looping) { - return _api.setLooping(LoopingMessage( - textureId: textureId, - isLooping: looping, - )); + return _api.setLooping(textureId, looping); } @override Future play(int textureId) { - return _api.play(TextureMessage(textureId: textureId)); + return _api.play(textureId); } @override Future pause(int textureId) { - return _api.pause(TextureMessage(textureId: textureId)); + return _api.pause(textureId); } @override Future setVolume(int textureId, double volume) { - return _api.setVolume(VolumeMessage( - textureId: textureId, - volume: volume, - )); + return _api.setVolume(textureId, volume); } @override Future setPlaybackSpeed(int textureId, double speed) { assert(speed > 0); - return _api.setPlaybackSpeed(PlaybackSpeedMessage( - textureId: textureId, - speed: speed, - )); + return _api.setPlaybackSpeed(textureId, speed); } @override Future seekTo(int textureId, Duration position) { - return _api.seekTo(PositionMessage( - textureId: textureId, - position: position.inMilliseconds, - )); + return _api.seekTo(textureId, position.inMilliseconds); } @override Future getPosition(int textureId) async { - final PositionMessage response = - await _api.position(TextureMessage(textureId: textureId)); - return Duration(milliseconds: response.position); + final int position = await _api.position(textureId); + return Duration(milliseconds: position); } @override @@ -162,8 +148,7 @@ class AndroidVideoPlayer extends VideoPlayerPlatform { @override Future setMixWithOthers(bool mixWithOthers) { - return _api - .setMixWithOthers(MixWithOthersMessage(mixWithOthers: mixWithOthers)); + return _api.setMixWithOthers(mixWithOthers); } EventChannel _eventChannelFor(int textureId) { diff --git a/packages/video_player/video_player_android/lib/src/messages.g.dart b/packages/video_player/video_player_android/lib/src/messages.g.dart index 6137c97cbcec..e3190b389e4e 100644 --- a/packages/video_player/video_player_android/lib/src/messages.g.dart +++ b/packages/video_player/video_player_android/lib/src/messages.g.dart @@ -29,131 +29,6 @@ List wrapResponse( return [error.code, error.message, error.details]; } -class TextureMessage { - TextureMessage({ - required this.textureId, - }); - - int textureId; - - Object encode() { - return [ - textureId, - ]; - } - - static TextureMessage decode(Object result) { - result as List; - return TextureMessage( - textureId: result[0]! as int, - ); - } -} - -class LoopingMessage { - LoopingMessage({ - required this.textureId, - required this.isLooping, - }); - - int textureId; - - bool isLooping; - - Object encode() { - return [ - textureId, - isLooping, - ]; - } - - static LoopingMessage decode(Object result) { - result as List; - return LoopingMessage( - textureId: result[0]! as int, - isLooping: result[1]! as bool, - ); - } -} - -class VolumeMessage { - VolumeMessage({ - required this.textureId, - required this.volume, - }); - - int textureId; - - double volume; - - Object encode() { - return [ - textureId, - volume, - ]; - } - - static VolumeMessage decode(Object result) { - result as List; - return VolumeMessage( - textureId: result[0]! as int, - volume: result[1]! as double, - ); - } -} - -class PlaybackSpeedMessage { - PlaybackSpeedMessage({ - required this.textureId, - required this.speed, - }); - - int textureId; - - double speed; - - Object encode() { - return [ - textureId, - speed, - ]; - } - - static PlaybackSpeedMessage decode(Object result) { - result as List; - return PlaybackSpeedMessage( - textureId: result[0]! as int, - speed: result[1]! as double, - ); - } -} - -class PositionMessage { - PositionMessage({ - required this.textureId, - required this.position, - }); - - int textureId; - - int position; - - Object encode() { - return [ - textureId, - position, - ]; - } - - static PositionMessage decode(Object result) { - result as List; - return PositionMessage( - textureId: result[0]! as int, - position: result[1]! as int, - ); - } -} - class CreateMessage { CreateMessage({ this.asset, @@ -196,27 +71,6 @@ class CreateMessage { } } -class MixWithOthersMessage { - MixWithOthersMessage({ - required this.mixWithOthers, - }); - - bool mixWithOthers; - - Object encode() { - return [ - mixWithOthers, - ]; - } - - static MixWithOthersMessage decode(Object result) { - result as List; - return MixWithOthersMessage( - mixWithOthers: result[0]! as bool, - ); - } -} - class _PigeonCodec extends StandardMessageCodec { const _PigeonCodec(); @override @@ -224,26 +78,8 @@ class _PigeonCodec extends StandardMessageCodec { if (value is int) { buffer.putUint8(4); buffer.putInt64(value); - } else if (value is TextureMessage) { - buffer.putUint8(129); - writeValue(buffer, value.encode()); - } else if (value is LoopingMessage) { - buffer.putUint8(130); - writeValue(buffer, value.encode()); - } else if (value is VolumeMessage) { - buffer.putUint8(131); - writeValue(buffer, value.encode()); - } else if (value is PlaybackSpeedMessage) { - buffer.putUint8(132); - writeValue(buffer, value.encode()); - } else if (value is PositionMessage) { - buffer.putUint8(133); - writeValue(buffer, value.encode()); } else if (value is CreateMessage) { - buffer.putUint8(134); - writeValue(buffer, value.encode()); - } else if (value is MixWithOthersMessage) { - buffer.putUint8(135); + buffer.putUint8(129); writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); @@ -254,19 +90,7 @@ class _PigeonCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 129: - return TextureMessage.decode(readValue(buffer)!); - case 130: - return LoopingMessage.decode(readValue(buffer)!); - case 131: - return VolumeMessage.decode(readValue(buffer)!); - case 132: - return PlaybackSpeedMessage.decode(readValue(buffer)!); - case 133: - return PositionMessage.decode(readValue(buffer)!); - case 134: return CreateMessage.decode(readValue(buffer)!); - case 135: - return MixWithOthersMessage.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); } @@ -312,7 +136,7 @@ class AndroidVideoPlayerApi { } } - Future create(CreateMessage msg) async { + Future create(CreateMessage msg) async { final String pigeonVar_channelName = 'dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.create$pigeonVar_messageChannelSuffix'; final BasicMessageChannel pigeonVar_channel = @@ -337,11 +161,11 @@ class AndroidVideoPlayerApi { message: 'Host platform returned null value for non-null return value.', ); } else { - return (pigeonVar_replyList[0] as TextureMessage?)!; + return (pigeonVar_replyList[0] as int?)!; } } - Future dispose(TextureMessage msg) async { + Future dispose(int textureId) async { final String pigeonVar_channelName = 'dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.dispose$pigeonVar_messageChannelSuffix'; final BasicMessageChannel pigeonVar_channel = @@ -351,7 +175,7 @@ class AndroidVideoPlayerApi { binaryMessenger: pigeonVar_binaryMessenger, ); final List? pigeonVar_replyList = - await pigeonVar_channel.send([msg]) as List?; + await pigeonVar_channel.send([textureId]) as List?; if (pigeonVar_replyList == null) { throw _createConnectionError(pigeonVar_channelName); } else if (pigeonVar_replyList.length > 1) { @@ -365,7 +189,7 @@ class AndroidVideoPlayerApi { } } - Future setLooping(LoopingMessage msg) async { + Future setLooping(int textureId, bool looping) async { final String pigeonVar_channelName = 'dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setLooping$pigeonVar_messageChannelSuffix'; final BasicMessageChannel pigeonVar_channel = @@ -374,8 +198,8 @@ class AndroidVideoPlayerApi { pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final List? pigeonVar_replyList = - await pigeonVar_channel.send([msg]) as List?; + final List? pigeonVar_replyList = await pigeonVar_channel + .send([textureId, looping]) as List?; if (pigeonVar_replyList == null) { throw _createConnectionError(pigeonVar_channelName); } else if (pigeonVar_replyList.length > 1) { @@ -389,7 +213,7 @@ class AndroidVideoPlayerApi { } } - Future setVolume(VolumeMessage msg) async { + Future setVolume(int textureId, double volume) async { final String pigeonVar_channelName = 'dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setVolume$pigeonVar_messageChannelSuffix'; final BasicMessageChannel pigeonVar_channel = @@ -398,8 +222,8 @@ class AndroidVideoPlayerApi { pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final List? pigeonVar_replyList = - await pigeonVar_channel.send([msg]) as List?; + final List? pigeonVar_replyList = await pigeonVar_channel + .send([textureId, volume]) as List?; if (pigeonVar_replyList == null) { throw _createConnectionError(pigeonVar_channelName); } else if (pigeonVar_replyList.length > 1) { @@ -413,7 +237,7 @@ class AndroidVideoPlayerApi { } } - Future setPlaybackSpeed(PlaybackSpeedMessage msg) async { + Future setPlaybackSpeed(int textureId, double speed) async { final String pigeonVar_channelName = 'dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setPlaybackSpeed$pigeonVar_messageChannelSuffix'; final BasicMessageChannel pigeonVar_channel = @@ -422,8 +246,8 @@ class AndroidVideoPlayerApi { pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final List? pigeonVar_replyList = - await pigeonVar_channel.send([msg]) as List?; + final List? pigeonVar_replyList = await pigeonVar_channel + .send([textureId, speed]) as List?; if (pigeonVar_replyList == null) { throw _createConnectionError(pigeonVar_channelName); } else if (pigeonVar_replyList.length > 1) { @@ -437,7 +261,7 @@ class AndroidVideoPlayerApi { } } - Future play(TextureMessage msg) async { + Future play(int textureId) async { final String pigeonVar_channelName = 'dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.play$pigeonVar_messageChannelSuffix'; final BasicMessageChannel pigeonVar_channel = @@ -447,7 +271,7 @@ class AndroidVideoPlayerApi { binaryMessenger: pigeonVar_binaryMessenger, ); final List? pigeonVar_replyList = - await pigeonVar_channel.send([msg]) as List?; + await pigeonVar_channel.send([textureId]) as List?; if (pigeonVar_replyList == null) { throw _createConnectionError(pigeonVar_channelName); } else if (pigeonVar_replyList.length > 1) { @@ -461,7 +285,7 @@ class AndroidVideoPlayerApi { } } - Future position(TextureMessage msg) async { + Future position(int textureId) async { final String pigeonVar_channelName = 'dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.position$pigeonVar_messageChannelSuffix'; final BasicMessageChannel pigeonVar_channel = @@ -471,7 +295,7 @@ class AndroidVideoPlayerApi { binaryMessenger: pigeonVar_binaryMessenger, ); final List? pigeonVar_replyList = - await pigeonVar_channel.send([msg]) as List?; + await pigeonVar_channel.send([textureId]) as List?; if (pigeonVar_replyList == null) { throw _createConnectionError(pigeonVar_channelName); } else if (pigeonVar_replyList.length > 1) { @@ -486,11 +310,11 @@ class AndroidVideoPlayerApi { message: 'Host platform returned null value for non-null return value.', ); } else { - return (pigeonVar_replyList[0] as PositionMessage?)!; + return (pigeonVar_replyList[0] as int?)!; } } - Future seekTo(PositionMessage msg) async { + Future seekTo(int textureId, int position) async { final String pigeonVar_channelName = 'dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.seekTo$pigeonVar_messageChannelSuffix'; final BasicMessageChannel pigeonVar_channel = @@ -499,8 +323,8 @@ class AndroidVideoPlayerApi { pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final List? pigeonVar_replyList = - await pigeonVar_channel.send([msg]) as List?; + final List? pigeonVar_replyList = await pigeonVar_channel + .send([textureId, position]) as List?; if (pigeonVar_replyList == null) { throw _createConnectionError(pigeonVar_channelName); } else if (pigeonVar_replyList.length > 1) { @@ -514,7 +338,7 @@ class AndroidVideoPlayerApi { } } - Future pause(TextureMessage msg) async { + Future pause(int textureId) async { final String pigeonVar_channelName = 'dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.pause$pigeonVar_messageChannelSuffix'; final BasicMessageChannel pigeonVar_channel = @@ -524,7 +348,7 @@ class AndroidVideoPlayerApi { binaryMessenger: pigeonVar_binaryMessenger, ); final List? pigeonVar_replyList = - await pigeonVar_channel.send([msg]) as List?; + await pigeonVar_channel.send([textureId]) as List?; if (pigeonVar_replyList == null) { throw _createConnectionError(pigeonVar_channelName); } else if (pigeonVar_replyList.length > 1) { @@ -538,7 +362,7 @@ class AndroidVideoPlayerApi { } } - Future setMixWithOthers(MixWithOthersMessage msg) async { + Future setMixWithOthers(bool mixWithOthers) async { final String pigeonVar_channelName = 'dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setMixWithOthers$pigeonVar_messageChannelSuffix'; final BasicMessageChannel pigeonVar_channel = @@ -547,8 +371,8 @@ class AndroidVideoPlayerApi { pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final List? pigeonVar_replyList = - await pigeonVar_channel.send([msg]) as List?; + final List? pigeonVar_replyList = await pigeonVar_channel + .send([mixWithOthers]) as List?; if (pigeonVar_replyList == null) { throw _createConnectionError(pigeonVar_channelName); } else if (pigeonVar_replyList.length > 1) { diff --git a/packages/video_player/video_player_android/pigeons/messages.dart b/packages/video_player/video_player_android/pigeons/messages.dart index abacd4a7edab..e9ca144f5428 100644 --- a/packages/video_player/video_player_android/pigeons/messages.dart +++ b/packages/video_player/video_player_android/pigeons/messages.dart @@ -14,35 +14,6 @@ import 'package:pigeon/pigeon.dart'; ), copyrightHeader: 'pigeons/copyright.txt', )) -class TextureMessage { - TextureMessage(this.textureId); - int textureId; -} - -class LoopingMessage { - LoopingMessage(this.textureId, this.isLooping); - int textureId; - bool isLooping; -} - -class VolumeMessage { - VolumeMessage(this.textureId, this.volume); - int textureId; - double volume; -} - -class PlaybackSpeedMessage { - PlaybackSpeedMessage(this.textureId, this.speed); - int textureId; - double speed; -} - -class PositionMessage { - PositionMessage(this.textureId, this.position); - int textureId; - int position; -} - class CreateMessage { CreateMessage({required this.httpHeaders}); String? asset; @@ -52,22 +23,17 @@ class CreateMessage { Map httpHeaders; } -class MixWithOthersMessage { - MixWithOthersMessage(this.mixWithOthers); - bool mixWithOthers; -} - @HostApi(dartHostTestHandler: 'TestHostVideoPlayerApi') abstract class AndroidVideoPlayerApi { void initialize(); - TextureMessage create(CreateMessage msg); - void dispose(TextureMessage msg); - void setLooping(LoopingMessage msg); - void setVolume(VolumeMessage msg); - void setPlaybackSpeed(PlaybackSpeedMessage msg); - void play(TextureMessage msg); - PositionMessage position(TextureMessage msg); - void seekTo(PositionMessage msg); - void pause(TextureMessage msg); - void setMixWithOthers(MixWithOthersMessage msg); + int create(CreateMessage msg); + void dispose(int textureId); + void setLooping(int textureId, bool looping); + void setVolume(int textureId, double volume); + void setPlaybackSpeed(int textureId, double speed); + void play(int textureId); + int position(int textureId); + void seekTo(int textureId, int position); + void pause(int textureId); + void setMixWithOthers(bool mixWithOthers); } diff --git a/packages/video_player/video_player_android/test/android_video_player_test.dart b/packages/video_player/video_player_android/test/android_video_player_test.dart index dc9544781cf6..2c99cb934d02 100644 --- a/packages/video_player/video_player_android/test/android_video_player_test.dart +++ b/packages/video_player/video_player_android/test/android_video_player_test.dart @@ -12,25 +12,25 @@ import 'test_api.g.dart'; class _ApiLogger implements TestHostVideoPlayerApi { final List log = []; - TextureMessage? textureMessage; - CreateMessage? createMessage; - PositionMessage? positionMessage; - LoopingMessage? loopingMessage; - VolumeMessage? volumeMessage; - PlaybackSpeedMessage? playbackSpeedMessage; - MixWithOthersMessage? mixWithOthersMessage; + int? passedTextureId; + CreateMessage? passedCreateMessage; + int? passedPosition; + bool? passedLooping; + double? passedVolume; + double? passedPlaybackSpeed; + bool? passedMixWithOthers; @override - TextureMessage create(CreateMessage arg) { + int create(CreateMessage arg) { log.add('create'); - createMessage = arg; - return TextureMessage(textureId: 3); + passedCreateMessage = arg; + return 3; } @override - void dispose(TextureMessage arg) { + void dispose(int textureId) { log.add('dispose'); - textureMessage = arg; + passedTextureId = textureId; } @override @@ -39,52 +39,56 @@ class _ApiLogger implements TestHostVideoPlayerApi { } @override - void pause(TextureMessage arg) { + void pause(int textureId) { log.add('pause'); - textureMessage = arg; + passedTextureId = textureId; } @override - void play(TextureMessage arg) { + void play(int textureId) { log.add('play'); - textureMessage = arg; + passedTextureId = textureId; } @override - void setMixWithOthers(MixWithOthersMessage arg) { + void setMixWithOthers(bool mixWithOthers) { log.add('setMixWithOthers'); - mixWithOthersMessage = arg; + passedMixWithOthers = mixWithOthers; } @override - PositionMessage position(TextureMessage arg) { + int position(int textureId) { log.add('position'); - textureMessage = arg; - return PositionMessage(textureId: arg.textureId, position: 234); + passedTextureId = textureId; + return 234; } @override - void seekTo(PositionMessage arg) { + void seekTo(int textureId, int position) { log.add('seekTo'); - positionMessage = arg; + passedTextureId = textureId; + passedPosition = position; } @override - void setLooping(LoopingMessage arg) { + void setLooping(int textureId, bool looping) { log.add('setLooping'); - loopingMessage = arg; + passedTextureId = textureId; + passedLooping = looping; } @override - void setVolume(VolumeMessage arg) { + void setVolume(int textureId, double volume) { log.add('setVolume'); - volumeMessage = arg; + passedTextureId = textureId; + passedVolume = volume; } @override - void setPlaybackSpeed(PlaybackSpeedMessage arg) { + void setPlaybackSpeed(int textureId, double speed) { log.add('setPlaybackSpeed'); - playbackSpeedMessage = arg; + passedTextureId = textureId; + passedPlaybackSpeed = speed; } } @@ -116,7 +120,7 @@ void main() { test('dispose', () async { await player.dispose(1); expect(log.log.last, 'dispose'); - expect(log.textureMessage?.textureId, 1); + expect(log.passedTextureId, 1); }); test('create with asset', () async { @@ -126,8 +130,8 @@ void main() { package: 'somePackage', )); expect(log.log.last, 'create'); - expect(log.createMessage?.asset, 'someAsset'); - expect(log.createMessage?.packageName, 'somePackage'); + expect(log.passedCreateMessage?.asset, 'someAsset'); + expect(log.passedCreateMessage?.packageName, 'somePackage'); expect(textureId, 3); }); @@ -138,11 +142,11 @@ 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, {}); + expect(log.passedCreateMessage?.asset, null); + expect(log.passedCreateMessage?.uri, 'someUri'); + expect(log.passedCreateMessage?.packageName, null); + expect(log.passedCreateMessage?.formatHint, 'dash'); + expect(log.passedCreateMessage?.httpHeaders, {}); expect(textureId, 3); }); @@ -153,11 +157,11 @@ void main() { 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, + expect(log.passedCreateMessage?.asset, null); + expect(log.passedCreateMessage?.uri, 'someUri'); + expect(log.passedCreateMessage?.packageName, null); + expect(log.passedCreateMessage?.formatHint, null); + expect(log.passedCreateMessage?.httpHeaders, {'Authorization': 'Bearer token'}); expect(textureId, 3); }); @@ -168,7 +172,7 @@ void main() { uri: 'someUri', )); expect(log.log.last, 'create'); - expect(log.createMessage?.uri, 'someUri'); + expect(log.passedCreateMessage?.uri, 'someUri'); expect(textureId, 3); }); @@ -179,65 +183,65 @@ void main() { httpHeaders: {'Authorization': 'Bearer token'}, )); expect(log.log.last, 'create'); - expect(log.createMessage?.uri, 'someUri'); - expect(log.createMessage?.httpHeaders, + expect(log.passedCreateMessage?.uri, 'someUri'); + expect(log.passedCreateMessage?.httpHeaders, {'Authorization': 'Bearer token'}); expect(textureId, 3); }); test('setLooping', () async { await player.setLooping(1, true); expect(log.log.last, 'setLooping'); - expect(log.loopingMessage?.textureId, 1); - expect(log.loopingMessage?.isLooping, true); + expect(log.passedTextureId, 1); + expect(log.passedLooping, true); }); test('play', () async { await player.play(1); expect(log.log.last, 'play'); - expect(log.textureMessage?.textureId, 1); + expect(log.passedTextureId, 1); }); test('pause', () async { await player.pause(1); expect(log.log.last, 'pause'); - expect(log.textureMessage?.textureId, 1); + expect(log.passedTextureId, 1); }); test('setMixWithOthers', () async { await player.setMixWithOthers(true); expect(log.log.last, 'setMixWithOthers'); - expect(log.mixWithOthersMessage?.mixWithOthers, true); + expect(log.passedMixWithOthers, true); await player.setMixWithOthers(false); expect(log.log.last, 'setMixWithOthers'); - expect(log.mixWithOthersMessage?.mixWithOthers, false); + expect(log.passedMixWithOthers, false); }); test('setVolume', () async { await player.setVolume(1, 0.7); expect(log.log.last, 'setVolume'); - expect(log.volumeMessage?.textureId, 1); - expect(log.volumeMessage?.volume, 0.7); + expect(log.passedTextureId, 1); + expect(log.passedVolume, 0.7); }); test('setPlaybackSpeed', () async { await player.setPlaybackSpeed(1, 1.5); expect(log.log.last, 'setPlaybackSpeed'); - expect(log.playbackSpeedMessage?.textureId, 1); - expect(log.playbackSpeedMessage?.speed, 1.5); + expect(log.passedTextureId, 1); + expect(log.passedPlaybackSpeed, 1.5); }); test('seekTo', () async { await player.seekTo(1, const Duration(milliseconds: 12345)); expect(log.log.last, 'seekTo'); - expect(log.positionMessage?.textureId, 1); - expect(log.positionMessage?.position, 12345); + expect(log.passedTextureId, 1); + expect(log.passedPosition, 12345); }); test('getPosition', () async { final Duration position = await player.getPosition(1); expect(log.log.last, 'position'); - expect(log.textureMessage?.textureId, 1); + expect(log.passedTextureId, 1); expect(position, const Duration(milliseconds: 234)); }); diff --git a/packages/video_player/video_player_android/test/test_api.g.dart b/packages/video_player/video_player_android/test/test_api.g.dart index cebec0254bd0..838dcfbc5a21 100644 --- a/packages/video_player/video_player_android/test/test_api.g.dart +++ b/packages/video_player/video_player_android/test/test_api.g.dart @@ -20,26 +20,8 @@ class _PigeonCodec extends StandardMessageCodec { if (value is int) { buffer.putUint8(4); buffer.putInt64(value); - } else if (value is TextureMessage) { - buffer.putUint8(129); - writeValue(buffer, value.encode()); - } else if (value is LoopingMessage) { - buffer.putUint8(130); - writeValue(buffer, value.encode()); - } else if (value is VolumeMessage) { - buffer.putUint8(131); - writeValue(buffer, value.encode()); - } else if (value is PlaybackSpeedMessage) { - buffer.putUint8(132); - writeValue(buffer, value.encode()); - } else if (value is PositionMessage) { - buffer.putUint8(133); - writeValue(buffer, value.encode()); } else if (value is CreateMessage) { - buffer.putUint8(134); - writeValue(buffer, value.encode()); - } else if (value is MixWithOthersMessage) { - buffer.putUint8(135); + buffer.putUint8(129); writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); @@ -50,19 +32,7 @@ class _PigeonCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 129: - return TextureMessage.decode(readValue(buffer)!); - case 130: - return LoopingMessage.decode(readValue(buffer)!); - case 131: - return VolumeMessage.decode(readValue(buffer)!); - case 132: - return PlaybackSpeedMessage.decode(readValue(buffer)!); - case 133: - return PositionMessage.decode(readValue(buffer)!); - case 134: return CreateMessage.decode(readValue(buffer)!); - case 135: - return MixWithOthersMessage.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); } @@ -76,25 +46,25 @@ abstract class TestHostVideoPlayerApi { void initialize(); - TextureMessage create(CreateMessage msg); + int create(CreateMessage msg); - void dispose(TextureMessage msg); + void dispose(int textureId); - void setLooping(LoopingMessage msg); + void setLooping(int textureId, bool looping); - void setVolume(VolumeMessage msg); + void setVolume(int textureId, double volume); - void setPlaybackSpeed(PlaybackSpeedMessage msg); + void setPlaybackSpeed(int textureId, double speed); - void play(TextureMessage msg); + void play(int textureId); - PositionMessage position(TextureMessage msg); + int position(int textureId); - void seekTo(PositionMessage msg); + void seekTo(int textureId, int position); - void pause(TextureMessage msg); + void pause(int textureId); - void setMixWithOthers(MixWithOthersMessage msg); + void setMixWithOthers(bool mixWithOthers); static void setUp( TestHostVideoPlayerApi? api, { @@ -150,7 +120,7 @@ abstract class TestHostVideoPlayerApi { assert(arg_msg != null, 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.create was null, expected non-null CreateMessage.'); try { - final TextureMessage output = api.create(arg_msg!); + final int output = api.create(arg_msg!); return [output]; } on PlatformException catch (e) { return wrapResponse(error: e); @@ -178,11 +148,11 @@ abstract class TestHostVideoPlayerApi { assert(message != null, 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.dispose was null.'); final List args = (message as List?)!; - final TextureMessage? arg_msg = (args[0] as TextureMessage?); - assert(arg_msg != null, - 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.dispose was null, expected non-null TextureMessage.'); + final int? arg_textureId = (args[0] as int?); + assert(arg_textureId != null, + 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.dispose was null, expected non-null int.'); try { - api.dispose(arg_msg!); + api.dispose(arg_textureId!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); @@ -210,11 +180,14 @@ abstract class TestHostVideoPlayerApi { assert(message != null, 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setLooping was null.'); final List args = (message as List?)!; - final LoopingMessage? arg_msg = (args[0] as LoopingMessage?); - assert(arg_msg != null, - 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setLooping was null, expected non-null LoopingMessage.'); + final int? arg_textureId = (args[0] as int?); + assert(arg_textureId != null, + 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setLooping was null, expected non-null int.'); + final bool? arg_looping = (args[1] as bool?); + assert(arg_looping != null, + 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setLooping was null, expected non-null bool.'); try { - api.setLooping(arg_msg!); + api.setLooping(arg_textureId!, arg_looping!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); @@ -242,11 +215,14 @@ abstract class TestHostVideoPlayerApi { assert(message != null, 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setVolume was null.'); final List args = (message as List?)!; - final VolumeMessage? arg_msg = (args[0] as VolumeMessage?); - assert(arg_msg != null, - 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setVolume was null, expected non-null VolumeMessage.'); + final int? arg_textureId = (args[0] as int?); + assert(arg_textureId != null, + 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setVolume was null, expected non-null int.'); + final double? arg_volume = (args[1] as double?); + assert(arg_volume != null, + 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setVolume was null, expected non-null double.'); try { - api.setVolume(arg_msg!); + api.setVolume(arg_textureId!, arg_volume!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); @@ -274,12 +250,14 @@ abstract class TestHostVideoPlayerApi { assert(message != null, 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setPlaybackSpeed was null.'); final List args = (message as List?)!; - final PlaybackSpeedMessage? arg_msg = - (args[0] as PlaybackSpeedMessage?); - assert(arg_msg != null, - 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setPlaybackSpeed was null, expected non-null PlaybackSpeedMessage.'); + final int? arg_textureId = (args[0] as int?); + assert(arg_textureId != null, + 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setPlaybackSpeed was null, expected non-null int.'); + final double? arg_speed = (args[1] as double?); + assert(arg_speed != null, + 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setPlaybackSpeed was null, expected non-null double.'); try { - api.setPlaybackSpeed(arg_msg!); + api.setPlaybackSpeed(arg_textureId!, arg_speed!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); @@ -307,11 +285,11 @@ abstract class TestHostVideoPlayerApi { assert(message != null, 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.play was null.'); final List args = (message as List?)!; - final TextureMessage? arg_msg = (args[0] as TextureMessage?); - assert(arg_msg != null, - 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.play was null, expected non-null TextureMessage.'); + final int? arg_textureId = (args[0] as int?); + assert(arg_textureId != null, + 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.play was null, expected non-null int.'); try { - api.play(arg_msg!); + api.play(arg_textureId!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); @@ -339,11 +317,11 @@ abstract class TestHostVideoPlayerApi { assert(message != null, 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.position was null.'); final List args = (message as List?)!; - final TextureMessage? arg_msg = (args[0] as TextureMessage?); - assert(arg_msg != null, - 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.position was null, expected non-null TextureMessage.'); + final int? arg_textureId = (args[0] as int?); + assert(arg_textureId != null, + 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.position was null, expected non-null int.'); try { - final PositionMessage output = api.position(arg_msg!); + final int output = api.position(arg_textureId!); return [output]; } on PlatformException catch (e) { return wrapResponse(error: e); @@ -371,11 +349,14 @@ abstract class TestHostVideoPlayerApi { assert(message != null, 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.seekTo was null.'); final List args = (message as List?)!; - final PositionMessage? arg_msg = (args[0] as PositionMessage?); - assert(arg_msg != null, - 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.seekTo was null, expected non-null PositionMessage.'); + final int? arg_textureId = (args[0] as int?); + assert(arg_textureId != null, + 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.seekTo was null, expected non-null int.'); + final int? arg_position = (args[1] as int?); + assert(arg_position != null, + 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.seekTo was null, expected non-null int.'); try { - api.seekTo(arg_msg!); + api.seekTo(arg_textureId!, arg_position!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); @@ -403,11 +384,11 @@ abstract class TestHostVideoPlayerApi { assert(message != null, 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.pause was null.'); final List args = (message as List?)!; - final TextureMessage? arg_msg = (args[0] as TextureMessage?); - assert(arg_msg != null, - 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.pause was null, expected non-null TextureMessage.'); + final int? arg_textureId = (args[0] as int?); + assert(arg_textureId != null, + 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.pause was null, expected non-null int.'); try { - api.pause(arg_msg!); + api.pause(arg_textureId!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); @@ -435,12 +416,11 @@ abstract class TestHostVideoPlayerApi { assert(message != null, 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setMixWithOthers was null.'); final List args = (message as List?)!; - final MixWithOthersMessage? arg_msg = - (args[0] as MixWithOthersMessage?); - assert(arg_msg != null, - 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setMixWithOthers was null, expected non-null MixWithOthersMessage.'); + final bool? arg_mixWithOthers = (args[0] as bool?); + assert(arg_mixWithOthers != null, + 'Argument for dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setMixWithOthers was null, expected non-null bool.'); try { - api.setMixWithOthers(arg_msg!); + api.setMixWithOthers(arg_mixWithOthers!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); From fce0ed2cc5c4d56f9ddaf3a7c36537a2ddccb1d9 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 21 Oct 2024 14:42:09 -0400 Subject: [PATCH 3/5] Revert to Java --- .../video_player_android/android/build.gradle | 11 - .../flutter/plugins/videoplayer/Messages.java | 577 ++++++++++++++++++ .../flutter/plugins/videoplayer/Messages.kt | 391 ------------ .../pigeons/messages.dart | 5 +- 4 files changed, 579 insertions(+), 405 deletions(-) create mode 100644 packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java delete mode 100644 packages/video_player/video_player_android/android/src/main/kotlin/io/flutter/plugins/videoplayer/Messages.kt diff --git a/packages/video_player/video_player_android/android/build.gradle b/packages/video_player/video_player_android/android/build.gradle index 90912f322cba..5cadcf23b43e 100644 --- a/packages/video_player/video_player_android/android/build.gradle +++ b/packages/video_player/video_player_android/android/build.gradle @@ -2,7 +2,6 @@ group 'io.flutter.plugins.videoplayer' version '1.0-SNAPSHOT' buildscript { - ext.kotlin_version = '1.7.10' repositories { google() mavenCentral() @@ -10,7 +9,6 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:8.5.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -22,7 +20,6 @@ rootProject.allprojects { } apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' android { namespace 'io.flutter.plugins.videoplayer' @@ -42,14 +39,6 @@ android { targetCompatibility JavaVersion.VERSION_11 } - kotlinOptions { - jvmTarget = '11' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - dependencies { def exoplayer_version = "1.4.1" implementation "androidx.media3:media3-exoplayer:${exoplayer_version}" diff --git a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java new file mode 100644 index 000000000000..870045518852 --- /dev/null +++ b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java @@ -0,0 +1,577 @@ +// 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 (v22.5.0), do not edit directly. +// See also: https://pub.dev/packages/pigeon + +package io.flutter.plugins.videoplayer; + +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.RetentionPolicy.CLASS; + +import android.util.Log; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import io.flutter.plugin.common.BasicMessageChannel; +import io.flutter.plugin.common.BinaryMessenger; +import io.flutter.plugin.common.MessageCodec; +import io.flutter.plugin.common.StandardMessageCodec; +import java.io.ByteArrayOutputStream; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.Map; +import java.util.Objects; + +/** Generated class from Pigeon. */ +@SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression", "serial"}) +public class Messages { + + /** Error class for passing custom error details to Flutter via a thrown PlatformException. */ + public static class FlutterError extends RuntimeException { + + /** The error code. */ + public final String code; + + /** The error details. Must be a datatype supported by the api codec. */ + public final Object details; + + public FlutterError(@NonNull String code, @Nullable String message, @Nullable Object details) { + super(message); + this.code = code; + this.details = details; + } + } + + @NonNull + protected static ArrayList wrapError(@NonNull Throwable exception) { + ArrayList errorList = new ArrayList<>(3); + if (exception instanceof FlutterError) { + FlutterError error = (FlutterError) exception; + errorList.add(error.code); + errorList.add(error.getMessage()); + errorList.add(error.details); + } else { + errorList.add(exception.toString()); + errorList.add(exception.getClass().getSimpleName()); + errorList.add( + "Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception)); + } + return errorList; + } + + @Target(METHOD) + @Retention(CLASS) + @interface CanIgnoreReturnValue {} + + /** Generated class from Pigeon that represents data sent in messages. */ + public static final class CreateMessage { + private @Nullable String asset; + + public @Nullable String getAsset() { + return asset; + } + + public void setAsset(@Nullable String setterArg) { + this.asset = setterArg; + } + + private @Nullable String uri; + + public @Nullable String getUri() { + return uri; + } + + public void setUri(@Nullable String setterArg) { + this.uri = setterArg; + } + + private @Nullable String packageName; + + public @Nullable String getPackageName() { + return packageName; + } + + public void setPackageName(@Nullable String setterArg) { + this.packageName = setterArg; + } + + private @Nullable String formatHint; + + public @Nullable String getFormatHint() { + return formatHint; + } + + public void setFormatHint(@Nullable String setterArg) { + this.formatHint = setterArg; + } + + private @NonNull Map httpHeaders; + + public @NonNull Map getHttpHeaders() { + return httpHeaders; + } + + public void setHttpHeaders(@NonNull Map setterArg) { + if (setterArg == null) { + throw new IllegalStateException("Nonnull field \"httpHeaders\" is null."); + } + this.httpHeaders = setterArg; + } + + /** Constructor is non-public to enforce null safety; use Builder. */ + CreateMessage() {} + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + CreateMessage that = (CreateMessage) o; + return Objects.equals(asset, that.asset) + && Objects.equals(uri, that.uri) + && Objects.equals(packageName, that.packageName) + && Objects.equals(formatHint, that.formatHint) + && httpHeaders.equals(that.httpHeaders); + } + + @Override + public int hashCode() { + return Objects.hash(asset, uri, packageName, formatHint, httpHeaders); + } + + public static final class Builder { + + private @Nullable String asset; + + @CanIgnoreReturnValue + public @NonNull Builder setAsset(@Nullable String setterArg) { + this.asset = setterArg; + return this; + } + + private @Nullable String uri; + + @CanIgnoreReturnValue + public @NonNull Builder setUri(@Nullable String setterArg) { + this.uri = setterArg; + return this; + } + + private @Nullable String packageName; + + @CanIgnoreReturnValue + public @NonNull Builder setPackageName(@Nullable String setterArg) { + this.packageName = setterArg; + return this; + } + + private @Nullable String formatHint; + + @CanIgnoreReturnValue + public @NonNull Builder setFormatHint(@Nullable String setterArg) { + this.formatHint = setterArg; + return this; + } + + private @Nullable Map httpHeaders; + + @CanIgnoreReturnValue + public @NonNull Builder setHttpHeaders(@NonNull Map setterArg) { + this.httpHeaders = setterArg; + return this; + } + + public @NonNull CreateMessage build() { + CreateMessage pigeonReturn = new CreateMessage(); + pigeonReturn.setAsset(asset); + pigeonReturn.setUri(uri); + pigeonReturn.setPackageName(packageName); + pigeonReturn.setFormatHint(formatHint); + pigeonReturn.setHttpHeaders(httpHeaders); + return pigeonReturn; + } + } + + @NonNull + ArrayList toList() { + ArrayList toListResult = new ArrayList<>(5); + toListResult.add(asset); + toListResult.add(uri); + toListResult.add(packageName); + toListResult.add(formatHint); + toListResult.add(httpHeaders); + return toListResult; + } + + static @NonNull CreateMessage fromList(@NonNull ArrayList pigeonVar_list) { + CreateMessage pigeonResult = new CreateMessage(); + Object asset = pigeonVar_list.get(0); + pigeonResult.setAsset((String) asset); + Object uri = pigeonVar_list.get(1); + pigeonResult.setUri((String) uri); + Object packageName = pigeonVar_list.get(2); + pigeonResult.setPackageName((String) packageName); + Object formatHint = pigeonVar_list.get(3); + pigeonResult.setFormatHint((String) formatHint); + Object httpHeaders = pigeonVar_list.get(4); + pigeonResult.setHttpHeaders((Map) httpHeaders); + return pigeonResult; + } + } + + private static class PigeonCodec extends StandardMessageCodec { + public static final PigeonCodec INSTANCE = new PigeonCodec(); + + private PigeonCodec() {} + + @Override + protected Object readValueOfType(byte type, @NonNull ByteBuffer buffer) { + switch (type) { + case (byte) 129: + return CreateMessage.fromList((ArrayList) readValue(buffer)); + default: + return super.readValueOfType(type, buffer); + } + } + + @Override + protected void writeValue(@NonNull ByteArrayOutputStream stream, Object value) { + if (value instanceof CreateMessage) { + stream.write(129); + writeValue(stream, ((CreateMessage) value).toList()); + } else { + super.writeValue(stream, value); + } + } + } + + /** Generated interface from Pigeon that represents a handler of messages from Flutter. */ + public interface AndroidVideoPlayerApi { + + void initialize(); + + @NonNull + Long create(@NonNull CreateMessage msg); + + void dispose(@NonNull Long textureId); + + void setLooping(@NonNull Long textureId, @NonNull Boolean looping); + + void setVolume(@NonNull Long textureId, @NonNull Double volume); + + void setPlaybackSpeed(@NonNull Long textureId, @NonNull Double speed); + + void play(@NonNull Long textureId); + + @NonNull + Long position(@NonNull Long textureId); + + void seekTo(@NonNull Long textureId, @NonNull Long position); + + void pause(@NonNull Long textureId); + + void setMixWithOthers(@NonNull Boolean mixWithOthers); + + /** The codec used by AndroidVideoPlayerApi. */ + static @NonNull MessageCodec getCodec() { + return PigeonCodec.INSTANCE; + } + /** + * Sets up an instance of `AndroidVideoPlayerApi` to handle messages through the + * `binaryMessenger`. + */ + static void setUp( + @NonNull BinaryMessenger binaryMessenger, @Nullable AndroidVideoPlayerApi api) { + setUp(binaryMessenger, "", api); + } + + static void setUp( + @NonNull BinaryMessenger binaryMessenger, + @NonNull String messageChannelSuffix, + @Nullable AndroidVideoPlayerApi api) { + messageChannelSuffix = messageChannelSuffix.isEmpty() ? "" : "." + messageChannelSuffix; + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.initialize" + + messageChannelSuffix, + getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList<>(); + try { + api.initialize(); + wrapped.add(0, null); + } catch (Throwable exception) { + wrapped = wrapError(exception); + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.create" + + messageChannelSuffix, + getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList<>(); + ArrayList args = (ArrayList) message; + CreateMessage msgArg = (CreateMessage) args.get(0); + try { + Long output = api.create(msgArg); + wrapped.add(0, output); + } catch (Throwable exception) { + wrapped = wrapError(exception); + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.dispose" + + messageChannelSuffix, + getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList<>(); + ArrayList args = (ArrayList) message; + Long textureIdArg = (Long) args.get(0); + try { + api.dispose(textureIdArg); + wrapped.add(0, null); + } catch (Throwable exception) { + wrapped = wrapError(exception); + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setLooping" + + messageChannelSuffix, + getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList<>(); + ArrayList args = (ArrayList) message; + Long textureIdArg = (Long) args.get(0); + Boolean loopingArg = (Boolean) args.get(1); + try { + api.setLooping(textureIdArg, loopingArg); + wrapped.add(0, null); + } catch (Throwable exception) { + wrapped = wrapError(exception); + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setVolume" + + messageChannelSuffix, + getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList<>(); + ArrayList args = (ArrayList) message; + Long textureIdArg = (Long) args.get(0); + Double volumeArg = (Double) args.get(1); + try { + api.setVolume(textureIdArg, volumeArg); + wrapped.add(0, null); + } catch (Throwable exception) { + wrapped = wrapError(exception); + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setPlaybackSpeed" + + messageChannelSuffix, + getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList<>(); + ArrayList args = (ArrayList) message; + Long textureIdArg = (Long) args.get(0); + Double speedArg = (Double) args.get(1); + try { + api.setPlaybackSpeed(textureIdArg, speedArg); + wrapped.add(0, null); + } catch (Throwable exception) { + wrapped = wrapError(exception); + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.play" + + messageChannelSuffix, + getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList<>(); + ArrayList args = (ArrayList) message; + Long textureIdArg = (Long) args.get(0); + try { + api.play(textureIdArg); + wrapped.add(0, null); + } catch (Throwable exception) { + wrapped = wrapError(exception); + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.position" + + messageChannelSuffix, + getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList<>(); + ArrayList args = (ArrayList) message; + Long textureIdArg = (Long) args.get(0); + try { + Long output = api.position(textureIdArg); + wrapped.add(0, output); + } catch (Throwable exception) { + wrapped = wrapError(exception); + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.seekTo" + + messageChannelSuffix, + getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList<>(); + ArrayList args = (ArrayList) message; + Long textureIdArg = (Long) args.get(0); + Long positionArg = (Long) args.get(1); + try { + api.seekTo(textureIdArg, positionArg); + wrapped.add(0, null); + } catch (Throwable exception) { + wrapped = wrapError(exception); + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.pause" + + messageChannelSuffix, + getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList<>(); + ArrayList args = (ArrayList) message; + Long textureIdArg = (Long) args.get(0); + try { + api.pause(textureIdArg); + wrapped.add(0, null); + } catch (Throwable exception) { + wrapped = wrapError(exception); + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, + "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setMixWithOthers" + + messageChannelSuffix, + getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList<>(); + ArrayList args = (ArrayList) message; + Boolean mixWithOthersArg = (Boolean) args.get(0); + try { + api.setMixWithOthers(mixWithOthersArg); + wrapped.add(0, null); + } catch (Throwable exception) { + wrapped = wrapError(exception); + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + } + } +} diff --git a/packages/video_player/video_player_android/android/src/main/kotlin/io/flutter/plugins/videoplayer/Messages.kt b/packages/video_player/video_player_android/android/src/main/kotlin/io/flutter/plugins/videoplayer/Messages.kt deleted file mode 100644 index b7d907bcb4ba..000000000000 --- a/packages/video_player/video_player_android/android/src/main/kotlin/io/flutter/plugins/videoplayer/Messages.kt +++ /dev/null @@ -1,391 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// Autogenerated from Pigeon (v22.5.0), do not edit directly. -// See also: https://pub.dev/packages/pigeon -@file:Suppress("UNCHECKED_CAST", "ArrayInDataClass") - -package io.flutter.plugins.videoplayer - -import android.util.Log -import io.flutter.plugin.common.BasicMessageChannel -import io.flutter.plugin.common.BinaryMessenger -import io.flutter.plugin.common.MessageCodec -import io.flutter.plugin.common.StandardMessageCodec -import java.io.ByteArrayOutputStream -import java.nio.ByteBuffer - -private fun wrapResult(result: Any?): List { - return listOf(result) -} - -private fun wrapError(exception: Throwable): List { - return if (exception is FlutterError) { - listOf(exception.code, exception.message, exception.details) - } else { - listOf( - exception.javaClass.simpleName, - exception.toString(), - "Cause: " + exception.cause + ", Stacktrace: " + Log.getStackTraceString(exception)) - } -} - -/** - * Error class for passing custom error details to Flutter via a thrown PlatformException. - * - * @property code The error code. - * @property message The error message. - * @property details The error details. Must be a datatype supported by the api codec. - */ -class FlutterError( - val code: String, - override val message: String? = null, - val details: Any? = null -) : Throwable() - -/** Generated class from Pigeon that represents data sent in messages. */ -data class CreateMessage( - val asset: String? = null, - val uri: String? = null, - val packageName: String? = null, - val formatHint: String? = null, - val httpHeaders: Map -) { - companion object { - fun fromList(pigeonVar_list: List): CreateMessage { - val asset = pigeonVar_list[0] as String? - val uri = pigeonVar_list[1] as String? - val packageName = pigeonVar_list[2] as String? - val formatHint = pigeonVar_list[3] as String? - val httpHeaders = pigeonVar_list[4] as Map - return CreateMessage(asset, uri, packageName, formatHint, httpHeaders) - } - } - - fun toList(): List { - return listOf( - asset, - uri, - packageName, - formatHint, - httpHeaders, - ) - } -} - -private open class MessagesPigeonCodec : StandardMessageCodec() { - override fun readValueOfType(type: Byte, buffer: ByteBuffer): Any? { - return when (type) { - 129.toByte() -> { - return (readValue(buffer) as? List)?.let { CreateMessage.fromList(it) } - } - else -> super.readValueOfType(type, buffer) - } - } - - override fun writeValue(stream: ByteArrayOutputStream, value: Any?) { - when (value) { - is CreateMessage -> { - stream.write(129) - writeValue(stream, value.toList()) - } - else -> super.writeValue(stream, value) - } - } -} - -/** Generated interface from Pigeon that represents a handler of messages from Flutter. */ -interface AndroidVideoPlayerApi { - fun initialize() - - fun create(msg: CreateMessage): Long - - fun dispose(textureId: Long) - - fun setLooping(textureId: Long, looping: Boolean) - - fun setVolume(textureId: Long, volume: Double) - - fun setPlaybackSpeed(textureId: Long, speed: Double) - - fun play(textureId: Long) - - fun position(textureId: Long): Long - - fun seekTo(textureId: Long, position: Long) - - fun pause(textureId: Long) - - fun setMixWithOthers(mixWithOthers: Boolean) - - companion object { - /** The codec used by AndroidVideoPlayerApi. */ - val codec: MessageCodec by lazy { MessagesPigeonCodec() } - /** - * Sets up an instance of `AndroidVideoPlayerApi` to handle messages through the - * `binaryMessenger`. - */ - @JvmOverloads - fun setUp( - binaryMessenger: BinaryMessenger, - api: AndroidVideoPlayerApi?, - messageChannelSuffix: String = "" - ) { - val separatedMessageChannelSuffix = - if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else "" - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.initialize$separatedMessageChannelSuffix", - codec) - if (api != null) { - channel.setMessageHandler { _, reply -> - val wrapped: List = - try { - api.initialize() - listOf(null) - } catch (exception: Throwable) { - wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } - } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.create$separatedMessageChannelSuffix", - codec) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val msgArg = args[0] as CreateMessage - val wrapped: List = - try { - listOf(api.create(msgArg)) - } catch (exception: Throwable) { - wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } - } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.dispose$separatedMessageChannelSuffix", - codec) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val textureIdArg = args[0] as Long - val wrapped: List = - try { - api.dispose(textureIdArg) - listOf(null) - } catch (exception: Throwable) { - wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } - } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setLooping$separatedMessageChannelSuffix", - codec) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val textureIdArg = args[0] as Long - val loopingArg = args[1] as Boolean - val wrapped: List = - try { - api.setLooping(textureIdArg, loopingArg) - listOf(null) - } catch (exception: Throwable) { - wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } - } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setVolume$separatedMessageChannelSuffix", - codec) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val textureIdArg = args[0] as Long - val volumeArg = args[1] as Double - val wrapped: List = - try { - api.setVolume(textureIdArg, volumeArg) - listOf(null) - } catch (exception: Throwable) { - wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } - } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setPlaybackSpeed$separatedMessageChannelSuffix", - codec) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val textureIdArg = args[0] as Long - val speedArg = args[1] as Double - val wrapped: List = - try { - api.setPlaybackSpeed(textureIdArg, speedArg) - listOf(null) - } catch (exception: Throwable) { - wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } - } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.play$separatedMessageChannelSuffix", - codec) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val textureIdArg = args[0] as Long - val wrapped: List = - try { - api.play(textureIdArg) - listOf(null) - } catch (exception: Throwable) { - wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } - } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.position$separatedMessageChannelSuffix", - codec) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val textureIdArg = args[0] as Long - val wrapped: List = - try { - listOf(api.position(textureIdArg)) - } catch (exception: Throwable) { - wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } - } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.seekTo$separatedMessageChannelSuffix", - codec) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val textureIdArg = args[0] as Long - val positionArg = args[1] as Long - val wrapped: List = - try { - api.seekTo(textureIdArg, positionArg) - listOf(null) - } catch (exception: Throwable) { - wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } - } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.pause$separatedMessageChannelSuffix", - codec) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val textureIdArg = args[0] as Long - val wrapped: List = - try { - api.pause(textureIdArg) - listOf(null) - } catch (exception: Throwable) { - wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } - } - run { - val channel = - BasicMessageChannel( - binaryMessenger, - "dev.flutter.pigeon.video_player_android.AndroidVideoPlayerApi.setMixWithOthers$separatedMessageChannelSuffix", - codec) - if (api != null) { - channel.setMessageHandler { message, reply -> - val args = message as List - val mixWithOthersArg = args[0] as Boolean - val wrapped: List = - try { - api.setMixWithOthers(mixWithOthersArg) - listOf(null) - } catch (exception: Throwable) { - wrapError(exception) - } - reply.reply(wrapped) - } - } else { - channel.setMessageHandler(null) - } - } - } - } -} diff --git a/packages/video_player/video_player_android/pigeons/messages.dart b/packages/video_player/video_player_android/pigeons/messages.dart index e9ca144f5428..37bde3dcda5f 100644 --- a/packages/video_player/video_player_android/pigeons/messages.dart +++ b/packages/video_player/video_player_android/pigeons/messages.dart @@ -7,9 +7,8 @@ import 'package:pigeon/pigeon.dart'; @ConfigurePigeon(PigeonOptions( dartOut: 'lib/src/messages.g.dart', dartTestOut: 'test/test_api.g.dart', - kotlinOut: - 'android/src/main/kotlin/io/flutter/plugins/videoplayer/Messages.kt', - kotlinOptions: KotlinOptions( + javaOut: 'android/src/main/java/io/flutter/plugins/videoplayer/Messages.java', + javaOptions: JavaOptions( package: 'io.flutter.plugins.videoplayer', ), copyrightHeader: 'pigeons/copyright.txt', From 9cb96c5cb252960ab73a60058b52a3f410fb3dd2 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 21 Oct 2024 14:46:56 -0400 Subject: [PATCH 4/5] Adjust types for Java --- .../videoplayer/VideoPlayerPlugin.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java index 65c32e70b620..02a645d3c321 100644 --- a/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java +++ b/packages/video_player/video_player_android/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayerPlugin.java @@ -13,6 +13,8 @@ import io.flutter.embedding.engine.plugins.FlutterPlugin; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.EventChannel; +import io.flutter.plugins.videoplayer.Messages.AndroidVideoPlayerApi; +import io.flutter.plugins.videoplayer.Messages.CreateMessage; import io.flutter.view.TextureRegistry; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; @@ -86,7 +88,7 @@ public void initialize() { } @Override - public long create(@NonNull CreateMessage arg) { + public @NonNull Long create(@NonNull CreateMessage arg) { TextureRegistry.SurfaceProducer handle = flutterState.textureRegistry.createSurfaceProducer(); EventChannel eventChannel = new EventChannel( @@ -151,38 +153,38 @@ private VideoPlayer getPlayer(long textureId) { } @Override - public void dispose(long textureId) { + public void dispose(@NonNull Long textureId) { VideoPlayer player = getPlayer(textureId); player.dispose(); videoPlayers.remove(textureId); } @Override - public void setLooping(long textureId, boolean looping) { + public void setLooping(@NonNull Long textureId, @NonNull Boolean looping) { VideoPlayer player = getPlayer(textureId); player.setLooping(looping); } @Override - public void setVolume(long textureId, double volume) { + public void setVolume(@NonNull Long textureId, @NonNull Double volume) { VideoPlayer player = getPlayer(textureId); player.setVolume(volume); } @Override - public void setPlaybackSpeed(long textureId, double speed) { + public void setPlaybackSpeed(@NonNull Long textureId, @NonNull Double speed) { VideoPlayer player = getPlayer(textureId); player.setPlaybackSpeed(speed); } @Override - public void play(long textureId) { + public void play(@NonNull Long textureId) { VideoPlayer player = getPlayer(textureId); player.play(); } @Override - public long position(long textureId) { + public @NonNull Long position(@NonNull Long textureId) { VideoPlayer player = getPlayer(textureId); long position = player.getPosition(); player.sendBufferingUpdate(); @@ -190,19 +192,19 @@ public long position(long textureId) { } @Override - public void seekTo(long textureId, long position) { + public void seekTo(@NonNull Long textureId, @NonNull Long position) { VideoPlayer player = getPlayer(textureId); - player.seekTo((int) position); + player.seekTo(position.intValue()); } @Override - public void pause(long textureId) { + public void pause(@NonNull Long textureId) { VideoPlayer player = getPlayer(textureId); player.pause(); } @Override - public void setMixWithOthers(boolean mixWithOthers) { + public void setMixWithOthers(@NonNull Boolean mixWithOthers) { options.mixWithOthers = mixWithOthers; } @@ -235,11 +237,11 @@ private static final class FlutterState { } void startListening(VideoPlayerPlugin methodCallHandler, BinaryMessenger messenger) { - AndroidVideoPlayerApi.Companion.setUp(messenger, methodCallHandler); + AndroidVideoPlayerApi.setUp(messenger, methodCallHandler); } void stopListening(BinaryMessenger messenger) { - AndroidVideoPlayerApi.Companion.setUp(messenger, null); + AndroidVideoPlayerApi.setUp(messenger, null); } } } From 684cf0ba854368bf29a07b977808db483f26f08e Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 21 Oct 2024 15:00:57 -0400 Subject: [PATCH 5/5] Version bump --- packages/video_player/video_player_android/CHANGELOG.md | 4 ++++ packages/video_player/video_player_android/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/video_player/video_player_android/CHANGELOG.md b/packages/video_player/video_player_android/CHANGELOG.md index 6c433bb3c341..81551a13cdeb 100644 --- a/packages/video_player/video_player_android/CHANGELOG.md +++ b/packages/video_player/video_player_android/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.7.14 + +* Updates internal Pigeon API to use newer features. + ## 2.7.13 * When `AndroidVideoPlayer` attempts to operate on a `textureId` that is not diff --git a/packages/video_player/video_player_android/pubspec.yaml b/packages/video_player/video_player_android/pubspec.yaml index f22ffcb6e0e1..0eee37495de4 100644 --- a/packages/video_player/video_player_android/pubspec.yaml +++ b/packages/video_player/video_player_android/pubspec.yaml @@ -2,7 +2,7 @@ name: video_player_android description: Android implementation of the video_player plugin. repository: https://github.com/flutter/packages/tree/main/packages/video_player/video_player_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22 -version: 2.7.13 +version: 2.7.14 environment: sdk: ^3.5.0