Wired remaining SpecialAppAccess for ECM.
This change enables the remaining settings for ECM, and adds tests for both this and previous ECM changes. Bug: 297372999 Test: Tested on device Test: atest SpaPrivilegedLibTests Test: atest com.android.settings.applications.specialaccess.notificationaccess Test: atest com.android.settings.datausage Test: atest PremiumSmsAccessTest Test: atest RestrictedPreferenceHelperTest Change-Id: I73d39d765dba0c1a75111c37b29ccf1c85d2cdd8
This commit is contained in:
@@ -21,6 +21,7 @@ import android.os.UserHandle;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
|
||||
import com.android.settings.R;
|
||||
@@ -36,6 +37,7 @@ import com.android.settingslib.widget.AppSwitchPreference;
|
||||
|
||||
public class UnrestrictedDataAccessPreference extends AppSwitchPreference implements
|
||||
DataSaverBackend.Listener {
|
||||
private static final String ECM_RESTRICTION_KEY = "android:unrestricted_data_access";
|
||||
|
||||
private final ApplicationsState mApplicationsState;
|
||||
private final AppEntry mEntry;
|
||||
@@ -58,6 +60,8 @@ public class UnrestrictedDataAccessPreference extends AppSwitchPreference implem
|
||||
mParentFragment = parentFragment;
|
||||
setDisabledByAdmin(checkIfMeteredDataUsageUserControlDisabled(
|
||||
context, entry.info.packageName, UserHandle.getUserId(entry.info.uid)));
|
||||
mHelper.checkEcmRestrictionAndSetDisabled(ECM_RESTRICTION_KEY, entry.info.packageName,
|
||||
entry.info.uid);
|
||||
updateState();
|
||||
setKey(generateKey(mEntry));
|
||||
|
||||
@@ -166,10 +170,25 @@ public class UnrestrictedDataAccessPreference extends AppSwitchPreference implem
|
||||
return mHelper.isDisabledByAdmin();
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
boolean isDisabledByEcm() {
|
||||
return mHelper.isDisabledByEcm();
|
||||
}
|
||||
|
||||
public void setDisabledByAdmin(EnforcedAdmin admin) {
|
||||
mHelper.setDisabledByAdmin(admin);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the given setting is subject to Enhanced Confirmation Mode restrictions for this
|
||||
* package. Marks the preference as disabled if so.
|
||||
* @param packageName the package to check the restriction for
|
||||
* @param uid the uid of the package
|
||||
*/
|
||||
public void checkEcmRestrictionAndSetDisabled(@Nullable String packageName, int uid) {
|
||||
mHelper.checkEcmRestrictionAndSetDisabled(ECM_RESTRICTION_KEY, packageName, uid);
|
||||
}
|
||||
|
||||
// Sets UI state based on allowlist/denylist status.
|
||||
public void updateState() {
|
||||
setTitle(mEntry.label);
|
||||
@@ -179,7 +198,8 @@ public class UnrestrictedDataAccessPreference extends AppSwitchPreference implem
|
||||
setSummary(com.android.settingslib.widget.restricted.R.string.disabled_by_admin);
|
||||
} else if (mDataUsageState.isDataSaverDenylisted) {
|
||||
setSummary(R.string.restrict_background_blocklisted);
|
||||
} else {
|
||||
// If disabled by ECM, the summary is set directly by the switch.
|
||||
} else if (!isDisabledByEcm()) {
|
||||
setSummary("");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,6 +151,8 @@ public class UnrestrictedDataAccessPreferenceController extends BasePreferenceCo
|
||||
} else {
|
||||
preference.setDisabledByAdmin(checkIfMeteredDataUsageUserControlDisabled(mContext,
|
||||
entry.info.packageName, UserHandle.getUserId(entry.info.uid)));
|
||||
preference.checkEcmRestrictionAndSetDisabled(entry.info.packageName,
|
||||
entry.info.uid);
|
||||
preference.updateState();
|
||||
}
|
||||
preference.setOrder(i);
|
||||
|
||||
Reference in New Issue
Block a user