summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabriele M <moto.falcon.git@gmail.com>2017-03-23 22:52:54 +0100
committerGabriele M <moto.falcon.git@gmail.com>2017-03-23 22:27:04 +0000
commit9b194dd68cf8f3085bec91d5a7939d2eb3815b8c (patch)
tree7781b7db7426099a6101db5cbf5fc49a0f0dd8fe
parent6833a1108b7ebc6db4dfd5cfc98e9c05712fdefa (diff)
downloadandroid_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
-rw-r--r--src/com/android/packageinstaller/permission/model/AppPermissionGroup.java27
-rw-r--r--src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java74
-rw-r--r--src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java119
-rw-r--r--[-rwxr-xr-x]src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java10
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;
}
}