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

Commit eb74102b authored by Nate Myren's avatar Nate Myren Committed by Android (Google) Code Review
Browse files

Merge "Refactored ViewModels to be in their own folder" into rvc-dev

parents f3216d20 da8be108
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -40,6 +40,8 @@ import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.data.PackagePermissionsLiveData;
import com.android.permissioncontroller.permission.model.AppPermissionGroup;
import com.android.permissioncontroller.permission.model.Permission;
import com.android.permissioncontroller.permission.ui.model.AllAppPermissionsViewModel;
import com.android.permissioncontroller.permission.ui.model.AllAppPermissionsViewModelFactory;
import com.android.permissioncontroller.permission.utils.ArrayUtils;
import com.android.permissioncontroller.permission.utils.KotlinUtils;
import com.android.permissioncontroller.permission.utils.Utils;
@@ -94,6 +96,17 @@ public final class AllAppPermissionsFragment extends SettingsWithLargeHeader {
        return arguments;
    }

    /**
     * Create a bundle with the arguments needed by this fragment
     *
     * @param packageName The name of the package
     * @param userHandle The user of this package
     * @return A bundle with all of the args placed
     */
    public static Bundle createArgs(@NonNull String packageName, @NonNull UserHandle userHandle) {
        return createArgs(packageName, null, userHandle);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
+28 −15
Original line number Diff line number Diff line
@@ -60,9 +60,11 @@ import androidx.lifecycle.ViewModelProvider;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.ui.AppPermissionActivity;
import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler;
import com.android.permissioncontroller.permission.ui.handheld.AppPermissionViewModel.ButtonState;
import com.android.permissioncontroller.permission.ui.handheld.AppPermissionViewModel.ButtonType;
import com.android.permissioncontroller.permission.ui.handheld.AppPermissionViewModel.ChangeRequest;
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel;
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonState;
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonType;
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ChangeRequest;
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModelFactory;
import com.android.permissioncontroller.permission.utils.KotlinUtils;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -77,7 +79,8 @@ import kotlin.Pair;
 *
 * <p>Allows the user to control whether the app is granted the permission.
 */
public class AppPermissionFragment extends SettingsWithLargeHeader {
public class AppPermissionFragment extends SettingsWithLargeHeader
        implements AppPermissionViewModel.DefaultDenyShowingFragment {
    private static final String LOG_TAG = "AppPermissionFragment";
    private static final long POST_DELAY_MS = 20;

@@ -99,6 +102,7 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
    private @NonNull String mPermGroupName;
    private @NonNull UserHandle mUser;
    private boolean mIsInitialLoad;
    private long mSessionId;

    private @NonNull String mPackageLabel;
    private @NonNull String mPermGroupLabel;
@@ -171,10 +175,10 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
                mPermGroupName).toString();
        mPackageIcon = KotlinUtils.INSTANCE.getBadgedPackageIcon(getActivity().getApplication(),
                mPackageName, mUser);
        long sessionId = getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID);
        mSessionId = getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID);

        AppPermissionViewModelFactory factory = new AppPermissionViewModelFactory(
                getActivity().getApplication(), mPackageName, mPermGroupName, mUser, sessionId);
                getActivity().getApplication(), mPackageName, mPermGroupName, mUser, mSessionId);
        mViewModel = new ViewModelProvider(this, factory).get(AppPermissionViewModel.class);

        boolean[] firstRun = new boolean[] { true };
@@ -257,7 +261,14 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
            view.setVisibility(View.GONE);
        } else {
            view.setOnClickListener((v) -> {
                mViewModel.showBottomLinkPage(this, action);
                Bundle args;
                if (action.equals(Intent.ACTION_MANAGE_APP_PERMISSIONS)) {
                    args = AppPermissionGroupsFragment.createArgs(mPackageName, mUser,
                            mSessionId, true);
                } else {
                    args = PermissionAppsFragment.createArgs(mPermGroupName, mSessionId);
                }
                mViewModel.showBottomLinkPage(this, action, args);
            });
        }
    }
