diff options
author | Gabriele M <moto.falcon.git@gmail.com> | 2017-03-23 22:52:54 +0100 |
---|---|---|
committer | Gabriele M <moto.falcon.git@gmail.com> | 2017-03-23 22:27:04 +0000 |
commit | 9b194dd68cf8f3085bec91d5a7939d2eb3815b8c (patch) | |
tree | 7781b7db7426099a6101db5cbf5fc49a0f0dd8fe | |
parent | 6833a1108b7ebc6db4dfd5cfc98e9c05712fdefa (diff) | |
download | android_packages_apps_PackageInstaller-9b194dd68cf8f3085bec91d5a7939d2eb3815b8c.tar.gz android_packages_apps_PackageInstaller-9b194dd68cf8f3085bec91d5a7939d2eb3815b8c.tar.bz2 android_packages_apps_PackageInstaller-9b194dd68cf8f3085bec91d5a7939d2eb3815b8c.zip |
Revert all the changes introduced with cafrebase
There have been reports of issues with runtime permissions. Revert
all the changes introduced with cafrebase.
This reverts the following commits:
- 64d3812bca7c1121a767e8436b433e8b293e0110
- df27c8179ea9b6ed1c1a16049bdf541091c3126b
- e4d18337497cd53ab311fa95acf89951b2d0d478
- b787f076e6cb038717af62f1b6a7b55620dfd626
- 2d5c59ce6a0def14934662b6741cbef6c07c7e71
- be2a8bf78deff2b2db485cc6a247e9a6d49960f6
- c48dd8c1686dc0631dad5b90295e79a3f1ef63c8
BUGBASH-270
BUGBASH-285
Change-Id: I39029116f331835d23bcc1b089972be4cf610519
4 files changed, 25 insertions, 205 deletions
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java index aa68959e..a6601165 100644 --- a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java +++ b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java @@ -26,7 +26,6 @@ import android.content.pm.PermissionGroupInfo; import android.content.pm.PermissionInfo; import android.os.Build; import android.os.Process; -import android.os.SystemProperties; import android.os.UserHandle; import android.util.ArrayMap; @@ -286,28 +285,6 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> return mPermissions.get(permission) != null; } - public boolean checkRuntimePermission(String[] filterPermissions) { - if (LocationUtils.isLocationGroupAndProvider(mName, mPackageInfo.packageName)) { - return LocationUtils.isLocationEnabled(mContext); - } - final int permissionCount = mPermissions.size(); - for (int i = 0; i < permissionCount; i++) { - Permission permission = mPermissions.valueAt(i); - if (filterPermissions != null - && !ArrayUtils.contains(filterPermissions, permission.getName())) { - continue; - } - if (mAppSupportsRuntimePermissions) { - if (!permission.isGranted()) { - return false; - } - } else if (permission.isGranted() && (permission.getAppOp() == null - || permission.isAppOpAllowed())) { - return true; - } - } - return false; - } public boolean areRuntimePermissionsGranted() { return areRuntimePermissionsGranted(null); } @@ -601,10 +578,6 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> return false; } - public static boolean isStrictOpEnable() { - return SystemProperties.getBoolean("persist.sys.strict_op_enable", false); - } - @Override public int compareTo(AppPermissionGroup another) { final int result = mLabel.toString().compareTo(another.mLabel.toString()); diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java index 48d8dbb3..b1347295 100644 --- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java +++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java @@ -151,37 +151,24 @@ public class GrantPermissionsActivity extends OverlayTouchActivity group.grantRuntimePermissions(false); } group.setPolicyFixed(); - } - break; + } break; case DevicePolicyManager.PERMISSION_POLICY_AUTO_DENY: { if (group.areRuntimePermissionsGranted()) { group.revokeRuntimePermissions(false); } group.setPolicyFixed(); - } - break; + } break; default: { - if (AppPermissionGroup.isStrictOpEnable()) { - if (!group.checkRuntimePermission(null)) { - mRequestGrantPermissionGroups.put(group.getName(), - new GroupState(group)); - } else { - group.grantRuntimePermissions(false); - updateGrantResults(group); - } + if (!group.areRuntimePermissionsGranted()) { + mRequestGrantPermissionGroups.put(group.getName(), + new GroupState(group)); } else { - if (!group.areRuntimePermissionsGranted()) { - mRequestGrantPermissionGroups.put(group.getName(), - new GroupState(group)); - } else { - group.grantRuntimePermissions(false); - updateGrantResults(group); - } + group.grantRuntimePermissions(false); + updateGrantResults(group); } - } - break; + } break; } } else { // if the permission is fixed, ensure that we return the right request result @@ -195,10 +182,10 @@ public class GrantPermissionsActivity extends OverlayTouchActivity WindowManager.LayoutParams layoutParams = window.getAttributes(); mViewHandler.updateWindowAttributes(layoutParams); window.setAttributes(layoutParams); + if (!showNextPermissionGroupGrantRequest()) { setResultAndFinish(); } - } @Override @@ -247,31 +234,8 @@ public class GrantPermissionsActivity extends OverlayTouchActivity for (GroupState groupState : mRequestGrantPermissionGroups.values()) { if (groupState.mState == GroupState.STATE_UNKNOWN) { CharSequence appLabel = mAppPermissions.getAppLabel(); - CharSequence desc = null; - if (AppPermissionGroup.isStrictOpEnable()) { - String info = ""; - AppPermissionGroup group = mAppPermissions.getPermissionGroup(groupState - .mGroup.getName()); - for (Permission permission : group.getPermissions()) { - try { - PermissionInfo permissionInfo = this.getPackageManager() - .getPermissionInfo(permission.getName(), 0); - if (info.length() != 0) { - info += ", "; - } - info += permissionInfo.loadLabel(getPackageManager()); - } catch (PackageManager.NameNotFoundException e) { - e.printStackTrace(); - } - } - if (info.length() != 0) { - desc = groupState.mGroup.getDescription() + "(" + info + ")"; - } - } else { - desc = groupState.mGroup.getDescription(); - } Spanned message = Html.fromHtml(getString(R.string.permission_warning_template, - appLabel, desc), 0); + appLabel, groupState.mGroup.getDescription()), 0); // Set the permission message as the title so it can be announced. setTitle(message); @@ -286,20 +250,16 @@ public class GrantPermissionsActivity extends OverlayTouchActivity resources = Resources.getSystem(); } int icon = groupState.mGroup.getIconResId(); - if (AppPermissionGroup.isStrictOpEnable()) { - mViewHandler.updateUi(groupState.mGroup.getName(), groupCount, currentIndex, - Icon.createWithResource(resources, icon), message, - true); - } else { - mViewHandler.updateUi(groupState.mGroup.getName(), groupCount, currentIndex, - Icon.createWithResource(resources, icon), message, - groupState.mGroup.isUserSet()); - } + + mViewHandler.updateUi(groupState.mGroup.getName(), groupCount, currentIndex, + Icon.createWithResource(resources, icon), message, + groupState.mGroup.isUserSet()); return true; } currentIndex++; } + return false; } @@ -311,9 +271,7 @@ public class GrantPermissionsActivity extends OverlayTouchActivity groupState.mGroup.grantRuntimePermissions(doNotAskAgain); groupState.mState = GroupState.STATE_ALLOWED; } else { - if(!AppPermissionGroup.isStrictOpEnable()){ - groupState.mGroup.revokeRuntimePermissions(doNotAskAgain); - } + groupState.mGroup.revokeRuntimePermissions(doNotAskAgain); groupState.mState = GroupState.STATE_DENIED; } updateGrantResults(groupState.mGroup); diff --git a/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java index b5f57ad0..422fb124 100644 --- a/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java @@ -27,10 +27,7 @@ import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; -import android.content.pm.PermissionInfo; import android.graphics.drawable.Drawable; -import android.Manifest; import android.net.Uri; import android.os.Bundle; import android.preference.Preference; @@ -51,7 +48,6 @@ import android.widget.Toast; import com.android.packageinstaller.R; import com.android.packageinstaller.permission.model.AppPermissionGroup; import com.android.packageinstaller.permission.model.AppPermissions; -import com.android.packageinstaller.permission.model.Permission; import com.android.packageinstaller.permission.utils.LocationUtils; import com.android.packageinstaller.permission.utils.SafetyNetLogger; import com.android.packageinstaller.permission.utils.Utils; @@ -77,7 +73,6 @@ public final class AppPermissionsFragment extends SettingsWithHeader private PreferenceScreen mExtraScreen; private boolean mHasConfirmedRevoke; - String mPackageName; public static AppPermissionsFragment newInstance(String packageName) { return setPackageName(new AppPermissionsFragment(), packageName); @@ -100,9 +95,9 @@ public final class AppPermissionsFragment extends SettingsWithHeader ab.setDisplayHomeAsUpEnabled(true); } - mPackageName = getArguments().getString(Intent.EXTRA_PACKAGE_NAME); + String packageName = getArguments().getString(Intent.EXTRA_PACKAGE_NAME); Activity activity = getActivity(); - PackageInfo packageInfo = getPackageInfo(activity, mPackageName); + PackageInfo packageInfo = getPackageInfo(activity, packageName); if (packageInfo == null) { Toast.makeText(activity, R.string.app_not_found_dlg_title, Toast.LENGTH_LONG).show(); activity.finish(); @@ -242,33 +237,6 @@ public final class AppPermissionsFragment extends SettingsWithHeader } mExtraScreen.addPreference(preference); } - if (AppPermissionGroup.isStrictOpEnable() && isPlatform) { - try { - if (!group.getName().equals(Manifest.permission_group.STORAGE)) { - PackageManager pm = context.getPackageManager(); - for (Permission permission : group.getPermissions()) { - PermissionInfo perm = pm.getPermissionInfo(permission.getName(), 0); - final String[] filterPermissions = new String[]{permission.getName()}; - if (perm.protectionLevel == PermissionInfo.PROTECTION_DANGEROUS) { - SwitchPreference preference_permission = new SwitchPreference(context); - preference_permission.setOnPreferenceChangeListener(this); - preference_permission.setKey(permission.getName()); - preference_permission.setTitle(perm.loadLabel(pm)); - preference_permission.setPersistent(false); - preference_permission.setEnabled(true); - AppPermissionGroup permissionGroup = getPermisssionGroup(perm.group); - preference_permission.setChecked( - permissionGroup.areRuntimePermissionsGranted(filterPermissions)); - screen.addPreference(preference_permission); - } else if (perm.protectionLevel == PermissionInfo.PROTECTION_NORMAL) { - continue; - } - } - } - } catch (NameNotFoundException e) { - Log.e(LOG_TAG, "Problem getting package info for " + mPackageName, e); - } - } } if (mExtraScreen != null) { @@ -294,79 +262,12 @@ public final class AppPermissionsFragment extends SettingsWithHeader setLoading(false /* loading */, true /* animate */); } - private AppPermissionGroup getPermisssionGroup(String group) { - for (AppPermissionGroup mGroup : mAppPermissions.getPermissionGroups()) { - if (group.equals(mGroup.getName())) { - return mGroup; - } - } - return null; - } - - private void updateEveryPermissionPreference(AppPermissionGroup group) { - if (group.getName().equals(Manifest.permission_group.STORAGE)) return; - PackageManager pm = getContext().getPackageManager(); - PreferenceScreen screen = getPreferenceScreen(); - for (Permission permission : group.getPermissions()) { - Preference permission_preference - = screen.findPreference((CharSequence) permission.getName()); - try { - PermissionInfo permInfo = pm.getPermissionInfo(permission.getName(), 0); - AppPermissionGroup permissionGroup = getPermisssionGroup(permInfo.group); - final String[] filterPermissions = new String[]{permission.getName()}; - ((SwitchPreference) permission_preference).setChecked( - permissionGroup.areRuntimePermissionsGranted(filterPermissions)); - } catch (NameNotFoundException e) { - Log.e(LOG_TAG, "Failed to update permission_preference", e); - } - } - } - @Override public boolean onPreferenceChange(final Preference preference, Object newValue) { - String key = preference.getKey(); - final String[] filterPermissions = new String[]{key}; - final AppPermissionGroup group = mAppPermissions.getPermissionGroup(key); - PackageManager pm = getContext().getPackageManager(); + String groupName = preference.getKey(); + final AppPermissionGroup group = mAppPermissions.getPermissionGroup(groupName); if (group == null) { - if (AppPermissionGroup.isStrictOpEnable()) { - try { - PermissionInfo permInfo = pm.getPermissionInfo(key, 0); - final AppPermissionGroup title_group - = mAppPermissions.getPermissionGroup(permInfo.group); - final boolean grantedByDefault = title_group.hasGrantedByDefaultPermission(); - PreferenceScreen screen = getPreferenceScreen(); - Preference group_preference = screen.findPreference((CharSequence) permInfo.group); - AppPermissionGroup permissionGroup = getPermisssionGroup(permInfo.group); - if (newValue == Boolean.TRUE) { - ((SwitchPreference)preference).setChecked(true); - title_group.grantRuntimePermissions(false, filterPermissions); - ((SwitchPreference) group_preference).setChecked( - permissionGroup.areRuntimePermissionsGranted()); - } else { - //When the permission is off, the application maybe will crash, so need to - //add a warning dialog when the user revoke the permission. - new AlertDialog.Builder(getContext()) - .setMessage(grantedByDefault ? R.string.system_warning - : R.string.old_sdk_deny_warning) - .setNegativeButton(R.string.cancel, null) - .setPositiveButton(R.string.grant_dialog_button_deny_anyway, - new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - ((SwitchPreference) preference).setChecked(false); - title_group.revokeRuntimePermissions(false, filterPermissions); - ((SwitchPreference) group_preference).setChecked( - permissionGroup.areRuntimePermissionsGranted()); - } - }) - .show(); - } - } catch (NameNotFoundException e) { - Log.e(LOG_TAG, "Problem getting package info for ", e); - } - } return false; } @@ -376,13 +277,8 @@ public final class AppPermissionsFragment extends SettingsWithHeader LocationUtils.showLocationDialog(getContext(), mAppPermissions.getAppLabel()); return false; } - - final boolean isPlatform = group.getDeclaringPackage().equals(Utils.OS_PKG); if (newValue == Boolean.TRUE) { group.grantRuntimePermissions(false); - if (AppPermissionGroup.isStrictOpEnable() && isPlatform) { - updateEveryPermissionPreference(group); - } } else { final boolean grantedByDefault = group.hasGrantedByDefaultPermission(); if (grantedByDefault || (!group.hasRuntimePermission() && !mHasConfirmedRevoke)) { @@ -396,9 +292,6 @@ public final class AppPermissionsFragment extends SettingsWithHeader public void onClick(DialogInterface dialog, int which) { ((SwitchPreference) preference).setChecked(false); group.revokeRuntimePermissions(false); - if (AppPermissionGroup.isStrictOpEnable() && isPlatform) { - updateEveryPermissionPreference(group); - } if (!grantedByDefault) { mHasConfirmedRevoke = true; } @@ -408,11 +301,9 @@ public final class AppPermissionsFragment extends SettingsWithHeader return false; } else { group.revokeRuntimePermissions(false); - if (AppPermissionGroup.isStrictOpEnable() && isPlatform) { - updateEveryPermissionPreference(group); - } } } + return true; } diff --git a/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java b/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java index 713b3e27..6342826f 100755..100644 --- a/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java +++ b/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java @@ -35,7 +35,6 @@ import com.android.packageinstaller.R; import com.android.packageinstaller.permission.ui.ButtonBarLayout; import com.android.packageinstaller.permission.ui.GrantPermissionsViewHandler; import com.android.packageinstaller.permission.ui.ManualLayoutFrame; -import com.android.packageinstaller.permission.model.AppPermissionGroup; public final class GrantPermissionsViewHandlerImpl implements GrantPermissionsViewHandler, OnClickListener { @@ -314,7 +313,7 @@ public final class GrantPermissionsViewHandlerImpl } private void updateDoNotAskCheckBox() { - if (!mShowDonNotAsk) { + if (mShowDonNotAsk) { mDoNotAskCheckbox.setVisibility(View.VISIBLE); mDoNotAskCheckbox.setOnClickListener(this); mDoNotAskCheckbox.setChecked(mDoNotAskChecked); @@ -330,8 +329,7 @@ public final class GrantPermissionsViewHandlerImpl case R.id.permission_allow_button: if (mResultListener != null) { view.clearAccessibilityFocus(); - mResultListener.onPermissionGrantResult( - mGroupName, true, AppPermissionGroup.isStrictOpEnable()? false: mDoNotAskCheckbox.isChecked()); + mResultListener.onPermissionGrantResult(mGroupName, true, false); } break; case R.id.permission_deny_button: @@ -339,11 +337,11 @@ public final class GrantPermissionsViewHandlerImpl if (mResultListener != null) { view.clearAccessibilityFocus(); mResultListener.onPermissionGrantResult(mGroupName, false, - AppPermissionGroup.isStrictOpEnable()? false: mShowDonNotAsk && mDoNotAskCheckbox.isChecked()); + mShowDonNotAsk && mDoNotAskCheckbox.isChecked()); } break; case R.id.do_not_ask_checkbox: - //mAllowButton.setEnabled(!mDoNotAskCheckbox.isChecked()); + mAllowButton.setEnabled(!mDoNotAskCheckbox.isChecked()); break; } } |