summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBilal Alsharifi <599206+bilal-alsharifi@users.noreply.github.com>2019-04-12 15:36:03 -0400
committerJoey Grover <joeygrover@gmail.com>2019-04-12 15:36:03 -0400
commitab53729a4c7f200644c2769b98fc3b34df201ab9 (patch)
treeeb4d1123bc8f2a2428f1d50c0beb27b3e204120a
parent02d22038a57cbe9188ebb621d711b778d0141f27 (diff)
downloadsdl_android-ab53729a4c7f200644c2769b98fc3b34df201ab9.tar.gz
Fix issue in PLAY_PAUSE button handling (#1038)
* Fix Play_Pause button issue in Android * Move handling Play_Pause to sendRPCMessagePrivate * Fix Play_Pause button issue in javaSE * Put all sendRPCMessagePrivate logic in try/catch block * Add null check in sendRPCMessagePrivate * Fix spacing issue * Remove unnecessary check for null * Add null check for rpcSpecVersion
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java61
-rw-r--r--javaSE/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java42
2 files changed, 71 insertions, 32 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java b/android/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java
index 25c6b06a1..1cabf9b89 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java
@@ -2098,6 +2098,36 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
try {
SdlTrace.logRPCEvent(InterfaceActivityDirection.Transmit, message, SDL_LIB_TRACE_KEY);
+ //FIXME this is temporary until the next major release of the library where OK is removed
+ if (message.getMessageType().equals(RPCMessage.KEY_REQUEST)) {
+ RPCRequest request = (RPCRequest) message;
+ if (FunctionID.SUBSCRIBE_BUTTON.toString().equals(request.getFunctionName())
+ || FunctionID.UNSUBSCRIBE_BUTTON.toString().equals(request.getFunctionName())
+ || FunctionID.BUTTON_PRESS.toString().equals(request.getFunctionName())) {
+
+ ButtonName buttonName = (ButtonName) request.getObject(ButtonName.class, SubscribeButton.KEY_BUTTON_NAME);
+
+
+ if (rpcSpecVersion != null) {
+ if (rpcSpecVersion.getMajor() < 5) {
+
+ if (ButtonName.PLAY_PAUSE.equals(buttonName)) {
+ request.setParameters(SubscribeButton.KEY_BUTTON_NAME, ButtonName.OK);
+ }
+ } else { //Newer than version 5.0.0
+ if (ButtonName.OK.equals(buttonName)) {
+ RPCRequest request2 = new RPCRequest(request);
+ request2.setParameters(SubscribeButton.KEY_BUTTON_NAME, ButtonName.PLAY_PAUSE);
+ request2.setOnRPCResponseListener(request.getOnRPCResponseListener());
+ sendRPCMessagePrivate(request2);
+ return;
+ }
+ }
+ }
+
+ }
+ }
+
message.format(rpcSpecVersion,true);
byte[] msgBytes = JsonRPCMarshaller.marshall(message, (byte)getProtocolVersion().getMajor());
@@ -3848,6 +3878,7 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
_proxyListener.onOnButtonPress(msg);
onRPCNotificationReceived(msg);
if(onButtonPressCompat != null){
+ onRPCNotificationReceived(onButtonPressCompat);
_proxyListener.onOnButtonPress(onButtonPressCompat);
}
}
@@ -3856,6 +3887,7 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
_proxyListener.onOnButtonPress(msg);
onRPCNotificationReceived(msg);
if(onButtonPressCompat != null){
+ onRPCNotificationReceived(onButtonPressCompat);
_proxyListener.onOnButtonPress(onButtonPressCompat);
}
}
@@ -3874,6 +3906,7 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
_proxyListener.onOnButtonEvent(msg);
onRPCNotificationReceived(msg);
if(onButtonEventCompat != null){
+ onRPCNotificationReceived(onButtonEventCompat);
_proxyListener.onOnButtonEvent(onButtonEventCompat);
}
}
@@ -3882,6 +3915,7 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
_proxyListener.onOnButtonEvent(msg);
onRPCNotificationReceived(msg);
if(onButtonEventCompat != null){
+ onRPCNotificationReceived(onButtonEventCompat);
_proxyListener.onOnButtonEvent(onButtonEventCompat);
}
}
@@ -4435,33 +4469,6 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase>
}
}
- //FIXME this is temporary until the next major release of the library where OK is removed
-
- if (message.getMessageType().equals(RPCMessage.KEY_REQUEST)) {
- RPCRequest request = (RPCRequest) message;
- if(FunctionID.SUBSCRIBE_BUTTON.toString().equals(request.getFunctionName())
- || FunctionID.UNSUBSCRIBE_BUTTON.toString().equals(request.getFunctionName())
- || FunctionID.BUTTON_PRESS.toString().equals(request.getFunctionName())) {
-
- ButtonName buttonName = (ButtonName) request.getObject(ButtonName.class, SubscribeButton.KEY_BUTTON_NAME);
-
- if (rpcSpecVersion != null && rpcSpecVersion.getMajor() < 5) {
-
- if (ButtonName.PLAY_PAUSE.equals(buttonName)) {
- request.setParameters(SubscribeButton.KEY_BUTTON_NAME, ButtonName.OK);
- }
- } else { //Newer than version 5.0.0
- if (ButtonName.OK.equals(buttonName)) {
- RPCRequest request2 = new RPCRequest(request);
- request2.setParameters(SubscribeButton.KEY_BUTTON_NAME, ButtonName.PLAY_PAUSE);
- request2.setOnRPCResponseListener(request.getOnRPCResponseListener());
- sendRPCMessagePrivate(request2);
- return;
- }
- }
- }
- }
-
sendRPCMessagePrivate(message);
}
diff --git a/javaSE/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java b/javaSE/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java
index 2a6857c0f..9c7b1d092 100644
--- a/javaSE/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java
+++ b/javaSE/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java
@@ -643,6 +643,36 @@ public class LifecycleManager extends BaseLifecycleManager {
private void sendRPCMessagePrivate(RPCMessage message){
try {
+ //FIXME this is temporary until the next major release of the library where OK is removed
+ if (message.getMessageType().equals(RPCMessage.KEY_REQUEST)) {
+ RPCRequest request = (RPCRequest) message;
+ if(FunctionID.SUBSCRIBE_BUTTON.toString().equals(request.getFunctionName())
+ || FunctionID.UNSUBSCRIBE_BUTTON.toString().equals(request.getFunctionName())
+ || FunctionID.BUTTON_PRESS.toString().equals(request.getFunctionName())) {
+
+ ButtonName buttonName = (ButtonName) request.getObject(ButtonName.class, SubscribeButton.KEY_BUTTON_NAME);
+
+
+ if (rpcSpecVersion != null) {
+ if (rpcSpecVersion.getMajor() < 5) {
+
+ if (ButtonName.PLAY_PAUSE.equals(buttonName)) {
+ request.setParameters(SubscribeButton.KEY_BUTTON_NAME, ButtonName.OK);
+ }
+ } else { //Newer than version 5.0.0
+ if (ButtonName.OK.equals(buttonName)) {
+ RPCRequest request2 = new RPCRequest(request);
+ request2.setParameters(SubscribeButton.KEY_BUTTON_NAME, ButtonName.PLAY_PAUSE);
+ request2.setOnRPCResponseListener(request.getOnRPCResponseListener());
+ sendRPCMessagePrivate(request2);
+ return;
+ }
+ }
+ }
+
+ }
+ }
+
message.format(rpcSpecVersion,true);
byte[] msgBytes = JsonRPCMarshaller.marshall(message, (byte)getProtocolVersion().getMajor());
@@ -742,11 +772,6 @@ public class LifecycleManager extends BaseLifecycleManager {
rpc.format(rpcSpecVersion, true);
- FunctionID functionID = rpc.getFunctionID();
- if (functionID != null && (functionID.equals(FunctionID.ON_BUTTON_PRESS.toString()) || functionID.equals(FunctionID.ON_BUTTON_EVENT.toString()))) {
- rpc = handleButtonNotificationFormatting(rpc);
- }
-
onRPCReceived(rpc);
if (RPCMessage.KEY_RESPONSE.equals(messageType)) {
@@ -754,6 +779,13 @@ public class LifecycleManager extends BaseLifecycleManager {
onRPCResponseReceived((RPCResponse) rpc);
} else if (RPCMessage.KEY_NOTIFICATION.equals(messageType)) {
+ FunctionID functionID = rpc.getFunctionID();
+ if (functionID != null && (functionID.equals(FunctionID.ON_BUTTON_PRESS)) || functionID.equals(FunctionID.ON_BUTTON_EVENT)) {
+ RPCNotification notificationCompat = handleButtonNotificationFormatting(rpc);
+ if(notificationCompat != null){
+ onRPCNotificationReceived((notificationCompat));
+ }
+ }
onRPCNotificationReceived((RPCNotification) rpc);