summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Grover <joeygrover@gmail.com>2017-05-31 15:19:12 -0400
committerGitHub <noreply@github.com>2017-05-31 15:19:12 -0400
commit505a1a739cf93e640f17d6db588e5421073b0945 (patch)
treeaa422f95cc686e53b41ba4c13aced3c41bdab41e
parentd74673633d9e31d4e14fd2f72c6846c251971060 (diff)
parentd099cbd539a5ad746a04c630e3d074cf3977bdea (diff)
downloadsdl_android-505a1a739cf93e640f17d6db588e5421073b0945.tar.gz
Merge pull request #521 from smartdevicelink/bugfix/issue_464
Bugfix/issue 464
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java87
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java28
2 files changed, 101 insertions, 14 deletions
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java
new file mode 100644
index 000000000..36274b99d
--- /dev/null
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java
@@ -0,0 +1,87 @@
+package com.smartdevicelink.transport;
+
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import com.smartdevicelink.protocol.SdlPacket;
+
+import junit.framework.Assert;
+
+import java.lang.ref.WeakReference;
+
+public class SdlRouterServiceTests extends AndroidTestCase {
+
+ public static final String TAG = "SdlRouterServiceTests";
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ //Nothing here for now
+ }
+
+ /**
+ * Test null bundle handling in AltTransportHandler when handling messages. Only test the case of
+ * msg.what == TransportConstants.ROUTER_RECEIVED_PACKET
+ */
+ public void testAlTransportHandlerHandleNullBundle() {
+ if (Looper.myLooper() == null) {
+ Looper.prepare();
+ }
+ class AltTransportHandler extends Handler {
+ ClassLoader loader;
+ final WeakReference<SdlRouterService> provider;
+
+ public AltTransportHandler(SdlRouterService provider) {
+ this.provider = new WeakReference<SdlRouterService>(provider);
+ loader = getClass().getClassLoader();
+ }
+
+ @Override
+ public void handleMessage(Message msg) {
+ SdlRouterService service = this.provider.get();
+ Bundle receivedBundle = msg.getData();
+ switch (msg.what) {
+ case TransportConstants.ROUTER_RECEIVED_PACKET:
+ if (receivedBundle != null) {
+ receivedBundle.setClassLoader(loader);//We do this because loading a custom parceable object isn't possible without it
+ if (receivedBundle.containsKey(TransportConstants.FORMED_PACKET_EXTRA_NAME)) {
+ SdlPacket packet = receivedBundle.getParcelable(TransportConstants.FORMED_PACKET_EXTRA_NAME);
+ if (packet != null && service != null) {
+ service.onPacketRead(packet);
+ } else {
+ Log.w(TAG, "Received null packet from alt transport service");
+ }
+ } else {
+ Log.w(TAG, "Flase positive packet reception");
+ }
+ } else {
+ Log.e(TAG, "Bundle was null while sending packet to router service from alt transport");
+ }
+ break;
+ default:
+ super.handleMessage(msg);
+ }
+
+ }
+ }
+ AltTransportHandler testHandler = new AltTransportHandler(null);
+ Message msg = Message.obtain(null, TransportConstants.ROUTER_RECEIVED_PACKET);
+ //Send a null bundle
+ msg.setData(null);
+ try {
+ testHandler.handleMessage(msg);
+ } catch (Exception e) {
+ Assert.fail("Exception in testAlTransportHandlerHandleNullBundle, " + e);
+ }
+ }
+} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java
index 2bae96e27..ec89ed86c 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java
@@ -609,20 +609,20 @@ public class SdlRouterService extends Service{
case TransportConstants.ROUTER_RECEIVED_PACKET:
if(receivedBundle!=null){
receivedBundle.setClassLoader(loader);//We do this because loading a custom parceable object isn't possible without it
- }else{
- Log.e(TAG, "Bundle was null while sending packet to router service from alt transport");
- }
- if(receivedBundle.containsKey(TransportConstants.FORMED_PACKET_EXTRA_NAME)){
- SdlPacket packet = receivedBundle.getParcelable(TransportConstants.FORMED_PACKET_EXTRA_NAME);
- if(packet!=null){
- service.onPacketRead(packet);
- }else{
- Log.w(TAG, "Received null packet from alt transport service");
- }
- }else{
- Log.w(TAG, "Flase positive packet reception");
- }
- break;
+ if(receivedBundle.containsKey(TransportConstants.FORMED_PACKET_EXTRA_NAME)){
+ SdlPacket packet = receivedBundle.getParcelable(TransportConstants.FORMED_PACKET_EXTRA_NAME);
+ if(packet!=null){
+ service.onPacketRead(packet);
+ }else{
+ Log.w(TAG, "Received null packet from alt transport service");
+ }
+ }else{
+ Log.w(TAG, "Flase positive packet reception");
+ }
+ }else{
+ Log.e(TAG, "Bundle was null while sending packet to router service from alt transport");
+ }
+ break;
default:
super.handleMessage(msg);
}