summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sarup Dalwani <sarup@google.com> 2023-02-07 08:00:28 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-02-07 08:00:28 +0000
commitbf588abaa915d5f2c79b86774f90cbafb54251bb (patch)
tree1331617561db70d1f721ea43ec622f0bbc6cb20b
parent03e132f6348281ddedac359c863a47d8fd9459a5 (diff)
parenta61cd9a09960da337523065b6617f3f38af558f9 (diff)
Merge "Using AppCloning building blocks flag instead of specific intent redirection flag."
-rw-r--r--services/core/java/com/android/server/pm/CrossProfileIntentResolverEngine.java10
-rw-r--r--services/core/java/com/android/server/pm/NoFilteringResolver.java13
2 files changed, 16 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/pm/CrossProfileIntentResolverEngine.java b/services/core/java/com/android/server/pm/CrossProfileIntentResolverEngine.java
index e149b04a3e4b..b5c04171e312 100644
--- a/services/core/java/com/android/server/pm/CrossProfileIntentResolverEngine.java
+++ b/services/core/java/com/android/server/pm/CrossProfileIntentResolverEngine.java
@@ -37,6 +37,7 @@ import android.util.Pair;
import android.util.Slog;
import android.util.SparseArray;
+import com.android.internal.config.appcloning.AppCloningDeviceConfigHelper;
import com.android.server.LocalServices;
import com.android.server.pm.pkg.PackageStateInternal;
import com.android.server.pm.verify.domain.DomainVerificationManagerInternal;
@@ -61,6 +62,8 @@ public class CrossProfileIntentResolverEngine {
private final Context mContext;
private final UserManagerInternal mUserManagerInternal;
+ private AppCloningDeviceConfigHelper mAppCloningDeviceConfigHelper;
+
public CrossProfileIntentResolverEngine(UserManagerService userManager,
DomainVerificationManagerInternal domainVerificationManager,
DefaultAppProvider defaultAppProvider, Context context) {
@@ -250,7 +253,12 @@ public class CrossProfileIntentResolverEngine {
* We would return NoFilteringResolver only if it is allowed(feature flag is set).
*/
if (shouldUseNoFilteringResolver(sourceUserId, targetUserId)) {
- if (NoFilteringResolver.isIntentRedirectionAllowed(mContext, resolveForStart, flags)) {
+ if (mAppCloningDeviceConfigHelper == null) {
+ //lazy initialization of helper till required, to improve performance.
+ mAppCloningDeviceConfigHelper = AppCloningDeviceConfigHelper.getInstance(mContext);
+ }
+ if (NoFilteringResolver.isIntentRedirectionAllowed(mContext,
+ mAppCloningDeviceConfigHelper, resolveForStart, flags)) {
return new NoFilteringResolver(computer.getComponentResolver(),
mUserManager);
} else {
diff --git a/services/core/java/com/android/server/pm/NoFilteringResolver.java b/services/core/java/com/android/server/pm/NoFilteringResolver.java
index 999706a43114..392389009398 100644
--- a/services/core/java/com/android/server/pm/NoFilteringResolver.java
+++ b/services/core/java/com/android/server/pm/NoFilteringResolver.java
@@ -22,8 +22,8 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Binder;
-import android.provider.DeviceConfig;
+import com.android.internal.config.appcloning.AppCloningDeviceConfigHelper;
import com.android.server.pm.pkg.PackageStateInternal;
import com.android.server.pm.resolution.ComponentResolverApi;
import com.android.server.pm.verify.domain.DomainVerificationManagerInternal;
@@ -49,18 +49,19 @@ public class NoFilteringResolver extends CrossProfileResolver {
"allow_intent_redirection_for_clone_profile";
/**
- * Returns true if intent redirection for clone profile feature flag is set
- * and if its query, then check if calling user have necessary permission
+ * Returns true if intent redirection for clone profile feature flag
+ * (enable_app_cloning_building_blocks) is set and if its query,
+ * then check if calling user have necessary permission
* (android.permission.QUERY_CLONED_APPS) as well as required flag
* (PackageManager.MATCH_CLONE_PROFILE) bit set.
* @return true if resolver would be used for cross profile resolution.
*/
public static boolean isIntentRedirectionAllowed(Context context,
- boolean resolveForStart, long flags) {
+ AppCloningDeviceConfigHelper appCloningDeviceConfigHelper, boolean resolveForStart,
+ long flags) {
final long token = Binder.clearCallingIdentity();
try {
- return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_APP_CLONING,
- FLAG_ALLOW_INTENT_REDIRECTION_FOR_CLONE_PROFILE, false /* defaultValue */)
+ return appCloningDeviceConfigHelper.getEnableAppCloningBuildingBlocks()
&& (resolveForStart || (((flags & PackageManager.MATCH_CLONE_PROFILE) != 0)
&& hasPermission(context, Manifest.permission.QUERY_CLONED_APPS)));
} finally {