Skip to content

Commit 62c6933

Browse files
authored
Merge pull request #1356 from smartdevicelink/bugfix/issue_1335
Add null fix to SCM for imagefields and text fields
2 parents db3cd31 + 98809c8 commit 62c6933

6 files changed

Lines changed: 51 additions & 6 deletions

File tree

android/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/SystemCapabilityManagerTests.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.util.SparseArray;
44

55
import com.smartdevicelink.AndroidTestCase2;
6+
import com.smartdevicelink.managers.ManagerUtility;
67
import com.smartdevicelink.protocol.enums.FunctionID;
78
import com.smartdevicelink.protocol.enums.SessionType;
89
import com.smartdevicelink.proxy.RPCMessage;
@@ -138,6 +139,8 @@ private List<DisplayCapability> createDisplayCapabilityList(DisplayCapabilities
138139
defaultWindowCapability.setSoftButtonCapabilities(softButton);
139140

140141
if (display == null) {
142+
defaultWindowCapability.setTextFields(ManagerUtility.WindowCapabilityUtility.getAllTextFields());
143+
defaultWindowCapability.setImageFields(ManagerUtility.WindowCapabilityUtility.getAllImageFields());
141144
displayCapability.setWindowCapabilities(Collections.singletonList(defaultWindowCapability));
142145
return Collections.singletonList(displayCapability);
143146
}
@@ -198,6 +201,12 @@ public void testParseRAI() {
198201

199202
}
200203

204+
public void testNullDisplayCapabilitiesEnablesAllTextAndImageFields() {
205+
List<DisplayCapability> displayCapabilityList = createDisplayCapabilityList(null, Test.GENERAL_BUTTONCAPABILITIES_LIST, Test.GENERAL_SOFTBUTTONCAPABILITIES_LIST);
206+
assertEquals(displayCapabilityList.get(0).getWindowCapabilities().get(0).getTextFields().size(), 29);
207+
assertEquals(displayCapabilityList.get(0).getWindowCapabilities().get(0).getImageFields().size(), 14);
208+
}
209+
201210
public void testGetVSCapability(){
202211
VideoStreamingCapability vsCapability = new VideoStreamingCapability();
203212
vsCapability.setMaxBitrate(Test.GENERAL_INT);

base/src/main/java/com/smartdevicelink/managers/ManagerUtility.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,15 @@
33
import com.smartdevicelink.proxy.rpc.ImageField;
44
import com.smartdevicelink.proxy.rpc.TextField;
55
import com.smartdevicelink.proxy.rpc.WindowCapability;
6+
import com.smartdevicelink.proxy.rpc.enums.CharacterSet;
7+
import com.smartdevicelink.proxy.rpc.enums.FileType;
68
import com.smartdevicelink.proxy.rpc.enums.ImageFieldName;
79
import com.smartdevicelink.proxy.rpc.enums.TextFieldName;
810

11+
import java.util.ArrayList;
12+
import java.util.Arrays;
13+
import java.util.List;
14+
915
/**
1016
* <strong>ManagerUtility</strong> <br>
1117
* <p>
@@ -92,5 +98,32 @@ public static int getMaxNumberOfMainFieldLines(WindowCapability windowCapability
9298
}
9399
return highestFound;
94100
}
101+
102+
/**
103+
* Method to get a list of all available text fields
104+
*
105+
* @return list of all available text fields with CID1SET Character Set
106+
*/
107+
public static List<TextField> getAllTextFields() {
108+
List<TextField> allTextFields = new ArrayList<>();
109+
for (TextFieldName name : TextFieldName.values()) {
110+
allTextFields.add(new TextField(name, CharacterSet.CID1SET, 500, 8));
111+
}
112+
return allTextFields;
113+
}
114+
115+
/**
116+
* Method to get a list of all available Image fields
117+
*
118+
* @return list of all available Image fields with GRAPHIC_BMP, GRAPHIC_JPEG, GRAPHIC_PNG File Types
119+
*/
120+
public static List<ImageField> getAllImageFields() {
121+
List<ImageField> allImageFields = new ArrayList<>();
122+
List<FileType> allImageFileTypes = Arrays.asList(FileType.GRAPHIC_BMP, FileType.GRAPHIC_JPEG, FileType.GRAPHIC_PNG);
123+
for (ImageFieldName name : ImageFieldName.values()) {
124+
allImageFields.add(new ImageField(name, allImageFileTypes));
125+
}
126+
return allImageFields;
127+
}
95128
}
96129
}

base/src/main/java/com/smartdevicelink/managers/screen/BaseTextAndGraphicManager.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ Show assembleShowText(Show show){
410410
return show;
411411
}
412412

