diff options
3 files changed, 27 insertions, 15 deletions
diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java index 4277d01c091a..2c4f38de2db0 100644 --- a/core/java/android/util/FeatureFlagUtils.java +++ b/core/java/android/util/FeatureFlagUtils.java @@ -52,16 +52,6 @@ public class FeatureFlagUtils { public static final String SETTINGS_SUPPORT_LARGE_SCREEN = "settings_support_large_screen"; /** - * Feature flag to allow/restrict intent redirection from/to clone profile. - * Default value is false,this is to ensure that framework is not impacted by intent redirection - * till we are ready to launch. - * From Android U onwards, this would be set to true and eventually removed. - * @hide - */ - public static final String SETTINGS_ALLOW_INTENT_REDIRECTION_FOR_CLONE_PROFILE = - "settings_allow_intent_redirection_for_clone_profile"; - - /** * Support locale opt-out and opt-in switch for per app's language. * @hide */ @@ -174,7 +164,6 @@ public class FeatureFlagUtils { DEFAULT_FLAGS.put(SETTINGS_ENABLE_SECURITY_HUB, "true"); DEFAULT_FLAGS.put(SETTINGS_SUPPORT_LARGE_SCREEN, "true"); DEFAULT_FLAGS.put("settings_search_always_expand", "true"); - DEFAULT_FLAGS.put(SETTINGS_ALLOW_INTENT_REDIRECTION_FOR_CLONE_PROFILE, "false"); DEFAULT_FLAGS.put(SETTINGS_APP_LOCALE_OPT_IN_ENABLED, "true"); DEFAULT_FLAGS.put(SETTINGS_VOLUME_PANEL_IN_SYSTEMUI, "false"); DEFAULT_FLAGS.put(SETTINGS_ENABLE_MONITOR_PHANTOM_PROCS, "true"); @@ -196,7 +185,6 @@ public class FeatureFlagUtils { static { PERSISTENT_FLAGS = new HashSet<>(); - PERSISTENT_FLAGS.add(SETTINGS_ALLOW_INTENT_REDIRECTION_FOR_CLONE_PROFILE); PERSISTENT_FLAGS.add(SETTINGS_APP_LOCALE_OPT_IN_ENABLED); PERSISTENT_FLAGS.add(SETTINGS_SUPPORT_LARGE_SCREEN); PERSISTENT_FLAGS.add(SETTINGS_ENABLE_MONITOR_PHANTOM_PROCS); diff --git a/services/core/java/com/android/server/pm/CloneProfileResolver.java b/services/core/java/com/android/server/pm/CloneProfileResolver.java index d3113e12abe3..73036f12327a 100644 --- a/services/core/java/com/android/server/pm/CloneProfileResolver.java +++ b/services/core/java/com/android/server/pm/CloneProfileResolver.java @@ -18,6 +18,8 @@ package com.android.server.pm; import android.content.Intent; import android.content.pm.ResolveInfo; +import android.os.Binder; +import android.provider.DeviceConfig; import com.android.server.pm.pkg.PackageStateInternal; import com.android.server.pm.resolution.ComponentResolverApi; @@ -32,6 +34,30 @@ import java.util.function.Function; */ public class CloneProfileResolver extends CrossProfileResolver { + /** + * Feature flag to allow/restrict intent redirection from/to clone profile. + * Default value is false,this is to ensure that framework is not impacted by intent redirection + * till we are ready to launch. + * From Android U onwards, this would be set to true and eventually removed. + * @hide + */ + private static final String FLAG_ALLOW_INTENT_REDIRECTION_FOR_CLONE_PROFILE = + "allow_intent_redirection_for_clone_profile"; + + /** + * Returns true if intent redirection for clone profile feature flag is set + * @return value of flag allow_intent_redirection_for_clone_profile + */ + public static boolean isIntentRedirectionForCloneProfileAllowed() { + final long token = Binder.clearCallingIdentity(); + try { + return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_APP_CLONING, + FLAG_ALLOW_INTENT_REDIRECTION_FOR_CLONE_PROFILE, false /* defaultValue */); + } finally { + Binder.restoreCallingIdentity(token); + } + } + public CloneProfileResolver(ComponentResolverApi componentResolver, UserManagerService userManagerService) { super(componentResolver, userManagerService); diff --git a/services/core/java/com/android/server/pm/CrossProfileIntentResolverEngine.java b/services/core/java/com/android/server/pm/CrossProfileIntentResolverEngine.java index 5d97cb7c61ae..1e0822d6bd63 100644 --- a/services/core/java/com/android/server/pm/CrossProfileIntentResolverEngine.java +++ b/services/core/java/com/android/server/pm/CrossProfileIntentResolverEngine.java @@ -32,7 +32,6 @@ import android.content.pm.ResolveInfo; import android.content.pm.UserInfo; import android.os.Process; import android.text.TextUtils; -import android.util.FeatureFlagUtils; import android.util.Pair; import android.util.Slog; import android.util.SparseArray; @@ -250,8 +249,7 @@ public class CrossProfileIntentResolverEngine { * SETTINGS_ALLOW_INTENT_REDIRECTION_FOR_CLONE_PROFILE is enabled */ if (sourceUserInfo.isCloneProfile() || targetUserInfo.isCloneProfile()) { - if (FeatureFlagUtils.isEnabled(mContext, - FeatureFlagUtils.SETTINGS_ALLOW_INTENT_REDIRECTION_FOR_CLONE_PROFILE)) { + if (CloneProfileResolver.isIntentRedirectionForCloneProfileAllowed()) { return new CloneProfileResolver(computer.getComponentResolver(), mUserManager); } else { |