Loading core/java/android/app/ActivityThread.java +0 −4 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ import static com.android.internal.annotations.VisibleForTesting.Visibility.PACK import android.annotation.NonNull; import android.annotation.Nullable; import android.app.RemoteServiceException.BadForegroundServiceNotificationException; import android.app.RemoteServiceException.CannotDeliverBroadcastException; import android.app.RemoteServiceException.CannotPostForegroundServiceNotificationException; import android.app.RemoteServiceException.CrashedByAdbException; import android.app.RemoteServiceException.ForegroundServiceDidNotStartInTimeException; Loading Loading @@ -1994,9 +1993,6 @@ public final class ActivityThread extends ClientTransactionHandler case ForegroundServiceDidNotStartInTimeException.TYPE_ID: throw generateForegroundServiceDidNotStartInTimeException(message, extras); case CannotDeliverBroadcastException.TYPE_ID: throw new CannotDeliverBroadcastException(message); case CannotPostForegroundServiceNotificationException.TYPE_ID: throw new CannotPostForegroundServiceNotificationException(message); Loading core/java/android/app/RemoteServiceException.java +4 −19 Original line number Diff line number Diff line Loading @@ -70,21 +70,6 @@ public class RemoteServiceException extends AndroidRuntimeException { } } /** * Exception used to crash an app process when the system received a RemoteException * while delivering a broadcast to an app process. * * @hide */ public static class CannotDeliverBroadcastException extends RemoteServiceException { /** The type ID passed to {@link IApplicationThread#scheduleCrash}. */ public static final int TYPE_ID = 2; public CannotDeliverBroadcastException(String msg) { super(msg); } } /** * Exception used to crash an app process when the system received a RemoteException * while posting a notification of a foreground service. Loading @@ -94,7 +79,7 @@ public class RemoteServiceException extends AndroidRuntimeException { public static class CannotPostForegroundServiceNotificationException extends RemoteServiceException { /** The type ID passed to {@link IApplicationThread#scheduleCrash}. */ public static final int TYPE_ID = 3; public static final int TYPE_ID = 2; public CannotPostForegroundServiceNotificationException(String msg) { super(msg); Loading @@ -109,7 +94,7 @@ public class RemoteServiceException extends AndroidRuntimeException { */ public static class BadForegroundServiceNotificationException extends RemoteServiceException { /** The type ID passed to {@link IApplicationThread#scheduleCrash}. */ public static final int TYPE_ID = 4; public static final int TYPE_ID = 3; public BadForegroundServiceNotificationException(String msg) { super(msg); Loading @@ -125,7 +110,7 @@ public class RemoteServiceException extends AndroidRuntimeException { public static class MissingRequestPasswordComplexityPermissionException extends RemoteServiceException { /** The type ID passed to {@link IApplicationThread#scheduleCrash}. */ public static final int TYPE_ID = 5; public static final int TYPE_ID = 4; public MissingRequestPasswordComplexityPermissionException(String msg) { super(msg); Loading @@ -139,7 +124,7 @@ public class RemoteServiceException extends AndroidRuntimeException { */ public static class CrashedByAdbException extends RemoteServiceException { /** The type ID passed to {@link IApplicationThread#scheduleCrash}. */ public static final int TYPE_ID = 6; public static final int TYPE_ID = 5; public CrashedByAdbException(String msg) { super(msg); Loading services/core/java/com/android/server/am/BroadcastQueueImpl.java +4 −10 Original line number Diff line number Diff line Loading @@ -42,9 +42,9 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Activity; import android.app.ActivityManager; import android.app.ApplicationExitInfo; import android.app.BroadcastOptions; import android.app.IApplicationThread; import android.app.RemoteServiceException.CannotDeliverBroadcastException; import android.app.usage.UsageEvents.Event; import android.content.ComponentName; import android.content.ContentResolver; Loading Loading @@ -728,19 +728,14 @@ public class BroadcastQueueImpl extends BroadcastQueue { thread.scheduleRegisteredReceiver(receiver, intent, resultCode, data, extras, ordered, sticky, sendingUser, app.mState.getReportedProcState()); // TODO: Uncomment this when (b/28322359) is fixed and we aren't getting // DeadObjectException when the process isn't actually dead. //} catch (DeadObjectException ex) { // Failed to call into the process. It's dying so just let it die and move on. // throw ex; } catch (RemoteException ex) { // Failed to call into the process. It's either dying or wedged. Kill it gently. synchronized (mService) { final String msg = "Failed to schedule " + intent + " to " + receiver + " via " + app + ": " + ex; Slog.w(TAG, msg); app.scheduleCrashLocked(msg, CannotDeliverBroadcastException.TYPE_ID, /* extras=*/ null); app.killLocked("Can't deliver broadcast", ApplicationExitInfo.REASON_OTHER, true); } throw ex; } Loading Loading @@ -1393,8 +1388,7 @@ public class BroadcastQueueImpl extends BroadcastQueue { final String msg = "Failed to schedule " + r.intent + " to " + info + " via " + app + ": " + e; Slog.w(TAG, msg); app.scheduleCrashLocked(msg, CannotDeliverBroadcastException.TYPE_ID, /* extras=*/ null); app.killLocked("Can't deliver broadcast", ApplicationExitInfo.REASON_OTHER, true); } catch (RuntimeException e) { Slog.wtf(TAG, "Failed sending broadcast to " + r.curComponent + " with " + r.intent, e); Loading services/core/java/com/android/server/am/BroadcastQueueModernImpl.java +3 −4 Original line number Diff line number Diff line Loading @@ -42,9 +42,9 @@ import android.annotation.Nullable; import android.annotation.UptimeMillisLong; import android.app.Activity; import android.app.ActivityManager; import android.app.ApplicationExitInfo; import android.app.BroadcastOptions; import android.app.IApplicationThread; import android.app.RemoteServiceException.CannotDeliverBroadcastException; import android.app.UidObserver; import android.app.usage.UsageEvents.Event; import android.content.ComponentName; Loading Loading @@ -831,8 +831,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue { final String msg = "Failed to schedule " + r + " to " + receiver + " via " + app + ": " + e; logw(msg); app.scheduleCrashLocked(msg, CannotDeliverBroadcastException.TYPE_ID, null); app.setKilled(true); app.killLocked("Can't deliver broadcast", ApplicationExitInfo.REASON_OTHER, true); enqueueFinishReceiver(queue, BroadcastRecord.DELIVERY_FAILURE, "remote app"); } } else { Loading @@ -859,7 +858,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue { } catch (RemoteException e) { final String msg = "Failed to schedule result of " + r + " via " + app + ": " + e; logw(msg); app.scheduleCrashLocked(msg, CannotDeliverBroadcastException.TYPE_ID, null); app.killLocked("Can't deliver broadcast", ApplicationExitInfo.REASON_OTHER, true); } } // Clear so both local and remote references can be GC'ed Loading services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java +4 −5 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import android.app.ActivityManager; import android.app.AppOpsManager; import android.app.BroadcastOptions; import android.app.IApplicationThread; import android.app.RemoteServiceException.CannotDeliverBroadcastException; import android.app.usage.UsageEvents.Event; import android.app.usage.UsageStatsManagerInternal; import android.content.ComponentName; Loading Loading @@ -964,8 +963,8 @@ public class BroadcastQueueTest { // First broadcast should have already been dead verifyScheduleRegisteredReceiver(receiverApp, airplane); verify(receiverApp).scheduleCrashLocked(any(), eq(CannotDeliverBroadcastException.TYPE_ID), any()); // The old receiverApp should be killed gently assertTrue(receiverApp.isKilled()); // Second broadcast in new process should work fine final ProcessRecord restartedReceiverApp = mAms.getProcessRecordLocked(PACKAGE_GREEN, Loading Loading @@ -995,8 +994,8 @@ public class BroadcastQueueTest { // First broadcast should have already been dead verifyScheduleReceiver(receiverApp, airplane); verify(receiverApp).scheduleCrashLocked(any(), eq(CannotDeliverBroadcastException.TYPE_ID), any()); // The old receiverApp should be killed gently assertTrue(receiverApp.isKilled()); // Second broadcast in new process should work fine final ProcessRecord restartedReceiverApp = mAms.getProcessRecordLocked(PACKAGE_GREEN, Loading Loading
core/java/android/app/ActivityThread.java +0 −4 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ import static com.android.internal.annotations.VisibleForTesting.Visibility.PACK import android.annotation.NonNull; import android.annotation.Nullable; import android.app.RemoteServiceException.BadForegroundServiceNotificationException; import android.app.RemoteServiceException.CannotDeliverBroadcastException; import android.app.RemoteServiceException.CannotPostForegroundServiceNotificationException; import android.app.RemoteServiceException.CrashedByAdbException; import android.app.RemoteServiceException.ForegroundServiceDidNotStartInTimeException; Loading Loading @@ -1994,9 +1993,6 @@ public final class ActivityThread extends ClientTransactionHandler case ForegroundServiceDidNotStartInTimeException.TYPE_ID: throw generateForegroundServiceDidNotStartInTimeException(message, extras); case CannotDeliverBroadcastException.TYPE_ID: throw new CannotDeliverBroadcastException(message); case CannotPostForegroundServiceNotificationException.TYPE_ID: throw new CannotPostForegroundServiceNotificationException(message); Loading
core/java/android/app/RemoteServiceException.java +4 −19 Original line number Diff line number Diff line Loading @@ -70,21 +70,6 @@ public class RemoteServiceException extends AndroidRuntimeException { } } /** * Exception used to crash an app process when the system received a RemoteException * while delivering a broadcast to an app process. * * @hide */ public static class CannotDeliverBroadcastException extends RemoteServiceException { /** The type ID passed to {@link IApplicationThread#scheduleCrash}. */ public static final int TYPE_ID = 2; public CannotDeliverBroadcastException(String msg) { super(msg); } } /** * Exception used to crash an app process when the system received a RemoteException * while posting a notification of a foreground service. Loading @@ -94,7 +79,7 @@ public class RemoteServiceException extends AndroidRuntimeException { public static class CannotPostForegroundServiceNotificationException extends RemoteServiceException { /** The type ID passed to {@link IApplicationThread#scheduleCrash}. */ public static final int TYPE_ID = 3; public static final int TYPE_ID = 2; public CannotPostForegroundServiceNotificationException(String msg) { super(msg); Loading @@ -109,7 +94,7 @@ public class RemoteServiceException extends AndroidRuntimeException { */ public static class BadForegroundServiceNotificationException extends RemoteServiceException { /** The type ID passed to {@link IApplicationThread#scheduleCrash}. */ public static final int TYPE_ID = 4; public static final int TYPE_ID = 3; public BadForegroundServiceNotificationException(String msg) { super(msg); Loading @@ -125,7 +110,7 @@ public class RemoteServiceException extends AndroidRuntimeException { public static class MissingRequestPasswordComplexityPermissionException extends RemoteServiceException { /** The type ID passed to {@link IApplicationThread#scheduleCrash}. */ public static final int TYPE_ID = 5; public static final int TYPE_ID = 4; public MissingRequestPasswordComplexityPermissionException(String msg) { super(msg); Loading @@ -139,7 +124,7 @@ public class RemoteServiceException extends AndroidRuntimeException { */ public static class CrashedByAdbException extends RemoteServiceException { /** The type ID passed to {@link IApplicationThread#scheduleCrash}. */ public static final int TYPE_ID = 6; public static final int TYPE_ID = 5; public CrashedByAdbException(String msg) { super(msg); Loading
services/core/java/com/android/server/am/BroadcastQueueImpl.java +4 −10 Original line number Diff line number Diff line Loading @@ -42,9 +42,9 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Activity; import android.app.ActivityManager; import android.app.ApplicationExitInfo; import android.app.BroadcastOptions; import android.app.IApplicationThread; import android.app.RemoteServiceException.CannotDeliverBroadcastException; import android.app.usage.UsageEvents.Event; import android.content.ComponentName; import android.content.ContentResolver; Loading Loading @@ -728,19 +728,14 @@ public class BroadcastQueueImpl extends BroadcastQueue { thread.scheduleRegisteredReceiver(receiver, intent, resultCode, data, extras, ordered, sticky, sendingUser, app.mState.getReportedProcState()); // TODO: Uncomment this when (b/28322359) is fixed and we aren't getting // DeadObjectException when the process isn't actually dead. //} catch (DeadObjectException ex) { // Failed to call into the process. It's dying so just let it die and move on. // throw ex; } catch (RemoteException ex) { // Failed to call into the process. It's either dying or wedged. Kill it gently. synchronized (mService) { final String msg = "Failed to schedule " + intent + " to " + receiver + " via " + app + ": " + ex; Slog.w(TAG, msg); app.scheduleCrashLocked(msg, CannotDeliverBroadcastException.TYPE_ID, /* extras=*/ null); app.killLocked("Can't deliver broadcast", ApplicationExitInfo.REASON_OTHER, true); } throw ex; } Loading Loading @@ -1393,8 +1388,7 @@ public class BroadcastQueueImpl extends BroadcastQueue { final String msg = "Failed to schedule " + r.intent + " to " + info + " via " + app + ": " + e; Slog.w(TAG, msg); app.scheduleCrashLocked(msg, CannotDeliverBroadcastException.TYPE_ID, /* extras=*/ null); app.killLocked("Can't deliver broadcast", ApplicationExitInfo.REASON_OTHER, true); } catch (RuntimeException e) { Slog.wtf(TAG, "Failed sending broadcast to " + r.curComponent + " with " + r.intent, e); Loading
services/core/java/com/android/server/am/BroadcastQueueModernImpl.java +3 −4 Original line number Diff line number Diff line Loading @@ -42,9 +42,9 @@ import android.annotation.Nullable; import android.annotation.UptimeMillisLong; import android.app.Activity; import android.app.ActivityManager; import android.app.ApplicationExitInfo; import android.app.BroadcastOptions; import android.app.IApplicationThread; import android.app.RemoteServiceException.CannotDeliverBroadcastException; import android.app.UidObserver; import android.app.usage.UsageEvents.Event; import android.content.ComponentName; Loading Loading @@ -831,8 +831,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue { final String msg = "Failed to schedule " + r + " to " + receiver + " via " + app + ": " + e; logw(msg); app.scheduleCrashLocked(msg, CannotDeliverBroadcastException.TYPE_ID, null); app.setKilled(true); app.killLocked("Can't deliver broadcast", ApplicationExitInfo.REASON_OTHER, true); enqueueFinishReceiver(queue, BroadcastRecord.DELIVERY_FAILURE, "remote app"); } } else { Loading @@ -859,7 +858,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue { } catch (RemoteException e) { final String msg = "Failed to schedule result of " + r + " via " + app + ": " + e; logw(msg); app.scheduleCrashLocked(msg, CannotDeliverBroadcastException.TYPE_ID, null); app.killLocked("Can't deliver broadcast", ApplicationExitInfo.REASON_OTHER, true); } } // Clear so both local and remote references can be GC'ed Loading
services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java +4 −5 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import android.app.ActivityManager; import android.app.AppOpsManager; import android.app.BroadcastOptions; import android.app.IApplicationThread; import android.app.RemoteServiceException.CannotDeliverBroadcastException; import android.app.usage.UsageEvents.Event; import android.app.usage.UsageStatsManagerInternal; import android.content.ComponentName; Loading Loading @@ -964,8 +963,8 @@ public class BroadcastQueueTest { // First broadcast should have already been dead verifyScheduleRegisteredReceiver(receiverApp, airplane); verify(receiverApp).scheduleCrashLocked(any(), eq(CannotDeliverBroadcastException.TYPE_ID), any()); // The old receiverApp should be killed gently assertTrue(receiverApp.isKilled()); // Second broadcast in new process should work fine final ProcessRecord restartedReceiverApp = mAms.getProcessRecordLocked(PACKAGE_GREEN, Loading Loading @@ -995,8 +994,8 @@ public class BroadcastQueueTest { // First broadcast should have already been dead verifyScheduleReceiver(receiverApp, airplane); verify(receiverApp).scheduleCrashLocked(any(), eq(CannotDeliverBroadcastException.TYPE_ID), any()); // The old receiverApp should be killed gently assertTrue(receiverApp.isKilled()); // Second broadcast in new process should work fine final ProcessRecord restartedReceiverApp = mAms.getProcessRecordLocked(PACKAGE_GREEN, Loading