Modify testapps for MbmsError and download api
Rename MbmsException -> MbmsError
Change the download testapp to move the destination file itself instead
of relying on the framework
Bug: 30981736
Test: testapps
Change-Id: I216ecf6afa11d8fd10808ddc526c25a4d035a73d
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 f73aec9..dcb7320 100644
--- a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsSampleDownloadService.java
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsSampleDownloadService.java
@@ -35,7 +35,7 @@
import android.telephony.mbms.FileInfo;
import android.telephony.mbms.FileServiceInfo;
import android.telephony.mbms.MbmsDownloadSessionCallback;
-import android.telephony.mbms.MbmsException;
+import android.telephony.mbms.MbmsErrors;
import android.telephony.mbms.UriPathPair;
import android.telephony.mbms.vendor.IMbmsDownloadService;
import android.telephony.mbms.vendor.MbmsDownloadServiceBase;
@@ -72,11 +72,11 @@
int packageUid = Binder.getCallingUid();
String[] packageNames = getPackageManager().getPackagesForUid(packageUid);
if (packageNames == null) {
- return MbmsException.InitializationErrors.ERROR_APP_PERMISSIONS_NOT_GRANTED;
+ return MbmsErrors.InitializationErrors.ERROR_APP_PERMISSIONS_NOT_GRANTED;
}
boolean isUidAllowed = Arrays.stream(packageNames).anyMatch(ALLOWED_PACKAGES::contains);
if (!isUidAllowed) {
- return MbmsException.InitializationErrors.ERROR_APP_PERMISSIONS_NOT_GRANTED;
+ return MbmsErrors.InitializationErrors.ERROR_APP_PERMISSIONS_NOT_GRANTED;
}
// Do initialization with a bit of a delay to simulate work being done.
@@ -90,13 +90,13 @@
mAppReceivers.put(appKey, appReceiver);
} else {
callback.onError(
- MbmsException.InitializationErrors.ERROR_DUPLICATE_INITIALIZE, "");
+ MbmsErrors.InitializationErrors.ERROR_DUPLICATE_INITIALIZE, "");
return;
}
callback.onMiddlewareReady();
}, INITIALIZATION_DELAY);
- return MbmsException.SUCCESS;
+ return MbmsErrors.SUCCESS;
}
@Override
@@ -114,7 +114,7 @@
MbmsDownloadSessionCallback appCallback = mAppCallbacks.get(appKey);
appCallback.onFileServicesUpdated(serviceInfos);
}, SEND_FILE_SERVICE_INFO_DELAY);
- return MbmsException.SUCCESS;
+ return MbmsErrors.SUCCESS;
}
@Override
@@ -125,10 +125,10 @@
checkInitialized(appKey);
if (mActiveDownloadRequests.getOrDefault(appKey, Collections.emptySet()).size() > 0) {
- return MbmsException.DownloadErrors.ERROR_CANNOT_CHANGE_TEMP_FILE_ROOT;
+ return MbmsErrors.DownloadErrors.ERROR_CANNOT_CHANGE_TEMP_FILE_ROOT;
}
mAppTempFileRoots.put(appKey, rootDirectoryPath);
- return MbmsException.SUCCESS;
+ return MbmsErrors.SUCCESS;
}
@Override
@@ -138,7 +138,7 @@
checkInitialized(appKey);
mHandler.post(() -> sendFdRequest(downloadRequest, appKey));
- return MbmsException.SUCCESS;
+ return MbmsErrors.SUCCESS;
}
@Override
@@ -148,10 +148,10 @@
checkInitialized(appKey);
if (!mActiveDownloadRequests.getOrDefault(
appKey, Collections.emptySet()).contains(downloadRequest)) {
- return MbmsException.DownloadErrors.ERROR_UNKNOWN_DOWNLOAD_REQUEST;
+ return MbmsErrors.DownloadErrors.ERROR_UNKNOWN_DOWNLOAD_REQUEST;
}
mActiveDownloadRequests.get(appKey).remove(downloadRequest);
- return MbmsException.SUCCESS;
+ return MbmsErrors.SUCCESS;
}
@Override
@@ -357,7 +357,7 @@
Intent downloadResultIntent =
new Intent(VendorUtils.ACTION_DOWNLOAD_RESULT_INTERNAL);
- downloadResultIntent.putExtra(VendorUtils.EXTRA_REQUEST, request1);
+ downloadResultIntent.putExtra(MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_REQUEST, request1);
downloadResultIntent.putExtra(VendorUtils.EXTRA_FINAL_URI,
tempFile.getFilePathUri());
downloadResultIntent.putExtra(MbmsDownloadSession.EXTRA_MBMS_FILE_INFO, fileToDownload);
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 67d1950..f50536c 100644
--- a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsTestStreamingService.java
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsTestStreamingService.java
@@ -23,7 +23,7 @@
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
-import android.telephony.mbms.MbmsException;
+import android.telephony.mbms.MbmsErrors;
import android.telephony.mbms.MbmsStreamingSessionCallback;
import android.telephony.mbms.StreamingService;
import android.telephony.mbms.StreamingServiceCallback;
@@ -79,11 +79,11 @@
int packageUid = Binder.getCallingUid();
String[] packageNames = getPackageManager().getPackagesForUid(packageUid);
if (packageNames == null) {
- return MbmsException.InitializationErrors.ERROR_APP_PERMISSIONS_NOT_GRANTED;
+ return MbmsErrors.InitializationErrors.ERROR_APP_PERMISSIONS_NOT_GRANTED;
}
boolean isUidAllowed = Arrays.stream(packageNames).anyMatch(ALLOWED_PACKAGES::contains);
if (!isUidAllowed) {
- return MbmsException.InitializationErrors.ERROR_APP_PERMISSIONS_NOT_GRANTED;
+ return MbmsErrors.InitializationErrors.ERROR_APP_PERMISSIONS_NOT_GRANTED;
}
mHandler.postDelayed(() -> {
@@ -92,12 +92,12 @@
mAppCallbacks.put(appKey, callback);
} else {
callback.onError(
- MbmsException.InitializationErrors.ERROR_DUPLICATE_INITIALIZE, "");
+ MbmsErrors.InitializationErrors.ERROR_DUPLICATE_INITIALIZE, "");
return;
}
callback.onMiddlewareReady();
}, INITIALIZATION_DELAY);
- return MbmsException.SUCCESS;
+ return MbmsErrors.SUCCESS;
}
@Override
@@ -117,7 +117,7 @@
mHandler.sendMessageDelayed(
mHandler.obtainMessage(SEND_STREAMING_SERVICES_LIST, args),
SEND_SERVICE_LIST_DELAY);
- return MbmsException.SUCCESS;
+ return MbmsErrors.SUCCESS;
}
@Override
@@ -130,14 +130,14 @@
if (StreamStateTracker.getStreamingState(appKey, serviceId) ==
StreamingService.STATE_STARTED) {
- return MbmsException.StreamingErrors.ERROR_DUPLICATE_START_STREAM;
+ return MbmsErrors.StreamingErrors.ERROR_DUPLICATE_START_STREAM;
}
mHandler.postDelayed(
() -> StreamStateTracker.startStreaming(appKey, serviceId, callback,
StreamingService.REASON_BY_USER_REQUEST),
START_STREAMING_DELAY);
- return MbmsException.SUCCESS;
+ return MbmsErrors.SUCCESS;
}
@Override
diff --git a/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/DownloadCompletionReceiver.java b/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/DownloadCompletionReceiver.java
index e434e9a..3c94b76 100644
--- a/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/DownloadCompletionReceiver.java
+++ b/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/DownloadCompletionReceiver.java
@@ -21,6 +21,14 @@
import android.content.Intent;
import android.net.Uri;
import android.telephony.MbmsDownloadSession;
+import android.telephony.mbms.DownloadRequest;
+import android.telephony.mbms.FileInfo;
+
+import java.io.IOException;
+import java.nio.file.FileSystems;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
public class DownloadCompletionReceiver extends BroadcastReceiver {
@Override
@@ -33,7 +41,47 @@
}
Uri completedFile = intent.getParcelableExtra(
MbmsDownloadSession.EXTRA_MBMS_COMPLETED_FILE_URI);
- EmbmsTestDownloadApp.getInstance().onDownloadDone(completedFile);
+ FileInfo completedFileInfo = intent.getParcelableExtra(
+ MbmsDownloadSession.EXTRA_MBMS_FILE_INFO);
+ DownloadRequest request = intent.getParcelableExtra(
+ MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_REQUEST);
+
+ Path destinationFile = getDestinationFile(context,
+ request.getFileServiceId(), completedFileInfo);
+ Path sourceFile = FileSystems.getDefault().getPath(completedFile.getPath());
+ try {
+ Files.move(sourceFile, destinationFile, StandardCopyOption.REPLACE_EXISTING);
+ } catch (IOException e) {
+ return;
+ }
+
+ EmbmsTestDownloadApp.getInstance().onDownloadDone(
+ Uri.fromFile(destinationFile.toFile()));
+ }
+ }
+
+ private Path getDestinationFile(Context context, String serviceId, FileInfo info) {
+ try {
+ if (serviceId.contains("2")) {
+ String fileName = info.getUri().getLastPathSegment();
+ Path destination = FileSystems.getDefault()
+ .getPath(context.getFilesDir().getPath(), "images/animals/", fileName)
+ .normalize();
+ if (!Files.isDirectory(destination.getParent())) {
+ Files.createDirectory(destination.getParent());
+ }
+ return destination;
+ } else {
+ Path destination = FileSystems.getDefault()
+ .getPath(context.getFilesDir().getPath(), "images/image.png")
+ .normalize();
+ if (!Files.isDirectory(destination.getParent())) {
+ Files.createDirectory(destination.getParent());
+ }
+ return destination;
+ }
+ } catch (IOException e) {
+ return null;
}
}
}
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 9611cca..23f2cc5 100644
--- a/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/EmbmsTestDownloadApp.java
+++ b/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/EmbmsTestDownloadApp.java
@@ -42,7 +42,6 @@
import android.widget.Toast;
import java.io.File;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -310,23 +309,13 @@
}
private void performDownload(FileServiceInfo info) {
- File destination = null;
Uri.Builder sourceUriBuilder = new Uri.Builder()
.scheme(FILE_DOWNLOAD_SCHEME)
.authority(FILE_AUTHORITY);
- try {
- if (info.getFiles().size() > 1) {
- destination = new File(getFilesDir(), "images/animals/").getCanonicalFile();
- destination.mkdirs();
- clearDirectory(destination);
- sourceUriBuilder.path("/*");
- } else {
- destination = new File(getFilesDir(), "images/image.png").getCanonicalFile();
- destination.delete();
- sourceUriBuilder.path("/image.png");
- }
- } catch (IOException e) {
- // ignore
+ if (info.getServiceId().contains("2")) {
+ sourceUriBuilder.path("/*");
+ } else {
+ sourceUriBuilder.path("/image.png");
}
Intent completionIntent = new Intent(DOWNLOAD_DONE_ACTION);
@@ -335,7 +324,6 @@
DownloadRequest request = new DownloadRequest.Builder()
.setServiceInfo(info)
.setSource(sourceUriBuilder.build())
- .setDest(Uri.fromFile(destination))
.setAppIntent(completionIntent)
.setSubscriptionId(SubscriptionManager.getDefaultSubscriptionId())
.build();
@@ -343,13 +331,4 @@
mDownloadManager.download(request);
mDownloadRequestAdapter.add(request);
}
-
- private static void clearDirectory(File directory) {
- for (File file: directory.listFiles()) {
- if (file.isDirectory()) {
- clearDirectory(file);
- }
- file.delete();
- }
- }
}
diff --git a/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/EmbmsTestStreamingApp.java b/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/EmbmsTestStreamingApp.java
index 39d82e6..0546c9d 100644
--- a/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/EmbmsTestStreamingApp.java
+++ b/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/EmbmsTestStreamingApp.java
@@ -40,6 +40,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.NoSuchElementException;
public class EmbmsTestStreamingApp extends Activity {
private MbmsStreamingSessionCallback mStreamingListener = new MbmsStreamingSessionCallback() {
@@ -66,16 +67,13 @@
}
private String getName(StreamingServiceInfo info) {
- Map<Locale, String> names = info.getNames();
- String name = "<No Name>";
- if (!names.isEmpty()) {
- Locale locale = Locale.getDefault();
- if (!names.containsKey(locale)) {
- locale = names.keySet().iterator().next();
- }
- name = names.get(locale);
+ Locale locale = Locale.getDefault();
+ try {
+ return info.getNameForLocale(locale).toString();
+ } catch (NoSuchElementException e) {
+ locale = info.getLocales().iterator().next();
+ return info.getNameForLocale(locale).toString();
}
- return name;
}
@Override
@@ -167,8 +165,7 @@
"No streaming service bound", Toast.LENGTH_SHORT).show();
return;
}
- mStreamingManager.requestUpdateStreamingServices(
- Collections.singletonList("Class1"));
+ mStreamingManager.requestUpdateStreamingServices(Collections.singletonList("Class1"));
});
final Spinner serviceSelector = (Spinner) findViewById(R.id.available_streaming_services);