Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8223ec05 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix browser role fallback."

parents 2fd9f688 8797468f
Loading
Loading
Loading
Loading
+1 −15
Original line number Diff line number Diff line
@@ -39,8 +39,6 @@ import android.util.Xml;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.packageinstaller.permission.utils.CollectionUtils;

import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
@@ -65,22 +63,10 @@ public class AssistantRoleBehavior implements RoleBehavior {
                && !context.getSystemService(ActivityManager.class).isLowRamDevice();
    }

    @NonNull
    @Override
    public List<String> getDefaultHolders(@NonNull Role role, @NonNull Context context) {
        return CollectionUtils.singletonOrEmpty(getFallbackHolder(role, context));
    }

    @Nullable
    @Override
    public String getFallbackHolder(@NonNull Role role, @NonNull Context context) {
        String defaultPackageName = CollectionUtils.firstOrNull(DefaultRoleHolders.get(context).get(
                role.getName()));
        if (defaultPackageName == null || !isPackageQualified(role, defaultPackageName, context)) {
            return null;
        }

        return defaultPackageName;
        return ExclusiveDefaultHolderMixin.getDefaultHolder(role, context);
    }

    @Nullable
+1 −8
Original line number Diff line number Diff line
@@ -28,8 +28,6 @@ import android.util.ArraySet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.packageinstaller.permission.utils.CollectionUtils;

import java.util.ArrayList;
import java.util.List;

@@ -51,17 +49,12 @@ public class BrowserRoleBehavior implements RoleBehavior {
    @NonNull
    @Override
    public List<String> getDefaultHolders(@NonNull Role role, @NonNull Context context) {
        return CollectionUtils.singletonOrEmpty(getFallbackHolder(role, context));
        return ExclusiveDefaultHolderMixin.getDefaultHolders(role, context);
    }

    @Nullable
    @Override
    public String getFallbackHolder(@NonNull Role role, @NonNull Context context) {
        String defaultPackageName = CollectionUtils.firstOrNull(DefaultRoleHolders.get(context).get(
                role.getName()));
        if (defaultPackageName != null && role.isPackageQualified(defaultPackageName, context)) {
            return defaultPackageName;
        }
        List<String> packageNames = role.getQualifyingPackagesAsUser(Process.myUserHandle(),
                context);
        if (packageNames.size() == 1) {
+59 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.packageinstaller.role.model;

import android.content.Context;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.packageinstaller.permission.utils.CollectionUtils;

import java.util.List;

/**
 * Mixin for {@link RoleBehavior#getDefaultHolders(Role, Context)} that returns a single default
 * role holder from {@link DefaultRoleHolders}.
 */
public class ExclusiveDefaultHolderMixin {

    private ExclusiveDefaultHolderMixin() {}

    /**
     * @see Role#getDefaultHolders(Context)
     */
    @NonNull
    public static List<String> getDefaultHolders(@NonNull Role role, @NonNull Context context) {
        return CollectionUtils.singletonOrEmpty(getDefaultHolder(role, context));
    }

    /**
     * @see Role#getDefaultHolders(Context)
     */
    @Nullable
    public static String getDefaultHolder(@NonNull Role role, @NonNull Context context) {
        String defaultPackageName = CollectionUtils.firstOrNull(DefaultRoleHolders.get(context).get(
                role.getName()));
        if (defaultPackageName == null) {
            return null;
        }
        if (!role.isPackageQualified(defaultPackageName, context)) {
            return null;
        }
        return defaultPackageName;
    }
}
+1 −20
Original line number Diff line number Diff line
@@ -57,29 +57,10 @@ public class SmsRoleBehavior implements RoleBehavior {
        return true;
    }

    @NonNull
    @Override
    public List<String> getDefaultHolders(@NonNull Role role, @NonNull Context context) {
        return CollectionUtils.singletonOrEmpty(getDefaultHolder(role, context));
    }

    @Nullable
    private String getDefaultHolder(@NonNull Role role, @NonNull Context context) {
        String defaultPackageName = CollectionUtils.firstOrNull(DefaultRoleHolders.get(context).get(
                role.getName()));
        if (defaultPackageName == null) {
            return null;
        }
        if (!role.isPackageQualified(defaultPackageName, context)) {
            return null;
        }
        return defaultPackageName;
    }

    @Nullable
    @Override
    public String getFallbackHolder(@NonNull Role role, @NonNull Context context) {
        String defaultPackageName = getDefaultHolder(role, context);
        String defaultPackageName = ExclusiveDefaultHolderMixin.getDefaultHolder(role, context);
        if (defaultPackageName != null) {
            return defaultPackageName;
        }