Merge "Modify sample streaming app to use state change reason"
diff --git a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/AppActiveStreams.java b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/AppActiveStreams.java
index 9b3cc6b..dfc7ac9 100644
--- a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/AppActiveStreams.java
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/AppActiveStreams.java
@@ -80,7 +80,7 @@
                 StreamingService.STATE_STOPPED : callbackWithState.getState();
     }
 
-    public void startStreaming(String serviceId, IStreamingServiceCallback callback) {
+    public void startStreaming(String serviceId, IStreamingServiceCallback callback, int reason) {
         if (mStreamStates.get(serviceId) != null) {
             // error - already started
             return;
@@ -95,21 +95,21 @@
                 new StreamCallbackWithState(callback, StreamingService.STATE_STARTED,
                         StreamingService.UNICAST_METHOD));
         try {
-            callback.streamStateUpdated(StreamingService.STATE_STARTED);
+            callback.streamStateUpdated(StreamingService.STATE_STARTED, reason);
             updateStreamingMethod(serviceId);
         } catch (RemoteException e) {
             dispose(serviceId);
         }
     }
 
-    public void stopStreaming(String serviceId) {
+    public void stopStreaming(String serviceId, int reason) {
         StreamCallbackWithState entry = mStreamStates.get(serviceId);
 
         if (entry != null) {
             try {
                 if (entry.getState() != StreamingService.STATE_STOPPED) {
                     entry.setState(StreamingService.STATE_STOPPED);
-                    entry.getCallback().streamStateUpdated(StreamingService.STATE_STOPPED);
+                    entry.getCallback().streamStateUpdated(StreamingService.STATE_STOPPED, reason);
                 }
             } catch (RemoteException e) {
                 dispose(serviceId);
diff --git a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsTestStreamingService.java b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsTestStreamingService.java
index 1205e68..583aca4 100644
--- a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsTestStreamingService.java
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsTestStreamingService.java
@@ -149,7 +149,8 @@
             }
 
             mHandler.postDelayed(
-                    () -> StreamStateTracker.startStreaming(appKey, serviceId, callback),
+                    () -> StreamStateTracker.startStreaming(appKey, serviceId, callback,
+                            StreamingService.REASON_BY_USER_REQUEST),
                     START_STREAMING_DELAY);
             return MbmsException.SUCCESS;
         }
@@ -175,7 +176,8 @@
             checkInitialized(appKey);
             checkServiceExists(serviceId);
 
-            mHandler.post(() -> StreamStateTracker.stopStreaming(appKey, serviceId));
+            mHandler.post(() -> StreamStateTracker.stopStreaming(appKey, serviceId,
+                    StreamingService.REASON_BY_USER_REQUEST));
         }
 
         @Override
diff --git a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/SideChannelReceiver.java b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/SideChannelReceiver.java
index c9d38a0..816921d 100644
--- a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/SideChannelReceiver.java
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/SideChannelReceiver.java
@@ -59,7 +59,6 @@
                 // Increase download latency by a certain factor
                 downloadService.delayDownloads(intent.getIntExtra(EXTRA_DELAY_FACTOR, 1));
                 break;
-
         }
     }
 }
diff --git a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/StreamStateTracker.java b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/StreamStateTracker.java
index bb9494d..de81359 100644
--- a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/StreamStateTracker.java
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/StreamStateTracker.java
@@ -39,24 +39,25 @@
     }
 
     public static void startStreaming(FrontendAppIdentifier appIdentifier, String serviceId,
-            IStreamingServiceCallback callback) {
+            IStreamingServiceCallback callback, int reason) {
         AppActiveStreams appStreams = sPerAppStreamStates.get(appIdentifier);
         if (appStreams == null) {
             appStreams = new AppActiveStreams(appIdentifier);
             sPerAppStreamStates.put(appIdentifier, appStreams);
         }
 
-        appStreams.startStreaming(serviceId, callback);
+        appStreams.startStreaming(serviceId, callback, reason);
     }
 
-    public static void stopStreaming(FrontendAppIdentifier appIdentifier, String serviceId) {
+    public static void stopStreaming(FrontendAppIdentifier appIdentifier, String serviceId,
+            int reason) {
         Log.i(LOG_TAG, "Stopping stream " + serviceId);
         AppActiveStreams appStreams = sPerAppStreamStates.get(appIdentifier);
         if (appStreams == null) {
             // It was never started, so don't bother stopping.
             return;
         }
-        appStreams.stopStreaming(serviceId);
+        appStreams.stopStreaming(serviceId, reason);
     }
 
     public static void dispose(FrontendAppIdentifier appIdentifier, String serviceId) {
diff --git a/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/StreamingServiceTracker.java b/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/StreamingServiceTracker.java
index 9ca4476..b247076 100644
--- a/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/StreamingServiceTracker.java
+++ b/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/StreamingServiceTracker.java
@@ -34,8 +34,8 @@
         }
 
         @Override
-        public void streamStateUpdated(int state) {
-            onStreamStateUpdated(state);
+        public void streamStateUpdated(int state, int reason) {
+            onStreamStateUpdated(state, reason);
         }
 
         @Override
@@ -106,7 +106,7 @@
         return mMethod;
     }
 
-    private void onStreamStateUpdated(int state) {
+    private void onStreamStateUpdated(int state, int reason) {
         if (state == StreamingService.STATE_STARTED && mState != StreamingService.STATE_STARTED) {
             try {
                 mStreamingUri = mStreamingService.getPlaybackUri();
@@ -119,6 +119,9 @@
         }
         mState = state;
         mActivity.updateStreamingState();
+        mActivity.runOnUiThread(() ->
+                Toast.makeText(mActivity, "State change reason: " + reason, Toast.LENGTH_SHORT)
+                        .show());
     }
 
     private void onStreamMethodUpdated(int method) {