summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Grover <joeygrover@gmail.com>2016-11-01 15:24:51 -0400
committerJoey Grover <joeygrover@gmail.com>2016-11-01 15:24:51 -0400
commit8bb3e60c47af20339b7b402218d93c6bc4fa53ec (patch)
tree8be67dfa6b1d98d5cf0112daa47efacbaae0036d
parentecacf239f8e2930be9f7a9640929327c8511bbd7 (diff)
downloadsdl_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.java24
-rw-r--r--sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java56
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()){