413-
int numberOfLines = (defaultMainWindowCapability != null && defaultMainWindowCapability.getTextFields() != null) ? ManagerUtility.WindowCapabilityUtility.getMaxNumberOfMainFieldLines(defaultMainWindowCapability) : 4;
413+
int numberOfLines = defaultMainWindowCapability != null ? ManagerUtility.WindowCapabilityUtility.getMaxNumberOfMainFieldLines(defaultMainWindowCapability) : 4;
414414

415415
switch (numberOfLines) {
416416
case 1: show = assembleOneLineShowText(show, nonNullFields);
@@ -775,7 +775,7 @@ private boolean shouldUpdateSecondaryImage() {
775775
* @return true if image field is supported, false if not
776776
*/
777777
private boolean templateSupportsImageField(ImageFieldName name) {
778-
return (defaultMainWindowCapability == null || defaultMainWindowCapability.getImageFields() == null) || ManagerUtility.WindowCapabilityUtility.hasImageFieldOfName(defaultMainWindowCapability, name);
778+
return defaultMainWindowCapability == null || ManagerUtility.WindowCapabilityUtility.hasImageFieldOfName(defaultMainWindowCapability, name);
779779
}
780780

781781
/**
@@ -799,7 +799,7 @@ private boolean shouldUpdateTitleField() {
799799
* @return true if field should be updated, false if not
800800
*/
801801
private boolean templateSupportsTextField(TextFieldName name) {
802-
return (defaultMainWindowCapability == null || defaultMainWindowCapability.getTextFields() == null) || ManagerUtility.WindowCapabilityUtility.hasTextFieldOfName(defaultMainWindowCapability, name);
802+
return defaultMainWindowCapability == null || ManagerUtility.WindowCapabilityUtility.hasTextFieldOfName(defaultMainWindowCapability, name);
803803
}
804804

805805
// SCREEN ITEM SETTERS AND GETTERS

base/src/main/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,11 +254,11 @@ boolean shouldSendChoiceSecondaryImage() {
254254
}
255255

256256
boolean templateSupportsTextField(TextFieldName name) {
257-
return (defaultMainWindowCapability == null || defaultMainWindowCapability.getTextFields() == null) || ManagerUtility.WindowCapabilityUtility.hasTextFieldOfName(defaultMainWindowCapability, name);
257+
return defaultMainWindowCapability == null || ManagerUtility.WindowCapabilityUtility.hasTextFieldOfName(defaultMainWindowCapability, name);
258258
}
259259

260260
boolean templateSupportsImageField(ImageFieldName name) {
261-
return (defaultMainWindowCapability == null || defaultMainWindowCapability.getImageFields() == null) || ManagerUtility.WindowCapabilityUtility.hasImageFieldOfName(defaultMainWindowCapability, name);
261+
return defaultMainWindowCapability == null || ManagerUtility.WindowCapabilityUtility.hasImageFieldOfName(defaultMainWindowCapability, name);
262262
}
263263

264264
List<SdlArtwork> artworksToUpload(){

base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -780,7 +780,7 @@ private List<SdlArtwork> findAllArtworksToBeUploadedFromCells(List<MenuCell> cel
780780

781781
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
782782
private boolean supportsImages(){
783-
return (defaultMainWindowCapability == null || defaultMainWindowCapability.getImageFields() == null) || ManagerUtility.WindowCapabilityUtility.hasImageFieldOfName(defaultMainWindowCapability, ImageFieldName.cmdIcon);
783+
return defaultMainWindowCapability == null || ManagerUtility.WindowCapabilityUtility.hasImageFieldOfName(defaultMainWindowCapability, ImageFieldName.cmdIcon);
784784
}
785785

786786
private boolean artworkNeedsUpload(SdlArtwork artwork){

base/src/main/java/com/smartdevicelink/proxy/SystemCapabilityManager.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
*/
3232
package com.smartdevicelink.proxy;
3333

34+
import com.smartdevicelink.managers.ManagerUtility;
3435
import com.smartdevicelink.protocol.enums.FunctionID;
3536
import com.smartdevicelink.proxy.interfaces.ISdl;
3637
import com.smartdevicelink.proxy.interfaces.OnSystemCapabilityListener;
@@ -126,6 +127,8 @@ private List<DisplayCapability> createDisplayCapabilityList(DisplayCapabilities
126127

127128
// return if display capabilities don't exist.
128129
if (display == null) {
130+
defaultWindowCapability.setTextFields(ManagerUtility.WindowCapabilityUtility.getAllTextFields());
131+
defaultWindowCapability.setImageFields(ManagerUtility.WindowCapabilityUtility.getAllImageFields());
129132
displayCapability.setWindowCapabilities(Collections.singletonList(defaultWindowCapability));
130133
return Collections.singletonList(displayCapability);
131134
}

0 commit comments

Comments
 (0)