diff options
author | Joey Grover <joeygrover@gmail.com> | 2017-05-31 15:19:12 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-31 15:19:12 -0400 |
commit | 505a1a739cf93e640f17d6db588e5421073b0945 (patch) | |
tree | aa422f95cc686e53b41ba4c13aced3c41bdab41e | |
parent | d74673633d9e31d4e14fd2f72c6846c251971060 (diff) | |
parent | d099cbd539a5ad746a04c630e3d074cf3977bdea (diff) | |
download | sdl_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.java | 87 | ||||
-rw-r--r-- | sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java | 28 |
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); } |