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

Commit f8097f8b authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 6237110 from 96dad28f to rvc-release

Change-Id: I5a894c5c4e0b29bf916587d29cac5b2562690013
parents a65316e3 96dad28f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -151,6 +151,7 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setHasOptionsMenu(true);
        ActionBar ab = getActivity().getActionBar();
        if (ab != null) {
+8 −8
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.UserHandle;
import android.util.ArrayMap;
import android.util.Log;
@@ -146,7 +147,7 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader {
                getActivity().invalidateOptionsMenu());

        if (!mViewModel.arePackagesLoaded()) {
            Handler handler = new Handler();
            Handler handler = new Handler(Looper.getMainLooper());
            handler.postDelayed(() -> {
                if (!mViewModel.arePackagesLoaded()) {
                    setLoading(true /* loading */, false /* animate */);
@@ -311,22 +312,21 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader {

                Preference existingPref = existingPrefs.get(key);
                if (existingPref != null) {
                    if (existingPref instanceof SmartIconLoadPackagePermissionPreference) {
                        ((SmartIconLoadPackagePermissionPreference) existingPref).setGrantCategory(
                                grantCategory.getCategoryName());
                    }
                    category.addPreference(existingPref);
                    continue;
                }

                SmartIconLoadPackagePermissionPreference pref =
                        new SmartIconLoadPackagePermissionPreference(getActivity().getApplication(),
                                packageName, user, context, mPermGroupName,
                                PermissionAppsFragment.class.getName(), sessionId,
                                grantCategory.getCategoryName());
                                packageName, user, context);
                pref.setKey(key);
                pref.setTitle(KotlinUtils.INSTANCE.getPackageLabel(getActivity().getApplication(),
                        packageName, user));
                pref.setOnPreferenceClickListener((Preference p) -> {
                    mViewModel.navigateToAppPermission(this, packageName, user,
                            sessionId, grantCategory.getCategoryName());
                    return true;
                });

                category.addPreference(pref);
                if (!mViewModel.getCreationLogged()) {
+46 −4
Original line number Diff line number Diff line
@@ -18,23 +18,28 @@ package com.android.permissioncontroller.permission.ui.handheld

import android.Manifest
import android.app.Application
import android.content.Intent
import android.os.Bundle
import android.os.UserHandle
import androidx.fragment.app.Fragment
import androidx.lifecycle.AbstractSavedStateViewModelFactory
import androidx.lifecycle.MediatorLiveData
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.navigation.fragment.findNavController
import androidx.savedstate.SavedStateRegistryOwner
import com.android.permissioncontroller.R
import com.android.permissioncontroller.permission.data.AllPackageInfosLiveData
import com.android.permissioncontroller.permission.data.FullStoragePermissionAppsLiveData
import com.android.permissioncontroller.permission.data.SinglePermGroupPackagesUiInfoLiveData
import com.android.permissioncontroller.permission.data.get
import com.android.permissioncontroller.permission.model.livedatatypes.AppPermGroupUiInfo.PermGrantState
import com.android.permissioncontroller.permission.ui.Category
import com.android.permissioncontroller.permission.ui.LocationProviderInterceptDialog
import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsViewModel.Companion.CREATION_LOGGED_KEY
import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsViewModel.Companion.HAS_SYSTEM_APPS_KEY
import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsViewModel.Companion.SHOULD_SHOW_SYSTEM_KEY
import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsViewModel.Companion.SHOW_ALWAYS_ALLOWED
import com.android.permissioncontroller.permission.utils.LocationUtils

/**
 * ViewModel for the PermissionAppsFragment. Has a liveData with all of the UI info for each
@@ -48,7 +53,7 @@ import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsVie
class PermissionAppsViewModel(
    private val state: SavedStateHandle,
    private val app: Application,
    groupName: String
    private val groupName: String
) : ViewModel() {

    companion object {
@@ -189,6 +194,43 @@ class PermissionAppsViewModel(
    fun arePackagesLoaded(): Boolean {
        return AllPackageInfosLiveData.isInitialized
    }

    /**
     * Navigate to an AppPermissionFragment
     *
     * @param fragment The fragment attached to this ViewModel
     * @param packageName The package name we want to navigate to
     * @param user The user we want to navigate to the package of
     * @param sessionId The sessionId
     * @param grantCategory The grant state of the package and user
     */
    fun navigateToAppPermission(
        fragment: Fragment,
        packageName: String,
        user: UserHandle,
        sessionId: Long,
        grantCategory: String
    ) {
        val activity = fragment.activity!!
        if (LocationUtils.isLocationGroupAndProvider(
                activity, groupName, packageName)) {
            val intent = Intent(activity, LocationProviderInterceptDialog::class.java)
            intent.putExtra(Intent.EXTRA_PACKAGE_NAME, packageName)
            activity.startActivityAsUser(intent, user)
            return
        }

        if (LocationUtils.isLocationGroupAndControllerExtraPackage(
                activity, groupName, packageName)) {
            // Redirect to location controller extra package settings.
            LocationUtils.startLocationControllerExtraPackageSettings(activity, user)
            return
        }

        val args = AppPermissionFragment.createArgs(packageName, null, groupName,
            user, PermissionAppsFragment::class.java.name, sessionId, grantCategory)
        fragment.findNavController().navigate(R.id.perm_apps_to_app, args)
    }
}

/**
+1 −19
Original line number Diff line number Diff line
@@ -23,12 +23,10 @@ import android.text.TextUtils
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import androidx.navigation.findNavController
import androidx.preference.AndroidResources
import androidx.preference.Preference
import androidx.preference.PreferenceViewHolder
import com.android.permissioncontroller.R
import com.android.permissioncontroller.permission.ui.AppPermissionActivity
import com.android.permissioncontroller.permission.utils.KotlinUtils

/**
@@ -40,22 +38,12 @@ import com.android.permissioncontroller.permission.utils.KotlinUtils
 * @param packageName The name of the package whose icon this preference will retrieve
 * @param user The user whose package icon will be retrieved
 * @param context The current context
 * @param groupName The name of the permission group this Preference is showing for
 * @param caller The name of the caller of this constructor. See
 * @see AppPermissionActivity.EXTRA_CALLER_NAME
 * @param sessionId An int representing the current session
 * @param grantCategory The granted state of the app represented by this preference, will be
 * passed on to the App Permission Fragment
 */
open class SmartIconLoadPackagePermissionPreference @JvmOverloads constructor(
    private val app: Application,
    private val packageName: String,
    private val user: UserHandle,
    context: Context,
    private val groupName: String,
    private val caller: String,
    private val sessionId: Long = 0,
    var grantCategory: String
    context: Context
) : Preference(context) {

    /**
@@ -85,11 +73,5 @@ open class SmartIconLoadPackagePermissionPreference @JvmOverloads constructor(
        if (imageFrame != null) {
            imageFrame.visibility = View.VISIBLE
        }
        setOnPreferenceClickListener {
            val args = AppPermissionFragment.createArgs(packageName, null, groupName,
                user, caller, sessionId, grantCategory)
            holder.itemView.findNavController().navigate(R.id.perm_apps_to_app, args)
            true
        }
    }
}