summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBilal Alsharifi <599206+bilal-alsharifi@users.noreply.github.com>2019-10-10 15:16:54 -0400
committerGitHub <noreply@github.com>2019-10-10 15:16:54 -0400
commitac66a7929e61274efb3faa1c0746a654051c7d41 (patch)
treee53a4020b24114fb2eccd2bf0785e92af6b8188f
parentcc4e47233bc0bf0f775dcde03cc310b72bc2ccda (diff)
parente3ec31fd2d0cb4d8f29f890f7f4265bf20858fa7 (diff)
downloadsdl_android-ac66a7929e61274efb3faa1c0746a654051c7d41.tar.gz
Merge pull request #1188 from smartdevicelink/feature/SDL-0243-DisplayCap
SDL 0243 Manager Update for DisplayCapability
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SoftButtonManagerTests.java11
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/TextAndGraphicManagerTests.java24
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/CheckChoiceVROptionalOperationTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManagerTests.java4
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/DeleteChoicesOperationTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperationTests.java29
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuCellTests.java1
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuManagerTests.java4
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/video/VideoStreamManagerTests.java1
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java118
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/SystemCapabilityManagerTests.java129
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/DisplayCapabilitiesTests.java1
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SystemCapabilityTests.java3
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/TemplateConfigurationTests.java3
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/WindowCapabilityTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/WindowTypeCapabilitiesTest.java3
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/PredefinedWindowsTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/WindowTypeTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/CreateWindowTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/DeleteWindowTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetInteriorVehicleDataConsentTests.java1
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/CloseApplicationResponseTests.java1
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/CreateWindowResponseTest.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/DeleteWindowResponseTest.java2
-rw-r--r--android/sdl_android/src/test/java/com/smartdevicelink/streaming/video/VideoStreamingParametersTest.java2
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/screen/BaseSoftButtonManager.java63
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/screen/BaseTextAndGraphicManager.java47
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/screen/SoftButtonState.java2
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/screen/choiceset/BaseChoiceSetManager.java36
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSet.java1
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/screen/choiceset/KeyboardAutocompleteCompletionListener.java3
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperation.java22
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java48
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/SystemCapabilityManager.java205
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/CreateWindow.java2
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/CreateWindowResponse.java2
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/DeleteWindow.java2
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/DeleteWindowResponse.java2
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/DisplayCapability.java1
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/SystemCapability.java45
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/TemplateConfiguration.java2
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/WindowTypeCapabilities.java2
-rw-r--r--base/src/main/java/com/smartdevicelink/proxy/rpc/enums/SystemCapabilityType.java4
-rw-r--r--javaSE/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManager.java1
45 files changed, 557 insertions, 288 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 96d78584d..b1a0ba26e 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
@@ -20,8 +20,6 @@ import com.smartdevicelink.proxy.rpc.enums.StaticIconName;
import com.smartdevicelink.proxy.rpc.listeners.OnMultipleRequestListener;
import com.smartdevicelink.test.Test;
-import junit.framework.Assert;
-
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SoftButtonManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SoftButtonManagerTests.java
index 3664d416f..514549080 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SoftButtonManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SoftButtonManagerTests.java
@@ -12,6 +12,8 @@ import com.smartdevicelink.proxy.rpc.Image;
import com.smartdevicelink.proxy.rpc.OnHMIStatus;
import com.smartdevicelink.proxy.rpc.Show;
import com.smartdevicelink.proxy.rpc.SoftButton;
+import com.smartdevicelink.proxy.rpc.SoftButtonCapabilities;
+import com.smartdevicelink.proxy.rpc.WindowCapability;
import com.smartdevicelink.proxy.rpc.enums.FileType;
import com.smartdevicelink.proxy.rpc.enums.HMILevel;
import com.smartdevicelink.proxy.rpc.enums.ImageType;
@@ -131,6 +133,12 @@ public class SoftButtonManagerTests extends AndroidTestCase2 {
internalInterfaceSendRPCGotCalled = false;
softButtonMangerUpdateCompleted = false;
+ SoftButtonCapabilities softCap = new SoftButtonCapabilities();
+ softCap.setImageSupported(true);
+ WindowCapability defaultCap = new WindowCapability();
+ defaultCap.setSoftButtonCapabilities(Collections.singletonList(softCap));
+ softButtonManager.defaultMainWindowCapability = defaultCap;
+
// Test batch update
softButtonManager.setBatchUpdates(true);
@@ -151,7 +159,8 @@ public class SoftButtonManagerTests extends AndroidTestCase2 {
// Check that everything got called as expected
- assertTrue("FileManager.uploadArtworks() did not get called", fileManagerUploadArtworksGotCalled);
+
+ assertTrue("FileManager.uploadArtworks() did get called", fileManagerUploadArtworksGotCalled);
assertTrue("InternalInterface.sendRPC() did not get called", internalInterfaceSendRPCGotCalled);
assertTrue("SoftButtonManger update onComplete() did not get called", softButtonMangerUpdateCompleted);
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/TextAndGraphicManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/TextAndGraphicManagerTests.java
index d7b788a90..3597c33f5 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/TextAndGraphicManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/TextAndGraphicManagerTests.java
@@ -8,10 +8,10 @@ import com.smartdevicelink.managers.BaseSubManager;
import com.smartdevicelink.managers.file.FileManager;
import com.smartdevicelink.managers.file.filetypes.SdlArtwork;
import com.smartdevicelink.proxy.interfaces.ISdl;
-import com.smartdevicelink.proxy.rpc.DisplayCapabilities;
import com.smartdevicelink.proxy.rpc.MetadataTags;
import com.smartdevicelink.proxy.rpc.Show;
import com.smartdevicelink.proxy.rpc.TextField;
+import com.smartdevicelink.proxy.rpc.WindowCapability;
import com.smartdevicelink.proxy.rpc.enums.FileType;
import com.smartdevicelink.proxy.rpc.enums.HMILevel;
import com.smartdevicelink.proxy.rpc.enums.MetadataType;
@@ -58,7 +58,7 @@ public class TextAndGraphicManagerTests extends AndroidTestCase2 {
super.tearDown();
}
- private DisplayCapabilities getDisplayCapability(int numberOfMainFields){
+ private WindowCapability getWindowCapability(int numberOfMainFields){
TextField mainField1 = new TextField();
mainField1.setName(TextFieldName.mainField1);
@@ -84,10 +84,10 @@ public class TextAndGraphicManagerTests extends AndroidTestCase2 {
}
}
- DisplayCapabilities displayCapabilities = new DisplayCapabilities();
- displayCapabilities.setTextFields(returnList);
+ WindowCapability windowCapability = new WindowCapability();
+ windowCapability.setTextFields(returnList);
- return displayCapabilities;
+ return windowCapability;
}
public void testInstantiation(){
@@ -110,7 +110,7 @@ public class TextAndGraphicManagerTests extends AndroidTestCase2 {
assertNull(textAndGraphicManager.inProgressUpdate);
assertNull(textAndGraphicManager.queuedImageUpdate);
assertFalse(textAndGraphicManager.hasQueuedUpdate);
- assertNull(textAndGraphicManager.displayCapabilities);
+ assertNull(textAndGraphicManager.defaultMainWindowCapability);
assertEquals(textAndGraphicManager.currentHMILevel, HMILevel.HMI_NONE);
assertFalse(textAndGraphicManager.isDirty);
assertEquals(textAndGraphicManager.getState(), BaseSubManager.SETTING_UP);
@@ -126,7 +126,7 @@ public class TextAndGraphicManagerTests extends AndroidTestCase2 {
// The tests.java class has an example of this, but we must build it to do what
// we need it to do. Build display cap w/ 3 main fields and test that it returns 3
- textAndGraphicManager.displayCapabilities = getDisplayCapability(3);
+ textAndGraphicManager.defaultMainWindowCapability = getWindowCapability(3);
assertEquals(textAndGraphicManager.getNumberOfLines(), 3);
}
@@ -135,7 +135,7 @@ public class TextAndGraphicManagerTests extends AndroidTestCase2 {
Show inputShow = new Show();
// Force it to return display with support for only 1 line of text
- textAndGraphicManager.displayCapabilities = getDisplayCapability(1);
+ textAndGraphicManager.defaultMainWindowCapability = getWindowCapability(1);
textAndGraphicManager.setTextField1("It is");
textAndGraphicManager.setTextField1Type(MetadataType.HUMIDITY);
@@ -185,7 +185,7 @@ public class TextAndGraphicManagerTests extends AndroidTestCase2 {
Show inputShow = new Show();
// Force it to return display with support for only 2 lines of text
- textAndGraphicManager.displayCapabilities = getDisplayCapability(2);
+ textAndGraphicManager.defaultMainWindowCapability = getWindowCapability(2);
textAndGraphicManager.setTextField1("It is");
textAndGraphicManager.setTextField1Type(MetadataType.HUMIDITY);
@@ -282,7 +282,7 @@ public class TextAndGraphicManagerTests extends AndroidTestCase2 {
Show inputShow = new Show();
// Force it to return display with support for only 3 lines of text
- textAndGraphicManager.displayCapabilities = getDisplayCapability(3);
+ textAndGraphicManager.defaultMainWindowCapability = getWindowCapability(3);
textAndGraphicManager.setTextField1("It is");
textAndGraphicManager.setTextField1Type(MetadataType.HUMIDITY);
@@ -375,7 +375,7 @@ public class TextAndGraphicManagerTests extends AndroidTestCase2 {
Show inputShow = new Show();
// Force it to return display with support for only 4 lines of text
- textAndGraphicManager.displayCapabilities = getDisplayCapability(4);
+ textAndGraphicManager.defaultMainWindowCapability = getWindowCapability(4);
textAndGraphicManager.setTextField1("It is");
textAndGraphicManager.setTextField1Type(MetadataType.HUMIDITY);
@@ -548,7 +548,7 @@ public class TextAndGraphicManagerTests extends AndroidTestCase2 {
assertNull(textAndGraphicManager.inProgressUpdate);
assertNull(textAndGraphicManager.queuedImageUpdate);
assertFalse(textAndGraphicManager.hasQueuedUpdate);
- assertNull(textAndGraphicManager.displayCapabilities);
+ assertNull(textAndGraphicManager.defaultMainWindowCapability);
assertFalse(textAndGraphicManager.isDirty);
assertEquals(textAndGraphicManager.getState(), BaseSubManager.SHUTDOWN);
}
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/CheckChoiceVROptionalOperationTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/CheckChoiceVROptionalOperationTests.java
index a47528348..7b9696151 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/CheckChoiceVROptionalOperationTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/CheckChoiceVROptionalOperationTests.java
@@ -36,8 +36,6 @@
package com.smartdevicelink.managers.screen.choiceset;
import com.smartdevicelink.AndroidTestCase2;
-import com.smartdevicelink.managers.screen.choiceset.CheckChoiceVROptionalInterface;
-import com.smartdevicelink.managers.screen.choiceset.CheckChoiceVROptionalOperation;
import com.smartdevicelink.proxy.interfaces.ISdl;
import com.smartdevicelink.proxy.rpc.Choice;
import com.smartdevicelink.proxy.rpc.CreateInteractionChoiceSet;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManagerTests.java
index b8af1a68c..1a9efffbe 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManagerTests.java
@@ -85,7 +85,7 @@ public class ChoiceSetManagerTests extends AndroidTestCase2 {
assertNotNull(csm.operationQueue);
assertNotNull(csm.executor);
assertNotNull(csm.hmiListener);
- assertNotNull(csm.displayListener);
+ assertNotNull(csm.onDisplayCapabilityListener);
assertNull(csm.pendingPresentOperation);
}
@@ -96,7 +96,7 @@ public class ChoiceSetManagerTests extends AndroidTestCase2 {
assertNull(csm.currentHMILevel);
assertNull(csm.currentSystemContext);
- assertNull(csm.displayCapabilities);
+ assertNull(csm.defaultMainWindowCapability);
assertNull(csm.pendingPresentationSet);
assertNull(csm.pendingPresentOperation);
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/DeleteChoicesOperationTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/DeleteChoicesOperationTests.java
index 3a9eed394..67200d0fe 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/DeleteChoicesOperationTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/DeleteChoicesOperationTests.java
@@ -36,8 +36,6 @@
package com.smartdevicelink.managers.screen.choiceset;
import com.smartdevicelink.AndroidTestCase2;
-import com.smartdevicelink.managers.screen.choiceset.ChoiceCell;
-import com.smartdevicelink.managers.screen.choiceset.DeleteChoicesOperation;
import com.smartdevicelink.proxy.interfaces.ISdl;
import com.smartdevicelink.proxy.rpc.DeleteInteractionChoiceSet;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperationTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperationTests.java
index 514d88bca..b29863110 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperationTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperationTests.java
@@ -38,15 +38,14 @@ package com.smartdevicelink.managers.screen.choiceset;
import com.smartdevicelink.AndroidTestCase2;
import com.smartdevicelink.managers.file.FileManager;
import com.smartdevicelink.managers.file.filetypes.SdlArtwork;
-import com.smartdevicelink.managers.screen.choiceset.ChoiceCell;
-import com.smartdevicelink.managers.screen.choiceset.PreloadChoicesOperation;
import com.smartdevicelink.proxy.interfaces.ISdl;
-import com.smartdevicelink.proxy.rpc.DisplayCapabilities;
import com.smartdevicelink.proxy.rpc.ImageField;
import com.smartdevicelink.proxy.rpc.TextField;
+import com.smartdevicelink.proxy.rpc.WindowCapability;
import com.smartdevicelink.proxy.rpc.enums.CharacterSet;
import com.smartdevicelink.proxy.rpc.enums.FileType;
import com.smartdevicelink.proxy.rpc.enums.ImageFieldName;
+import com.smartdevicelink.proxy.rpc.enums.ImageType;
import com.smartdevicelink.proxy.rpc.enums.TextFieldName;
import com.smartdevicelink.test.Test;
@@ -75,14 +74,14 @@ public class PreloadChoicesOperationTests extends AndroidTestCase2 {
ImageField imageField = new ImageField(ImageFieldName.choiceImage, Arrays.asList(FileType.GRAPHIC_PNG, FileType.GRAPHIC_JPEG));
TextField textField = new TextField(TextFieldName.menuName, CharacterSet.CID1SET, 2, 2);
- DisplayCapabilities displayCapabilities = new DisplayCapabilities();
- displayCapabilities.setGraphicSupported(true);
- displayCapabilities.setImageFields(Collections.singletonList(imageField));
- displayCapabilities.setTextFields(Collections.singletonList(textField));
+ WindowCapability windowCapability = new WindowCapability();
+ windowCapability.setImageFields(Collections.singletonList(imageField));
+ windowCapability.setImageTypeSupported(Arrays.asList(ImageType.STATIC, ImageType.DYNAMIC));
+ windowCapability.setTextFields(Collections.singletonList(textField));
ISdl internalInterface = mock(ISdl.class);
FileManager fileManager = mock(FileManager.class);
- preloadChoicesOperation = new PreloadChoicesOperation(internalInterface, fileManager, displayCapabilities, true, cellsToPreload, null);
+ preloadChoicesOperation = new PreloadChoicesOperation(internalInterface, fileManager, windowCapability, true, cellsToPreload, null);
}
@Override
@@ -91,13 +90,6 @@ public class PreloadChoicesOperationTests extends AndroidTestCase2 {
}
public void testHasTextFieldOfName(){
-
- TextField textField = new TextField();
- textField.setName(TextFieldName.secondaryText);
-
- DisplayCapabilities capabilities = new DisplayCapabilities();
- capabilities.setTextFields(Collections.singletonList(textField));
-
boolean test = preloadChoicesOperation.hasTextFieldOfName(TextFieldName.secondaryText);
assertFalse(test);
@@ -106,13 +98,6 @@ public class PreloadChoicesOperationTests extends AndroidTestCase2 {
}
public void testHasImageFieldOfName(){
-
- ImageField imageField = new ImageField();
- imageField.setName(ImageFieldName.choiceImage);
-
- DisplayCapabilities capabilities = new DisplayCapabilities();
- capabilities.setImageFields(Collections.singletonList(imageField));
-
boolean test = preloadChoicesOperation.hasImageFieldOfName(ImageFieldName.choiceImage);
assertTrue(test);
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuCellTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuCellTests.java
index 6aa9b479a..f19fb4a6b 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuCellTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuCellTests.java
@@ -33,7 +33,6 @@
package com.smartdevicelink.managers.screen.menu;
import com.smartdevicelink.AndroidTestCase2;
-import com.smartdevicelink.proxy.rpc.enums.MenuLayout;
import com.smartdevicelink.proxy.rpc.enums.TriggerSource;
import com.smartdevicelink.test.Test;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuManagerTests.java
index fe20383a0..a5dfa9037 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuManagerTests.java
@@ -142,7 +142,7 @@ public class MenuManagerTests extends AndroidTestCase2 {
assertNull(menuManager.menuConfiguration);
assertNotNull(menuManager.hmiListener);
assertNotNull(menuManager.commandListener);
- assertNotNull(menuManager.displayListener);
+ assertNotNull(menuManager.onDisplaysCapabilityListener);
}
@@ -157,7 +157,7 @@ public class MenuManagerTests extends AndroidTestCase2 {
assertNull(menuManager.menuCells);
assertNull(menuManager.oldMenuCells);
assertNull(menuManager.currentHMILevel);
- assertNull(menuManager.displayCapabilities);
+ assertNull(menuManager.defaultMainWindowCapability);
assertNull(menuManager.inProgressUpdate);
assertNull(menuManager.waitingUpdateMenuCells);
assertNull(menuManager.keepsNew);
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/video/VideoStreamManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/video/VideoStreamManagerTests.java
index f456b33b3..34a452f06 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/video/VideoStreamManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/video/VideoStreamManagerTests.java
@@ -34,7 +34,6 @@ import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import java.nio.ByteBuffer;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java
index 7e3b50a61..09c0631b9 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java
@@ -5,105 +5,7 @@ import com.smartdevicelink.protocol.enums.FrameData;
import com.smartdevicelink.protocol.enums.FrameDataControlFrameType;
import com.smartdevicelink.protocol.enums.FrameType;
import com.smartdevicelink.protocol.enums.SessionType;
-import com.smartdevicelink.proxy.rpc.AirbagStatus;
-import com.smartdevicelink.proxy.rpc.AppServiceCapability;
-import com.smartdevicelink.proxy.rpc.AppServiceManifest;
-import com.smartdevicelink.proxy.rpc.AppServiceRecord;
-import com.smartdevicelink.proxy.rpc.AppServicesCapabilities;
-import com.smartdevicelink.proxy.rpc.AudioControlCapabilities;
-import com.smartdevicelink.proxy.rpc.AudioControlData;
-import com.smartdevicelink.proxy.rpc.AudioPassThruCapabilities;
-import com.smartdevicelink.proxy.rpc.BeltStatus;
-import com.smartdevicelink.proxy.rpc.BodyInformation;
-import com.smartdevicelink.proxy.rpc.ButtonCapabilities;
-import com.smartdevicelink.proxy.rpc.Choice;
-import com.smartdevicelink.proxy.rpc.ClimateControlCapabilities;
-import com.smartdevicelink.proxy.rpc.ClimateControlData;
-import com.smartdevicelink.proxy.rpc.ClusterModeStatus;
-import com.smartdevicelink.proxy.rpc.Coordinate;
-import com.smartdevicelink.proxy.rpc.DIDResult;
-import com.smartdevicelink.proxy.rpc.DateTime;
-import com.smartdevicelink.proxy.rpc.DeviceInfo;
-import com.smartdevicelink.proxy.rpc.DeviceStatus;
-import com.smartdevicelink.proxy.rpc.DisplayCapabilities;
-import com.smartdevicelink.proxy.rpc.DisplayCapability;
-import com.smartdevicelink.proxy.rpc.ECallInfo;
-import com.smartdevicelink.proxy.rpc.EmergencyEvent;
-import com.smartdevicelink.proxy.rpc.EqualizerSettings;
-import com.smartdevicelink.proxy.rpc.FuelRange;
-import com.smartdevicelink.proxy.rpc.GPSData;
-import com.smartdevicelink.proxy.rpc.Grid;
-import com.smartdevicelink.proxy.rpc.HMICapabilities;
-import com.smartdevicelink.proxy.rpc.HMIPermissions;
-import com.smartdevicelink.proxy.rpc.HMISettingsControlCapabilities;
-import com.smartdevicelink.proxy.rpc.HMISettingsControlData;
-import com.smartdevicelink.proxy.rpc.HeadLampStatus;
-import com.smartdevicelink.proxy.rpc.Headers;
-import com.smartdevicelink.proxy.rpc.Image;
-import com.smartdevicelink.proxy.rpc.ImageField;
-import com.smartdevicelink.proxy.rpc.ImageResolution;
-import com.smartdevicelink.proxy.rpc.KeyboardProperties;
-import com.smartdevicelink.proxy.rpc.LightCapabilities;
-import com.smartdevicelink.proxy.rpc.LightControlCapabilities;
-import com.smartdevicelink.proxy.rpc.LightControlData;
-import com.smartdevicelink.proxy.rpc.LightState;
-import com.smartdevicelink.proxy.rpc.LocationDetails;
-import com.smartdevicelink.proxy.rpc.MassageCushionFirmness;
-import com.smartdevicelink.proxy.rpc.MassageModeData;
-import com.smartdevicelink.proxy.rpc.MediaServiceData;
-import com.smartdevicelink.proxy.rpc.MediaServiceManifest;
-import com.smartdevicelink.proxy.rpc.MenuParams;
-import com.smartdevicelink.proxy.rpc.ModuleData;
-import com.smartdevicelink.proxy.rpc.ModuleInfo;
-import com.smartdevicelink.proxy.rpc.MyKey;
-import com.smartdevicelink.proxy.rpc.NavigationCapability;
-import com.smartdevicelink.proxy.rpc.NavigationInstruction;
-import com.smartdevicelink.proxy.rpc.NavigationServiceData;
-import com.smartdevicelink.proxy.rpc.NavigationServiceManifest;
-import com.smartdevicelink.proxy.rpc.OasisAddress;
-import com.smartdevicelink.proxy.rpc.ParameterPermissions;
-import com.smartdevicelink.proxy.rpc.PermissionItem;
-import com.smartdevicelink.proxy.rpc.PhoneCapability;
-import com.smartdevicelink.proxy.rpc.PresetBankCapabilities;
-import com.smartdevicelink.proxy.rpc.RGBColor;
-import com.smartdevicelink.proxy.rpc.RadioControlCapabilities;
-import com.smartdevicelink.proxy.rpc.RadioControlData;
-import com.smartdevicelink.proxy.rpc.RdsData;
-import com.smartdevicelink.proxy.rpc.Rectangle;
-import com.smartdevicelink.proxy.rpc.RemoteControlCapabilities;
-import com.smartdevicelink.proxy.rpc.ScreenParams;
-import com.smartdevicelink.proxy.rpc.SdlMsgVersion;
-import com.smartdevicelink.proxy.rpc.SeatControlCapabilities;
-import com.smartdevicelink.proxy.rpc.SeatControlData;
-import com.smartdevicelink.proxy.rpc.SeatLocation;
-import com.smartdevicelink.proxy.rpc.SeatMemoryAction;
-import com.smartdevicelink.proxy.rpc.SingleTireStatus;
-import com.smartdevicelink.proxy.rpc.SisData;
-import com.smartdevicelink.proxy.rpc.SoftButton;
-import com.smartdevicelink.proxy.rpc.SoftButtonCapabilities;
-import com.smartdevicelink.proxy.rpc.StartTime;
-import com.smartdevicelink.proxy.rpc.StationIDNumber;
-import com.smartdevicelink.proxy.rpc.TTSChunk;
-import com.smartdevicelink.proxy.rpc.Temperature;
-import com.smartdevicelink.proxy.rpc.TemplateColorScheme;
-import com.smartdevicelink.proxy.rpc.TemplateConfiguration;
-import com.smartdevicelink.proxy.rpc.TextField;
-import com.smartdevicelink.proxy.rpc.TireStatus;
-import com.smartdevicelink.proxy.rpc.TouchCoord;
-import com.smartdevicelink.proxy.rpc.TouchEvent;
-import com.smartdevicelink.proxy.rpc.TouchEventCapabilities;
-import com.smartdevicelink.proxy.rpc.Turn;
-import com.smartdevicelink.proxy.rpc.VehicleDataResult;
-import com.smartdevicelink.proxy.rpc.VehicleType;
-import com.smartdevicelink.proxy.rpc.VideoStreamingCapability;
-import com.smartdevicelink.proxy.rpc.VideoStreamingFormat;
-import com.smartdevicelink.proxy.rpc.VrHelpItem;
-import com.smartdevicelink.proxy.rpc.WeatherAlert;
-import com.smartdevicelink.proxy.rpc.WeatherData;
-import com.smartdevicelink.proxy.rpc.WeatherServiceData;
-import com.smartdevicelink.proxy.rpc.WeatherServiceManifest;
-import com.smartdevicelink.proxy.rpc.WindowCapability;
-import com.smartdevicelink.proxy.rpc.WindowTypeCapabilities;
+import com.smartdevicelink.proxy.rpc.*;
import com.smartdevicelink.proxy.rpc.enums.AppServiceType;
import com.smartdevicelink.proxy.rpc.enums.DefrostZone;
import com.smartdevicelink.proxy.rpc.enums.FileType;
@@ -2846,6 +2748,24 @@ public class Validator{
return true;
}
+ public static boolean validateDisplayCapabilityList(List<DisplayCapability> list1, List<DisplayCapability> list2) {
+ if (list1 == null || list2 == null) {
+ return false;
+ }
+
+ if (list1.size() != list2.size()) {
+ return false;
+ }
+
+ for (int i = 0; i < list1.size(); i++) {
+ if (!validateDisplayCapability(list1.get(i), list2.get(i))) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
public static boolean validateDisplayCapability(DisplayCapability item1, DisplayCapability item2) {
if (item1 == null) {
return (item2 == null);
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/SystemCapabilityManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/SystemCapabilityManagerTests.java
index dbd54b0c4..0d1fa04bf 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/SystemCapabilityManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/SystemCapabilityManagerTests.java
@@ -18,6 +18,7 @@ import com.smartdevicelink.proxy.rpc.AppServicesCapabilities;
import com.smartdevicelink.proxy.rpc.AudioPassThruCapabilities;
import com.smartdevicelink.proxy.rpc.ButtonCapabilities;
import com.smartdevicelink.proxy.rpc.DisplayCapabilities;
+import com.smartdevicelink.proxy.rpc.DisplayCapability;
import com.smartdevicelink.proxy.rpc.GetSystemCapabilityResponse;
import com.smartdevicelink.proxy.rpc.HMICapabilities;
import com.smartdevicelink.proxy.rpc.OnSystemCapabilityUpdated;
@@ -25,15 +26,24 @@ import com.smartdevicelink.proxy.rpc.PhoneCapability;
import com.smartdevicelink.proxy.rpc.PresetBankCapabilities;
import com.smartdevicelink.proxy.rpc.RegisterAppInterfaceResponse;
import com.smartdevicelink.proxy.rpc.SdlMsgVersion;
+import com.smartdevicelink.proxy.rpc.SetDisplayLayoutResponse;
import com.smartdevicelink.proxy.rpc.SoftButtonCapabilities;
import com.smartdevicelink.proxy.rpc.SystemCapability;
import com.smartdevicelink.proxy.rpc.VideoStreamingCapability;
+import com.smartdevicelink.proxy.rpc.WindowCapability;
+import com.smartdevicelink.proxy.rpc.WindowTypeCapabilities;
import com.smartdevicelink.proxy.rpc.enums.AppServiceType;
+import com.smartdevicelink.proxy.rpc.enums.DisplayType;
import com.smartdevicelink.proxy.rpc.enums.HmiZoneCapabilities;
+import com.smartdevicelink.proxy.rpc.enums.ImageType;
+import com.smartdevicelink.proxy.rpc.enums.MediaClockFormat;
+import com.smartdevicelink.proxy.rpc.enums.PredefinedWindows;
import com.smartdevicelink.proxy.rpc.enums.PrerecordedSpeech;
+import com.smartdevicelink.proxy.rpc.enums.Result;
import com.smartdevicelink.proxy.rpc.enums.ServiceUpdateReason;
import com.smartdevicelink.proxy.rpc.enums.SpeechCapabilities;
import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
+import com.smartdevicelink.proxy.rpc.enums.WindowType;
import com.smartdevicelink.proxy.rpc.listeners.OnMultipleRequestListener;
import com.smartdevicelink.proxy.rpc.listeners.OnRPCListener;
import com.smartdevicelink.proxy.rpc.listeners.OnRPCNotificationListener;
@@ -47,6 +57,7 @@ import com.smartdevicelink.test.utl.AppServiceFactory;
import com.smartdevicelink.util.CorrelationIdGenerator;
import com.smartdevicelink.util.Version;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -89,9 +100,58 @@ public class SystemCapabilityManagerTests extends AndroidTestCase2 {
return systemCapabilityManager;
}
+ private List<DisplayCapability> createDisplayCapabilityList(DisplayCapabilities display, List<ButtonCapabilities> button, List<SoftButtonCapabilities> softButton) {
+ WindowTypeCapabilities windowTypeCapabilities = new WindowTypeCapabilities(WindowType.MAIN, 1);
+
+ DisplayCapability displayCapability = new DisplayCapability();
+ displayCapability.setDisplayName(display != null ? display.getDisplayName() : null);
+ displayCapability.setWindowTypeSupported(Collections.singletonList(windowTypeCapabilities));
+
+ WindowCapability defaultWindowCapability = new WindowCapability();
+ defaultWindowCapability.setWindowID(PredefinedWindows.DEFAULT_WINDOW.getValue());
+ defaultWindowCapability.setButtonCapabilities(button);
+ defaultWindowCapability.setSoftButtonCapabilities(softButton);
+
+ if (display == null) {
+ displayCapability.setWindowCapabilities(Collections.singletonList(defaultWindowCapability));
+ return Collections.singletonList(displayCapability);
+ }
+
+ defaultWindowCapability.setTemplatesAvailable(display.getTemplatesAvailable());
+ defaultWindowCapability.setNumCustomPresetsAvailable(display.getNumCustomPresetsAvailable());
+ defaultWindowCapability.setTextFields(display.getTextFields());
+ defaultWindowCapability.setImageFields(display.getImageFields());
+ ArrayList<ImageType> imageTypeSupported = new ArrayList<>();
+ imageTypeSupported.add(ImageType.STATIC);
+ if (display.getGraphicSupported()) {
+ imageTypeSupported.add(ImageType.DYNAMIC);
+ }
+ defaultWindowCapability.setImageTypeSupported(imageTypeSupported);
+
+ displayCapability.setWindowCapabilities(Collections.singletonList(defaultWindowCapability));
+ return Collections.singletonList(displayCapability);
+ }
+
+ private DisplayCapabilities createDisplayCapabilities(String displayName, WindowCapability defaultMainWindow) {
+ DisplayCapabilities convertedCapabilities = new DisplayCapabilities();
+ convertedCapabilities.setDisplayType(DisplayType.SDL_GENERIC); //deprecated but it is mandatory...
+ convertedCapabilities.setDisplayName(displayName);
+ convertedCapabilities.setTextFields(defaultMainWindow.getTextFields());
+ convertedCapabilities.setImageFields(defaultMainWindow.getImageFields());
+ convertedCapabilities.setTemplatesAvailable(defaultMainWindow.getTemplatesAvailable());
+ convertedCapabilities.setNumCustomPresetsAvailable(defaultMainWindow.getNumCustomPresetsAvailable());
+ convertedCapabilities.setMediaClockFormats(new ArrayList<MediaClockFormat>()); // mandatory field but can be empty
+ convertedCapabilities.setGraphicSupported(defaultMainWindow.getImageTypeSupported().contains(ImageType.DYNAMIC));
+
+ return convertedCapabilities;
+ }
+
public void testParseRAI() {
systemCapabilityManager = createSampleManager();
+ List<DisplayCapability> displayCapabilityList = createDisplayCapabilityList(Test.GENERAL_DISPLAYCAPABILITIES, Test.GENERAL_BUTTONCAPABILITIES_LIST, Test.GENERAL_SOFTBUTTONCAPABILITIES_LIST);
+ assertTrue(Test.TRUE,
+ Validator.validateDisplayCapabilityList(displayCapabilityList, (List<DisplayCapability>) systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAYS)));
assertTrue(Test.TRUE,
Validator.validateHMICapabilities(Test.GENERAL_HMICAPABILITIES, (HMICapabilities) systemCapabilityManager.getCapability(SystemCapabilityType.HMI)));
assertTrue(Test.TRUE,
@@ -189,7 +249,36 @@ public class SystemCapabilityManagerTests extends AndroidTestCase2 {
scmRpcListener.onReceived(onSystemCapabilityUpdated);
assertNotNull(systemCapabilityManager.getCapability(SystemCapabilityType.APP_SERVICES));
+ }
+
+ public void testOnSystemCapabilityUpdatedForDISPLAYS() {
+ InternalSDLInterface iSDL = new InternalSDLInterface();
+ SystemCapabilityManager systemCapabilityManager = createSampleManager(iSDL);
+ OnRPCListener scmRpcListener = iSDL.rpcListeners.get(FunctionID.ON_SYSTEM_CAPABILITY_UPDATED.getId()).get(0);
+ assertNotNull(scmRpcListener);
+
+ assertNotNull(systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAYS));
+ assertNotNull(systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAY));
+ List<DisplayCapability> newCaps = createDisplayCapabilityList(Test.GENERAL_DISPLAYCAPABILITIES, Test.GENERAL_BUTTONCAPABILITIES_LIST, Test.GENERAL_SOFTBUTTONCAPABILITIES_LIST);;
+
+ SystemCapability systemCapability = new SystemCapability();
+ systemCapability.setSystemCapabilityType(SystemCapabilityType.DISPLAYS);
+ systemCapability.setCapabilityForType(SystemCapabilityType.DISPLAYS, newCaps);
+
+ OnSystemCapabilityUpdated onSystemCapabilityUpdated = new OnSystemCapabilityUpdated();
+ onSystemCapabilityUpdated.setSystemCapability(systemCapability);
+
+ scmRpcListener.onReceived(onSystemCapabilityUpdated);
+
+ List<DisplayCapability> appliedCaps = (List<DisplayCapability>)systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAYS);
+ assertNotNull(appliedCaps);
+ assertTrue(Validator.validateDisplayCapabilityList(newCaps, appliedCaps));
+
+ DisplayCapabilities appliedConvertedCaps = (DisplayCapabilities)systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAY);
+ assertNotNull(appliedConvertedCaps);
+ DisplayCapabilities testConvertedCaps = createDisplayCapabilities(newCaps.get(0).getDisplayName(), newCaps.get(0).getWindowCapabilities().get(0));
+ assertTrue(Validator.validateDisplayCapabilities(appliedConvertedCaps, testConvertedCaps));
}
public void testOnSystemCapabilityUpdated(){
@@ -329,6 +418,46 @@ public class SystemCapabilityManagerTests extends AndroidTestCase2 {
assertEquals(phoneCapability, phoneCapabilityUpdated);
}
+ public void testOnSetDisplayLayout() {
+ InternalSDLInterface iSDL = new InternalSDLInterface();
+ SystemCapabilityManager systemCapabilityManager = createSampleManager(iSDL);
+ OnRPCListener dlRpcListener = iSDL.rpcListeners.get(FunctionID.SET_DISPLAY_LAYOUT.getId()).get(0);
+ assertNotNull(dlRpcListener);
+
+ SetDisplayLayoutResponse newLayout = new SetDisplayLayoutResponse();
+ newLayout.setDisplayCapabilities(Test.GENERAL_DISPLAYCAPABILITIES);
+ newLayout.setButtonCapabilities(Test.GENERAL_BUTTONCAPABILITIES_LIST);
+ newLayout.setSoftButtonCapabilities(Test.GENERAL_SOFTBUTTONCAPABILITIES_LIST);
+ newLayout.setPresetBankCapabilities(Test.GENERAL_PRESETBANKCAPABILITIES);
+ newLayout.setSuccess(true);
+ newLayout.setResultCode(Result.SUCCESS);
+
+ dlRpcListener.onReceived(newLayout);
+
+
+ DisplayCapabilities appliedCaps = (DisplayCapabilities)systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAY);
+ assertNotNull(appliedCaps);
+ assertTrue(Validator.validateDisplayCapabilities(newLayout.getDisplayCapabilities(), appliedCaps));
+
+ List<DisplayCapability> convertedCaps = (List<DisplayCapability>)systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAYS);
+ assertNotNull(convertedCaps);
+ List<DisplayCapability> testCaps = createDisplayCapabilityList(newLayout.getDisplayCapabilities(), newLayout.getButtonCapabilities(), newLayout.getSoftButtonCapabilities());
+ assertTrue(Validator.validateDisplayCapabilityList(convertedCaps, testCaps));
+
+ WindowCapability matchWindowCapability = testCaps.get(0).getWindowCapabilities().get(0);
+ WindowCapability testWindowCapability = systemCapabilityManager.getDefaultMainWindowCapability();
+ assertTrue(Validator.validateWindowCapability(matchWindowCapability, testWindowCapability));
+ assertNull(systemCapabilityManager.getWindowCapability(42));
+ }
+
+ public void testManagerBeforeDisplayUpdate() {
+ InternalSDLInterface iSDL = new InternalSDLInterface();
+ SystemCapabilityManager systemCapabilityManager = new SystemCapabilityManager(iSDL);
+ assertNull(systemCapabilityManager.getDefaultMainWindowCapability());
+ assertNull(systemCapabilityManager.getWindowCapability(PredefinedWindows.DEFAULT_WINDOW.getValue()));
+ assertNull(systemCapabilityManager.getWindowCapability(PredefinedWindows.PRIMARY_WIDGET.getValue()));
+ }
+
private class InternalSDLInterface implements ISdl{
private final Object RPC_LISTENER_LOCK = new Object();
SparseArray<CopyOnWriteArrayList<OnRPCListener>> rpcListeners = new SparseArray<>();
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/DisplayCapabilitiesTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/DisplayCapabilitiesTests.java
index 28d7e1460..4f0256f79 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/DisplayCapabilitiesTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/DisplayCapabilitiesTests.java
@@ -7,7 +7,6 @@ import com.smartdevicelink.proxy.rpc.ScreenParams;
import com.smartdevicelink.proxy.rpc.TextField;
import com.smartdevicelink.proxy.rpc.enums.DisplayType;
import com.smartdevicelink.proxy.rpc.enums.MediaClockFormat;
-import com.smartdevicelink.proxy.rpc.enums.MenuLayout;
import com.smartdevicelink.test.JsonUtils;
import com.smartdevicelink.test.Test;
import com.smartdevicelink.test.Validator;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SystemCapabilityTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SystemCapabilityTests.java
index c6a3cfa0e..203f72060 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SystemCapabilityTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SystemCapabilityTests.java
@@ -13,10 +13,13 @@ import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
import com.smartdevicelink.test.JsonUtils;
import com.smartdevicelink.test.Test;
import com.smartdevicelink.test.Validator;
+
import junit.framework.TestCase;
+
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
+
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/TemplateConfigurationTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/TemplateConfigurationTests.java
index fe505218c..4fc3744be 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/TemplateConfigurationTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/TemplateConfigurationTests.java
@@ -6,9 +6,12 @@ import com.smartdevicelink.proxy.rpc.TemplateConfiguration;
import com.smartdevicelink.test.JsonUtils;
import com.smartdevicelink.test.Test;
import com.smartdevicelink.test.Validator;
+
import junit.framework.TestCase;
+
import org.json.JSONException;
import org.json.JSONObject;
+
import java.util.Hashtable;
import java.util.Iterator;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/WindowCapabilityTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/WindowCapabilityTests.java
index 973c6e0b8..550231452 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/WindowCapabilityTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/WindowCapabilityTests.java
@@ -11,7 +11,9 @@ import com.smartdevicelink.proxy.rpc.enums.MenuLayout;
import com.smartdevicelink.test.JsonUtils;
import com.smartdevicelink.test.Test;
import com.smartdevicelink.test.Validator;
+
import junit.framework.TestCase;
+
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/WindowTypeCapabilitiesTest.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/WindowTypeCapabilitiesTest.java
index 4b9c767e3..539737554 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/WindowTypeCapabilitiesTest.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/WindowTypeCapabilitiesTest.java
@@ -4,9 +4,12 @@ import com.smartdevicelink.proxy.rpc.WindowTypeCapabilities;
import com.smartdevicelink.proxy.rpc.enums.WindowType;
import com.smartdevicelink.test.JsonUtils;
import com.smartdevicelink.test.Test;
+
import junit.framework.TestCase;
+
import org.json.JSONException;
import org.json.JSONObject;
+
import java.util.Iterator;
public class WindowTypeCapabilitiesTest extends TestCase {
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/PredefinedWindowsTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/PredefinedWindowsTests.java
index 3b37070b7..eae294933 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/PredefinedWindowsTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/PredefinedWindowsTests.java
@@ -1,7 +1,9 @@
package com.smartdevicelink.test.rpc.enums;
import com.smartdevicelink.proxy.rpc.enums.PredefinedWindows;
+
import junit.framework.TestCase;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/WindowTypeTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/WindowTypeTests.java
index b6e26f9df..c3c78c870 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/WindowTypeTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/WindowTypeTests.java
@@ -1,7 +1,9 @@
package com.smartdevicelink.test.rpc.enums;
import com.smartdevicelink.proxy.rpc.enums.WindowType;
+
import junit.framework.TestCase;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/CreateWindowTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/CreateWindowTests.java
index dd8264caf..267be01f1 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/CreateWindowTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/CreateWindowTests.java
@@ -9,8 +9,10 @@ import com.smartdevicelink.test.BaseRpcTests;
import com.smartdevicelink.test.JsonUtils;
import com.smartdevicelink.test.Test;
import com.smartdevicelink.test.json.rpc.JsonFileReader;
+
import org.json.JSONException;
import org.json.JSONObject;
+
import java.util.Hashtable;
/**
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/DeleteWindowTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/DeleteWindowTests.java
index 3602d2d62..48080615f 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/DeleteWindowTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/DeleteWindowTests.java
@@ -8,8 +8,10 @@ import com.smartdevicelink.test.BaseRpcTests;
import com.smartdevicelink.test.JsonUtils;
import com.smartdevicelink.test.Test;
import com.smartdevicelink.test.json.rpc.JsonFileReader;
+
import org.json.JSONException;
import org.json.JSONObject;
+
import java.util.Hashtable;
/**
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetInteriorVehicleDataConsentTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetInteriorVehicleDataConsentTests.java
index d736e5176..15a902a84 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetInteriorVehicleDataConsentTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetInteriorVehicleDataConsentTests.java
@@ -10,7 +10,6 @@ import com.smartdevicelink.test.JsonUtils;
import com.smartdevicelink.test.Test;
import com.smartdevicelink.test.json.rpc.JsonFileReader;
-
import org.json.JSONException;
import org.json.JSONObject;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/CloseApplicationResponseTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/CloseApplicationResponseTests.java
index dac0190c7..eb56a5293 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/CloseApplicationResponseTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/CloseApplicationResponseTests.java
@@ -38,7 +38,6 @@ import com.smartdevicelink.marshal.JsonRPCMarshaller;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCMessage;
import com.smartdevicelink.proxy.rpc.CloseApplicationResponse;
-import com.smartdevicelink.proxy.rpc.UnregisterAppInterfaceResponse;
import com.smartdevicelink.test.BaseRpcTests;
import com.smartdevicelink.test.JsonUtils;
import com.smartdevicelink.test.Test;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/CreateWindowResponseTest.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/CreateWindowResponseTest.java
index 6bbdb1e6b..8099a9ce7 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/CreateWindowResponseTest.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/CreateWindowResponseTest.java
@@ -8,8 +8,10 @@ import com.smartdevicelink.test.BaseRpcTests;
import com.smartdevicelink.test.JsonUtils;
import com.smartdevicelink.test.Test;
import com.smartdevicelink.test.json.rpc.JsonFileReader;
+
import org.json.JSONException;
import org.json.JSONObject;
+
import java.util.Hashtable;
/**
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/DeleteWindowResponseTest.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/DeleteWindowResponseTest.java
index 145f432f3..01bcd1491 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/DeleteWindowResponseTest.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/DeleteWindowResponseTest.java
@@ -8,8 +8,10 @@ import com.smartdevicelink.test.BaseRpcTests;
import com.smartdevicelink.test.JsonUtils;
import com.smartdevicelink.test.Test;
import com.smartdevicelink.test.json.rpc.JsonFileReader;
+
import org.json.JSONException;
import org.json.JSONObject;
+
import java.util.Hashtable;
/**
diff --git a/android/sdl_android/src/test/java/com/smartdevicelink/streaming/video/VideoStreamingParametersTest.java b/android/sdl_android/src/test/java/com/smartdevicelink/streaming/video/VideoStreamingParametersTest.java
index 9088e716d..f08bada0f 100644
--- a/android/sdl_android/src/test/java/com/smartdevicelink/streaming/video/VideoStreamingParametersTest.java
+++ b/android/sdl_android/src/test/java/com/smartdevicelink/streaming/video/VideoStreamingParametersTest.java
@@ -37,7 +37,7 @@ import com.smartdevicelink.proxy.rpc.VideoStreamingCapability;
import org.junit.Before;
import org.junit.Test;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
public class VideoStreamingParametersTest {
private VideoStreamingParameters params;
diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/BaseSoftButtonManager.java b/base/src/main/java/com/smartdevicelink/managers/screen/BaseSoftButtonManager.java
index 54a851684..dd20f342a 100644
--- a/base/src/main/java/com/smartdevicelink/managers/screen/BaseSoftButtonManager.java
+++ b/base/src/main/java/com/smartdevicelink/managers/screen/BaseSoftButtonManager.java
@@ -42,15 +42,16 @@ import com.smartdevicelink.managers.file.filetypes.SdlArtwork;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.SystemCapabilityManager;
import com.smartdevicelink.proxy.interfaces.ISdl;
import com.smartdevicelink.proxy.interfaces.OnSystemCapabilityListener;
-import com.smartdevicelink.proxy.rpc.DisplayCapabilities;
+import com.smartdevicelink.proxy.rpc.DisplayCapability;
import com.smartdevicelink.proxy.rpc.OnButtonEvent;
import com.smartdevicelink.proxy.rpc.OnButtonPress;
import com.smartdevicelink.proxy.rpc.OnHMIStatus;
import com.smartdevicelink.proxy.rpc.Show;
import com.smartdevicelink.proxy.rpc.SoftButton;
-import com.smartdevicelink.proxy.rpc.SoftButtonCapabilities;
+import com.smartdevicelink.proxy.rpc.WindowCapability;
import com.smartdevicelink.proxy.rpc.enums.ButtonName;
import com.smartdevicelink.proxy.rpc.enums.HMILevel;
import com.smartdevicelink.proxy.rpc.enums.PredefinedWindows;
@@ -77,14 +78,13 @@ abstract class BaseSoftButtonManager extends BaseSubManager {
private static final String TAG = "SoftButtonManager";
private WeakReference<FileManager> fileManager;
- private DisplayCapabilities displayCapabilities;
- private SoftButtonCapabilities softButtonCapabilities;
+ WindowCapability defaultMainWindowCapability;
private CopyOnWriteArrayList<SoftButtonObject> softButtonObjects;
private HMILevel currentHMILevel;
private Show inProgressShowRPC;
private CompletionListener inProgressListener, queuedUpdateListener, cachedListener;
private boolean hasQueuedUpdate, batchUpdates, waitingOnHMILevelUpdateToSetButtons;
- private final OnSystemCapabilityListener onSoftButtonCapabilitiesListener, onDisplayCapabilitiesListener;
+ private final OnSystemCapabilityListener onDisplayCapabilityListener;
private final OnRPCNotificationListener onHMIStatusListener, onButtonPressListener, onButtonEventListener;
private final SoftButtonObject.UpdateListener updateListener;
@@ -99,7 +99,7 @@ abstract class BaseSoftButtonManager extends BaseSubManager {
* @param internalInterface an instance of the ISdl interface that can be used for common SDL operations (sendRpc, addRpcListener, etc)
* @param fileManager an instance of the FileManager so that button graphics can be sent
*/
- BaseSoftButtonManager(@NonNull ISdl internalInterface, @NonNull FileManager fileManager) {
+ BaseSoftButtonManager(@NonNull final ISdl internalInterface, @NonNull FileManager fileManager) {
super(internalInterface);
this.fileManager = new WeakReference<>(fileManager);
this.softButtonObjects = new CopyOnWriteArrayList<>();
@@ -114,41 +114,31 @@ abstract class BaseSoftButtonManager extends BaseSubManager {
// Add OnSoftButtonCapabilitiesListener to keep softButtonCapabilities updated
- onSoftButtonCapabilitiesListener = new OnSystemCapabilityListener() {
+ onDisplayCapabilityListener = new OnSystemCapabilityListener() {
@Override
public void onCapabilityRetrieved(Object capability) {
- List<SoftButtonCapabilities> softButtonCapabilitiesList = (List<SoftButtonCapabilities>) capability;
- if (softButtonCapabilitiesList != null && !softButtonCapabilitiesList.isEmpty()) {
- softButtonCapabilities = softButtonCapabilitiesList.get(0);
- } else {
- softButtonCapabilities = null;
+ // instead of using the parameter it's more safe to use the convenience method
+ List<DisplayCapability> capabilities = SystemCapabilityManager.convertToList(capability, DisplayCapability.class);
+ if (capabilities == null || capabilities.size() == 0) {
+ DebugTool.logError("SoftButton Manager - Capabilities sent here are null or empty");
+ }else {
+ DisplayCapability display = capabilities.get(0);
+ for (WindowCapability windowCapability : display.getWindowCapabilities()) {
+ int currentWindowID = windowCapability.getWindowID() != null ? windowCapability.getWindowID() : PredefinedWindows.DEFAULT_WINDOW.getValue();
+ if (currentWindowID == PredefinedWindows.DEFAULT_WINDOW.getValue()) {
+ defaultMainWindowCapability = windowCapability;
+ }
+ }
}
}
@Override
public void onError(String info) {
- Log.w(TAG, "SoftButton Capability cannot be retrieved:");
- softButtonCapabilities = null;
+ DebugTool.logError("Display Capability cannot be retrieved");
+ defaultMainWindowCapability = null;
}
};
- this.internalInterface.addOnSystemCapabilityListener(SystemCapabilityType.SOFTBUTTON, onSoftButtonCapabilitiesListener);
-
-
- // Add OnDisplayCapabilitiesListener to keep displayCapabilities updated
- onDisplayCapabilitiesListener = new OnSystemCapabilityListener() {
- @Override
- public void onCapabilityRetrieved(Object capability) {
- displayCapabilities = (DisplayCapabilities) capability;
- }
-
- @Override
- public void onError(String info) {
- Log.w(TAG, "Display Capability cannot be retrieved:");
- displayCapabilities = null;
- }
- };
- this.internalInterface.addOnSystemCapabilityListener(SystemCapabilityType.DISPLAY, onDisplayCapabilitiesListener);
-
+ this.internalInterface.addOnSystemCapabilityListener(SystemCapabilityType.DISPLAYS, onDisplayCapabilityListener);
// Add OnHMIStatusListener to keep currentHMILevel updated
this.onHMIStatusListener = new OnRPCNotificationListener() {
@@ -528,8 +518,10 @@ abstract class BaseSoftButtonManager extends BaseSubManager {
internalInterface.sendRPC(inProgressShowRPC);
}
- private boolean softButtonImagesSupported(){
- return (displayCapabilities == null || displayCapabilities.getGraphicSupported()) && (softButtonCapabilities == null || softButtonCapabilities.getImageSupported());
+ private boolean softButtonImagesSupported() {
+ return defaultMainWindowCapability == null
+ || defaultMainWindowCapability.getSoftButtonCapabilities() == null
+ || (!defaultMainWindowCapability.getSoftButtonCapabilities().isEmpty() && defaultMainWindowCapability.getSoftButtonCapabilities().get(0).getImageSupported());
}
/**
@@ -588,8 +580,7 @@ abstract class BaseSoftButtonManager extends BaseSubManager {
internalInterface.removeOnRPCNotificationListener(FunctionID.ON_HMI_STATUS, onHMIStatusListener);
internalInterface.removeOnRPCNotificationListener(FunctionID.ON_BUTTON_PRESS, onButtonPressListener);
internalInterface.removeOnRPCNotificationListener(FunctionID.ON_BUTTON_EVENT, onButtonEventListener);
- internalInterface.removeOnSystemCapabilityListener(SystemCapabilityType.SOFTBUTTON, onSoftButtonCapabilitiesListener);
- internalInterface.removeOnSystemCapabilityListener(SystemCapabilityType.DISPLAY, onDisplayCapabilitiesListener);
+ internalInterface.removeOnSystemCapabilityListener(SystemCapabilityType.DISPLAYS, onDisplayCapabilityListener);
}
/**
diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/BaseTextAndGraphicManager.java b/base/src/main/java/com/smartdevicelink/managers/screen/BaseTextAndGraphicManager.java
index e6a936957..83190d078 100644
--- a/base/src/main/java/com/smartdevicelink/managers/screen/BaseTextAndGraphicManager.java
+++ b/base/src/main/java/com/smartdevicelink/managers/screen/BaseTextAndGraphicManager.java
@@ -42,13 +42,15 @@ import com.smartdevicelink.managers.file.filetypes.SdlArtwork;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.SystemCapabilityManager;
import com.smartdevicelink.proxy.interfaces.ISdl;
import com.smartdevicelink.proxy.interfaces.OnSystemCapabilityListener;
-import com.smartdevicelink.proxy.rpc.DisplayCapabilities;
+import com.smartdevicelink.proxy.rpc.DisplayCapability;
import com.smartdevicelink.proxy.rpc.MetadataTags;
import com.smartdevicelink.proxy.rpc.OnHMIStatus;
import com.smartdevicelink.proxy.rpc.Show;
import com.smartdevicelink.proxy.rpc.TextField;
+import com.smartdevicelink.proxy.rpc.WindowCapability;
import com.smartdevicelink.proxy.rpc.enums.HMILevel;
import com.smartdevicelink.proxy.rpc.enums.MetadataType;
import com.smartdevicelink.proxy.rpc.enums.PredefinedWindows;
@@ -82,14 +84,14 @@ abstract class BaseTextAndGraphicManager extends BaseSubManager {
volatile Show inProgressUpdate;
Show currentScreenData, queuedImageUpdate;
HMILevel currentHMILevel;
- protected DisplayCapabilities displayCapabilities;
+ WindowCapability defaultMainWindowCapability;
private boolean pendingHMIFull, batchingUpdates;
private final WeakReference<FileManager> fileManager;
private final WeakReference<SoftButtonManager> softButtonManager;
private CompletionListener queuedUpdateListener, inProgressListener, pendingHMIListener;
SdlArtwork blankArtwork;
private OnRPCNotificationListener hmiListener;
- private OnSystemCapabilityListener onDisplayCapabilitiesListener;
+ private OnSystemCapabilityListener onDisplaysCapabilityListener;
private SdlArtwork primaryGraphic, secondaryGraphic;
private TextAlignment textAlignment;
private String textField1, textField2, textField3, textField4, mediaTrackTextField, title;
@@ -135,7 +137,7 @@ abstract class BaseTextAndGraphicManager extends BaseSubManager {
primaryGraphic = null;
secondaryGraphic = null;
blankArtwork = null;
- displayCapabilities = null;
+ defaultMainWindowCapability = null;
inProgressUpdate = null;
queuedImageUpdate = null;
currentScreenData = null;
@@ -148,7 +150,7 @@ abstract class BaseTextAndGraphicManager extends BaseSubManager {
// remove listeners
internalInterface.removeOnRPCNotificationListener(FunctionID.ON_HMI_STATUS, hmiListener);
- internalInterface.removeOnSystemCapabilityListener(SystemCapabilityType.DISPLAY, onDisplayCapabilitiesListener);
+ internalInterface.removeOnSystemCapabilityListener(SystemCapabilityType.DISPLAYS, onDisplaysCapabilityListener);
super.dispose();
}
@@ -175,20 +177,32 @@ abstract class BaseTextAndGraphicManager extends BaseSubManager {
};
internalInterface.addOnRPCNotificationListener(FunctionID.ON_HMI_STATUS, hmiListener);
- // Add OnDisplayCapabilitiesListener to keep displayCapabilities updated
- onDisplayCapabilitiesListener = new OnSystemCapabilityListener() {
+
+ onDisplaysCapabilityListener = new OnSystemCapabilityListener() {
@Override
public void onCapabilityRetrieved(Object capability) {
- displayCapabilities = (DisplayCapabilities)capability;
+ // instead of using the parameter it's more safe to use the convenience method
+ List<DisplayCapability> capabilities = SystemCapabilityManager.convertToList(capability, DisplayCapability.class);
+ if (capabilities == null || capabilities.size() == 0) {
+ DebugTool.logError("TextAndGraphic Manager - Capabilities sent here are null or empty");
+ }else {
+ DisplayCapability display = capabilities.get(0);
+ for (WindowCapability windowCapability : display.getWindowCapabilities()) {
+ int currentWindowID = windowCapability.getWindowID() != null ? windowCapability.getWindowID() : PredefinedWindows.DEFAULT_WINDOW.getValue();
+ if (currentWindowID == PredefinedWindows.DEFAULT_WINDOW.getValue()) {
+ defaultMainWindowCapability = windowCapability;
+ }
+ }
+ }
}
@Override
public void onError(String info) {
- Log.e(TAG, "DISPLAY Capability cannot be retrieved:");
- displayCapabilities = null;
+ DebugTool.logError("Display Capability cannot be retrieved");
+ defaultMainWindowCapability = null;
}
};
- this.internalInterface.addOnSystemCapabilityListener(SystemCapabilityType.DISPLAY, onDisplayCapabilitiesListener);
+ this.internalInterface.addOnSystemCapabilityListener(SystemCapabilityType.DISPLAYS, onDisplaysCapabilityListener);
}
// Upload / Send
@@ -323,7 +337,7 @@ abstract class BaseTextAndGraphicManager extends BaseSubManager {
if (this.softButtonManager.get() != null) {
this.softButtonManager.get().setCurrentMainField1(inProgressUpdate.getMainField1());
}
- internalInterface.sendRPCRequest(inProgressUpdate);
+ internalInterface.sendRPC(inProgressUpdate);
}
// Images
@@ -719,6 +733,7 @@ abstract class BaseTextAndGraphicManager extends BaseSubManager {
abstract SdlArtwork getBlankArtwork();
+ @SuppressWarnings("BooleanMethodIsAlwaysInverted")
private boolean sdlArtworkNeedsUpload(SdlArtwork artwork){
if (fileManager.get() != null) {
return artwork != null && !fileManager.get().hasUploadedFile(artwork) && !artwork.isStaticIcon();
@@ -727,7 +742,7 @@ abstract class BaseTextAndGraphicManager extends BaseSubManager {
}
private boolean shouldUpdatePrimaryImage() {
- if (displayCapabilities == null || displayCapabilities.getGraphicSupported()) {
+ if (defaultMainWindowCapability == null || defaultMainWindowCapability.getImageTypeSupported() == null || defaultMainWindowCapability.getImageTypeSupported().size() > 0) {
if (currentScreenData.getGraphic() == null && primaryGraphic != null) {
return true;
} else if (currentScreenData.getGraphic() == null && primaryGraphic == null) {
@@ -741,7 +756,7 @@ abstract class BaseTextAndGraphicManager extends BaseSubManager {
private boolean shouldUpdateSecondaryImage() {
// Cannot detect if there is a secondary image, so we'll just try to detect if there's a primary image and allow it if there is.
- if (displayCapabilities == null || displayCapabilities.getGraphicSupported()) {
+ if (defaultMainWindowCapability == null || defaultMainWindowCapability.getImageTypeSupported() == null || defaultMainWindowCapability.getImageTypeSupported().size() > 0) {
if (currentScreenData.getGraphic() == null && secondaryGraphic != null) {
return true;
} else if (currentScreenData.getGraphic() == null && secondaryGraphic == null) {
@@ -755,13 +770,13 @@ abstract class BaseTextAndGraphicManager extends BaseSubManager {
int getNumberOfLines() {
- if (displayCapabilities == null){
+ if (defaultMainWindowCapability == null){
return 4;
}
int linesFound = 0;
- List<TextField> textFields = displayCapabilities.getTextFields();
+ List<TextField> textFields = defaultMainWindowCapability.getTextFields();
TextFieldName name;
for (TextField field : textFields) {
if (field.getName() != null) {
diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/SoftButtonState.java b/base/src/main/java/com/smartdevicelink/managers/screen/SoftButtonState.java
index 9e48b2f7d..97842a8eb 100644
--- a/base/src/main/java/com/smartdevicelink/managers/screen/SoftButtonState.java
+++ b/base/src/main/java/com/smartdevicelink/managers/screen/SoftButtonState.java
@@ -39,8 +39,6 @@ import com.smartdevicelink.proxy.rpc.SoftButton;
import com.smartdevicelink.proxy.rpc.enums.SoftButtonType;
import com.smartdevicelink.proxy.rpc.enums.SystemAction;
-import java.util.List;
-
/**
* <strong>SoftButtonState</strong> <br>
* Defines an individual state for SoftButtonObject.<br>
diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/BaseChoiceSetManager.java b/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/BaseChoiceSetManager.java
index e343cd131..591f50a84 100644
--- a/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/BaseChoiceSetManager.java
+++ b/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/BaseChoiceSetManager.java
@@ -42,11 +42,13 @@ import com.smartdevicelink.managers.CompletionListener;
import com.smartdevicelink.managers.file.FileManager;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
+import com.smartdevicelink.proxy.SystemCapabilityManager;
import com.smartdevicelink.proxy.interfaces.ISdl;
import com.smartdevicelink.proxy.interfaces.OnSystemCapabilityListener;
-import com.smartdevicelink.proxy.rpc.DisplayCapabilities;
+import com.smartdevicelink.proxy.rpc.DisplayCapability;
import com.smartdevicelink.proxy.rpc.KeyboardProperties;
import com.smartdevicelink.proxy.rpc.OnHMIStatus;
+import com.smartdevicelink.proxy.rpc.WindowCapability;
import com.smartdevicelink.proxy.rpc.enums.HMILevel;
import com.smartdevicelink.proxy.rpc.enums.InteractionMode;
import com.smartdevicelink.proxy.rpc.enums.KeyboardLayout;
@@ -60,7 +62,6 @@ import com.smartdevicelink.proxy.rpc.listeners.OnRPCNotificationListener;
import com.smartdevicelink.util.DebugTool;
import java.lang.ref.WeakReference;
-import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.Future;
@@ -80,9 +81,9 @@ abstract class BaseChoiceSetManager extends BaseSubManager {
final WeakReference<FileManager> fileManager;
OnRPCNotificationListener hmiListener;
- OnSystemCapabilityListener displayListener;
+ OnSystemCapabilityListener onDisplayCapabilityListener;
HMILevel currentHMILevel;
- DisplayCapabilities displayCapabilities;
+ WindowCapability defaultMainWindowCapability;
SystemContext currentSystemContext;
HashSet<ChoiceCell> preloadedChoices, pendingPreloadChoices;
ChoiceSet pendingPresentationSet;
@@ -139,7 +140,7 @@ abstract class BaseChoiceSetManager extends BaseSubManager {
currentHMILevel = null;
currentSystemContext = null;
- displayCapabilities = null;
+ defaultMainWindowCapability = null;
pendingPresentationSet = null;
pendingPresentOperation = null;
@@ -149,7 +150,7 @@ abstract class BaseChoiceSetManager extends BaseSubManager {
// remove listeners
internalInterface.removeOnRPCNotificationListener(FunctionID.ON_HMI_STATUS, hmiListener);
- internalInterface.removeOnSystemCapabilityListener(SystemCapabilityType.DISPLAY, displayListener);
+ internalInterface.removeOnSystemCapabilityListener(SystemCapabilityType.DISPLAYS, onDisplayCapabilityListener);
super.dispose();
}
@@ -207,7 +208,7 @@ abstract class BaseChoiceSetManager extends BaseSubManager {
pendingPreloadChoices.addAll(choicesToUpload);
if (fileManager.get() != null) {
- PreloadChoicesOperation preloadChoicesOperation = new PreloadChoicesOperation(internalInterface, fileManager.get(), displayCapabilities, isVROptional, choicesToUpload, new CompletionListener() {
+ PreloadChoicesOperation preloadChoicesOperation = new PreloadChoicesOperation(internalInterface, fileManager.get(), defaultMainWindowCapability, isVROptional, choicesToUpload, new CompletionListener() {
@Override
public void onComplete(boolean success) {
if (success){
@@ -509,19 +510,32 @@ abstract class BaseChoiceSetManager extends BaseSubManager {
// LISTENERS
private void addListeners(){
- // DISPLAY CAPABILITIES - via SCM
- displayListener = new OnSystemCapabilityListener() {
+ // DISPLAY/WINDOW CAPABILITIES - via SCM
+ onDisplayCapabilityListener = new OnSystemCapabilityListener() {
@Override
public void onCapabilityRetrieved(Object capability) {
- displayCapabilities = (DisplayCapabilities) capability;
+ // instead of using the parameter it's more safe to use the convenience method
+ List<DisplayCapability> capabilities = SystemCapabilityManager.convertToList(capability, DisplayCapability.class);
+ if (capabilities == null || capabilities.size() == 0) {
+ DebugTool.logError("SoftButton Manager - Capabilities sent here are null or empty");
+ }else {
+ DisplayCapability display = capabilities.get(0);
+ for (WindowCapability windowCapability : display.getWindowCapabilities()) {
+ int currentWindowID = windowCapability.getWindowID() != null ? windowCapability.getWindowID() : PredefinedWindows.DEFAULT_WINDOW.getValue();
+ if (currentWindowID == PredefinedWindows.DEFAULT_WINDOW.getValue()) {
+ defaultMainWindowCapability = windowCapability;
+ }
+ }
+ }
}
@Override
public void onError(String info) {
DebugTool.logError("Unable to retrieve display capabilities. Many things will probably break. Info: "+ info);
+ defaultMainWindowCapability = null;
}
};
- internalInterface.getCapability(SystemCapabilityType.DISPLAY, displayListener);
+ this.internalInterface.addOnSystemCapabilityListener(SystemCapabilityType.DISPLAYS, onDisplayCapabilityListener);
// HMI UPDATES
hmiListener = new OnRPCNotificationListener() {
diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSet.java b/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSet.java
index b846760c7..34bdbd6a4 100644
--- a/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSet.java
+++ b/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSet.java
@@ -34,6 +34,7 @@ package com.smartdevicelink.managers.screen.choiceset;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+
import com.smartdevicelink.proxy.TTSChunkFactory;
import com.smartdevicelink.proxy.rpc.KeyboardProperties;
import com.smartdevicelink.proxy.rpc.TTSChunk;
diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/KeyboardAutocompleteCompletionListener.java b/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/KeyboardAutocompleteCompletionListener.java
index 992509019..13b19238d 100644
--- a/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/KeyboardAutocompleteCompletionListener.java
+++ b/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/KeyboardAutocompleteCompletionListener.java
@@ -32,9 +32,6 @@
package com.smartdevicelink.managers.screen.choiceset;
-import com.smartdevicelink.proxy.SystemCapabilityManager;
-import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
-
import java.util.List;
public interface KeyboardAutocompleteCompletionListener {
diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperation.java b/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperation.java
index 99cd91a96..6492d2c09 100644
--- a/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperation.java
+++ b/base/src/main/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperation.java
@@ -49,6 +49,7 @@ import com.smartdevicelink.proxy.rpc.DisplayCapabilities;
import com.smartdevicelink.proxy.rpc.Image;
import com.smartdevicelink.proxy.rpc.ImageField;
import com.smartdevicelink.proxy.rpc.TextField;
+import com.smartdevicelink.proxy.rpc.WindowCapability;
import com.smartdevicelink.proxy.rpc.enums.ImageFieldName;
import com.smartdevicelink.proxy.rpc.enums.Result;
import com.smartdevicelink.proxy.rpc.enums.TextFieldName;
@@ -66,18 +67,18 @@ class PreloadChoicesOperation extends AsynchronousOperation {
private WeakReference<ISdl> internalInterface;
private WeakReference<FileManager> fileManager;
- private DisplayCapabilities displayCapabilities;
+ private WindowCapability defaultMainWindowCapability;
private HashSet<ChoiceCell> cellsToUpload;
private CompletionListener completionListener;
private boolean isRunning;
private boolean isVROptional;
- PreloadChoicesOperation(ISdl internalInterface, FileManager fileManager, DisplayCapabilities displayCapabilities,
+ PreloadChoicesOperation(ISdl internalInterface, FileManager fileManager, WindowCapability defaultMainWindowCapability,
Boolean isVROptional, HashSet<ChoiceCell> cellsToPreload, CompletionListener listener){
super();
this.internalInterface = new WeakReference<>(internalInterface);
this.fileManager = new WeakReference<>(fileManager);
- this.displayCapabilities = displayCapabilities;
+ this.defaultMainWindowCapability = defaultMainWindowCapability;
this.isVROptional = isVROptional;
this.cellsToUpload = cellsToPreload;
this.completionListener = listener;
@@ -249,10 +250,10 @@ class PreloadChoicesOperation extends AsynchronousOperation {
}
boolean hasImageFieldOfName(ImageFieldName name){
- if (displayCapabilities == null ){ return false; }
- if (displayCapabilities.getGraphicSupported() == null || !displayCapabilities.getGraphicSupported()) { return false; }
- if (displayCapabilities.getImageFields() != null){
- for (ImageField field : displayCapabilities.getImageFields()){
+ if (defaultMainWindowCapability == null ){ return false; }
+ if (defaultMainWindowCapability.getImageTypeSupported() == null || defaultMainWindowCapability.getImageTypeSupported().isEmpty()) { return false; }
+ if (defaultMainWindowCapability.getImageFields() != null){
+ for (ImageField field : defaultMainWindowCapability.getImageFields()){
if (field.getName().equals(name)){
return true;
}
@@ -262,9 +263,9 @@ class PreloadChoicesOperation extends AsynchronousOperation {
}
boolean hasTextFieldOfName(TextFieldName name){
- if (displayCapabilities == null ){ return false; }
- if (displayCapabilities.getTextFields() != null){
- for (TextField field : displayCapabilities.getTextFields()){
+ if (defaultMainWindowCapability == null ){ return false; }
+ if (defaultMainWindowCapability.getTextFields() != null){
+ for (TextField field : defaultMainWindowCapability.getTextFields()){
if (field.getName().equals(name)){
return true;
}
@@ -272,5 +273,4 @@ class PreloadChoicesOperation extends AsynchronousOperation {
}
return false;
}
-
} \ No newline at end of file
diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java b/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java
index f53331157..21a4eec06 100644
--- a/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java
+++ b/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java
@@ -43,13 +43,14 @@ import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCNotification;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.RPCResponse;
+import com.smartdevicelink.proxy.SystemCapabilityManager;
import com.smartdevicelink.proxy.interfaces.ISdl;
import com.smartdevicelink.proxy.interfaces.OnSystemCapabilityListener;
import com.smartdevicelink.proxy.rpc.AddCommand;
import com.smartdevicelink.proxy.rpc.AddSubMenu;
import com.smartdevicelink.proxy.rpc.DeleteCommand;
import com.smartdevicelink.proxy.rpc.DeleteSubMenu;
-import com.smartdevicelink.proxy.rpc.DisplayCapabilities;
+import com.smartdevicelink.proxy.rpc.DisplayCapability;
import com.smartdevicelink.proxy.rpc.ImageField;
import com.smartdevicelink.proxy.rpc.MenuParams;
import com.smartdevicelink.proxy.rpc.OnCommand;
@@ -57,10 +58,10 @@ import com.smartdevicelink.proxy.rpc.OnHMIStatus;
import com.smartdevicelink.proxy.rpc.SdlMsgVersion;
import com.smartdevicelink.proxy.rpc.ShowAppMenu;
import com.smartdevicelink.proxy.rpc.SetGlobalProperties;
+import com.smartdevicelink.proxy.rpc.WindowCapability;
import com.smartdevicelink.proxy.rpc.enums.DisplayType;
import com.smartdevicelink.proxy.rpc.enums.HMILevel;
import com.smartdevicelink.proxy.rpc.enums.ImageFieldName;
-import com.smartdevicelink.proxy.rpc.enums.MenuLayout;
import com.smartdevicelink.proxy.rpc.enums.PredefinedWindows;
import com.smartdevicelink.proxy.rpc.enums.Result;
import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
@@ -91,15 +92,15 @@ abstract class BaseMenuManager extends BaseSubManager {
DynamicMenuUpdatesMode dynamicMenuUpdatesMode;
MenuConfiguration menuConfiguration;
SdlMsgVersion sdlMsgVersion;
- private DisplayType displayType;
+ private String displayType;
boolean waitingOnHMIUpdate;
private boolean hasQueuedUpdate;
HMILevel currentHMILevel;
OnRPCNotificationListener hmiListener, commandListener;
- OnSystemCapabilityListener displayListener;
- DisplayCapabilities displayCapabilities;
+ OnSystemCapabilityListener onDisplaysCapabilityListener;
+ WindowCapability defaultMainWindowCapability;
private static final int MAX_ID = 2000000000;
private static final int parentIdNotFound = MAX_ID;
@@ -138,7 +139,7 @@ abstract class BaseMenuManager extends BaseSubManager {
currentHMILevel = null;
currentSystemContext = SystemContext.SYSCTXT_MAIN;
dynamicMenuUpdatesMode = DynamicMenuUpdatesMode.ON_WITH_COMPAT_MODE;
- displayCapabilities = null;
+ defaultMainWindowCapability = null;
inProgressUpdate = null;
hasQueuedUpdate = false;
waitingOnHMIUpdate = false;
@@ -151,7 +152,7 @@ abstract class BaseMenuManager extends BaseSubManager {
// remove listeners
internalInterface.removeOnRPCNotificationListener(FunctionID.ON_HMI_STATUS, hmiListener);
internalInterface.removeOnRPCNotificationListener(FunctionID.ON_COMMAND, commandListener);
- internalInterface.removeOnSystemCapabilityListener(SystemCapabilityType.DISPLAY, displayListener);
+ internalInterface.removeOnSystemCapabilityListener(SystemCapabilityType.DISPLAYS, onDisplaysCapabilityListener);
super.dispose();
}
@@ -450,13 +451,13 @@ abstract class BaseMenuManager extends BaseSubManager {
}
}
- private boolean checkUpdateMode(DynamicMenuUpdatesMode updateMode, DisplayType displayType){
+ private boolean checkUpdateMode(DynamicMenuUpdatesMode updateMode, String displayType){
if (updateMode.equals(DynamicMenuUpdatesMode.ON_WITH_COMPAT_MODE)){
if (displayType == null){
return true;
}
- return (!displayType.equals(DisplayType.GEN3_8_INCH));
+ return (!displayType.equals(DisplayType.GEN3_8_INCH.toString()));
} else if (updateMode.equals(DynamicMenuUpdatesMode.FORCE_OFF)){
return false;
@@ -773,8 +774,8 @@ abstract class BaseMenuManager extends BaseSubManager {
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
private boolean supportsImages(){
- if (displayCapabilities != null && displayCapabilities.getImageFields() != null) {
- List<ImageField> imageFields = displayCapabilities.getImageFields();
+ if (defaultMainWindowCapability != null && defaultMainWindowCapability.getImageFields() != null) {
+ List<ImageField> imageFields = defaultMainWindowCapability.getImageFields();
for (ImageField field : imageFields) {
if (field.getName().equals(ImageFieldName.cmdIcon)) {
return true;
@@ -1004,25 +1005,34 @@ abstract class BaseMenuManager extends BaseSubManager {
// LISTENERS
- @SuppressWarnings("deprecation")
private void addListeners(){
-
// DISPLAY CAPABILITIES - via SCM
- displayListener = new OnSystemCapabilityListener() {
+ onDisplaysCapabilityListener = new OnSystemCapabilityListener() {
@Override
public void onCapabilityRetrieved(Object capability) {
- displayCapabilities = (DisplayCapabilities) capability;
- if (displayCapabilities != null) {
- displayType = displayCapabilities.getDisplayType();
+ // instead of using the parameter it's more safe to use the convenience method
+ List<DisplayCapability> capabilities = SystemCapabilityManager.convertToList(capability, DisplayCapability.class);
+ if (capabilities == null || capabilities.size() == 0) {
+ DebugTool.logError("SoftButton Manager - Capabilities sent here are null or empty");
+ }else {
+ DisplayCapability display = capabilities.get(0);
+ displayType = display.getDisplayName();
+ for (WindowCapability windowCapability : display.getWindowCapabilities()) {
+ int currentWindowID = windowCapability.getWindowID() != null ? windowCapability.getWindowID() : PredefinedWindows.DEFAULT_WINDOW.getValue();
+ if (currentWindowID == PredefinedWindows.DEFAULT_WINDOW.getValue()) {
+ defaultMainWindowCapability = windowCapability;
+ }
+ }
}
}
@Override
public void onError(String info) {
- DebugTool.logError("Unable to retrieve display capabilities: "+ info);
+ DebugTool.logError("Display Capability cannot be retrieved");
+ defaultMainWindowCapability = null;
}
};
- internalInterface.getCapability(SystemCapabilityType.DISPLAY, displayListener);
+ this.internalInterface.addOnSystemCapabilityListener(SystemCapabilityType.DISPLAYS, onDisplaysCapabilityListener);
// HMI UPDATES
hmiListener = new OnRPCNotificationListener() {
diff --git a/base/src/main/java/com/smartdevicelink/proxy/SystemCapabilityManager.java b/base/src/main/java/com/smartdevicelink/proxy/SystemCapabilityManager.java
index 2e01ce026..febeb24ca 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/SystemCapabilityManager.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/SystemCapabilityManager.java
@@ -36,7 +36,9 @@ import com.smartdevicelink.proxy.interfaces.ISdl;
import com.smartdevicelink.proxy.interfaces.OnSystemCapabilityListener;
import com.smartdevicelink.proxy.rpc.AppServiceCapability;
import com.smartdevicelink.proxy.rpc.AppServicesCapabilities;
+import com.smartdevicelink.proxy.rpc.ButtonCapabilities;
import com.smartdevicelink.proxy.rpc.DisplayCapabilities;
+import com.smartdevicelink.proxy.rpc.DisplayCapability;
import com.smartdevicelink.proxy.rpc.GetSystemCapability;
import com.smartdevicelink.proxy.rpc.GetSystemCapabilityResponse;
import com.smartdevicelink.proxy.rpc.HMICapabilities;
@@ -44,9 +46,17 @@ import com.smartdevicelink.proxy.rpc.OnSystemCapabilityUpdated;
import com.smartdevicelink.proxy.rpc.RegisterAppInterfaceResponse;
import com.smartdevicelink.proxy.rpc.SdlMsgVersion;
import com.smartdevicelink.proxy.rpc.SetDisplayLayoutResponse;
+import com.smartdevicelink.proxy.rpc.SoftButtonCapabilities;
import com.smartdevicelink.proxy.rpc.SystemCapability;
+import com.smartdevicelink.proxy.rpc.WindowCapability;
+import com.smartdevicelink.proxy.rpc.WindowTypeCapabilities;
+import com.smartdevicelink.proxy.rpc.enums.DisplayType;
+import com.smartdevicelink.proxy.rpc.enums.ImageType;
+import com.smartdevicelink.proxy.rpc.enums.MediaClockFormat;
+import com.smartdevicelink.proxy.rpc.enums.PredefinedWindows;
import com.smartdevicelink.proxy.rpc.enums.Result;
import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
+import com.smartdevicelink.proxy.rpc.enums.WindowType;
import com.smartdevicelink.proxy.rpc.listeners.OnRPCListener;
import com.smartdevicelink.proxy.rpc.listeners.OnRPCResponseListener;
import com.smartdevicelink.util.CorrelationIdGenerator;
@@ -54,8 +64,10 @@ import com.smartdevicelink.util.DebugTool;
import com.smartdevicelink.util.Version;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
+import java.util.ListIterator;
import java.util.concurrent.CopyOnWriteArrayList;
public class SystemCapabilityManager {
@@ -64,18 +76,161 @@ public class SystemCapabilityManager {
private final Object LISTENER_LOCK;
private final ISdl callback;
private OnRPCListener rpcListener;
+ private boolean shouldConvertDeprecatedDisplayCapabilities;
public SystemCapabilityManager(ISdl callback){
this.callback = callback;
this.LISTENER_LOCK = new Object();
this.onSystemCapabilityListeners = new HashMap<>();
this.cachedSystemCapabilities = new HashMap<>();
+ this.shouldConvertDeprecatedDisplayCapabilities = true;
setupRpcListeners();
}
+ private List<DisplayCapability> createDisplayCapabilityList(RegisterAppInterfaceResponse rpc) {
+ return createDisplayCapabilityList(rpc.getDisplayCapabilities(), rpc.getButtonCapabilities(), rpc.getSoftButtonCapabilities());
+ }
+
+ private List<DisplayCapability> createDisplayCapabilityList(SetDisplayLayoutResponse rpc) {
+ return createDisplayCapabilityList(rpc.getDisplayCapabilities(), rpc.getButtonCapabilities(), rpc.getSoftButtonCapabilities());
+ }
+
+ private List<DisplayCapability> createDisplayCapabilityList(DisplayCapabilities display, List<ButtonCapabilities> button, List<SoftButtonCapabilities> softButton) {
+ // Based on deprecated Display capabilities we don't know if widgets are supported,
+ // The Default MAIN window is the only window we know is supported
+ WindowTypeCapabilities windowTypeCapabilities = new WindowTypeCapabilities(WindowType.MAIN, 1);
+
+ DisplayCapability displayCapability = new DisplayCapability();
+ displayCapability.setDisplayName(display != null ? display.getDisplayName() : display.getDisplayType().toString());
+ displayCapability.setWindowTypeSupported(Collections.singletonList(windowTypeCapabilities));
+
+ // Create a window capability object for the default MAIN window
+ WindowCapability defaultWindowCapability = new WindowCapability();
+ defaultWindowCapability.setWindowID(PredefinedWindows.DEFAULT_WINDOW.getValue());
+ defaultWindowCapability.setButtonCapabilities(button);
+ defaultWindowCapability.setSoftButtonCapabilities(softButton);
+
+ // return if display capabilities don't exist.
+ if (display == null) {
+ displayCapability.setWindowCapabilities(Collections.singletonList(defaultWindowCapability));
+ return Collections.singletonList(displayCapability);
+ }
+
+ // copy all available display capabilities
+ defaultWindowCapability.setTemplatesAvailable(display.getTemplatesAvailable());
+ defaultWindowCapability.setNumCustomPresetsAvailable(display.getNumCustomPresetsAvailable());
+ defaultWindowCapability.setTextFields(display.getTextFields());
+ defaultWindowCapability.setImageFields(display.getImageFields());
+ ArrayList<ImageType> imageTypeSupported = new ArrayList<>();
+ imageTypeSupported.add(ImageType.STATIC); // static images expected to always work on any head unit
+ if (display.getGraphicSupported()) {
+ imageTypeSupported.add(ImageType.DYNAMIC);
+ }
+ defaultWindowCapability.setImageTypeSupported(imageTypeSupported);
+
+ displayCapability.setWindowCapabilities(Collections.singletonList(defaultWindowCapability));
+ return Collections.singletonList(displayCapability);
+ }
+
+ private DisplayCapabilities createDeprecatedDisplayCapabilities(String displayName, WindowCapability defaultMainWindow) {
+ DisplayCapabilities convertedCapabilities = new DisplayCapabilities();
+ convertedCapabilities.setDisplayType(DisplayType.SDL_GENERIC); //deprecated but it is mandatory...
+ convertedCapabilities.setDisplayName(displayName);
+ convertedCapabilities.setTextFields(defaultMainWindow.getTextFields());
+ convertedCapabilities.setImageFields(defaultMainWindow.getImageFields());
+ convertedCapabilities.setTemplatesAvailable(defaultMainWindow.getTemplatesAvailable());
+ convertedCapabilities.setNumCustomPresetsAvailable(defaultMainWindow.getNumCustomPresetsAvailable());
+ convertedCapabilities.setMediaClockFormats(new ArrayList<MediaClockFormat>()); // mandatory field but allows empty array
+ // if there are imageTypes in the response, we must assume graphics are supported
+ convertedCapabilities.setGraphicSupported(defaultMainWindow.getImageTypeSupported() != null && defaultMainWindow.getImageTypeSupported().size() > 0);
+
+ return convertedCapabilities;
+ }
+
+ private void updateDeprecatedDisplayCapabilities() {
+ WindowCapability defaultMainWindowCapabilities = getDefaultMainWindowCapability();
+ List<DisplayCapability> displayCapabilityList = convertToList(getCapability(SystemCapabilityType.DISPLAYS), DisplayCapability.class);
+
+ if (defaultMainWindowCapabilities == null || displayCapabilityList == null || displayCapabilityList.size() == 0) {
+ return;
+ }
+
+ // cover the deprecated capabilities for backward compatibility
+ setCapability(SystemCapabilityType.DISPLAY, createDeprecatedDisplayCapabilities(displayCapabilityList.get(0).getDisplayName(), defaultMainWindowCapabilities));
+ setCapability(SystemCapabilityType.BUTTON, defaultMainWindowCapabilities.getButtonCapabilities());
+ setCapability(SystemCapabilityType.SOFTBUTTON, defaultMainWindowCapabilities.getSoftButtonCapabilities());
+ }
+
+ private void updateCachedDisplayCapabilityList(List<DisplayCapability> newCapabilities) {
+ if (newCapabilities == null || newCapabilities.size() == 0) {
+ DebugTool.logWarning("Received invalid display capability list");
+ return;
+ }
+
+ List<DisplayCapability> oldCapabilities = convertToList(getCapability(SystemCapabilityType.DISPLAYS), DisplayCapability.class);
+
+ if (oldCapabilities == null || oldCapabilities.size() == 0) {
+ setCapability(SystemCapabilityType.DISPLAYS, newCapabilities);
+ updateDeprecatedDisplayCapabilities();
+ return;
+ }
+
+ DisplayCapability oldDefaultDisplayCapabilities = oldCapabilities.get(0);
+ ArrayList<WindowCapability> copyWindowCapabilities = new ArrayList<>(oldDefaultDisplayCapabilities.getWindowCapabilities());
+
+ DisplayCapability newDefaultDisplayCapabilities = newCapabilities.get(0);
+ List<WindowCapability> newWindowCapabilities = newDefaultDisplayCapabilities.getWindowCapabilities();
+
+ for (WindowCapability newWindow : newWindowCapabilities) {
+ ListIterator<WindowCapability> iterator = copyWindowCapabilities.listIterator();
+ boolean oldFound = false;
+ while (iterator.hasNext()) {
+ WindowCapability oldWindow = iterator.next();
+ int newWindowID = newWindow.getWindowID() != null ? newWindow.getWindowID() : PredefinedWindows.DEFAULT_WINDOW.getValue();
+ int oldWindowID = oldWindow.getWindowID() != null ? oldWindow.getWindowID() : PredefinedWindows.DEFAULT_WINDOW.getValue();
+ if (newWindowID == oldWindowID) {
+ iterator.set(newWindow); // replace the old window caps with new ones
+ oldFound = true;
+ break;
+ }
+ }
+
+ if (!oldFound) {
+ copyWindowCapabilities.add(newWindow); // this is a new unknown window
+ }
+ }
+
+ // replace the window capabilities array with the merged one.
+ newDefaultDisplayCapabilities.setWindowCapabilities(copyWindowCapabilities);
+ setCapability(SystemCapabilityType.DISPLAYS, Collections.singletonList(newDefaultDisplayCapabilities));
+ updateDeprecatedDisplayCapabilities();
+ }
+
+
+ public WindowCapability getWindowCapability(int windowID) {
+ List<DisplayCapability> capabilities = convertToList(getCapability(SystemCapabilityType.DISPLAYS), DisplayCapability.class);
+ if (capabilities == null || capabilities.size() == 0) {
+ return null;
+ }
+ DisplayCapability display = capabilities.get(0);
+ for (WindowCapability windowCapability : display.getWindowCapabilities()) {
+ int currentWindowID = windowCapability.getWindowID() != null ? windowCapability.getWindowID() : PredefinedWindows.DEFAULT_WINDOW.getValue();
+ if (currentWindowID == windowID) {
+ return windowCapability;
+ }
+ }
+ return null;
+ }
+
+ public WindowCapability getDefaultMainWindowCapability() {
+ return getWindowCapability(PredefinedWindows.DEFAULT_WINDOW.getValue());
+ }
+
public void parseRAIResponse(RegisterAppInterfaceResponse response){
if(response!=null && response.getSuccess()) {
+ this.shouldConvertDeprecatedDisplayCapabilities = true; // reset the flag
+ setCapability(SystemCapabilityType.DISPLAYS, createDisplayCapabilityList(response));
setCapability(SystemCapabilityType.HMI, response.getHmiCapabilities());
setCapability(SystemCapabilityType.DISPLAY, response.getDisplayCapabilities());
setCapability(SystemCapabilityType.AUDIO_PASSTHROUGH, response.getAudioPassThruCapabilities());
@@ -90,7 +245,7 @@ public class SystemCapabilityManager {
}
}
- private void setupRpcListeners(){
+ private void setupRpcListeners() {
rpcListener = new OnRPCListener() {
@Override
public void onReceived(RPCMessage message) {
@@ -103,36 +258,53 @@ public class SystemCapabilityManager {
setCapability(SystemCapabilityType.BUTTON, response.getButtonCapabilities());
setCapability(SystemCapabilityType.PRESET_BANK, response.getPresetBankCapabilities());
setCapability(SystemCapabilityType.SOFTBUTTON, response.getSoftButtonCapabilities());
+ if (shouldConvertDeprecatedDisplayCapabilities) {
+ setCapability(SystemCapabilityType.DISPLAYS, createDisplayCapabilityList(response));
+ }
+ break;
+ case GET_SYSTEM_CAPABILITY:
+ GetSystemCapabilityResponse systemCapabilityResponse = (GetSystemCapabilityResponse) message;
+ SystemCapability systemCapability = systemCapabilityResponse.getSystemCapability();
+ if (systemCapabilityResponse.getSuccess() && SystemCapabilityType.DISPLAYS.equals(systemCapability.getSystemCapabilityType())) {
+ shouldConvertDeprecatedDisplayCapabilities = false; // Successfully got DISPLAYS data. No conversion needed anymore
+ List<DisplayCapability> newCapabilities = (List<DisplayCapability>) systemCapability.getCapabilityForType(SystemCapabilityType.DISPLAYS);
+ updateCachedDisplayCapabilityList(newCapabilities);
+ }
break;
}
- } else if (RPCMessage.KEY_NOTIFICATION.equals(message.getMessageType())){
+ } else if (RPCMessage.KEY_NOTIFICATION.equals(message.getMessageType())) {
switch (message.getFunctionID()) {
case ON_SYSTEM_CAPABILITY_UPDATED:
- OnSystemCapabilityUpdated onSystemCapabilityUpdated =(OnSystemCapabilityUpdated)message;
- if(onSystemCapabilityUpdated.getSystemCapability() != null){
+ OnSystemCapabilityUpdated onSystemCapabilityUpdated = (OnSystemCapabilityUpdated) message;
+ if (onSystemCapabilityUpdated.getSystemCapability() != null) {
SystemCapability systemCapability = onSystemCapabilityUpdated.getSystemCapability();
SystemCapabilityType systemCapabilityType = systemCapability.getSystemCapabilityType();
Object capability = systemCapability.getCapabilityForType(systemCapabilityType);
- if(cachedSystemCapabilities.containsKey(systemCapabilityType)) { //The capability already exists
+ if (cachedSystemCapabilities.containsKey(systemCapabilityType)) { //The capability already exists
switch (systemCapabilityType) {
case APP_SERVICES:
// App services only updates what was changed so we need
// to update the capability rather than override it
AppServicesCapabilities appServicesCapabilities = (AppServicesCapabilities) capability;
- if(capability != null) {
- List<AppServiceCapability> appServicesCapabilitiesList = appServicesCapabilities.getAppServices();
- AppServicesCapabilities cachedAppServicesCapabilities = (AppServicesCapabilities) cachedSystemCapabilities.get(systemCapabilityType);
- //Update the cached app services
- cachedAppServicesCapabilities.updateAppServices(appServicesCapabilitiesList);
- //Set the new capability object to the updated cached capabilities
- capability = cachedAppServicesCapabilities;
+ if (capability != null) {
+ List<AppServiceCapability> appServicesCapabilitiesList = appServicesCapabilities.getAppServices();
+ AppServicesCapabilities cachedAppServicesCapabilities = (AppServicesCapabilities) cachedSystemCapabilities.get(systemCapabilityType);
+ //Update the cached app services
+ cachedAppServicesCapabilities.updateAppServices(appServicesCapabilitiesList);
+ //Set the new capability object to the updated cached capabilities
+ capability = cachedAppServicesCapabilities;
}
break;
+ case DISPLAYS:
+ shouldConvertDeprecatedDisplayCapabilities = false; // Successfully got DISPLAYS data. No conversion needed anymore
+ // this notification can return only affected windows (hence not all windows)
+ List<DisplayCapability> newCapabilities = (List<DisplayCapability>) capability;
+ updateCachedDisplayCapabilityList(newCapabilities);
}
}
- if(capability != null){
- setCapability(systemCapabilityType, capability);
- }
+ if (capability != null) {
+ setCapability(systemCapabilityType, capability);
+ }
}
}
}
@@ -140,7 +312,8 @@ public class SystemCapabilityManager {
}
};
- if(callback != null){
+ if (callback != null) {
+ callback.addOnRPCListener(FunctionID.GET_SYSTEM_CAPABILITY, rpcListener);
callback.addOnRPCListener(FunctionID.SET_DISPLAY_LAYOUT, rpcListener);
callback.addOnRPCListener(FunctionID.ON_SYSTEM_CAPABILITY_UPDATED, rpcListener);
}
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/CreateWindow.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/CreateWindow.java
index c2066f1c4..d0ac5807c 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/CreateWindow.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/CreateWindow.java
@@ -1,9 +1,11 @@
package com.smartdevicelink.proxy.rpc;
import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.rpc.enums.WindowType;
+
import java.util.Hashtable;
/**
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/CreateWindowResponse.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/CreateWindowResponse.java
index 86dac3602..733283462 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/CreateWindowResponse.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/CreateWindowResponse.java
@@ -1,9 +1,11 @@
package com.smartdevicelink.proxy.rpc;
import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
import com.smartdevicelink.proxy.rpc.enums.Result;
+
import java.util.Hashtable;
/**
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/DeleteWindow.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/DeleteWindow.java
index 52cca2a04..3c766deeb 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/DeleteWindow.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/DeleteWindow.java
@@ -1,8 +1,10 @@
package com.smartdevicelink.proxy.rpc;
import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+
import java.util.Hashtable;
/**
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/DeleteWindowResponse.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/DeleteWindowResponse.java
index d519e11d9..d943e860b 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/DeleteWindowResponse.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/DeleteWindowResponse.java
@@ -1,9 +1,11 @@
package com.smartdevicelink.proxy.rpc;
import android.support.annotation.NonNull;
+
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCResponse;
import com.smartdevicelink.proxy.rpc.enums.Result;
+
import java.util.Hashtable;
/**
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/DisplayCapability.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/DisplayCapability.java
index 3d8862d1b..992083689 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/DisplayCapability.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/DisplayCapability.java
@@ -1,6 +1,7 @@
package com.smartdevicelink.proxy.rpc;
import com.smartdevicelink.proxy.RPCStruct;
+
import java.util.Hashtable;
import java.util.List;
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/SystemCapability.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/SystemCapability.java
index 2ea186742..73634c17b 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/SystemCapability.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/SystemCapability.java
@@ -37,7 +37,6 @@ import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
import java.util.Hashtable;
-import java.util.List;
/**
* Struct that indicates the a SystemCapabilityType and houses different structs to describe particular capabilities
@@ -83,46 +82,46 @@ public class SystemCapability extends RPCStruct {
}
public Object getCapabilityForType(SystemCapabilityType type) {
- if(type == null) {
+ if (type == null) {
return null;
- }else if (type.equals(SystemCapabilityType.NAVIGATION)) {
+ } else if (type.equals(SystemCapabilityType.NAVIGATION)) {
return getObject(NavigationCapability.class, KEY_NAVIGATION_CAPABILITY);
} else if (type.equals(SystemCapabilityType.PHONE_CALL)) {
return getObject(PhoneCapability.class, KEY_PHONE_CAPABILITY);
- } else if (type.equals(SystemCapabilityType.VIDEO_STREAMING)){
+ } else if (type.equals(SystemCapabilityType.VIDEO_STREAMING)) {
return getObject(VideoStreamingCapability.class, KEY_VIDEO_STREAMING_CAPABILITY);
- }else if(type.equals(SystemCapabilityType.REMOTE_CONTROL)){
+ } else if (type.equals(SystemCapabilityType.REMOTE_CONTROL)) {
return getObject(RemoteControlCapabilities.class, KEY_REMOTE_CONTROL_CAPABILITY);
- }else if(type.equals(SystemCapabilityType.APP_SERVICES)){
- return (RPCStruct) getObject(AppServicesCapabilities.class, KEY_APP_SERVICES_CAPABILITIES);
- }else if(type.equals(SystemCapabilityType.SEAT_LOCATION)){
- return (RPCStruct) getObject(SeatLocationCapability.class, KEY_SEAT_LOCATION_CAPABILITY);
- }else if(type.equals(SystemCapabilityType.DISPLAYS)){
+ } else if (type.equals(SystemCapabilityType.APP_SERVICES)) {
+ return getObject(AppServicesCapabilities.class, KEY_APP_SERVICES_CAPABILITIES);
+ } else if (type.equals(SystemCapabilityType.SEAT_LOCATION)) {
+ return getObject(SeatLocationCapability.class, KEY_SEAT_LOCATION_CAPABILITY);
+ } else if (type.equals(SystemCapabilityType.DISPLAYS)) {
return getObject(DisplayCapability.class, KEY_DISPLAY_CAPABILITIES);
- }else{
+ } else {
return null;
}
}
- public void setCapabilityForType(SystemCapabilityType type, Object capability){
- if(type == null) {
+ public void setCapabilityForType(SystemCapabilityType type, Object capability) {
+ if (type == null) {
return;
- }else if(type.equals(SystemCapabilityType.NAVIGATION)){
+ } else if (type.equals(SystemCapabilityType.NAVIGATION)) {
setValue(KEY_NAVIGATION_CAPABILITY, capability);
- }else if(type.equals(SystemCapabilityType.PHONE_CALL)){
+ } else if (type.equals(SystemCapabilityType.PHONE_CALL)) {
setValue(KEY_PHONE_CAPABILITY, capability);
- }else if(type.equals(SystemCapabilityType.VIDEO_STREAMING)){
+ } else if (type.equals(SystemCapabilityType.VIDEO_STREAMING)) {
setValue(KEY_VIDEO_STREAMING_CAPABILITY, capability);
- }else if(type.equals(SystemCapabilityType.REMOTE_CONTROL)){
+ } else if (type.equals(SystemCapabilityType.REMOTE_CONTROL)) {
setValue(KEY_REMOTE_CONTROL_CAPABILITY, capability);
- }else if(type.equals(SystemCapabilityType.APP_SERVICES)){
- setValue(KEY_APP_SERVICES_CAPABILITIES, capability);
- }else if(type.equals(SystemCapabilityType.SEAT_LOCATION)){
+ } else if (type.equals(SystemCapabilityType.APP_SERVICES)) {
+ setValue(KEY_APP_SERVICES_CAPABILITIES, capability);
+ } else if (type.equals(SystemCapabilityType.SEAT_LOCATION)) {
setValue(KEY_SEAT_LOCATION_CAPABILITY, capability);
- }else if(type.equals(SystemCapabilityType.DISPLAYS)) {
+ } else if (type.equals(SystemCapabilityType.DISPLAYS)) {
setValue(KEY_DISPLAY_CAPABILITIES, capability);
- }else{
- return;
+ } else {
+ return;
}
}
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/TemplateConfiguration.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/TemplateConfiguration.java
index ed9c4c3d3..a92e8e28a 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/TemplateConfiguration.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/TemplateConfiguration.java
@@ -1,7 +1,9 @@
package com.smartdevicelink.proxy.rpc;
import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
+
import java.util.Hashtable;
/**
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/WindowTypeCapabilities.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/WindowTypeCapabilities.java
index c4071e93c..f57d9a415 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/WindowTypeCapabilities.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/WindowTypeCapabilities.java
@@ -1,8 +1,10 @@
package com.smartdevicelink.proxy.rpc;
import android.support.annotation.NonNull;
+
import com.smartdevicelink.proxy.RPCStruct;
import com.smartdevicelink.proxy.rpc.enums.WindowType;
+
import java.util.Hashtable;
/**
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/enums/SystemCapabilityType.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/enums/SystemCapabilityType.java
index cdd8b01a5..758a33905 100644
--- a/base/src/main/java/com/smartdevicelink/proxy/rpc/enums/SystemCapabilityType.java
+++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/enums/SystemCapabilityType.java
@@ -288,6 +288,7 @@ public enum SystemCapabilityType {
* </tr>
* </table>
*/
+ @Deprecated
DISPLAY (false),
@@ -399,6 +400,7 @@ public enum SystemCapabilityType {
* </tr>
* </table>
*/
+ @Deprecated
BUTTON (false),
/**
@@ -441,6 +443,7 @@ public enum SystemCapabilityType {
* </tr>
* </table>
*/
+ @Deprecated
PRESET_BANK (false),
/**
@@ -464,6 +467,7 @@ public enum SystemCapabilityType {
* </tr>
* </table>
*/
+ @Deprecated
SOFTBUTTON (false),
/**
diff --git a/javaSE/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManager.java b/javaSE/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManager.java
index f470b8a68..df14bfa6f 100644
--- a/javaSE/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManager.java
+++ b/javaSE/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManager.java
@@ -33,7 +33,6 @@
package com.smartdevicelink.managers.screen.choiceset;
import android.support.annotation.NonNull;
-
import com.smartdevicelink.managers.file.FileManager;
import com.smartdevicelink.proxy.interfaces.ISdl;