diff options
author | Joey Grover <joeygrover@gmail.com> | 2016-11-01 15:24:51 -0400 |
---|---|---|
committer | Joey Grover <joeygrover@gmail.com> | 2016-11-01 15:24:51 -0400 |
commit | 8bb3e60c47af20339b7b402218d93c6bc4fa53ec (patch) | |
tree | 8be67dfa6b1d98d5cf0112daa47efacbaae0036d | |
parent | ecacf239f8e2930be9f7a9640929327c8511bbd7 (diff) | |
download | sdl_android-8bb3e60c47af20339b7b402218d93c6bc4fa53ec.tar.gz |
Added check for trusted router list during check for conencted router services
-rw-r--r-- | sdl_android_lib/src/com/smartdevicelink/transport/RouterServiceValidator.java | 24 | ||||
-rw-r--r-- | sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java | 56 |
2 files changed, 50 insertions, 30 deletions
diff --git a/sdl_android_lib/src/com/smartdevicelink/transport/RouterServiceValidator.java b/sdl_android_lib/src/com/smartdevicelink/transport/RouterServiceValidator.java index 3c5b71c5e..7791c2e71 100644 --- a/sdl_android_lib/src/com/smartdevicelink/transport/RouterServiceValidator.java +++ b/sdl_android_lib/src/com/smartdevicelink/transport/RouterServiceValidator.java @@ -352,10 +352,18 @@ public class RouterServiceValidator { * @param context */ public static boolean createTrustedListRequest(final Context context, boolean forceRefresh){ - return createTrustedListRequest(context,forceRefresh,null); + return createTrustedListRequest(context,forceRefresh,null,null); + } + public static boolean createTrustedListRequest(final Context context, boolean forceRefresh, TrustedListCallback listCallback){Log.d(TAG,"Checking to make sure we have a list"); + return createTrustedListRequest(context,forceRefresh,null,listCallback); } + @Deprecated protected static boolean createTrustedListRequest(final Context context, boolean forceRefresh,HttpRequestTask.HttpRequestTaskCallback cb ){ + return createTrustedListRequest(context,forceRefresh,cb,null); + } + + protected static boolean createTrustedListRequest(final Context context, boolean forceRefresh,HttpRequestTask.HttpRequestTaskCallback cb, final TrustedListCallback listCallback ){ if(context == null){ return false; } @@ -363,6 +371,9 @@ public class RouterServiceValidator { if(!forceRefresh && (System.currentTimeMillis()-getTrustedAppListTimeStamp(context))<REFRESH_TRUSTED_APP_LIST_TIME){ //Our list should still be ok for now so we will skip the request pendingListRefresh = false; + if(listCallback!=null){ + listCallback.onListObtained(true); + } return false; } @@ -400,6 +411,7 @@ public class RouterServiceValidator { //Log.d(TAG, "APPS! " + response); setTrustedList(context, response); pendingListRefresh = false; + if(listCallback!=null){listCallback.onListObtained(true);} } @Override @@ -407,6 +419,7 @@ public class RouterServiceValidator { Log.e(TAG, "Error while requesting trusted app list: " + statusCode); pendingListRefresh = false; + if(listCallback!=null){listCallback.onListObtained(false);} } }; } @@ -565,7 +578,12 @@ public class RouterServiceValidator { } } - - + /** + * This interface is used as a callback to know when we have either obtained a list or at least returned from our attempt. + * + */ + public static interface TrustedListCallback{ + public void onListObtained(boolean successful); + } } diff --git a/sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java b/sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java index a304191ff..2aa214997 100644 --- a/sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java +++ b/sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java @@ -4,6 +4,8 @@ import java.util.Locale; import java.util.Vector; import java.util.concurrent.ConcurrentLinkedQueue; +import com.smartdevicelink.transport.RouterServiceValidator.TrustedListCallback; + import android.app.ActivityManager; import android.app.ActivityManager.RunningServiceInfo; import android.bluetooth.BluetoothAdapter; @@ -225,37 +227,37 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{ } if(isRouterServiceRunning(context,false) && !runningBluetoothServicePackage.isEmpty()){ //So there is a service up, let's see if it's connected final ConcurrentLinkedQueue<ComponentName> list = new ConcurrentLinkedQueue<ComponentName>(runningBluetoothServicePackage); - if(runningBluetoothServicePackage.size()>0){ //TODO for testing do this for all cases - final SdlRouterStatusProvider.ConnectedStatusCallback sdlBrCallback = new SdlRouterStatusProvider.ConnectedStatusCallback() { - - @Override - public void onConnectionStatusUpdate(boolean connected, ComponentName service,Context context) { - if(!connected && !list.isEmpty()){ - SdlRouterStatusProvider provider = new SdlRouterStatusProvider(context,list.poll(), this); - if(triggerRouterServicePing){provider.setFlags(TransportConstants.ROUTER_STATUS_FLAG_TRIGGER_PING); } - provider.checkIsConnected(); - }else{ - Log.d(TAG, service.getPackageName() + " is connected = " + connected); - if(callback!=null){ - callback.onConnectionStatusUpdate(connected, service,context); - } - list.clear(); - } + final SdlRouterStatusProvider.ConnectedStatusCallback sdlBrCallback = new SdlRouterStatusProvider.ConnectedStatusCallback() { + @Override + public void onConnectionStatusUpdate(boolean connected, ComponentName service,Context context) { + if(!connected && !list.isEmpty()){ + SdlRouterStatusProvider provider = new SdlRouterStatusProvider(context,list.poll(), this); + if(triggerRouterServicePing){provider.setFlags(TransportConstants.ROUTER_STATUS_FLAG_TRIGGER_PING); } + provider.checkIsConnected(); + }else{ + Log.d(TAG, service.getPackageName() + " is connected = " + connected); + if(callback!=null){ + callback.onConnectionStatusUpdate(connected, service,context); + } + list.clear(); } - }; - SdlRouterStatusProvider provider = new SdlRouterStatusProvider(context,list.poll(),sdlBrCallback); - if(triggerRouterServicePing){ - provider.setFlags(TransportConstants.ROUTER_STATUS_FLAG_TRIGGER_PING); - } - provider.checkIsConnected(); - }else{ //If only one service is running, just check that - SdlRouterStatusProvider provider = new SdlRouterStatusProvider(context,runningBluetoothServicePackage.get(0),callback); - if(triggerRouterServicePing){ - provider.setFlags(TransportConstants.ROUTER_STATUS_FLAG_TRIGGER_PING); + } - provider.checkIsConnected(); + }; + final SdlRouterStatusProvider provider = new SdlRouterStatusProvider(context,list.poll(),sdlBrCallback); + if(triggerRouterServicePing){ + provider.setFlags(TransportConstants.ROUTER_STATUS_FLAG_TRIGGER_PING); } + //Lets ensure we have a current list of trusted router services + RouterServiceValidator.createTrustedListRequest(context, false, new TrustedListCallback(){ + @Override + public void onListObtained(boolean successful) { + //This will kick off our check of router services + provider.checkIsConnected(); + } + }); + }else{ Log.w(TAG, "Router service isn't running, returning false."); if(BluetoothAdapter.getDefaultAdapter()!=null && BluetoothAdapter.getDefaultAdapter().isEnabled()){ |