diff options
author | Joey Grover <joeygrover@gmail.com> | 2020-08-10 16:37:47 -0400 |
---|---|---|
committer | Joey Grover <joeygrover@gmail.com> | 2020-08-10 16:37:47 -0400 |
commit | 3c46551f0452bf5ee10c11e1bc7adbceb3d4c426 (patch) | |
tree | 85a835d25d05d88180471edc7f77fc47702270c7 | |
parent | 92bd078d6ce5ceb077c598eec952c7f259ccd00e (diff) | |
download | sdl_android-feature/integration_validator.tar.gz |
Add flag to skip RS check in validatorfeature/integration_validator
Also reformatted code in validator
3 files changed, 37 insertions, 19 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java index b11ef605b..4ed1b85f4 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java @@ -136,7 +136,7 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{ localRouterClass = defineLocalSdlRouterClass(); // we need to check this again because for USB apps, the returned class can still be null if (AndroidTools.isDebugMode(context)) { - IntegrationValidator.ValidationResult result = IntegrationValidator.validate(context, localRouterClass); + IntegrationValidator.ValidationResult result = IntegrationValidator.validate(context, localRouterClass, 0); if(!result.isSuccessful()){ throw new RuntimeException(result.getResultText()); } @@ -431,6 +431,17 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{ * @param context */ public static void queryForConnectedService(final Context context){ + if (AndroidTools.isDebugMode(context)) { + int flag = 0; + if(localRouterClass == null) { + flag = IntegrationValidator.FLAG_SKIP_ROUTER_SERVICE_CHECK; + } + + IntegrationValidator.ValidationResult result = IntegrationValidator.validate(context, localRouterClass, flag); + if(!result.isSuccessful()){ + throw new RuntimeException(result.getResultText()); + } + } //Leverage existing call. Include ping bit if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ ServiceFinder finder = new ServiceFinder(context, context.getPackageName(), new ServiceFinder.ServiceFinderCallback() { diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java index 6a0d9ddc1..bcd5678a5 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java @@ -1106,7 +1106,7 @@ public class SdlRouterService extends Service{ public void onCreate() { super.onCreate(); if (AndroidTools.isDebugMode(getApplicationContext())) { - IntegrationValidator.ValidationResult result = IntegrationValidator.validate(getApplicationContext(), this.getClass()); + IntegrationValidator.ValidationResult result = IntegrationValidator.validate(getApplicationContext(), this.getClass(), 0); if(!result.isSuccessful()) { throw new RuntimeException(result.getResultText()); } diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/util/IntegrationValidator.java b/android/sdl_android/src/main/java/com/smartdevicelink/util/IntegrationValidator.java index 77786a256..6553da286 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/util/IntegrationValidator.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/util/IntegrationValidator.java @@ -49,11 +49,13 @@ import java.util.List; public class IntegrationValidator { - private static final String TAG = "IntegrationValidator"; private static final char CHECK_MARK = 0x2713; private static final char FAIL_MARK = 0x2715; - public static ValidationResult validate(Context context, Class localRouterClass) { + public static final int FLAG_SKIP_ROUTER_SERVICE_CHECK = 0x01; + + + public static ValidationResult validate(Context context, Class localRouterClass, int flags) { StringBuilder builder = new StringBuilder(); builder.append("\n-----------------------------------"); builder.append("\n Integration Validator Results: \n"); @@ -62,18 +64,22 @@ public class IntegrationValidator { results.add(checkPermissions(context)); - if (localRouterClass != null) { - results.add(checkRoutServiceMetadata(context, localRouterClass)); - results.add(checkRouterServiceIntent(context, localRouterClass)); - }else{ - results.add(new ValidationResult(false, "SdlRouterService is not defined in SdlBroadcastReceiver and therefore some checks were not completed")); + if ((flags & FLAG_SKIP_ROUTER_SERVICE_CHECK) == FLAG_SKIP_ROUTER_SERVICE_CHECK) { + results.add(new ValidationResult(true, "SdlRouterService checks were not performed yet due to supplied flags")); + } else { + if (localRouterClass != null) { + results.add(checkRoutServiceMetadata(context, localRouterClass)); + results.add(checkRouterServiceIntent(context, localRouterClass)); + } else { + results.add(new ValidationResult(false, "SdlRouterService is not defined in SdlBroadcastReceiver and therefore some checks were not completed")); + } } - results.add( checkBroadcastReceiver(context) ); + results.add(checkBroadcastReceiver(context)); boolean success = true; - for(ValidationResult result : results) { - if(result.successful) { + for (ValidationResult result : results) { + if (result.successful) { builder.append(CHECK_MARK + " "); } else { success = false; @@ -85,7 +91,7 @@ public class IntegrationValidator { } - if(!success) { + if (!success) { builder.append("Please see the guides for how to fix these issues at www.smartdevicelink.com"); } @@ -93,7 +99,7 @@ public class IntegrationValidator { } private static ValidationResult checkPermissions(Context context) { - ValidationResult retVal = new ValidationResult(true,"Permission check passed"); + ValidationResult retVal = new ValidationResult(true, "Permission check passed"); List<String> permissionList = new ArrayList<>(); permissionList.add(Manifest.permission.BLUETOOTH); permissionList.add(Manifest.permission.INTERNET); @@ -112,7 +118,8 @@ public class IntegrationValidator { permissionList.remove(permissionInfo); } } - } catch (Exception e) { } + } catch (Exception e) { + } if (!permissionList.isEmpty()) { StringBuilder builder = new StringBuilder(); @@ -130,7 +137,7 @@ public class IntegrationValidator { } public static ValidationResult checkBroadcastReceiver(Context context) { - ValidationResult retVal = new ValidationResult(true,"SdlBroadcastReceiver check passed"); + ValidationResult retVal = new ValidationResult(true, "SdlBroadcastReceiver check passed"); try { Intent intent = new Intent(); intent.setAction(TransportConstants.START_ROUTER_SERVICE_ACTION); @@ -157,13 +164,13 @@ public class IntegrationValidator { e.printStackTrace(); } retVal.successful = false; - retVal.resultText = "This application has not specified its SDL Receiver properly."; + retVal.resultText = "This application has not specified its SDL Receiver properly."; return retVal; } // Check if the service declaration in AndroidManifest has the router service version metadata specified correctly private static ValidationResult checkRoutServiceMetadata(Context context, Class localRouterClass) { - ValidationResult retVal = new ValidationResult(true,"SdlRouterService entry and metadata checks passed"); + ValidationResult retVal = new ValidationResult(true, "SdlRouterService entry and metadata checks passed"); ResolveInfo info = context.getPackageManager().resolveService(new Intent(context, localRouterClass), PackageManager.GET_META_DATA); if (info != null) { @@ -180,7 +187,7 @@ public class IntegrationValidator { // Check if the service declaration in AndroidManifest has the intent-filter action specified correctly private static ValidationResult checkRouterServiceIntent(Context context, Class localRouterClass) { - ValidationResult retVal = new ValidationResult(true,"SdlRouterService intent filter check passed"); + ValidationResult retVal = new ValidationResult(true, "SdlRouterService intent filter check passed"); boolean serviceFilterHasAction = false; String className = localRouterClass.getName(); |