summaryrefslogtreecommitdiffstats
path: root/src/com/android/packageinstaller/permission
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/packageinstaller/permission')
-rw-r--r--src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java2
-rw-r--r--src/com/android/packageinstaller/permission/ui/SecureButtonView.java56
-rw-r--r--src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java2
-rw-r--r--src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java27
-rw-r--r--src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java23
5 files changed, 40 insertions, 70 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
index 4ee76a18..c4471be6 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
@@ -49,6 +49,7 @@ import com.android.packageinstaller.permission.ui.handheld.GrantPermissionsViewH
import com.android.packageinstaller.permission.utils.SafetyNetLogger;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
@@ -92,6 +93,7 @@ public class GrantPermissionsActivity extends OverlayTouchActivity
final int requestedPermCount = mRequestedPermissions.length;
mGrantResults = new int[requestedPermCount];
+ Arrays.fill(mGrantResults, PackageManager.PERMISSION_DENIED);
if (requestedPermCount == 0) {
setResultAndFinish();
diff --git a/src/com/android/packageinstaller/permission/ui/SecureButtonView.java b/src/com/android/packageinstaller/permission/ui/SecureButtonView.java
deleted file mode 100644
index 624744e5..00000000
--- a/src/com/android/packageinstaller/permission/ui/SecureButtonView.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.widget.Button;
-
-/**
- * Extension of Button that uses the hidden MotionEvent flag for partially obscured windows to
- * prevent tapjacking attacks.
- */
-public class SecureButtonView extends Button {
-
- public SecureButtonView(Context context) {
- this(context, null);
- }
-
- public SecureButtonView(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public SecureButtonView(Context context, AttributeSet attrs, int defStyleAttr) {
- this(context, attrs, defStyleAttr, 0);
- }
-
- public SecureButtonView(Context context, AttributeSet attrs, int defStyleAttr,
- int defStyleRes) {
- super(context, attrs, defStyleAttr, defStyleRes);
- }
-
- @Override
- public boolean onFilterTouchEventForSecurity(MotionEvent event) {
- if ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0
- || (event.getFlags() & MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED) != 0) {
- // Window is obscured, drop this touch.
- return false;
- }
- 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 f2b0912d..6342826f 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java
@@ -337,7 +337,7 @@ public final class GrantPermissionsViewHandlerImpl
if (mResultListener != null) {
view.clearAccessibilityFocus();
mResultListener.onPermissionGrantResult(mGroupName, false,
- mDoNotAskCheckbox.isChecked());
+ mShowDonNotAsk && mDoNotAskCheckbox.isChecked());
}
break;
case R.id.do_not_ask_checkbox:
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java
index df0bdd46..1a21f2de 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/PermissionAppsFragment.java
@@ -34,9 +34,6 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
import com.android.packageinstaller.DeviceUtils;
import com.android.packageinstaller.R;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
@@ -81,6 +78,7 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple
private boolean mHasConfirmedRevoke;
private boolean mShowSystem;
+ private boolean mHasSystemApps;
private MenuItem mShowSystemMenu;
private MenuItem mHideSystemMenu;
@@ -110,13 +108,16 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- mShowSystemMenu = menu.add(Menu.NONE, MENU_SHOW_SYSTEM, Menu.NONE,
- R.string.menu_show_system);
- mHideSystemMenu = menu.add(Menu.NONE, MENU_HIDE_SYSTEM, Menu.NONE,
- R.string.menu_hide_system);
+ if (mHasSystemApps) {
+ mShowSystemMenu = menu.add(Menu.NONE, MENU_SHOW_SYSTEM, Menu.NONE,
+ R.string.menu_show_system);
+ mHideSystemMenu = menu.add(Menu.NONE, MENU_HIDE_SYSTEM, Menu.NONE,
+ R.string.menu_hide_system);
+ updateMenu();
+ }
+
HelpUtils.prepareHelpMenuItem(getActivity(), menu, R.string.help_app_permissions,
getClass().getName());
- updateMenu();
}
@Override
@@ -186,6 +187,9 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple
}
}
+ mHasSystemApps = false;
+ boolean menuOptionsInvalided = false;
+
for (PermissionApp app : permissionApps.getApps()) {
if (!Utils.shouldShowPermission(app)) {
continue;
@@ -199,6 +203,13 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple
}
boolean isSystemApp = Utils.isSystem(app, mLauncherPkgs);
+
+ if (isSystemApp && !menuOptionsInvalided) {
+ mHasSystemApps = true;
+ getActivity().invalidateOptionsMenu();
+ menuOptionsInvalided = true;
+ }
+
if (isSystemApp && !isTelevision && !mShowSystem) {
if (existingPref != null) {
screen.removePreference(existingPref);
diff --git a/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java
index 29839c14..ec320701 100644
--- a/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/television/PermissionAppsFragment.java
@@ -81,6 +81,7 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
private boolean mHasConfirmedRevoke;
private boolean mShowSystem;
+ private boolean mHasSystemApps;
private MenuItem mShowSystemMenu;
private MenuItem mHideSystemMenu;
@@ -110,11 +111,13 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- mShowSystemMenu = menu.add(Menu.NONE, MENU_SHOW_SYSTEM, Menu.NONE,
- R.string.menu_show_system);
- mHideSystemMenu = menu.add(Menu.NONE, MENU_HIDE_SYSTEM, Menu.NONE,
- R.string.menu_hide_system);
- updateMenu();
+ if (mHasSystemApps) {
+ mShowSystemMenu = menu.add(Menu.NONE, MENU_SHOW_SYSTEM, Menu.NONE,
+ R.string.menu_show_system);
+ mHideSystemMenu = menu.add(Menu.NONE, MENU_HIDE_SYSTEM, Menu.NONE,
+ R.string.menu_hide_system);
+ updateMenu();
+ }
}
@Override
@@ -184,6 +187,9 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
}
}
+ mHasSystemApps = false;
+ boolean menuOptionsInvalided = false;
+
for (PermissionApp app : permissionApps.getApps()) {
if (!Utils.shouldShowPermission(app)) {
continue;
@@ -197,6 +203,13 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
}
boolean isSystemApp = Utils.isSystem(app, mLauncherPkgs);
+
+ if (isSystemApp && !menuOptionsInvalided) {
+ mHasSystemApps = true;
+ getActivity().invalidateOptionsMenu();
+ menuOptionsInvalided = true;
+ }
+
if (isSystemApp && !isTelevision && !mShowSystem) {
if (existingPref != null) {
screen.removePreference(existingPref);