summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Kast <julian@livio.com>2020-02-27 14:01:30 -0500
committerJulian Kast <julian@livio.com>2020-02-27 14:01:30 -0500
commitb347dbae155e1542509bac5fca18d3e0a8f8214f (patch)
treec55a98fec14a8ac215d01822f694da4eb55b2b69
parente00e9a64d0a1027191ba3674672c6a5af3283026 (diff)
parent9b43ce1a26d49260fc1a2ac6b9665103e9aeaf0b (diff)
downloadsdl_android-b347dbae155e1542509bac5fca18d3e0a8f8214f.tar.gz
Merge branch 'develop' of https://github.com/smartdevicelink/sdl_java_suite into bugfix/issue_1276
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java76
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/file/BaseFileManager.java20
2 files changed, 86 insertions, 10 deletions
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java
index dd4e5a534..828f0a10d 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java
@@ -502,7 +502,7 @@ public class FileManagerTests extends AndroidTestCase2 {
assertEquals(Test.GENERAL_INT, fileManager.getBytesAvailable());
}
- public void testFileUploadFailure(){
+ public void testFileUploadFailure() {
ISdl internalInterface = mock(ISdl.class);
doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class));
@@ -525,12 +525,16 @@ public class FileManagerTests extends AndroidTestCase2 {
});
}
- public void testFileUploadForStaticIcon(){
+ /**
+ * Testing uploadFile for a staticIcon, verifying that it doesn't actually upload.
+ */
+ public void testFileUploadForStaticIcon() {
ISdl internalInterface = mock(ISdl.class);
- doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class));
+ doAnswer(onListFilesSuccess).when(internalInterface).sendRPC(any(ListFiles.class));
- final FileManager fileManager = new FileManager(internalInterface, mTestContext);
+ FileManagerConfig fileManagerConfig = new FileManagerConfig();
+ final FileManager fileManager = new FileManager(internalInterface, mTestContext, fileManagerConfig);
fileManager.start(new CompletionListener() {
@Override
public void onComplete(boolean success) {
@@ -544,6 +548,70 @@ public class FileManagerTests extends AndroidTestCase2 {
});
}
});
+ verify(internalInterface, times(1)).sendRPC(any(RPCMessage.class));
+ }
+
+ /**
+ * Testing uploadFiles for staticIcons, verifying that it doesn't actually upload.
+ */
+ public void testMultipleFileUploadsForStaticIcon() {
+ ISdl internalInterface = mock(ISdl.class);
+
+ doAnswer(onListFilesSuccess).when(internalInterface).sendRPC(any(ListFiles.class));
+ doAnswer(onListFileUploadSuccess).when(internalInterface).sendRequests(any(List.class), any(OnMultipleRequestListener.class));
+
+ FileManagerConfig fileManagerConfig = new FileManagerConfig();
+ final FileManager fileManager = new FileManager(internalInterface, mTestContext, fileManagerConfig);
+ fileManager.start(new CompletionListener() {
+ @Override
+ public void onComplete(boolean success) {
+ assertTrue(success);
+ SdlArtwork artwork = new SdlArtwork(StaticIconName.ALBUM);
+ SdlArtwork artwork2 = new SdlArtwork(StaticIconName.FILENAME);
+ List<SdlArtwork> testStaticIconUpload = new ArrayList<>();
+ testStaticIconUpload.add(artwork);
+ testStaticIconUpload.add(artwork2);
+ fileManager.uploadFiles(testStaticIconUpload, new MultipleFileCompletionListener() {
+ @Override
+ public void onComplete(Map<String, String> errors) {
+ assertTrue(errors == null);
+ }
+ });
+ }
+ });
+ verify(internalInterface, times(0)).sendRequests(any(List.class), any(OnMultipleRequestListener.class));
+ }
+
+ /**
+ * Testing uploadFiles for static icons and nonStatic icons in the same list.
+ */
+ public void testMultipleFileUploadsForPartialStaticIcon() {
+ ISdl internalInterface = mock(ISdl.class);
+
+ doAnswer(onListFilesSuccess).when(internalInterface).sendRPC(any(ListFiles.class));
+ doAnswer(onListFileUploadSuccess).when(internalInterface).sendRequests(any(List.class), any(OnMultipleRequestListener.class));
+
+ FileManagerConfig fileManagerConfig = new FileManagerConfig();
+ final FileManager fileManager = new FileManager(internalInterface, mTestContext, fileManagerConfig);
+ fileManager.start(new CompletionListener() {
+ @Override
+ public void onComplete(boolean success) {
+ assertTrue(success);
+ SdlArtwork artwork = new SdlArtwork(StaticIconName.ALBUM);
+ SdlArtwork artwork2 = new SdlArtwork(StaticIconName.FILENAME);
+ List<SdlFile> testFileuploads = new ArrayList<>();
+ testFileuploads.add(artwork);
+ testFileuploads.add(artwork2);
+ testFileuploads.add(validFile);
+ fileManager.uploadFiles(testFileuploads, new MultipleFileCompletionListener() {
+ @Override
+ public void onComplete(Map<String, String> errors) {
+ assertTrue(errors == null);
+ }
+ });
+ }
+ });
+ verify(internalInterface, times(1)).sendRequests(any(List.class), any(OnMultipleRequestListener.class));
}
/**
diff --git a/base/src/main/java/com/smartdevicelink/managers/file/BaseFileManager.java b/base/src/main/java/com/smartdevicelink/managers/file/BaseFileManager.java
index b2c9bd8a2..89c99d167 100644
--- a/base/src/main/java/com/smartdevicelink/managers/file/BaseFileManager.java
+++ b/base/src/main/java/com/smartdevicelink/managers/file/BaseFileManager.java
@@ -386,16 +386,24 @@ abstract class BaseFileManager extends BaseSubManager {
* @param files list of SdlFiles with file name and one of A) fileData, B) Uri, or C) resourceID set
* @param listener callback that is called once core responds to all upload requests
*/
- public void uploadFiles(@NonNull List<? extends SdlFile> files, final MultipleFileCompletionListener listener){
- if(files.isEmpty()){
+ public void uploadFiles(@NonNull List<? extends SdlFile> files, final MultipleFileCompletionListener listener) {
+ if (files.isEmpty()) {
return;
}
final List<PutFile> putFileRequests = new ArrayList<>();
- for(SdlFile file : files){
- putFileRequests.add(createPutFile(file));
+ for (SdlFile file : files) {
+ if (!file.isStaticIcon()) {
+ putFileRequests.add(createPutFile(file));
+ }
+ }
+ // if all files are static icons we complete listener with no errors
+ if (putFileRequests.isEmpty()) {
+ Log.w(TAG, "Static icons don't need to be uploaded");
+ listener.onComplete(null);
+ } else {
+ final Map<String, String> errors = new HashMap<>();
+ sendMultipleFileOperations(putFileRequests, listener, errors);
}
- final Map<String, String> errors = new HashMap<>();
- sendMultipleFileOperations(putFileRequests, listener, errors);
}
/**