Skip to content

Commit 9e73aee

Browse files
JulianKastJulian Kast
andauthored
Fix PredefinedLayout.NON_MEDIA not found in templatesAvailable (#1706)
* Fix Non-Media Sync template bug in BaseSystemCapabilityManager * Add unit test for sync bug for NON_MEDIA template Co-authored-by: Julian Kast <julian@livio.com>
1 parent f0f1693 commit 9e73aee

2 files changed

Lines changed: 34 additions & 1 deletion

File tree

android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lifecycle/SystemCapabilityManagerTests.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -942,6 +942,31 @@ public void testManagerBeforeDisplayUpdate() {
942942
assertNull(systemCapabilityManager.getWindowCapability(PredefinedWindows.PRIMARY_WIDGET.getValue()));
943943
}
944944

945+
/**
946+
* Test that when we receive template "NON_MEDIA" it gets converted to "NON-MEDIA"
947+
*/
948+
@Test
949+
public void testSyncNonMediaBug() {
950+
InternalSDLInterface iSDL = new InternalSDLInterface();
951+
SystemCapabilityManager systemCapabilityManager = createSampleManager(iSDL);
952+
OnRPCListener dlRpcListener = iSDL.rpcListeners.get(FunctionID.SET_DISPLAY_LAYOUT.getId()).get(0);
953+
954+
DisplayCapabilities displayCapabilities = new DisplayCapabilities();
955+
displayCapabilities.setGraphicSupported(true);
956+
List<String> templatesAvailable = new ArrayList<>();
957+
templatesAvailable.add("NON_MEDIA");
958+
templatesAvailable.add("MEDIA");
959+
displayCapabilities.setTemplatesAvailable(templatesAvailable);
960+
961+
SetDisplayLayoutResponse newLayout = new SetDisplayLayoutResponse();
962+
newLayout.setDisplayCapabilities(displayCapabilities);
963+
newLayout.setSuccess(true);
964+
newLayout.setResultCode(Result.SUCCESS);
965+
dlRpcListener.onReceived(newLayout);
966+
967+
assertTrue(systemCapabilityManager.getDefaultMainWindowCapability().getTemplatesAvailable().contains("NON-MEDIA"));
968+
}
969+
945970
private class InternalSDLInterface implements ISdl {
946971
private final Object RPC_LISTENER_LOCK = new Object();
947972
SparseArray<CopyOnWriteArrayList<OnRPCListener>> rpcListeners = new SparseArray<>();

base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseSystemCapabilityManager.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,16 @@ private List<DisplayCapability> createDisplayCapabilityList(DisplayCapabilities
133133
return Collections.singletonList(displayCapability);
134134
}
135135

136+
// HAX: Issue #1705, Ford Sync bug returning incorrect template name for "NON-MEDIA" (https://github.com/smartdevicelink/sdl_java_suite/issues/1705).
137+
List<String> templatesAvailable = display.getTemplatesAvailable();
138+
for (int i = 0; i < templatesAvailable.size(); i++) {
139+
if (templatesAvailable.get(i).equals("NON_MEDIA")) {
140+
templatesAvailable.set(i, "NON-MEDIA");
141+
break;
142+
}
143+
}
136144
// copy all available display capabilities
137-
defaultWindowCapability.setTemplatesAvailable(display.getTemplatesAvailable());
145+
defaultWindowCapability.setTemplatesAvailable(templatesAvailable);
138146
defaultWindowCapability.setNumCustomPresetsAvailable(display.getNumCustomPresetsAvailable());
139147
defaultWindowCapability.setTextFields(display.getTextFields());
140148
defaultWindowCapability.setImageFields(display.getImageFields());

0 commit comments

Comments
 (0)