Merge "Modify sample streaming app to use state change reason"
diff --git a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsSampleDownloadService.java b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsSampleDownloadService.java
index a5a1327..5a92165 100644
--- a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsSampleDownloadService.java
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsSampleDownloadService.java
@@ -255,7 +255,8 @@
         // Compose the FILE_DESCRIPTOR_REQUEST_INTENT
         Intent requestIntent = new Intent(MbmsDownloadManager.ACTION_FILE_DESCRIPTOR_REQUEST);
         requestIntent.putExtra(MbmsDownloadManager.EXTRA_SERVICE_INFO,
-                request.getFileServiceInfo());
+                FileServiceRepository.getInstance(this)
+                        .getFileServiceInfoForId(request.getFileServiceId()));
         requestIntent.putExtra(MbmsDownloadManager.EXTRA_FD_COUNT, numFds);
         requestIntent.putExtra(MbmsDownloadManager.EXTRA_TEMP_FILE_ROOT,
                 mAppTempFileRoots.get(appKey));
@@ -286,7 +287,9 @@
             Bundle extras) {
         List<UriPathPair> tempFiles = extras.getParcelableArrayList(
                 MbmsDownloadManager.EXTRA_FREE_URI_LIST);
-        List<FileInfo> filesToDownload = request.getFileServiceInfo().getFiles();
+        List<FileInfo> filesToDownload = FileServiceRepository.getInstance(this)
+                .getFileServiceInfoForId(request.getFileServiceId())
+                .getFiles();
 
         if (tempFiles.size() != filesToDownload.size()) {
             Log.w(LOG_TAG, "Different numbers of temp files and files to download...");
@@ -304,7 +307,7 @@
                 break;
             }
             UriPathPair tempFile = tempFiles.get(i);
-            addTempFileInUse(appKey, request.getFileServiceInfo().getServiceId(),
+            addTempFileInUse(appKey, request.getFileServiceId(),
                     tempFile.getFilePathUri());
             FileInfo fileToDownload = filesToDownload.get(i);
             mHandler.postDelayed(() -> {
@@ -313,7 +316,7 @@
                     return;
                 }
                 downloadSingleFile(appKey, request, tempFile, fileToDownload);
-                removeTempFileInUse(appKey, request.getFileServiceInfo().getServiceId(),
+                removeTempFileInUse(appKey, request.getFileServiceId(),
                         tempFile.getFilePathUri());
             }, FILE_SEPARATION_DELAY * i * mDownloadDelayFactor);
         }
@@ -346,9 +349,17 @@
             result = MbmsDownloadManager.RESULT_CANCELLED;
         }
 
+        // Take a round-trip through the download request serialization to exercise it
+        DownloadRequest request1 = new DownloadRequest.Builder()
+                .setSource(request.getSourceUri())
+                .setSubscriptionId(request.getSubscriptionId())
+                .setServiceId(request.getFileServiceId())
+                .setOpaqueData(request.getOpaqueData())
+                .build();
+
         Intent downloadResultIntent =
                 new Intent(MbmsDownloadManager.ACTION_DOWNLOAD_RESULT_INTERNAL);
-        downloadResultIntent.putExtra(MbmsDownloadManager.EXTRA_REQUEST, request);
+        downloadResultIntent.putExtra(MbmsDownloadManager.EXTRA_REQUEST, request1);
         downloadResultIntent.putExtra(MbmsDownloadManager.EXTRA_FINAL_URI,
                 tempFile.getFilePathUri());
         downloadResultIntent.putExtra(MbmsDownloadManager.EXTRA_FILE_INFO, fileToDownload);
@@ -383,7 +394,8 @@
     }
 
     private int getNumFdsNeededForRequest(DownloadRequest request) {
-        return request.getFileServiceInfo().getFiles().size();
+        return FileServiceRepository.getInstance(this)
+                .getFileServiceInfoForId(request.getFileServiceId()).getFiles().size();
     }
 
     private void addTempFileInUse(FrontendAppIdentifier appKey, String serviceId, Uri tempFileUri) {
diff --git a/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/EmbmsTestDownloadApp.java b/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/EmbmsTestDownloadApp.java
index 890cc1a..80045ce 100644
--- a/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/EmbmsTestDownloadApp.java
+++ b/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/EmbmsTestDownloadApp.java
@@ -354,7 +354,6 @@
         completionIntent.setClass(this, DownloadCompletionReceiver.class);
 
         DownloadRequest request = new DownloadRequest.Builder()
-                .setId(0)
                 .setServiceInfo(info)
                 .setSource(sourceUriBuilder.build())
                 .setDest(Uri.fromFile(destination))