From 718b9071a99efa7f269f2bb8c3a3fa2111d04813 Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Wed, 18 Apr 2018 12:53:39 -0400 Subject: [PATCH] More interface details for the cast framework --- .../android/gms/common/images/WebImage.java | 39 +++++++++++++++++++ .../google/android/gms/cast/CastDevice.java | 18 +++++++-- .../gms/cast/framework/ICastContext.aidl | 19 +++++---- .../cast/framework/ICastStateListener.aidl | 8 ++++ .../gms/cast/framework/IDiscoveryManager.aidl | 12 ++++++ .../framework/IDiscoveryManagerListener.aidl | 8 ++++ .../android/gms/cast/framework/ISession.aidl | 9 ++++- .../gms/cast/framework/ISessionManager.aidl | 12 +++--- .../framework/ISessionManagerListener.aidl | 16 ++++++++ .../gms/cast/framework/ISessionProvider.aidl | 9 +++++ .../gms/cast/framework/ISessionProxy.aidl | 14 ++++++- .../cast/framework/internal/IMediaRouter.aidl | 17 +++++++- .../internal/IMediaRouterCallback.aidl | 12 ++++++ 13 files changed, 172 insertions(+), 21 deletions(-) create mode 100644 play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastStateListener.aidl create mode 100644 play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManager.aidl create mode 100644 play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManagerListener.aidl create mode 100644 play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionManagerListener.aidl create mode 100644 play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionProvider.aidl create mode 100644 play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouterCallback.aidl diff --git a/play-services-basement/src/main/java/com/google/android/gms/common/images/WebImage.java b/play-services-basement/src/main/java/com/google/android/gms/common/images/WebImage.java index 07b5e5f1..67a825dd 100644 --- a/play-services-basement/src/main/java/com/google/android/gms/common/images/WebImage.java +++ b/play-services-basement/src/main/java/com/google/android/gms/common/images/WebImage.java @@ -16,8 +16,47 @@ package com.google.android.gms.common.images; +import android.net.Uri; + import org.microg.safeparcel.AutoSafeParcelable; +import org.microg.safeparcel.SafeParceled; public class WebImage extends AutoSafeParcelable { public static final Creator CREATOR = new AutoCreator(WebImage.class); + + public WebImage (Uri uri) { + this.uri = uri; + } + + @SafeParceled(1) + private int versionCode = 1; + + @SafeParceled(2) + private final Uri uri; + + @SafeParceled(3) + private final int width = 0; + + @SafeParceled(4) + private final int height = 0; + + public Uri getUrl() + { + return uri; + } + + public int getWidth() + { + return width; + } + + public int getHeight() + { + return height; + } + + public String toString() + { + return String.format("Image %dx%d %s", new Object[] { Integer.valueOf(width), Integer.valueOf(height), uri.toString() }); + } } diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDevice.java b/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDevice.java index 5de9c378..01a49738 100644 --- a/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDevice.java +++ b/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDevice.java @@ -33,6 +33,10 @@ import java.util.List; public class CastDevice extends AutoSafeParcelable { private static final String EXTRA_CAST_DEVICE = "com.google.android.gms.cast.EXTRA_CAST_DEVICE"; + public CastDevice (String deviceId) { + this.deviceId = deviceId; + } + /** * Video-output device capability. */ @@ -78,12 +82,15 @@ public class CastDevice extends AutoSafeParcelable { @SafeParceled(value = 8, subClass = WebImage.class) private ArrayList icons; - @SafeParceled(8) + @SafeParceled(9) private int capabilities; - @SafeParceled(9) + @SafeParceled(10) private int status; + @SafeParceled(11) + private String unknown; // TODO: Need to figure this one out + public String getDeviceId() { return deviceId; } @@ -125,7 +132,12 @@ public class CastDevice extends AutoSafeParcelable { } public boolean hasCapabilities(int[] capabilities) { - return false; + for (int capability : capabilities) { + if (!this.hasCapability(capability)) { + return false; + } + } + return true; } public boolean hasCapability(int capability) { diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastContext.aidl b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastContext.aidl index 25c4ec51..dedb8b2c 100644 --- a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastContext.aidl +++ b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastContext.aidl @@ -1,15 +1,20 @@ package com.google.android.gms.cast.framework; import com.google.android.gms.cast.framework.ISessionManager; +import com.google.android.gms.cast.framework.IDiscoveryManager; import com.google.android.gms.dynamic.IObjectWrapper; interface ICastContext { Bundle getMergedSelectorAsBundle() = 0; boolean isApplicationVisible() = 1; - //void addAppVisibilityListener(IAppVisibilityListener listener) = 2; - //void removeAppVisibilityListener(IAppVisibilityListener listener) = 3; - ISessionManager getSessionManager() = 4; - void destroy() = 5; - void onActivityResumed(in IObjectWrapper activity) = 6; - void onActivityPaused(in IObjectWrapper activity) = 7; -} \ No newline at end of file + //void removeAppVisibilityListener(IAppVisibilityListener listener) = 2; + //void addAppVisibilityListener(IAppVisibilityListener listener) = 3; + ISessionManager getSessionManagerImpl() = 4; + IDiscoveryManager getDiscoveryManagerImpl() = 5; + + void destroy() = 6; + void onActivityResumed(in IObjectWrapper activity) = 7; + void onActivityPaused(in IObjectWrapper activity) = 8; + IObjectWrapper getWrappedThis() = 9; + void unknown(String s1, in Map m1) = 10; // TODO +} diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastStateListener.aidl b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastStateListener.aidl new file mode 100644 index 00000000..8b5a7a72 --- /dev/null +++ b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastStateListener.aidl @@ -0,0 +1,8 @@ +package com.google.android.gms.cast.framework; + +import com.google.android.gms.dynamic.IObjectWrapper; + +interface ICastStateListener { + IObjectWrapper getWrappedThis() = 0; + void onCastStateChanged(int newState) = 1; +} diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManager.aidl b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManager.aidl new file mode 100644 index 00000000..0c775ac0 --- /dev/null +++ b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManager.aidl @@ -0,0 +1,12 @@ +package com.google.android.gms.cast.framework; + +import com.google.android.gms.cast.framework.IDiscoveryManagerListener; +import com.google.android.gms.dynamic.IObjectWrapper; + +interface IDiscoveryManager { + void startDiscovery() = 0; // Maybe? + void stopDiscovery() = 1; // Maybe? + void addDiscoveryManagerListener(IDiscoveryManagerListener listener) = 2; + void removeDiscoveryManagerListener(IDiscoveryManagerListener listener) = 3; + IObjectWrapper getWrappedThis() = 4; +} diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManagerListener.aidl b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManagerListener.aidl new file mode 100644 index 00000000..701a5c24 --- /dev/null +++ b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManagerListener.aidl @@ -0,0 +1,8 @@ +package com.google.android.gms.cast.framework; + +import com.google.android.gms.dynamic.IObjectWrapper; + +interface IDiscoveryManagerListener { + IObjectWrapper getWrappedThis() = 0; + void onDeviceAvailabilityChanged(boolean deviceAvailable) = 1; +} diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISession.aidl b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISession.aidl index 51602ea7..3e938459 100644 --- a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISession.aidl +++ b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISession.aidl @@ -1,5 +1,10 @@ package com.google.android.gms.cast.framework; -interface ISession { +import com.google.android.gms.dynamic.IObjectWrapper; -} \ No newline at end of file +interface ISession { + IObjectWrapper getWrappedThis() = 0; + void notifySessionEnded(int error) = 5; + boolean isConnected() = 10; + boolean isResuming() = 14; +} diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionManager.aidl b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionManager.aidl index c2cc3e66..e4e172c8 100644 --- a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionManager.aidl +++ b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionManager.aidl @@ -1,13 +1,15 @@ package com.google.android.gms.cast.framework; import com.google.android.gms.dynamic.IObjectWrapper; +import com.google.android.gms.cast.framework.ISessionManagerListener; +import com.google.android.gms.cast.framework.ICastStateListener; interface ISessionManager { IObjectWrapper getWrappedCurrentSession() = 0; - //void addSessionManagerListener(ISessionManagerListener listener) = 1; - //void removeSessionManagerListener(ISessionManagerListener listener) = 2; - //void addCastStateListener(ICastStateListener listener) = 3; - //void removeCastStateListener(ICastStateListener listener) = 4; + void addSessionManagerListener(ISessionManagerListener listener) = 1; + void removeSessionManagerListener(ISessionManagerListener listener) = 2; + void addCastStateListener(ICastStateListener listener) = 3; + void removeCastStateListener(ICastStateListener listener) = 4; void endCurrentSession(boolean b, boolean stopCasting) = 5; IObjectWrapper getWrappedThis() = 6; -} \ No newline at end of file +} diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionManagerListener.aidl b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionManagerListener.aidl new file mode 100644 index 00000000..d09cd52e --- /dev/null +++ b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionManagerListener.aidl @@ -0,0 +1,16 @@ +package com.google.android.gms.cast.framework; + +import com.google.android.gms.dynamic.IObjectWrapper; + +interface ISessionManagerListener { + IObjectWrapper getWrappedThis() = 0; + void onSessionStarting(IObjectWrapper session) = 1; + void onSessionStartFailed(IObjectWrapper session, int error) = 2; + void onSessionStarted(IObjectWrapper session, String sessionId) = 3; + void onSessionResumed(IObjectWrapper session, boolean wasSuspended) = 4; + void onSessionEnding(IObjectWrapper session) = 5; + void onSessionEnded(IObjectWrapper session, int error) = 6; + void onSessionResuming(IObjectWrapper session, String sessionId) = 7; + void onSessionResumeFailed(IObjectWrapper session, int error) = 8; + void onSessionSuspended(IObjectWrapper session, int reason) = 9; +} diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionProvider.aidl b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionProvider.aidl new file mode 100644 index 00000000..3962e6ea --- /dev/null +++ b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionProvider.aidl @@ -0,0 +1,9 @@ +package com.google.android.gms.cast.framework; + +import com.google.android.gms.dynamic.IObjectWrapper; + +interface ISessionProvider { + IObjectWrapper getWrappedSession(String id) = 0; + boolean isSessionRecoverable() = 1; + String getCategory() = 2; +} diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionProxy.aidl b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionProxy.aidl index 7d0a4fad..aa08cc5c 100644 --- a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionProxy.aidl +++ b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionProxy.aidl @@ -1,5 +1,15 @@ package com.google.android.gms.cast.framework; -interface ISessionProxy { +import com.google.android.gms.dynamic.IObjectWrapper; -} \ No newline at end of file +// TODO: Functionality still needs to be determined +interface ISessionProxy { + IObjectWrapper getWrappedThis() = 0; + void method1(in Bundle paramBundle) = 1; + void method2(in Bundle paramBundle) = 2; + void method3(boolean paramBoolean) = 3; + long method4() = 4; + int method5() = 5; + void method6(in Bundle paramBundle) = 6; + void method7(in Bundle paramBundle) = 7; +} diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouter.aidl b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouter.aidl index 73fd0506..7ab659f9 100644 --- a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouter.aidl +++ b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouter.aidl @@ -1,5 +1,18 @@ package com.google.android.gms.cast.framework.internal; -interface IMediaRouter { +import android.os.Bundle; -} \ No newline at end of file +import com.google.android.gms.cast.framework.internal.IMediaRouterCallback; + +interface IMediaRouter { + void registerMediaRouterCallbackImpl(in Bundle selector, IMediaRouterCallback callback) = 0; + void addCallback(in Bundle selector, int flags) = 1; + void removeCallback(in Bundle selector) = 2; + boolean isRouteAvailable(in Bundle selector, int flags) = 3; + void selectRouteById(String routeId) = 4; + void selectDefaultRoute() = 5; + boolean isDefaultRouteSelected() = 6; // Maybe? + Bundle getRouteInfoExtrasById(String routeId) = 7; + String hashKey() = 8; // Maybe? + void clearCallbacks() = 10; +} diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouterCallback.aidl b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouterCallback.aidl new file mode 100644 index 00000000..d28c87c8 --- /dev/null +++ b/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouterCallback.aidl @@ -0,0 +1,12 @@ +package com.google.android.gms.cast.framework.internal; + +import android.os.Bundle; + +interface IMediaRouterCallback { + void onRouteAdded(String routeId, in Bundle extras) = 0; + void onRouteChanged(String routeId, in Bundle extras) = 1; + void onRouteRemoved(String routeId, in Bundle extras) = 2; + void onRouteSelected(String routeId, in Bundle extras) = 3; + void unknown(String routeId, in Bundle extras) = 4; + void onRouteUnselected(String routeId, in Bundle extras, int reason) = 5; +}