From 0b39f87007178bf48c334ad494412ced0b7a047d Mon Sep 17 00:00:00 2001 From: Michael Groover Date: Mon, 7 Mar 2022 22:15:46 +0000 Subject: Revert "[DO NOT MERGE]Revert "Relax minimum signature scheme ver..." Revert submission 16943318-presubmit-am-bc566b73c1674298b82a1153c03313a1 Reason for revert: This change breaks Better Bug. Reverted Changes: I32a2db8c7:[automerge] [DO NOT MERGE]Revert "Relax minimum si... Ic53d2a361:[DO NOT MERGE]Revert "Relax minimum signature sche... Bug: 223079119 Change-Id: I987bda9df92543f082700936c20aad06f992bdb0 (cherry picked from commit 01c3d11b83bfca88d3fd382b1f51b41a8ffb1506) Merged-In: I987bda9df92543f082700936c20aad06f992bdb0 --- core/java/android/content/pm/PackageParser.java | 6 ++++-- .../content/pm/parsing/ParsingPackageUtils.java | 6 ++++-- .../com/android/server/pm/PackageManagerService.java | 20 +++++++++++--------- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index f54d9a76d02d..4ff26242dab2 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -1401,9 +1401,11 @@ public class PackageParser { } SigningDetails verified; if (skipVerify) { - // systemDir APKs are already trusted, save time by not verifying + // systemDir APKs are already trusted, save time by not verifying; since the signature + // is not verified and some system apps can have their V2+ signatures stripped allow + // pulling the certs from the jar signature. verified = ApkSignatureVerifier.unsafeGetCertsWithoutVerification( - apkPath, minSignatureScheme); + apkPath, SigningDetails.SignatureSchemeVersion.JAR); } else { verified = ApkSignatureVerifier.verify(apkPath, minSignatureScheme); } diff --git a/core/java/android/content/pm/parsing/ParsingPackageUtils.java b/core/java/android/content/pm/parsing/ParsingPackageUtils.java index e1d34dc3f622..dce242c9d87c 100644 --- a/core/java/android/content/pm/parsing/ParsingPackageUtils.java +++ b/core/java/android/content/pm/parsing/ParsingPackageUtils.java @@ -3038,9 +3038,11 @@ public class ParsingPackageUtils { SigningDetails verified; try { if (skipVerify) { - // systemDir APKs are already trusted, save time by not verifying + // systemDir APKs are already trusted, save time by not verifying; since the + // signature is not verified and some system apps can have their V2+ signatures + // stripped allow pulling the certs from the jar signature. verified = ApkSignatureVerifier.unsafeGetCertsWithoutVerification( - baseCodePath, minSignatureScheme); + baseCodePath, SigningDetails.SignatureSchemeVersion.JAR); } else { verified = ApkSignatureVerifier.verify(baseCodePath, minSignatureScheme); } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index b5957052d5a8..c0486443b97e 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -15193,15 +15193,17 @@ public class PackageManagerService extends IPackageManager.Stub } } - // Ensure the package is signed with at least the minimum signature scheme version - // required for its target SDK. - int minSignatureSchemeVersion = - ApkSignatureVerifier.getMinimumSignatureSchemeVersionForTargetSdk( - pkg.getTargetSdkVersion()); - if (pkg.getSigningDetails().signatureSchemeVersion < minSignatureSchemeVersion) { - throw new PackageManagerException(INSTALL_PARSE_FAILED_NO_CERTIFICATES, - "No signature found in package of version " + minSignatureSchemeVersion - + " or newer for package " + pkg.getPackageName()); + // If the package is not on a system partition ensure it is signed with at least the + // minimum signature scheme version required for its target SDK. + if ((parseFlags & ParsingPackageUtils.PARSE_IS_SYSTEM_DIR) == 0) { + int minSignatureSchemeVersion = + ApkSignatureVerifier.getMinimumSignatureSchemeVersionForTargetSdk( + pkg.getTargetSdkVersion()); + if (pkg.getSigningDetails().signatureSchemeVersion < minSignatureSchemeVersion) { + throw new PackageManagerException(INSTALL_PARSE_FAILED_NO_CERTIFICATES, + "No signature found in package of version " + minSignatureSchemeVersion + + " or newer for package " + pkg.getPackageName()); + } } } } -- cgit v1.2.3-59-g8ed1b From fa9bbed9467ca84fada4752d94f403bcfd163b3b Mon Sep 17 00:00:00 2001 From: Yunfan Chen Date: Tue, 19 Apr 2022 17:13:22 +0900 Subject: [DO NOT MERGE] Force extra nav bar provide side gesture insets This is a patch to fix the missing gesture insets issue when there's a task bar and no navigation bar on the display. It will try to add the gesture navigation insets when a window providing navigation bar insets is added and there's no window with TYPE_NAVIGATION_BAR. The logic will only be applied when the insets is not flexible. Due to the removal of the old hard-coded logic in the later version, this patch should not be merged into the next version. Bug: 212643340 Test: android.widget.cts.SeekBarTest#testSetOnSeekBarChangeListener Change-Id: I080df3547361aef1aa259dd2b3dc9bdb860a0193 (cherry picked from commit 1921f8c1dc660851a499c5dac5a55cedf854f93e) Merged-In: I080df3547361aef1aa259dd2b3dc9bdb860a0193 --- .../java/com/android/server/wm/DisplayPolicy.java | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index d54a388245f5..b64be7ce9e94 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -188,6 +188,7 @@ public class DisplayPolicy { private static final String TAG = TAG_WITH_CLASS_NAME ? "DisplayPolicy" : TAG_WM; private static final boolean ALTERNATE_CAR_MODE_NAV_SIZE = false; + private static final boolean LEGACY_TASKBAR_GESTURE_INSETS = false; // The panic gesture may become active only after the keyguard is dismissed and the immersive // app shows again. If that doesn't happen for 30s we drop the gesture. @@ -1275,6 +1276,35 @@ public class DisplayPolicy { if (!INSETS_LAYOUT_GENERALIZATION) { mDisplayContent.setInsetProvider(insetsType, win, null, imeFrameProvider); + if (LEGACY_TASKBAR_GESTURE_INSETS) { + if (mNavigationBar == null && (insetsType == ITYPE_NAVIGATION_BAR + || insetsType == ITYPE_EXTRA_NAVIGATION_BAR)) { + mDisplayContent.setInsetProvider(ITYPE_LEFT_GESTURES, win, + (displayFrames, windowState, inOutFrame) -> { + final int leftSafeInset = + Math.max(displayFrames.mDisplayCutoutSafe + .left, + 0); + inOutFrame.left = 0; + inOutFrame.top = 0; + inOutFrame.bottom = displayFrames.mDisplayHeight; + inOutFrame.right = + leftSafeInset + mLeftGestureInset; + }); + mDisplayContent.setInsetProvider(ITYPE_RIGHT_GESTURES, win, + (displayFrames, windowState, inOutFrame) -> { + final int rightSafeInset = + Math.min(displayFrames.mDisplayCutoutSafe + .right, + displayFrames.mUnrestricted.right); + inOutFrame.left = + rightSafeInset - mRightGestureInset; + inOutFrame.top = 0; + inOutFrame.bottom = displayFrames.mDisplayHeight; + inOutFrame.right = displayFrames.mDisplayWidth; + }); + } + } } else { mDisplayContent.setInsetProvider(insetsType, win, (displayFrames, windowState, inOutFrame) -> inOutFrame.inset( -- cgit v1.2.3-59-g8ed1b