@@ -292,33 +303,33 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
        }

        mAllowButton.setOnClickListener((v) -> {
            mViewModel.requestChange(false, this, ChangeRequest.GRANT_FOREGROUND,
            mViewModel.requestChange(false, this, this, ChangeRequest.GRANT_FOREGROUND,
                    APP_PERMISSION_FRAGMENT_ACTION_REPORTED__BUTTON_PRESSED__ALLOW);
            setResult(GRANTED_ALWAYS);
        });
        mAllowAlwaysButton.setOnClickListener((v) -> {
            mViewModel.requestChange(false, this, ChangeRequest.GRANT_BOTH,
            mViewModel.requestChange(false, this, this, ChangeRequest.GRANT_BOTH,
                    APP_PERMISSION_FRAGMENT_ACTION_REPORTED__BUTTON_PRESSED__ALLOW_ALWAYS);
            setResult(GRANTED_ALWAYS);
        });
        mAllowForegroundButton.setOnClickListener((v) -> {
            mViewModel.requestChange(false, this, ChangeRequest.GRANT_FOREGROUND_ONLY,
            mViewModel.requestChange(false, this, this, ChangeRequest.GRANT_FOREGROUND_ONLY,
                    APP_PERMISSION_FRAGMENT_ACTION_REPORTED__BUTTON_PRESSED__ALLOW_FOREGROUND);
            setResult(GRANTED_FOREGROUND_ONLY);
        });
        // mAskOneTimeButton only shows if checked hence should do nothing
        mAskButton.setOnClickListener((v) -> {
            mViewModel.requestChange(true, this, ChangeRequest.REVOKE_BOTH,
            mViewModel.requestChange(true, this, this, ChangeRequest.REVOKE_BOTH,
                    APP_PERMISSION_FRAGMENT_ACTION_REPORTED__BUTTON_PRESSED__ASK_EVERY_TIME);
            setResult(DENIED);
        });
        mDenyButton.setOnClickListener((v) -> {
            mViewModel.requestChange(false, this, ChangeRequest.REVOKE_BOTH,
            mViewModel.requestChange(false, this, this, ChangeRequest.REVOKE_BOTH,
                    APP_PERMISSION_FRAGMENT_ACTION_REPORTED__BUTTON_PRESSED__DENY);
            setResult(DENIED_DO_NOT_ASK_AGAIN);
        });
        mDenyForegroundButton.setOnClickListener((v) -> {
            mViewModel.requestChange(false, this, ChangeRequest.REVOKE_FOREGROUND,
            mViewModel.requestChange(false, this, this, ChangeRequest.REVOKE_FOREGROUND,
                    APP_PERMISSION_FRAGMENT_ACTION_REPORTED__BUTTON_PRESSED__DENY_FOREGROUND);
            setResult(DENIED_DO_NOT_ASK_AGAIN);
        });
@@ -368,7 +379,8 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
            // lets you control them.
            mDivider.setVisibility(View.VISIBLE);
            showRightIcon(R.drawable.ic_settings);
            mWidgetFrame.setOnClickListener(v -> mViewModel.showAllPermissions(this));
            Bundle args = AllAppPermissionsFragment.createArgs(mPackageName, mPermGroupName, mUser);
            mWidgetFrame.setOnClickListener(v -> mViewModel.showAllPermissions(this, args));
            mPermissionDetails.setText(getPreferenceManager().getContext().getString(
                    detailResIds.getFirst(), detailResIds.getSecond()));
        } else {
@@ -420,7 +432,8 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
     * @param buttonPressed Button which was pressed to initiate the dialog, one of
     *                      AppPermissionFragmentActionReported.button_pressed constants
     */
    void showDefaultDenyDialog(ChangeRequest changeRequest, @StringRes int messageId,
    @Override
    public void showDefaultDenyDialog(ChangeRequest changeRequest, @StringRes int messageId,
            int buttonPressed) {
        Bundle args = getArguments().deepCopy();
        args.putInt(DefaultDenyDialog.MSG, messageId);
+6 −2
Original line number Diff line number Diff line
@@ -51,6 +51,8 @@ import androidx.preference.PreferenceCategory;
import com.android.permissioncontroller.PermissionControllerStatsLog;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.ui.Category;
import com.android.permissioncontroller.permission.ui.model.AppPermissionGroupsViewModel;
import com.android.permissioncontroller.permission.ui.model.AppPermissionGroupsViewModelFactory;
import com.android.permissioncontroller.permission.utils.KotlinUtils;
import com.android.permissioncontroller.permission.utils.Utils;
import com.android.settingslib.HelpUtils;
@@ -166,7 +168,8 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader {
            }

            case MENU_ALL_PERMS: {
                mViewModel.showAllPermissions(this);
                mViewModel.showAllPermissions(this, AllAppPermissionsFragment.createArgs(
                        mPackageName, mUser));
                return true;
            }
        }
@@ -298,7 +301,8 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader {
        extraPerms.setTitle(R.string.additional_permissions);
        extraPerms.setKey(extraPerms.getTitle() + category);
        extraPerms.setOnPreferenceClickListener(preference -> {
            mViewModel.showExtraPerms(this, getArguments().getLong(EXTRA_SESSION_ID));
            mViewModel.showExtraPerms(this, AppPermissionGroupsFragment.createArgs(
                    mPackageName, mUser, getArguments().getLong(EXTRA_SESSION_ID), false));
            return true;
        });
        extraPerms.setSummary(getResources().getQuantityString(
+5 −2
Original line number Diff line number Diff line
@@ -23,6 +23,9 @@ import android.view.MenuItem;

import androidx.lifecycle.ViewModelProvider;

import com.android.permissioncontroller.permission.ui.model.ManageCustomPermissionsViewModel;
import com.android.permissioncontroller.permission.ui.model.ManageCustomPermissionsViewModelFactory;

import java.util.HashMap;

/**
@@ -75,8 +78,8 @@ public class ManageCustomPermissionsFragment extends ManagePermissionsFragment {

    @Override
    public void showPermissionApps(String permissionGroupName) {
        mViewModel.showPermissionApps(this, permissionGroupName,
                getArguments().getLong(EXTRA_SESSION_ID));
        mViewModel.showPermissionApps(this, PermissionAppsFragment.createArgs(
                permissionGroupName, getArguments().getLong(EXTRA_SESSION_ID)));
    }

    @Override
+6 −3
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.ui.model.ManageStandardPermissionsViewModel;
import com.android.permissioncontroller.permission.ui.model.ManageStandardPermissionsViewModelFactory;
import com.android.permissioncontroller.permission.utils.Utils;


@@ -127,7 +129,8 @@ public final class ManageStandardPermissionsFragment extends ManagePermissionsFr
                additionalPermissionsPreference.setTitle(R.string.additional_permissions);
                additionalPermissionsPreference.setOnPreferenceClickListener(preference -> {
                    mViewModel.showCustomPermissions(this,
                            getArguments().getLong(EXTRA_SESSION_ID));
                            ManageCustomPermissionsFragment.createArgs(
                                    getArguments().getLong(EXTRA_SESSION_ID)));
                    return true;
                });

@@ -143,7 +146,7 @@ public final class ManageStandardPermissionsFragment extends ManagePermissionsFr

    @Override
    public void showPermissionApps(String permissionGroupName) {
        mViewModel.showPermissionApps(this, permissionGroupName,
                getArguments().getLong(EXTRA_SESSION_ID));
        mViewModel.showPermissionApps(this, PermissionAppsFragment.createArgs(
                permissionGroupName, getArguments().getLong(EXTRA_SESSION_ID)));
    }
}
Loading