diff options
Diffstat (limited to 'src/com/android/packageinstaller/permission')
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); |