diff options
Diffstat (limited to 'java/com/android/dialer/telecom')
-rw-r--r-- | java/com/android/dialer/telecom/TelecomUtil.java | 80 |
1 files changed, 37 insertions, 43 deletions
diff --git a/java/com/android/dialer/telecom/TelecomUtil.java b/java/com/android/dialer/telecom/TelecomUtil.java index 82b43835f..87ddda58b 100644 --- a/java/com/android/dialer/telecom/TelecomUtil.java +++ b/java/com/android/dialer/telecom/TelecomUtil.java @@ -38,17 +38,12 @@ import java.util.List; * perform the required check and return the fallback default if the permission is missing, * otherwise return the value from TelecomManager. */ -public abstract class TelecomUtil { +public class TelecomUtil { private static final String TAG = "TelecomUtil"; private static boolean sWarningLogged = false; - - private static TelecomUtilImpl instance = new TelecomUtilImpl(); - - @VisibleForTesting(otherwise = VisibleForTesting.NONE) - public static void setInstanceForTesting(TelecomUtilImpl instanceForTesting) { - instance = instanceForTesting; - } + private static Boolean isDefaultDialerForTesting; + private static Boolean hasPermissionForTesting; public static void showInCallScreen(Context context, boolean showDialpad) { if (hasReadPhoneStatePermission(context)) { @@ -130,7 +125,10 @@ public abstract class TelecomUtil { } public static boolean isInCall(Context context) { - return instance.isInCall(context); + if (hasReadPhoneStatePermission(context)) { + return getTelecomManager(context).isInCall(); + } + return false; } public static boolean isVoicemailNumber( @@ -191,47 +189,43 @@ public abstract class TelecomUtil { } private static boolean hasPermission(Context context, String permission) { - return instance.hasPermission(context, permission); + if (hasPermissionForTesting != null) { + return hasPermissionForTesting; + } + return ContextCompat.checkSelfPermission(context, permission) + == PackageManager.PERMISSION_GRANTED; + } + + public static boolean isDefaultDialer(Context context) { + if (isDefaultDialerForTesting != null) { + return isDefaultDialerForTesting; + } + final boolean result = + TextUtils.equals( + context.getPackageName(), getTelecomManager(context).getDefaultDialerPackage()); + if (result) { + sWarningLogged = false; + } else { + if (!sWarningLogged) { + // Log only once to prevent spam. + LogUtil.w(TAG, "Dialer is not currently set to be default dialer"); + sWarningLogged = true; + } + } + return result; } private static TelecomManager getTelecomManager(Context context) { return (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE); } - public static boolean isDefaultDialer(Context context) { - return instance.isDefaultDialer(context); + @VisibleForTesting(otherwise = VisibleForTesting.NONE) + public static void setIsDefaultDialerForTesting(Boolean defaultDialer) { + isDefaultDialerForTesting = defaultDialer; } - /** Contains an implementation for {@link TelecomUtil} methods */ - @VisibleForTesting() - public static class TelecomUtilImpl { - - public boolean isInCall(Context context) { - if (hasReadPhoneStatePermission(context)) { - return getTelecomManager(context).isInCall(); - } - return false; - } - - public boolean hasPermission(Context context, String permission) { - return ContextCompat.checkSelfPermission(context, permission) - == PackageManager.PERMISSION_GRANTED; - } - - public boolean isDefaultDialer(Context context) { - final boolean result = - TextUtils.equals( - context.getPackageName(), getTelecomManager(context).getDefaultDialerPackage()); - if (result) { - sWarningLogged = false; - } else { - if (!sWarningLogged) { - // Log only once to prevent spam. - LogUtil.w(TAG, "Dialer is not currently set to be default dialer"); - sWarningLogged = true; - } - } - return result; - } + @VisibleForTesting(otherwise = VisibleForTesting.NONE) + public static void setHasPermissionForTesting(Boolean hasPermission) { + hasPermissionForTesting = hasPermission; } } |