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

Commit 55b8f5a4 authored by Sudheer Shanka's avatar Sudheer Shanka Committed by Android (Google) Code Review
Browse files

Merge "Add a padlock to options when disabled by admin."

parents d0cd095d 49a28f7e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -35,4 +35,6 @@ LOCAL_PRIVILEGED_MODULE := true

LOCAL_PROGUARD_FLAG_FILES := proguard.flags

include frameworks/base/packages/SettingsLib/common.mk

include $(BUILD_PACKAGE)
+3 −0
Original line number Diff line number Diff line
@@ -21,6 +21,9 @@

    <uses-permission android:name="com.google.android.permission.INSTALL_WEARABLE_PACKAGES" />

    <!-- Needed for passing extras with intent ACTION_SHOW_ADMIN_SUPPORT_DETAILS -->
    <uses-permission android:name="android.permission.MANAGE_DEVICE_ADMINS" />

    <application android:label="@string/app_name"
            android:allowBackup="false"
            android:theme="@style/Theme.DialogWhenLarge"
+11 −2
Original line number Diff line number Diff line
@@ -53,10 +53,13 @@ import com.android.packageinstaller.permission.ui.OverlayTouchActivity;
import com.android.packageinstaller.permission.utils.LocationUtils;
import com.android.packageinstaller.permission.utils.SafetyNetLogger;
import com.android.packageinstaller.permission.utils.Utils;
import com.android.settingslib.RestrictedLockUtils;

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

import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;

public final class AppPermissionsFragment extends SettingsWithHeader
        implements OnPreferenceChangeListener {

@@ -216,7 +219,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader

            boolean isPlatform = group.getDeclaringPackage().equals(Utils.OS_PKG);

            SwitchPreference preference = new SwitchPreference(context);
            RestrictedSwitchPreference preference = new RestrictedSwitchPreference(context);
            preference.setOnPreferenceChangeListener(this);
            preference.setKey(group.getName());
            Drawable icon = Utils.loadDrawable(context.getPackageManager(),
@@ -226,9 +229,15 @@ public final class AppPermissionsFragment extends SettingsWithHeader
            preference.setTitle(group.getLabel());
            if (group.isPolicyFixed()) {
                preference.setSummary(getString(R.string.permission_summary_enforced_by_policy));
                EnforcedAdmin admin =
                        RestrictedLockUtils.getProfileOrDeviceOwnerOnCallingUser(context);
                if (admin != null) {
                    preference.setDisabledByAdmin(admin);
                } else {
                    preference.setEnabled(false);
                }
            }
            preference.setPersistent(false);
            preference.setEnabled(!group.isPolicyFixed());
            preference.setChecked(group.areRuntimePermissionsGranted());

            if (isPlatform) {
+20 −6
Original line number Diff line number Diff line
@@ -47,10 +47,13 @@ import com.android.packageinstaller.permission.ui.OverlayTouchActivity;
import com.android.packageinstaller.permission.utils.LocationUtils;
import com.android.packageinstaller.permission.utils.SafetyNetLogger;
import com.android.packageinstaller.permission.utils.Utils;
import com.android.settingslib.RestrictedLockUtils;

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

import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;

public final class PermissionAppsFragment extends PermissionsFrameFragment implements Callback,
        Preference.OnPreferenceChangeListener {

@@ -83,6 +86,8 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple

    private Callback mOnPermissionsLoadedListener;

    private EnforcedAdmin mEnforcedAdmin;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
@@ -97,6 +102,7 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple
        String groupName = getArguments().getString(Intent.EXTRA_PERMISSION_NAME);
        mPermissionApps = new PermissionApps(getActivity(), groupName, this);
        mPermissionApps.refresh(true);
        mEnforcedAdmin = RestrictedLockUtils.getProfileOrDeviceOwnerOnCallingUser(getActivity());
    }

    @Override
@@ -219,12 +225,16 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple

            if (existingPref != null) {
                // If existing preference - only update its state.
                if (app.isPolicyFixed()) {
                    existingPref.setSummary(getString(
                            R.string.permission_summary_enforced_by_policy));
                final boolean isPolicyFixed = app.isPolicyFixed();
                if (!isTelevision && (existingPref instanceof RestrictedSwitchPreference)) {
                    ((RestrictedSwitchPreference) existingPref).setDisabledByAdmin(
                            isPolicyFixed ? mEnforcedAdmin : null);
                } else {
                    existingPref.setEnabled(!isPolicyFixed);
                }
                existingPref.setSummary(isPolicyFixed ?
                        getString(R.string.permission_summary_enforced_by_policy) : null);
                existingPref.setPersistent(false);
                existingPref.setEnabled(!app.isPolicyFixed());
                if (existingPref instanceof SwitchPreference) {
                    ((SwitchPreference) existingPref)
                            .setChecked(app.areRuntimePermissionsGranted());
@@ -232,16 +242,20 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple
                continue;
            }

            SwitchPreference pref = new SwitchPreference(context);
            RestrictedSwitchPreference pref = new RestrictedSwitchPreference(context);
            pref.setOnPreferenceChangeListener(this);
            pref.setKey(app.getKey());
            pref.setIcon(app.getIcon());
            pref.setTitle(app.getLabel());
            if (app.isPolicyFixed()) {
                pref.setSummary(getString(R.string.permission_summary_enforced_by_policy));
                if (!isTelevision && mEnforcedAdmin != null) {
                    pref.setDisabledByAdmin(mEnforcedAdmin);
                } else {
                    pref.setEnabled(false);
                }
            }
            pref.setPersistent(false);
            pref.setEnabled(!app.isPolicyFixed());
            pref.setChecked(app.areRuntimePermissionsGranted());

            if (isSystemApp && isTelevision) {
+79 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2016 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.permission.ui.handheld;

import android.content.Context;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TextView;

import com.android.packageinstaller.R;
import com.android.settingslib.RestrictedLockUtils;

import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;

public class RestrictedSwitchPreference extends SwitchPreference {
    private final Context mContext;
    private boolean mDisabledByAdmin;
    private EnforcedAdmin mEnforcedAdmin;

    public RestrictedSwitchPreference(Context context) {
        super(context);
        mContext = context;
    }

    @Override
    public void onBindView(View view) {
        super.onBindView(view);
        final TextView textView = (TextView) view.findViewById(android.R.id.title);
        if (textView != null) {
            RestrictedLockUtils.setTextViewPadlock(mContext, textView, mDisabledByAdmin);
            if (mDisabledByAdmin) {
                view.setEnabled(true);
            }
        }
    }

    @Override
    public void setEnabled(boolean enabled) {
        if (enabled && mDisabledByAdmin) {
            setDisabledByAdmin(null);
        } else {
            super.setEnabled(enabled);
        }
    }

    public void setDisabledByAdmin(EnforcedAdmin admin) {
        final boolean disabled = (admin != null ? true : false);
        mEnforcedAdmin = admin;
        if (mDisabledByAdmin != disabled) {
            mDisabledByAdmin = disabled;
            setEnabled(!disabled);
        }
    }

    @Override
    public void performClick(PreferenceScreen preferenceScreen) {
        if (mDisabledByAdmin) {
            RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mContext, mEnforcedAdmin);
        } else {
            super.performClick(preferenceScreen);
        }
    }
}
 No newline at end of file