From fc93d732ae17f21338ce63dc1672082cc349a2e8 Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Wed, 18 Nov 2020 21:40:56 +0000 Subject: [PATCH] Revert "Restore preferred activity filter if it not inside" This reverts commit da90fd9871ee128a127e32280475279360c61f66. Reason for revert: 1-18 13:33:52.927 2356 2356 E System : ****************************************** 11-18 13:33:52.927 2356 2356 E System : ************ Failure starting system services 11-18 13:33:52.927 2356 2356 E System : java.lang.ArrayIndexOutOfBoundsException: length=2; index=2 11-18 13:33:52.927 2356 2356 E System : at com.android.server.pm.PreferredComponent.sameSet(PreferredComponent.java:266) 11-18 13:33:52.927 2356 2356 E System : at com.android.server.pm.PreferredIntentResolver.shouldAddPreferredActivity(PreferredIntentResolver.java:63) 11-18 13:33:52.927 2356 2356 E System : at com.android.server.pm.Settings.readPreferredActivitiesLPw(Settings.java:1315) 11-18 13:33:52.927 2356 2356 E System : at com.android.server.pm.Settings.readPackageRestrictionsLPr(Settings.java:1686) 11-18 13:33:52.927 2356 2356 E System : at com.android.server.pm.Settings.readLPw(Settings.java:3032) 11-18 13:33:52.927 2356 2356 E System : at com.android.server.pm.PackageManagerService.(PackageManagerService.java:3185) 11-18 13:33:52.927 2356 2356 E System : at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:2781) 11-18 13:33:52.927 2356 2356 E System : at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:970) 11-18 13:33:52.927 2356 2356 E System : at com.android.server.SystemServer.run(SystemServer.java:704) 11-18 13:33:52.927 2356 2356 E System : at com.android.server.SystemServer.main(SystemServer.java:444) 11-18 13:33:52.927 2356 2356 E System : at java.lang.reflect.Method.invoke(Native Method) 11-18 13:33:52.927 2356 2356 E System : at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 11-18 13:33:52.927 2356 2356 E System : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:946) 11-18 13:33:52.927 2356 2356 D SystemServerTiming: StartPackageManagerService took to complete: 158ms 11-18 13:33:52.927 2356 2356 E Zygote : System zygote died with fatal exception 11-18 13:33:52.927 2356 2356 E Zygote : java.lang.ArrayIndexOutOfBoundsException: length=2; index=2 11-18 13:33:52.927 2356 2356 E Zygote : at com.android.server.pm.PreferredComponent.sameSet(PreferredComponent.java:266) 11-18 13:33:52.927 2356 2356 E Zygote : at com.android.server.pm.PreferredIntentResolver.shouldAddPreferredActivity(PreferredIntentResolver.java:63) 11-18 13:33:52.927 2356 2356 E Zygote : at com.android.server.pm.Settings.readPreferredActivitiesLPw(Settings.java:1315) 11-18 13:33:52.927 2356 2356 E Zygote : at com.android.server.pm.Settings.readPackageRestrictionsLPr(Settings.java:1686) 11-18 13:33:52.927 2356 2356 E Zygote : at com.android.server.pm.Settings.readLPw(Settings.java:3032) 11-18 13:33:52.927 2356 2356 E Zygote : at com.android.server.pm.PackageManagerService.(PackageManagerService.java:3185) 11-18 13:33:52.927 2356 2356 E Zygote : at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:2781) 11-18 13:33:52.927 2356 2356 E Zygote : at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:970) 11-18 13:33:52.927 2356 2356 E Zygote : at com.android.server.SystemServer.run(SystemServer.java:704) 11-18 13:33:52.927 2356 2356 E Zygote : at com.android.server.SystemServer.main(SystemServer.java:444) 11-18 13:33:52.927 2356 2356 E Zygote : at java.lang.reflect.Method.invoke(Native Method) 11-18 13:33:52.927 2356 2356 E Zygote : at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 11-18 13:33:52.927 2356 2356 E Zygote : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:946) 11-18 13:33:52.927 2356 2356 D AndroidRuntime: Shutting down VM 11-18 13:33:52.927 2356 2356 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main 11-18 13:33:52.927 2356 2356 E AndroidRuntime: java.lang.ArrayIndexOutOfBoundsException: length=2; index=2 11-18 13:33:52.927 2356 2356 E AndroidRuntime: at com.android.server.pm.PreferredComponent.sameSet(PreferredComponent.java:266) 11-18 13:33:52.927 2356 2356 E AndroidRuntime: at com.android.server.pm.PreferredIntentResolver.shouldAddPreferredActivity(PreferredIntentResolver.java:63) 11-18 13:33:52.927 2356 2356 E AndroidRuntime: at com.android.server.pm.Settings.readPreferredActivitiesLPw(Settings.java:1315) 11-18 13:33:52.927 2356 2356 E AndroidRuntime: at com.android.server.pm.Settings.readPackageRestrictionsLPr(Settings.java:1686) 11-18 13:33:52.927 2356 2356 E AndroidRuntime: at com.android.server.pm.Settings.readLPw(Settings.java:3032) 11-18 13:33:52.927 2356 2356 E AndroidRuntime: at com.android.server.pm.PackageManagerService.(PackageManagerService.java:3185) 11-18 13:33:52.927 2356 2356 E AndroidRuntime: at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:2781) 11-18 13:33:52.927 2356 2356 E AndroidRuntime: at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:970) 11-18 13:33:52.927 2356 2356 E AndroidRuntime: at com.android.server.SystemServer.run(SystemServer.java:704) 11-18 13:33:52.927 2356 2356 E AndroidRuntime: at com.android.server.SystemServer.main(SystemServer.java:444) 11-18 13:33:52.927 2356 2356 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 11-18 13:33:52.927 2356 2356 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 11-18 13:33:52.927 2356 2356 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:946) 11-18 13:33:52.928 2356 2356 E AndroidRuntime: Error reporting crash 11-18 13:33:52.928 2356 2356 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'void android.app.IActivityManager.handleApplicationCrash(android.os.IBinder, android.app.ApplicationErrorReport$ParcelableCrashInfo)' on a null object reference 11-18 13:33:52.928 2356 2356 E AndroidRuntime: at com.android.internal.os.RuntimeInit$KillApplicationHandler.uncaughtException(RuntimeInit.java:156) 11-18 13:33:52.928 2356 2356 E AndroidRuntime: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1073) 11-18 13:33:52.928 2356 2356 E AndroidRuntime: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068) 11-18 13:33:52.928 2356 2356 E AndroidRuntime: at java.lang.Thread.dispatchUncaughtException(Thread.java:2191) Change-Id: I9c018f52c16dc6cf1a160db58e08fbeb42803af6 --- .../android/server/pm/PreferredComponent.java | 37 ------------------- .../server/pm/PreferredIntentResolver.java | 21 ----------- .../java/com/android/server/pm/Settings.java | 3 +- 3 files changed, 2 insertions(+), 59 deletions(-) diff --git a/services/core/java/com/android/server/pm/PreferredComponent.java b/services/core/java/com/android/server/pm/PreferredComponent.java index 3732bb6a834c8..c312fc0eca2fb 100644 --- a/services/core/java/com/android/server/pm/PreferredComponent.java +++ b/services/core/java/com/android/server/pm/PreferredComponent.java @@ -254,43 +254,6 @@ public class PreferredComponent { return numMatch == NS; } - public boolean sameSet(PreferredComponent pc) { - if (mSetPackages == null || pc == null || pc.mSetPackages == null - || !sameComponent(pc.mComponent)) { - return false; - } - final int otherPackageCount = pc.mSetPackages.length; - final int packageCount = mSetPackages.length; - int numMatch = 0; - for (int i = 0; i < otherPackageCount; i++) { - boolean good = false; - for (int j = 0; j < packageCount; j++) { - if (mSetPackages[j].equals(pc.mSetPackages[j]) - && mSetClasses[j].equals(pc.mSetClasses[j])) { - numMatch++; - good = true; - break; - } - } - if (!good) { - return false; - } - } - return numMatch == packageCount; - } - - /** Returns true if the preferred component represents the provided ComponentName. */ - private boolean sameComponent(ComponentName comp) { - if (mComponent == null || comp == null) { - return false; - } - if (mComponent.getPackageName().equals(comp.getPackageName()) - && mComponent.getClassName().equals(comp.getClassName())) { - return true; - } - return false; - } - public boolean isSuperset(List query, boolean excludeSetupWizardPackage) { if (mSetPackages == null) { return query == null; diff --git a/services/core/java/com/android/server/pm/PreferredIntentResolver.java b/services/core/java/com/android/server/pm/PreferredIntentResolver.java index ff3df130a3cc8..a261e29b05a74 100644 --- a/services/core/java/com/android/server/pm/PreferredIntentResolver.java +++ b/services/core/java/com/android/server/pm/PreferredIntentResolver.java @@ -22,7 +22,6 @@ import android.content.IntentFilter; import java.io.PrintWriter; import com.android.server.IntentResolver; -import java.util.ArrayList; public class PreferredIntentResolver extends IntentResolver { @@ -46,24 +45,4 @@ public class PreferredIntentResolver protected IntentFilter getIntentFilter(@NonNull PreferredActivity input) { return input; } - - public boolean shouldAddPreferredActivity(PreferredActivity pa) { - ArrayList pal = findFilters(pa); - if (pal == null || pal.isEmpty()) { - return true; - } - if (!pa.mPref.mAlways) { - return false; - } - final int activityCount = pal.size(); - for (int i = 0; i < activityCount; i++) { - PreferredActivity cur = pal.get(i); - if (cur.mPref.mAlways - && cur.mPref.mMatch == (pa.mPref.mMatch & IntentFilter.MATCH_CATEGORY_MASK) - && cur.mPref.sameSet(pa.mPref)) { - return false; - } - } - return true; - } } diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 79e5b276ac644..0f5d9781c612c 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -1410,7 +1410,8 @@ public final class Settings { PreferredActivity pa = new PreferredActivity(parser); if (pa.mPref.getParseError() == null) { final PreferredIntentResolver resolver = editPreferredActivitiesLPw(userId); - if (resolver.shouldAddPreferredActivity(pa)) { + ArrayList pal = resolver.findFilters(pa); + if (pal == null || pal.size() == 0 || pa.mPref.mAlways) { resolver.addFilter(pa); } } else {