Merge "Using AppCloning building blocks flag instead of specific intent redirection flag."
This commit is contained in:
committed by
Android (Google) Code Review
commit
bf588abaa9
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user