diff options
Diffstat (limited to 'core/java')
28 files changed, 648 insertions, 580 deletions
diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index 1d9e3bb4b4bb..e520b406656b 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -353,8 +353,7 @@ public class AccountManager { try { return mService.getPassword(account); } catch (RemoteException e) { - // won't ever happen - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -382,8 +381,7 @@ public class AccountManager { try { return mService.getUserData(account, key); } catch (RemoteException e) { - // won't ever happen - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -402,8 +400,7 @@ public class AccountManager { try { return mService.getAuthenticatorTypes(UserHandle.getCallingUserId()); } catch (RemoteException e) { - // will never happen - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -424,8 +421,7 @@ public class AccountManager { try { return mService.getAuthenticatorTypes(userId); } catch (RemoteException e) { - // will never happen - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -449,8 +445,7 @@ public class AccountManager { try { return mService.getAccounts(null, mContext.getOpPackageName()); } catch (RemoteException e) { - // won't ever happen - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -475,8 +470,7 @@ public class AccountManager { try { return mService.getAccountsAsUser(null, userId, mContext.getOpPackageName()); } catch (RemoteException e) { - // won't ever happen - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -493,8 +487,7 @@ public class AccountManager { try { return mService.getAccountsForPackage(packageName, uid, mContext.getOpPackageName()); } catch (RemoteException re) { - // won't ever happen - throw new RuntimeException(re); + throw re.rethrowFromSystemServer(); } } @@ -512,8 +505,7 @@ public class AccountManager { return mService.getAccountsByTypeForPackage(type, packageName, mContext.getOpPackageName()); } catch (RemoteException re) { - // won't ever happen - throw new RuntimeException(re); + throw re.rethrowFromSystemServer(); } } @@ -552,8 +544,7 @@ public class AccountManager { return mService.getAccountsAsUser(type, userHandle.getIdentifier(), mContext.getOpPackageName()); } catch (RemoteException e) { - // won't ever happen - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -572,8 +563,7 @@ public class AccountManager { try { mService.updateAppPermission(account, authTokenType, uid, value); } catch (RemoteException e) { - // won't ever happen - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -742,8 +732,7 @@ public class AccountManager { try { return mService.addAccountExplicitly(account, password, userdata); } catch (RemoteException e) { - // Can happen if there was a SecurityException was thrown. - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -768,7 +757,7 @@ public class AccountManager { try { return mService.accountAuthenticated(account); } catch (RemoteException e) { - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -836,8 +825,7 @@ public class AccountManager { try { return mService.getPreviousName(account); } catch (RemoteException e) { - // will never happen - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -1008,8 +996,7 @@ public class AccountManager { try { return mService.removeAccountExplicitly(account); } catch (RemoteException e) { - // May happen if the caller doesn't match the signature of the authenticator. - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -1036,8 +1023,7 @@ public class AccountManager { mService.invalidateAuthToken(accountType, authToken); } } catch (RemoteException e) { - // won't ever happen - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -1068,8 +1054,7 @@ public class AccountManager { try { return mService.peekAuthToken(account, authTokenType); } catch (RemoteException e) { - // won't ever happen - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -1098,8 +1083,7 @@ public class AccountManager { try { mService.setPassword(account, password); } catch (RemoteException e) { - // won't ever happen - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -1127,8 +1111,7 @@ public class AccountManager { try { mService.clearPassword(account); } catch (RemoteException e) { - // won't ever happen - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -1156,8 +1139,7 @@ public class AccountManager { try { mService.setUserData(account, key, value); } catch (RemoteException e) { - // Will happen if there is not signature match. - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -1186,8 +1168,7 @@ public class AccountManager { try { mService.setAuthToken(account, authTokenType, authToken); } catch (RemoteException e) { - // won't ever happen - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -1588,7 +1569,7 @@ public class AccountManager { mService.addSharedAccountsFromParentUser(parentUser.getIdentifier(), user.getIdentifier()); } catch (RemoteException re) { - throw new IllegalStateException(re); + throw re.rethrowFromSystemServer(); } } @@ -1641,8 +1622,7 @@ public class AccountManager { boolean val = mService.removeSharedAccountAsUser(account, user.getIdentifier()); return val; } catch (RemoteException re) { - // won't ever happen - throw new RuntimeException(re); + throw re.rethrowFromSystemServer(); } } @@ -1655,8 +1635,7 @@ public class AccountManager { try { return mService.getSharedAccountsAsUser(user.getIdentifier()); } catch (RemoteException re) { - // won't ever happen - throw new RuntimeException(re); + throw re.rethrowFromSystemServer(); } } @@ -1878,7 +1857,7 @@ public class AccountManager { try { return mService.someUserHasAccount(account); } catch (RemoteException re) { - throw new RuntimeException(re); + throw re.rethrowFromSystemServer(); } } @@ -2039,8 +2018,7 @@ public class AccountManager { try { doWork(); } catch (RemoteException e) { - // this will only happen if the system process is dead, which means - // we will be dying ourselves + throw e.rethrowFromSystemServer(); } } else { set(bundle); diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 8b010f3cdb83..4aab163597d6 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -716,7 +716,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().getFrontActivityScreenCompatMode(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -725,7 +725,7 @@ public class ActivityManager { try { ActivityManagerNative.getDefault().setFrontActivityScreenCompatMode(mode); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -734,7 +734,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().getPackageScreenCompatMode(packageName); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -743,7 +743,7 @@ public class ActivityManager { try { ActivityManagerNative.getDefault().setPackageScreenCompatMode(packageName, mode); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -752,7 +752,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().getPackageAskScreenCompat(packageName); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -761,7 +761,7 @@ public class ActivityManager { try { ActivityManagerNative.getDefault().setPackageAskScreenCompat(packageName, ask); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1046,7 +1046,7 @@ public class ActivityManager { return ActivityManagerNative.getDefault().getTaskDescriptionIcon(iconFilename, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } return null; @@ -1427,7 +1427,7 @@ public class ActivityManager { return ActivityManagerNative.getDefault().getRecentTasks(maxNum, flags, UserHandle.myUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1452,7 +1452,7 @@ public class ActivityManager { return ActivityManagerNative.getDefault().getRecentTasks(maxNum, flags, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1587,7 +1587,7 @@ public class ActivityManager { try { appTasks = ActivityManagerNative.getDefault().getAppTasks(mContext.getPackageName()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } int numAppTasks = appTasks.size(); for (int i = 0; i < numAppTasks; i++) { @@ -1612,7 +1612,7 @@ public class ActivityManager { try { mAppTaskThumbnailSize = ActivityManagerNative.getDefault().getAppTaskThumbnailSize(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } } @@ -1678,7 +1678,7 @@ public class ActivityManager { return ActivityManagerNative.getDefault().addAppTask(activity.getActivityToken(), intent, description, thumbnail); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1720,7 +1720,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().getTasks(maxNum, 0); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1736,7 +1736,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().removeTask(taskId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1895,7 +1895,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().getTaskThumbnail(id); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1904,7 +1904,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().isInHomeStack(taskId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1953,7 +1953,7 @@ public class ActivityManager { try { ActivityManagerNative.getDefault().moveTaskToFront(taskId, flags, options); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2139,7 +2139,7 @@ public class ActivityManager { return ActivityManagerNative.getDefault() .getServices(maxNum, 0); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2154,7 +2154,7 @@ public class ActivityManager { return ActivityManagerNative.getDefault() .getRunningServiceControlPanel(service); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2258,7 +2258,7 @@ public class ActivityManager { try { ActivityManagerNative.getDefault().getMemoryInfo(outInfo); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2377,7 +2377,7 @@ public class ActivityManager { return ActivityManagerNative.getDefault().clearApplicationUserData(packageName, observer, UserHandle.myUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2411,7 +2411,7 @@ public class ActivityManager { return ActivityManagerNative.getDefault().getGrantedUriPermissions(packageName, UserHandle.myUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2429,7 +2429,7 @@ public class ActivityManager { ActivityManagerNative.getDefault().clearGrantedUriPermissions(packageName, UserHandle.myUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2549,7 +2549,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().getProcessesInErrorState(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2863,7 +2863,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().getRunningExternalApplications(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2880,7 +2880,7 @@ public class ActivityManager { return ActivityManagerNative.getDefault().setProcessMemoryTrimLevel(process, userId, level); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2898,7 +2898,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().getRunningAppProcesses(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2917,7 +2917,7 @@ public class ActivityManager { mContext.getOpPackageName()); return RunningAppProcessInfo.procStateToImportance(procState); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2936,7 +2936,7 @@ public class ActivityManager { try { ActivityManagerNative.getDefault().getMyMemoryState(outState); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2955,7 +2955,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().getProcessMemoryInfo(pids); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2989,7 +2989,7 @@ public class ActivityManager { ActivityManagerNative.getDefault().killBackgroundProcesses(packageName, UserHandle.myUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3006,7 +3006,7 @@ public class ActivityManager { ActivityManagerNative.getDefault().killUid(UserHandle.getAppId(uid), UserHandle.getUserId(uid), reason); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3033,7 +3033,7 @@ public class ActivityManager { try { ActivityManagerNative.getDefault().forceStopPackage(packageName, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3052,7 +3052,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().getDeviceConfigurationInfo(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3142,7 +3142,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().isUserAMonkey(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3218,7 +3218,7 @@ public class ActivityManager { return AppGlobals.getPackageManager() .checkUidPermission(permission, uid); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3228,7 +3228,7 @@ public class ActivityManager { return AppGlobals.getPackageManager() .checkUidPermission(permission, uid); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3265,7 +3265,7 @@ public class ActivityManager { return ActivityManagerNative.getDefault().handleIncomingUser(callingPid, callingUid, userId, allowAll, requireFull, name, callerPackage); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3280,7 +3280,7 @@ public class ActivityManager { ui = ActivityManagerNative.getDefault().getCurrentUser(); return ui != null ? ui.id : 0; } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3292,7 +3292,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().switchUser(userid); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3316,7 +3316,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().isUserRunning(userId, 0); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3326,7 +3326,7 @@ public class ActivityManager { return ActivityManagerNative.getDefault().isUserRunning(userId, ActivityManager.FLAG_AND_LOCKED); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3336,7 +3336,7 @@ public class ActivityManager { return ActivityManagerNative.getDefault().isUserRunning(userId, ActivityManager.FLAG_AND_UNLOCKED); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3421,7 +3421,7 @@ public class ActivityManager { ActivityManagerNative.getDefault().setDumpHeapDebugLimit(null, 0, pssSize, mContext.getPackageName()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3440,7 +3440,7 @@ public class ActivityManager { try { ActivityManagerNative.getDefault().setDumpHeapDebugLimit(null, 0, 0, null); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3451,7 +3451,7 @@ public class ActivityManager { try { ActivityManagerNative.getDefault().startLockTaskMode(taskId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3462,7 +3462,7 @@ public class ActivityManager { try { ActivityManagerNative.getDefault().stopLockTaskMode(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3489,7 +3489,7 @@ public class ActivityManager { try { return ActivityManagerNative.getDefault().getLockTaskModeState(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3512,7 +3512,7 @@ public class ActivityManager { try { mAppTaskImpl.finishAndRemoveTask(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3525,7 +3525,7 @@ public class ActivityManager { try { return mAppTaskImpl.getTaskInfo(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3539,7 +3539,7 @@ public class ActivityManager { try { mAppTaskImpl.moveToFront(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -3581,7 +3581,7 @@ public class ActivityManager { try { mAppTaskImpl.setExcludeFromRecents(exclude); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } } diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index a38df615ceff..0020a50c48fb 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -1693,7 +1693,7 @@ public final class ActivityThread { am.activityIdle(a.token, a.createdConfig, stopProfiling); a.createdConfig = null; } catch (RemoteException ex) { - // Ignore + throw ex.rethrowFromSystemServer(); } } prev = a; @@ -1833,7 +1833,7 @@ public final class ActivityThread { | PackageManager.MATCH_DEBUG_TRIAGED_MISSING, userId); } catch (RemoteException e) { - // Ignore + throw e.rethrowFromSystemServer(); } if (ai != null) { @@ -2592,6 +2592,7 @@ public final class ActivityThread { try { displayId = ActivityManagerNative.getDefault().getActivityDisplayId(r.token); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } ContextImpl appContext = ContextImpl.createActivityContext( @@ -2697,7 +2698,7 @@ public final class ActivityThread { .finishActivity(r.token, Activity.RESULT_CANCELED, null, Activity.DONT_FINISH_TASK_WITH_ACTIVITY); } catch (RemoteException ex) { - // Ignore + throw ex.rethrowFromSystemServer(); } } } @@ -2726,6 +2727,7 @@ public final class ActivityThread { ActivityManagerNative.getDefault().reportSizeConfigurations(r.token, horizontal.copyKeys(), vertical.copyKeys(), smallest.copyKeys()); } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); } } @@ -2802,6 +2804,7 @@ public final class ActivityThread { try { mgr.reportAssistContextExtras(cmd.requestToken, data, structure, content, referrer); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -2838,6 +2841,7 @@ public final class ActivityThread { try { ActivityManagerNative.getDefault().backgroundResourcesReleased(token); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -2992,8 +2996,7 @@ public final class ActivityThread { return; } } catch (RemoteException e) { - Slog.e(TAG, "Can't reach package manager", e); - return; + throw e.rethrowFromSystemServer(); } // no longer idle; we have backup work to do @@ -3054,7 +3057,7 @@ public final class ActivityThread { try { ActivityManagerNative.getDefault().backupAgentCreated(packageName, binder); } catch (RemoteException e) { - // nothing to do. + throw e.rethrowFromSystemServer(); } } catch (Exception e) { throw new RuntimeException("Unable to create BackupAgent " @@ -3116,7 +3119,7 @@ public final class ActivityThread { ActivityManagerNative.getDefault().serviceDoneExecuting( data.token, SERVICE_DONE_EXECUTING_ANON, 0, 0); } catch (RemoteException e) { - // nothing to do. + throw e.rethrowFromSystemServer(); } } catch (Exception e) { if (!mInstrumentation.onException(service, e)) { @@ -3147,6 +3150,7 @@ public final class ActivityThread { } ensureJitEnabled(); } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); } } catch (Exception e) { if (!mInstrumentation.onException(s, e)) { @@ -3174,6 +3178,7 @@ public final class ActivityThread { data.token, SERVICE_DONE_EXECUTING_ANON, 0, 0); } } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); } } catch (Exception e) { if (!mInstrumentation.onException(s, e)) { @@ -3255,7 +3260,7 @@ public final class ActivityThread { ActivityManagerNative.getDefault().serviceDoneExecuting( data.token, SERVICE_DONE_EXECUTING_START, data.startId, res); } catch (RemoteException e) { - // nothing to do. + throw e.rethrowFromSystemServer(); } ensureJitEnabled(); } catch (Exception e) { @@ -3286,9 +3291,7 @@ public final class ActivityThread { ActivityManagerNative.getDefault().serviceDoneExecuting( token, SERVICE_DONE_EXECUTING_STOP, 0, 0); } catch (RemoteException e) { - // nothing to do. - Slog.i(TAG, "handleStopService: unable to execute serviceDoneExecuting for " - + token, e); + throw e.rethrowFromSystemServer(); } } catch (Exception e) { if (!mInstrumentation.onException(s, e)) { @@ -3398,6 +3401,7 @@ public final class ActivityThread { willBeVisible = ActivityManagerNative.getDefault().willActivityBeVisible( a.getActivityToken()); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } if (r.window == null && !a.mFinished && willBeVisible) { @@ -3481,6 +3485,7 @@ public final class ActivityThread { try { ActivityManagerNative.getDefault().activityResumed(token); } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); } } @@ -3492,6 +3497,7 @@ public final class ActivityThread { .finishActivity(token, Activity.RESULT_CANCELED, null, Activity.DONT_FINISH_TASK_WITH_ACTIVITY); } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); } } } @@ -3577,6 +3583,7 @@ public final class ActivityThread { try { ActivityManagerNative.getDefault().activityPaused(token); } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); } } mSomeActivitiesChanged = true; @@ -3670,6 +3677,7 @@ public final class ActivityThread { ActivityManagerNative.getDefault().activityStopped( activity.token, state, persistentState, description); } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); } } } @@ -3909,6 +3917,7 @@ public final class ActivityThread { try { ActivityManagerNative.getDefault().activitySlept(r.token); } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); } } else { if (r.stopped && r.activity.mVisibleFromServer) { @@ -4175,7 +4184,7 @@ public final class ActivityThread { try { ActivityManagerNative.getDefault().activityDestroyed(token); } catch (RemoteException ex) { - // If the system process has died, it's game over for everyone. + throw ex.rethrowFromSystemServer(); } } mSomeActivitiesChanged = true; @@ -4216,7 +4225,7 @@ public final class ActivityThread { try { ActivityManagerNative.getDefault().activityRelaunched(token); } catch (RemoteException e) { - e.printStackTrace(); + throw e.rethrowFromSystemServer(); } } break; @@ -4337,7 +4346,7 @@ public final class ActivityThread { try { ActivityManagerNative.getDefault().activityRelaunched(tmp.token); } catch (RemoteException e) { - // If the system process has died, it's game over for everyone. + throw e.rethrowFromSystemServer(); } } return; @@ -4363,7 +4372,7 @@ public final class ActivityThread { WindowManagerGlobal.getWindowSession().prepareToReplaceChildren(r.token); } } catch (RemoteException e) { - // If the system process has died, it's game over for everyone. + throw e.rethrowFromSystemServer(); } @@ -4408,7 +4417,7 @@ public final class ActivityThread { r.window.reportActivityRelaunched(); } } catch (RemoteException e) { - // If the system process has died, it's game over for everyone. + throw e.rethrowFromSystemServer(); } } } @@ -4688,6 +4697,7 @@ public final class ActivityThread { try { ActivityManagerNative.getDefault().dumpHeapFinished(dhd.path); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -4770,7 +4780,7 @@ public final class ActivityThread { RenderScriptCacheDir.setupDiskCache(cacheDir); } } catch (RemoteException e) { - // Ignore + throw e.rethrowFromSystemServer(); } } @@ -4962,6 +4972,7 @@ public final class ActivityThread { try { mgr.showWaitingForDebugger(mAppThread, true); } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); } Debug.waitForDebugger(); @@ -4969,6 +4980,7 @@ public final class ActivityThread { try { mgr.showWaitingForDebugger(mAppThread, false); } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); } } else { @@ -4996,7 +5008,9 @@ public final class ActivityThread { try { final ProxyInfo proxyInfo = service.getProxyForNetwork(null); Proxy.setHttpProxySystemProperty(proxyInfo); - } catch (RemoteException e) {} + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } // Instrumentation info affects the class loader, so load it before @@ -5160,6 +5174,7 @@ public final class ActivityThread { try { am.finishInstrumentation(mAppThread, resultCode, results); } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); } } @@ -5189,6 +5204,7 @@ public final class ActivityThread { ActivityManagerNative.getDefault().publishContentProviders( getApplicationThread(), results); } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); } } @@ -5210,6 +5226,7 @@ public final class ActivityThread { holder = ActivityManagerNative.getDefault().getContentProvider( getApplicationThread(), auth, userId, stable); } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); } if (holder == null) { Slog.e(TAG, "Failed to find provider info for " + auth); @@ -5497,6 +5514,7 @@ public final class ActivityThread { ActivityManagerNative.getDefault() .appNotRespondingViaProvider(prc.holder.connection); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } } @@ -5676,7 +5694,7 @@ public final class ActivityThread { try { mgr.attachApplication(mAppThread); } catch (RemoteException ex) { - // Ignore + throw ex.rethrowFromSystemServer(); } // Watch for getting close to heap limit. BinderInternal.addGcWatcher(new Runnable() { @@ -5695,6 +5713,7 @@ public final class ActivityThread { try { mgr.releaseSomeActivities(mAppThread); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } } diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 93452fda1e1a..9d1dfdd24a88 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -1236,8 +1236,8 @@ public class AppOpsManager { try { return mService.getPackagesForOps(ops); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return null; } /** @@ -1252,8 +1252,8 @@ public class AppOpsManager { try { return mService.getOpsForPackage(uid, packageName, ops); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return null; } /** @hide */ @@ -1261,6 +1261,7 @@ public class AppOpsManager { try { mService.setUidMode(code, uid, mode); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -1269,6 +1270,7 @@ public class AppOpsManager { try { mService.setUserRestriction(code, restricted, token, mContext.getUserId()); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -1277,6 +1279,7 @@ public class AppOpsManager { try { mService.setMode(code, uid, packageName, mode); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -1297,6 +1300,7 @@ public class AppOpsManager { final int uid = Binder.getCallingUid(); mService.setAudioRestriction(code, usage, uid, mode, exceptionPackages); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -1305,6 +1309,7 @@ public class AppOpsManager { try { mService.resetAllModes(UserHandle.myUserId(), null); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -1361,6 +1366,7 @@ public class AppOpsManager { try { mService.startWatchingMode(op, packageName, cb); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } } @@ -1376,6 +1382,7 @@ public class AppOpsManager { try { mService.stopWatchingMode(cb); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } } @@ -1540,8 +1547,8 @@ public class AppOpsManager { } return mode; } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return MODE_IGNORED; } /** @@ -1553,8 +1560,8 @@ public class AppOpsManager { try { return mService.checkOperation(op, uid, packageName); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return MODE_ERRORED; } /** @@ -1570,7 +1577,7 @@ public class AppOpsManager { "Package " + packageName + " does not belong to " + uid); } } catch (RemoteException e) { - throw new SecurityException("Unable to verify package ownership", e); + throw e.rethrowFromSystemServer(); } } @@ -1586,8 +1593,8 @@ public class AppOpsManager { } return mode; } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return MODE_IGNORED; } /** @@ -1599,8 +1606,8 @@ public class AppOpsManager { try { return mService.checkAudioOperation(op, stream, uid, packageName); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return MODE_ERRORED; } /** @@ -1626,8 +1633,8 @@ public class AppOpsManager { } return mode; } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return MODE_IGNORED; } /** @@ -1669,8 +1676,8 @@ public class AppOpsManager { return mService.noteProxyOperation(op, mContext.getOpPackageName(), Binder.getCallingUid(), proxiedPackageName); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return MODE_ERRORED; } /** @@ -1682,8 +1689,8 @@ public class AppOpsManager { try { return mService.noteOperation(op, uid, packageName); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return MODE_ERRORED; } /** @hide */ @@ -1700,7 +1707,7 @@ public class AppOpsManager { try { sToken = service.getToken(new Binder()); } catch (RemoteException e) { - // System is dead, whatevs. + throw e.rethrowFromSystemServer(); } return sToken; } @@ -1731,8 +1738,8 @@ public class AppOpsManager { } return mode; } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return MODE_IGNORED; } /** @@ -1744,8 +1751,8 @@ public class AppOpsManager { try { return mService.startOperation(getToken(mService), op, uid, packageName); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return MODE_ERRORED; } /** @hide */ @@ -1764,6 +1771,7 @@ public class AppOpsManager { try { mService.finishOperation(getToken(mService), op, uid, packageName); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index 6d716cc869eb..4d466d34a79c 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -143,7 +143,7 @@ public class ApplicationPackageManager extends PackageManager { return pi; } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } throw new NameNotFoundException(packageName); @@ -154,7 +154,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.currentToCanonicalPackageNames(names); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -163,7 +163,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.canonicalToCurrentPackageNames(names); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -227,7 +227,7 @@ public class ApplicationPackageManager extends PackageManager { return gids; } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } throw new NameNotFoundException(packageName); @@ -252,7 +252,7 @@ public class ApplicationPackageManager extends PackageManager { return uid; } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } throw new NameNotFoundException(packageName); @@ -267,7 +267,7 @@ public class ApplicationPackageManager extends PackageManager { return pi; } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } throw new NameNotFoundException(name); @@ -282,7 +282,7 @@ public class ApplicationPackageManager extends PackageManager { return pi; } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } throw new NameNotFoundException(group); @@ -297,7 +297,7 @@ public class ApplicationPackageManager extends PackageManager { return pgi; } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } throw new NameNotFoundException(name); @@ -308,7 +308,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getAllPermissionGroups(flags); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -330,7 +330,7 @@ public class ApplicationPackageManager extends PackageManager { return maybeAdjustApplicationInfo(ai); } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } throw new NameNotFoundException(packageName); @@ -370,7 +370,7 @@ public class ApplicationPackageManager extends PackageManager { return ai; } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } throw new NameNotFoundException(className.toString()); @@ -385,7 +385,7 @@ public class ApplicationPackageManager extends PackageManager { return ai; } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } throw new NameNotFoundException(className.toString()); @@ -400,7 +400,7 @@ public class ApplicationPackageManager extends PackageManager { return si; } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } throw new NameNotFoundException(className.toString()); @@ -415,7 +415,7 @@ public class ApplicationPackageManager extends PackageManager { return pi; } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } throw new NameNotFoundException(className.toString()); @@ -426,7 +426,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getSystemSharedLibraryNames(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -436,7 +436,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getServicesSystemSharedLibraryPackageName(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -445,7 +445,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getSystemAvailableFeatures(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -459,7 +459,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.hasSystemFeature(name, version); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -468,7 +468,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.checkPermission(permName, pkgName, mContext.getUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -477,7 +477,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.isPermissionRevokedByPolicy(permName, pkgName, mContext.getUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -491,7 +491,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPermissionsControllerPackageName = mPM.getPermissionControllerPackageName(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } return mPermissionsControllerPackageName; @@ -503,7 +503,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.addPermission(info); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -512,7 +512,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.addPermissionAsync(info); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -521,7 +521,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.removePermission(name); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -531,7 +531,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.grantRuntimePermission(packageName, permissionName, user.getIdentifier()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -541,7 +541,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.revokeRuntimePermission(packageName, permissionName, user.getIdentifier()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -550,7 +550,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getPermissionFlags(permissionName, packageName, user.getIdentifier()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -561,7 +561,7 @@ public class ApplicationPackageManager extends PackageManager { mPM.updatePermissionFlags(permissionName, packageName, flagMask, flagValues, user.getIdentifier()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -571,7 +571,7 @@ public class ApplicationPackageManager extends PackageManager { return mPM.shouldShowRequestPermissionRationale(permission, mContext.getPackageName(), mContext.getUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -580,7 +580,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.checkSignatures(pkg1, pkg2); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -589,7 +589,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.checkUidSignatures(uid1, uid2); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -598,7 +598,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getPackagesForUid(uid); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -607,7 +607,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getNameForUid(uid); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -620,7 +620,7 @@ public class ApplicationPackageManager extends PackageManager { return uid; } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } throw new NameNotFoundException("No shared userid for user:"+sharedUserName); } @@ -638,7 +638,7 @@ public class ApplicationPackageManager extends PackageManager { ParceledListSlice<PackageInfo> slice = mPM.getInstalledPackages(flags, userId); return slice.getList(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -652,7 +652,7 @@ public class ApplicationPackageManager extends PackageManager { permissions, flags, userId); return slice.getList(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -664,7 +664,7 @@ public class ApplicationPackageManager extends PackageManager { ParceledListSlice<ApplicationInfo> slice = mPM.getInstalledApplications(flags, userId); return slice.getList(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -680,7 +680,7 @@ public class ApplicationPackageManager extends PackageManager { } return Collections.emptyList(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -695,7 +695,7 @@ public class ApplicationPackageManager extends PackageManager { } return null; } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -705,7 +705,7 @@ public class ApplicationPackageManager extends PackageManager { return mPM.isEphemeralApplication( mContext.getPackageName(), mContext.getUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -727,7 +727,7 @@ public class ApplicationPackageManager extends PackageManager { return EmptyArray.BYTE; } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -737,7 +737,7 @@ public class ApplicationPackageManager extends PackageManager { return mPM.setEphemeralApplicationCookie( mContext.getPackageName(), cookie, mContext.getUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -755,7 +755,7 @@ public class ApplicationPackageManager extends PackageManager { flags, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -776,7 +776,7 @@ public class ApplicationPackageManager extends PackageManager { flags, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -808,7 +808,7 @@ public class ApplicationPackageManager extends PackageManager { specificTypes, intent, intent.resolveTypeIfNeeded(resolver), flags, mContext.getUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -824,7 +824,7 @@ public class ApplicationPackageManager extends PackageManager { flags, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -842,7 +842,7 @@ public class ApplicationPackageManager extends PackageManager { flags, mContext.getUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -855,7 +855,7 @@ public class ApplicationPackageManager extends PackageManager { flags, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -871,7 +871,7 @@ public class ApplicationPackageManager extends PackageManager { return mPM.queryIntentContentProviders(intent, intent.resolveTypeIfNeeded(mContext.getContentResolver()), flags, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -891,7 +891,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.resolveContentProvider(name, flags, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -903,7 +903,7 @@ public class ApplicationPackageManager extends PackageManager { = mPM.queryContentProviders(processName, uid, flags); return slice != null ? slice.getList() : null; } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -918,7 +918,7 @@ public class ApplicationPackageManager extends PackageManager { return ii; } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } throw new NameNotFoundException(className.toString()); @@ -930,7 +930,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.queryInstrumentation(targetPackage, flags); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1197,7 +1197,7 @@ public class ApplicationPackageManager extends PackageManager { return getResourcesForApplication(ai); } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } throw new NameNotFoundException("Package " + appPackageName + " doesn't exist"); } @@ -1212,7 +1212,7 @@ public class ApplicationPackageManager extends PackageManager { } return mCachedSafeMode != 0; } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1228,7 +1228,7 @@ public class ApplicationPackageManager extends PackageManager { mPM.addOnPermissionsChangeListener(delegate); mPermissionListeners.put(listener, delegate); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } } @@ -1242,7 +1242,7 @@ public class ApplicationPackageManager extends PackageManager { mPM.removeOnPermissionsChangeListener(delegate); mPermissionListeners.remove(listener); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } } @@ -1544,7 +1544,7 @@ public class ApplicationPackageManager extends PackageManager { mPM.installPackageAsUser(originPath, observer.getBinder(), flags, installerPackageName, verificationParams, null, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1563,7 +1563,7 @@ public class ApplicationPackageManager extends PackageManager { } return res; } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1572,7 +1572,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.verifyPendingInstall(id, response); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1582,7 +1582,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.extendVerificationTimeout(id, verificationCodeAtTimeout, millisecondsToDelay); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1591,7 +1591,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.verifyIntentFilter(id, verificationCode, outFailedDomains); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1600,7 +1600,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getIntentVerificationStatus(packageName, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1609,7 +1609,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.updateIntentVerificationStatus(packageName, status, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1618,7 +1618,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getIntentFilterVerifications(packageName); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1627,7 +1627,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getAllIntentFilters(packageName); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1636,7 +1636,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getDefaultBrowserPackageName(userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1645,7 +1645,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.setDefaultBrowserPackageName(packageName, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1655,7 +1655,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.setInstallerPackageName(targetPackage, installerPackageName); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1664,7 +1664,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getInstallerPackageName(packageName); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1673,7 +1673,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getMoveStatus(moveId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1685,7 +1685,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.registerMoveCallback(delegate); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } mDelegates.add(delegate); } @@ -1700,7 +1700,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.unregisterMoveCallback(delegate); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } i.remove(); } @@ -1722,7 +1722,7 @@ public class ApplicationPackageManager extends PackageManager { return mPM.movePackage(packageName, volumeUuid); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1788,7 +1788,7 @@ public class ApplicationPackageManager extends PackageManager { return false; } } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } // Otherwise we can move to any private volume @@ -1809,7 +1809,7 @@ public class ApplicationPackageManager extends PackageManager { return mPM.movePrimaryStorage(volumeUuid); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1866,7 +1866,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.deletePackageAsUser(packageName, observer, userId, flags); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1876,7 +1876,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.clearApplicationUserData(packageName, observer, mContext.getUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @Override @@ -1885,7 +1885,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.deleteApplicationCacheFiles(packageName, observer); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1895,7 +1895,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.freeStorageAndNotify(volumeUuid, idealStorageSize, observer); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1904,7 +1904,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.freeStorage(volumeUuid, freeStorageSize, pi); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1914,7 +1914,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.setPackagesSuspendedAsUser(packageNames, suspended, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1923,7 +1923,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.isPackageSuspendedForUser(packageName, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1933,7 +1933,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.getPackageSizeInfo(packageName, userHandle, observer); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @Override @@ -1941,7 +1941,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.addPackageToPreferred(packageName); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1950,7 +1950,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.removePackageFromPreferred(packageName); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1959,7 +1959,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getPreferredPackages(flags); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1969,7 +1969,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.addPreferredActivity(filter, match, set, activity, mContext.getUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1979,7 +1979,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.addPreferredActivity(filter, match, set, activity, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1989,7 +1989,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.replacePreferredActivity(filter, match, set, activity, mContext.getUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2000,7 +2000,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.replacePreferredActivity(filter, match, set, activity, userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2009,7 +2009,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.clearPackagePreferredActivities(packageName); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2019,7 +2019,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getPreferredActivities(outFilters, outActivities, packageName); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2028,7 +2028,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getHomeActivities(outActivities); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2038,7 +2038,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.setComponentEnabledSetting(componentName, newState, flags, mContext.getUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2047,7 +2047,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getComponentEnabledSetting(componentName, mContext.getUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2058,7 +2058,7 @@ public class ApplicationPackageManager extends PackageManager { mPM.setApplicationEnabledSetting(packageName, newState, flags, mContext.getUserId(), mContext.getOpPackageName()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2067,7 +2067,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getApplicationEnabledSetting(packageName, mContext.getUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2078,7 +2078,7 @@ public class ApplicationPackageManager extends PackageManager { return mPM.setApplicationHiddenSettingAsUser(packageName, hidden, user.getIdentifier()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2087,7 +2087,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getApplicationHiddenSettingAsUser(packageName, user.getIdentifier()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2099,7 +2099,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getKeySetByAlias(packageName, alias); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2110,7 +2110,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getSigningKeySet(packageName); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2122,7 +2122,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.isPackageSignedByKeySet(packageName, ks); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2134,7 +2134,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.isPackageSignedByKeySetExactly(packageName, ks); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2146,7 +2146,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.getVerifierDeviceIdentity(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2158,7 +2158,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.isUpgrade(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2170,7 +2170,7 @@ public class ApplicationPackageManager extends PackageManager { mInstaller = new PackageInstaller(mContext, this, mPM.getPackageInstaller(), mContext.getPackageName(), mContext.getUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } return mInstaller; @@ -2182,7 +2182,7 @@ public class ApplicationPackageManager extends PackageManager { try { return mPM.isPackageAvailable(packageName, mContext.getUserId()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2196,7 +2196,7 @@ public class ApplicationPackageManager extends PackageManager { mPM.addCrossProfileIntentFilter(filter, mContext.getOpPackageName(), sourceUserId, targetUserId, flags); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -2208,7 +2208,7 @@ public class ApplicationPackageManager extends PackageManager { try { mPM.clearCrossProfileIntentFilters(sourceUserId, mContext.getOpPackageName()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 8884949f361c..47eec8bbfbfd 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -813,7 +813,7 @@ class ContextImpl extends Context { null, null, 0, Intent.FLAG_ACTIVITY_NEW_TASK, null, options, user.getIdentifier()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -878,7 +878,7 @@ class ContextImpl extends Context { } Instrumentation.checkStartActivityResult(result, null); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -893,7 +893,7 @@ class ContextImpl extends Context { Activity.RESULT_OK, null, null, null, AppOpsManager.OP_NONE, null, false, false, getUserId()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -910,7 +910,7 @@ class ContextImpl extends Context { Activity.RESULT_OK, null, null, receiverPermissions, AppOpsManager.OP_NONE, null, false, false, getUserId()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -925,7 +925,7 @@ class ContextImpl extends Context { Activity.RESULT_OK, null, null, receiverPermissions, AppOpsManager.OP_NONE, null, false, false, getUserId()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -942,7 +942,7 @@ class ContextImpl extends Context { Activity.RESULT_OK, null, null, receiverPermissions, AppOpsManager.OP_NONE, options, false, false, getUserId()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -959,7 +959,7 @@ class ContextImpl extends Context { Activity.RESULT_OK, null, null, receiverPermissions, appOp, null, false, false, getUserId()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -976,7 +976,7 @@ class ContextImpl extends Context { Activity.RESULT_OK, null, null, receiverPermissions, AppOpsManager.OP_NONE, null, true, false, getUserId()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1039,7 +1039,7 @@ class ContextImpl extends Context { initialCode, initialData, initialExtras, receiverPermissions, appOp, options, true, false, getUserId()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1052,7 +1052,7 @@ class ContextImpl extends Context { intent, resolvedType, null, Activity.RESULT_OK, null, null, null, AppOpsManager.OP_NONE, null, false, false, user.getIdentifier()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1075,7 +1075,7 @@ class ContextImpl extends Context { Activity.RESULT_OK, null, null, receiverPermissions, appOp, null, false, false, user.getIdentifier()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1126,7 +1126,7 @@ class ContextImpl extends Context { initialCode, initialData, initialExtras, receiverPermissions, appOp, options, true, false, user.getIdentifier()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1142,7 +1142,7 @@ class ContextImpl extends Context { Activity.RESULT_OK, null, null, null, AppOpsManager.OP_NONE, null, false, true, getUserId()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1178,7 +1178,7 @@ class ContextImpl extends Context { initialCode, initialData, initialExtras, null, AppOpsManager.OP_NONE, null, true, true, getUserId()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1195,7 +1195,7 @@ class ContextImpl extends Context { ActivityManagerNative.getDefault().unbroadcastIntent( mMainThread.getApplicationThread(), intent, getUserId()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1210,7 +1210,7 @@ class ContextImpl extends Context { Activity.RESULT_OK, null, null, null, AppOpsManager.OP_NONE, null, false, true, user.getIdentifier()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1225,7 +1225,7 @@ class ContextImpl extends Context { Activity.RESULT_OK, null, null, null, AppOpsManager.OP_NONE, options, false, true, user.getIdentifier()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1260,7 +1260,7 @@ class ContextImpl extends Context { initialCode, initialData, initialExtras, null, AppOpsManager.OP_NONE, null, true, true, user.getIdentifier()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1277,7 +1277,7 @@ class ContextImpl extends Context { ActivityManagerNative.getDefault().unbroadcastIntent( mMainThread.getApplicationThread(), intent, user.getIdentifier()); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1325,7 +1325,7 @@ class ContextImpl extends Context { mMainThread.getApplicationThread(), mBasePackageName, rd, filter, broadcastPermission, userId); } catch (RemoteException e) { - return null; + throw e.rethrowFromSystemServer(); } } @@ -1337,6 +1337,7 @@ class ContextImpl extends Context { try { ActivityManagerNative.getDefault().unregisterReceiver(rd); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } else { throw new RuntimeException("Not supported in system context"); @@ -1393,7 +1394,7 @@ class ContextImpl extends Context { } return cn; } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1415,7 +1416,7 @@ class ContextImpl extends Context { } return res != 0; } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1474,7 +1475,7 @@ class ContextImpl extends Context { } return res != 0; } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1489,6 +1490,7 @@ class ContextImpl extends Context { try { ActivityManagerNative.getDefault().unbindService(sd); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } else { throw new RuntimeException("Not supported in system context"); @@ -1506,7 +1508,7 @@ class ContextImpl extends Context { className, profileFile, 0, arguments, null, null, getUserId(), null /* ABI override */); } catch (RemoteException e) { - throw new RuntimeException("Failure from system", e); + throw e.rethrowFromSystemServer(); } } @@ -1530,7 +1532,7 @@ class ContextImpl extends Context { return ActivityManagerNative.getDefault().checkPermission( permission, pid, uid); } catch (RemoteException e) { - return PackageManager.PERMISSION_DENIED; + throw e.rethrowFromSystemServer(); } } @@ -1545,7 +1547,7 @@ class ContextImpl extends Context { return ActivityManagerNative.getDefault().checkPermissionWithToken( permission, pid, uid, callerToken); } catch (RemoteException e) { - return PackageManager.PERMISSION_DENIED; + throw e.rethrowFromSystemServer(); } } @@ -1631,6 +1633,7 @@ class ContextImpl extends Context { mMainThread.getApplicationThread(), toPackage, ContentProvider.getUriWithoutUserId(uri), modeFlags, resolveUserId(uri)); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -1641,6 +1644,7 @@ class ContextImpl extends Context { mMainThread.getApplicationThread(), ContentProvider.getUriWithoutUserId(uri), modeFlags, resolveUserId(uri)); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -1651,7 +1655,7 @@ class ContextImpl extends Context { ContentProvider.getUriWithoutUserId(uri), pid, uid, modeFlags, resolveUserId(uri), null); } catch (RemoteException e) { - return PackageManager.PERMISSION_DENIED; + throw e.rethrowFromSystemServer(); } } @@ -1663,7 +1667,7 @@ class ContextImpl extends Context { ContentProvider.getUriWithoutUserId(uri), pid, uid, modeFlags, resolveUserId(uri), callerToken); } catch (RemoteException e) { - return PackageManager.PERMISSION_DENIED; + throw e.rethrowFromSystemServer(); } } diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java index 838b8cbc0c33..ae433eb5be02 100644 --- a/core/java/android/app/LoadedApk.java +++ b/core/java/android/app/LoadedApk.java @@ -252,7 +252,7 @@ public final class LoadedApk { ai = ActivityThread.getPackageManager().getApplicationInfo(packageName, PackageManager.GET_SHARED_LIBRARY_FILES, UserHandle.myUserId()); } catch (RemoteException e) { - throw new AssertionError(e); + throw e.rethrowFromSystemServer(); } if (ai == null) { @@ -285,7 +285,7 @@ public final class LoadedApk { try { ActivityThread.getPackageManager().notifyPackageUse(mPackageName); } catch (RemoteException re) { - // Ignored. + throw re.rethrowFromSystemServer(); } } @@ -297,6 +297,7 @@ public final class LoadedApk { try { ActivityManagerNative.getDefault().addPackageDependency(mPackageName); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -452,8 +453,7 @@ public final class LoadedApk { pi = pm.getPackageInfo(mPackageName, PackageManager.MATCH_DEBUG_TRIAGED_MISSING, UserHandle.myUserId()); } catch (RemoteException e) { - throw new IllegalStateException("Unable to get package info for " - + mPackageName + "; is system dying?", e); + throw e.rethrowFromSystemServer(); } if (pi == null) { throw new IllegalStateException("Unable to get package info for " @@ -710,7 +710,7 @@ public final class LoadedApk { ActivityManagerNative.getDefault().unregisterReceiver( rd.getIIntentReceiver()); } catch (RemoteException e) { - // system crashed, nothing we can do + throw e.rethrowFromSystemServer(); } } } @@ -736,7 +736,7 @@ public final class LoadedApk { ActivityManagerNative.getDefault().unbindService( sd.getIServiceConnection()); } catch (RemoteException e) { - // system crashed, nothing we can do + throw e.rethrowFromSystemServer(); } sd.doForget(); } @@ -861,7 +861,7 @@ public final class LoadedApk { } mgr.finishReceiver(this, resultCode, data, extras, false, intent.getFlags()); } catch (RemoteException e) { - Slog.w(ActivityThread.TAG, "Couldn't finish broadcast to unregistered receiver"); + throw e.rethrowFromSystemServer(); } } } diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java index eb928af05b1d..344315d5266f 100644 --- a/core/java/android/app/NotificationManager.java +++ b/core/java/android/app/NotificationManager.java @@ -264,6 +264,7 @@ public class NotificationManager Log.w(TAG, "notify: id corrupted: sent " + id + ", got back " + idOut[0]); } } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -304,6 +305,7 @@ public class NotificationManager try { service.cancelNotificationWithTag(pkg, tag, id, user.getIdentifier()); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -319,6 +321,7 @@ public class NotificationManager try { service.cancelAllNotifications(pkg, UserHandle.myUserId()); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -330,7 +333,7 @@ public class NotificationManager try { return service.getEffectsSuppressor(); } catch (RemoteException e) { - return null; + throw e.rethrowFromSystemServer(); } } @@ -342,7 +345,7 @@ public class NotificationManager try { return service.matchesCallFilter(extras); } catch (RemoteException e) { - return false; + throw e.rethrowFromSystemServer(); } } @@ -354,7 +357,7 @@ public class NotificationManager try { return service.isSystemConditionProviderEnabled(path); } catch (RemoteException e) { - return false; + throw e.rethrowFromSystemServer(); } } @@ -366,6 +369,7 @@ public class NotificationManager try { service.setZenMode(mode, conditionId, reason); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -377,8 +381,8 @@ public class NotificationManager try { return service.getZenMode(); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return Global.ZEN_MODE_OFF; } /** @@ -389,8 +393,8 @@ public class NotificationManager try { return service.getZenModeConfig(); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return null; } /** @@ -401,8 +405,8 @@ public class NotificationManager try { return service.getRuleInstanceCount(owner); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return 0; } /** @@ -417,8 +421,8 @@ public class NotificationManager try { return service.getAutomaticZenRules(); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return null; } /** @@ -437,8 +441,8 @@ public class NotificationManager try { return service.getAutomaticZenRule(id); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return null; } /** @@ -457,8 +461,8 @@ public class NotificationManager try { return service.addAutomaticZenRule(automaticZenRule); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return null; } /** @@ -478,8 +482,8 @@ public class NotificationManager try { return service.updateAutomaticZenRule(automaticZenRule); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return false; } /** @@ -499,8 +503,8 @@ public class NotificationManager try { return service.removeAutomaticZenRule(id); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return false; } /** @@ -513,8 +517,8 @@ public class NotificationManager try { return service.removeAutomaticZenRules(packageName); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return false; } /** @@ -525,8 +529,8 @@ public class NotificationManager try { return service.getPackageImportance(mContext.getPackageName()); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return NotificationListenerService.Ranking.IMPORTANCE_UNSPECIFIED; } /** @@ -537,8 +541,8 @@ public class NotificationManager try { return service.areNotificationsEnabled(mContext.getPackageName()); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return false; } /** @@ -560,8 +564,8 @@ public class NotificationManager try { return service.isNotificationPolicyAccessGranted(mContext.getOpPackageName()); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return false; } /** @hide */ @@ -570,8 +574,8 @@ public class NotificationManager try { return service.isNotificationPolicyAccessGrantedForPackage(pkg); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return false; } /** @@ -586,8 +590,8 @@ public class NotificationManager try { return service.getNotificationPolicy(mContext.getOpPackageName()); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return null; } /** @@ -605,6 +609,7 @@ public class NotificationManager try { service.setNotificationPolicy(mContext.getOpPackageName(), policy); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -614,6 +619,7 @@ public class NotificationManager try { service.setNotificationPolicyAccessGranted(pkg, granted); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -630,8 +636,9 @@ public class NotificationManager return rt; } } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return new ArraySet<String>(); + return new ArraySet<>(); } private Context mContext; diff --git a/core/java/android/app/trust/TrustManager.java b/core/java/android/app/trust/TrustManager.java index 999d8260cad3..0f5cb6f4b8e1 100644 --- a/core/java/android/app/trust/TrustManager.java +++ b/core/java/android/app/trust/TrustManager.java @@ -16,8 +16,6 @@ package android.app.trust; -import com.android.internal.widget.LockPatternUtils; - import android.Manifest; import android.annotation.RequiresPermission; import android.os.Handler; @@ -26,7 +24,8 @@ import android.os.Looper; import android.os.Message; import android.os.RemoteException; import android.util.ArrayMap; -import android.util.Log; + +import com.android.internal.widget.LockPatternUtils; /** * See {@link com.android.server.trust.TrustManagerService} @@ -62,7 +61,7 @@ public class TrustManager { try { mService.setDeviceLockedForUser(userId, locked); } catch (RemoteException e) { - onError(e); + throw e.rethrowFromSystemServer(); } } @@ -77,7 +76,7 @@ public class TrustManager { try { mService.reportUnlockAttempt(successful, userId); } catch (RemoteException e) { - onError(e); + throw e.rethrowFromSystemServer(); } } @@ -90,7 +89,7 @@ public class TrustManager { try { mService.reportEnabledTrustAgentsChanged(userId); } catch (RemoteException e) { - onError(e); + throw e.rethrowFromSystemServer(); } } @@ -103,7 +102,7 @@ public class TrustManager { try { mService.reportKeyguardShowingChanged(); } catch (RemoteException e) { - onError(e); + throw e.rethrowFromSystemServer(); } } @@ -134,7 +133,7 @@ public class TrustManager { mService.registerTrustListener(iTrustListener); mTrustListeners.put(trustListener, iTrustListener); } catch (RemoteException e) { - onError(e); + throw e.rethrowFromSystemServer(); } } @@ -149,7 +148,7 @@ public class TrustManager { try { mService.unregisterTrustListener(iTrustListener); } catch (RemoteException e) { - onError(e); + throw e.rethrowFromSystemServer(); } } } @@ -163,16 +162,10 @@ public class TrustManager { try { return mService.isTrustUsuallyManaged(userId); } catch (RemoteException e) { - return false; + throw e.rethrowFromSystemServer(); } } - - - private void onError(Exception e) { - Log.e(TAG, "Error while calling TrustManagerService", e); - } - private final Handler mHandler = new Handler(Looper.getMainLooper()) { @Override public void handleMessage(Message msg) { diff --git a/core/java/android/appwidget/AppWidgetManager.java b/core/java/android/appwidget/AppWidgetManager.java index 278c9d6f8699..9f654c25e2c5 100644 --- a/core/java/android/appwidget/AppWidgetManager.java +++ b/core/java/android/appwidget/AppWidgetManager.java @@ -472,9 +472,8 @@ public class AppWidgetManager { } try { mService.updateAppWidgetIds(mPackageName, appWidgetIds, views); - } - catch (RemoteException e) { - throw new RuntimeException("system server dead?", e); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -495,9 +494,8 @@ public class AppWidgetManager { } try { mService.updateAppWidgetOptions(mPackageName, appWidgetId, options); - } - catch (RemoteException e) { - throw new RuntimeException("system server dead?", e); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -518,9 +516,8 @@ public class AppWidgetManager { } try { return mService.getAppWidgetOptions(mPackageName, appWidgetId); - } - catch (RemoteException e) { - throw new RuntimeException("system server dead?", e); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -581,7 +578,7 @@ public class AppWidgetManager { try { mService.partiallyUpdateAppWidgetIds(mPackageName, appWidgetIds, views); } catch (RemoteException e) { - throw new RuntimeException("system server dead?", e); + throw e.rethrowFromSystemServer(); } } @@ -635,9 +632,8 @@ public class AppWidgetManager { } try { mService.updateAppWidgetProvider(provider, views); - } - catch (RemoteException e) { - throw new RuntimeException("system server dead?", e); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -654,9 +650,8 @@ public class AppWidgetManager { } try { mService.notifyAppWidgetViewDataChanged(mPackageName, appWidgetIds, viewId); - } - catch (RemoteException e) { - throw new RuntimeException("system server dead?", e); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -764,9 +759,8 @@ public class AppWidgetManager { convertSizesToPixels(info); } return providers.getList(); - } - catch (RemoteException e) { - throw new RuntimeException("system server dead?", e); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -787,9 +781,8 @@ public class AppWidgetManager { convertSizesToPixels(info); } return info; - } - catch (RemoteException e) { - throw new RuntimeException("system server dead?", e); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -918,9 +911,8 @@ public class AppWidgetManager { } try { return mService.hasBindAppWidgetPermission(packageName, userId); - } - catch (RemoteException e) { - throw new RuntimeException("system server dead?", e); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -939,9 +931,8 @@ public class AppWidgetManager { } try { return mService.hasBindAppWidgetPermission(packageName, UserHandle.myUserId()); - } - catch (RemoteException e) { - throw new RuntimeException("system server dead?", e); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -979,9 +970,8 @@ public class AppWidgetManager { } try { mService.setBindAppWidgetPermission(packageName, userId, permission); - } - catch (RemoteException e) { - throw new RuntimeException("system server dead?", e); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -1005,9 +995,8 @@ public class AppWidgetManager { } try { mService.bindRemoteViewsService(packageName, appWidgetId, intent, connection); - } - catch (RemoteException e) { - throw new RuntimeException("system server dead?", e); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -1029,9 +1018,8 @@ public class AppWidgetManager { } try { mService.unbindRemoteViewsService(packageName, appWidgetId, intent); - } - catch (RemoteException e) { - throw new RuntimeException("system server dead?", e); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -1048,9 +1036,8 @@ public class AppWidgetManager { } try { return mService.getAppWidgetIds(provider); - } - catch (RemoteException e) { - throw new RuntimeException("system server dead?", e); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -1063,8 +1050,8 @@ public class AppWidgetManager { } try { return mService.isBoundWidgetPackage(packageName, userId); - } catch (RemoteException re) { - throw new RuntimeException("system server dead?", re); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -1076,9 +1063,8 @@ public class AppWidgetManager { try { return mService.bindAppWidgetId(mPackageName, appWidgetId, profileId, provider, options); - } - catch (RemoteException e) { - throw new RuntimeException("system server dead?", e); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } diff --git a/core/java/android/content/ClipboardManager.java b/core/java/android/content/ClipboardManager.java index e67da2bfe7f8..1266f73a2f44 100644 --- a/core/java/android/content/ClipboardManager.java +++ b/core/java/android/content/ClipboardManager.java @@ -122,6 +122,7 @@ public class ClipboardManager extends android.text.ClipboardManager { } getService().setPrimaryClip(clip, mContext.getOpPackageName()); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -132,7 +133,7 @@ public class ClipboardManager extends android.text.ClipboardManager { try { return getService().getPrimaryClip(mContext.getOpPackageName()); } catch (RemoteException e) { - return null; + throw e.rethrowFromSystemServer(); } } @@ -144,7 +145,7 @@ public class ClipboardManager extends android.text.ClipboardManager { try { return getService().getPrimaryClipDescription(mContext.getOpPackageName()); } catch (RemoteException e) { - return null; + throw e.rethrowFromSystemServer(); } } @@ -155,7 +156,7 @@ public class ClipboardManager extends android.text.ClipboardManager { try { return getService().hasPrimaryClip(mContext.getOpPackageName()); } catch (RemoteException e) { - return false; + throw e.rethrowFromSystemServer(); } } @@ -166,6 +167,7 @@ public class ClipboardManager extends android.text.ClipboardManager { getService().addPrimaryClipChangedListener( mPrimaryClipChangedServiceListener, mContext.getOpPackageName()); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } mPrimaryClipChangedListeners.add(what); @@ -180,6 +182,7 @@ public class ClipboardManager extends android.text.ClipboardManager { getService().removePrimaryClipChangedListener( mPrimaryClipChangedServiceListener); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } } @@ -213,7 +216,7 @@ public class ClipboardManager extends android.text.ClipboardManager { try { return getService().hasClipboardText(mContext.getOpPackageName()); } catch (RemoteException e) { - return false; + throw e.rethrowFromSystemServer(); } } diff --git a/core/java/android/content/RestrictionsManager.java b/core/java/android/content/RestrictionsManager.java index a7744e7a1208..6893067e060b 100644 --- a/core/java/android/content/RestrictionsManager.java +++ b/core/java/android/content/RestrictionsManager.java @@ -422,7 +422,7 @@ public class RestrictionsManager { return mService.getApplicationRestrictions(mContext.getPackageName()); } } catch (RemoteException re) { - Log.w(TAG, "Couldn't reach service"); + throw re.rethrowFromSystemServer(); } return null; } @@ -439,7 +439,7 @@ public class RestrictionsManager { return mService.hasRestrictionsProvider(); } } catch (RemoteException re) { - Log.w(TAG, "Couldn't reach service"); + throw re.rethrowFromSystemServer(); } return false; } @@ -477,7 +477,7 @@ public class RestrictionsManager { request); } } catch (RemoteException re) { - Log.w(TAG, "Couldn't reach service"); + throw re.rethrowFromSystemServer(); } } @@ -487,7 +487,7 @@ public class RestrictionsManager { return mService.createLocalApprovalIntent(); } } catch (RemoteException re) { - Log.w(TAG, "Couldn't reach service"); + throw re.rethrowFromSystemServer(); } return null; } @@ -519,7 +519,7 @@ public class RestrictionsManager { mService.notifyPermissionResponse(packageName, response); } } catch (RemoteException re) { - Log.w(TAG, "Couldn't reach service"); + throw re.rethrowFromSystemServer(); } } diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java index 8c7d327720a3..e443d5073c54 100644 --- a/core/java/android/content/pm/LauncherApps.java +++ b/core/java/android/content/pm/LauncherApps.java @@ -171,7 +171,7 @@ public class LauncherApps { try { activities = mService.getLauncherActivities(packageName, user); } catch (RemoteException re) { - throw new RuntimeException("Failed to call LauncherAppsService", re); + throw re.rethrowFromSystemServer(); } if (activities == null) { return Collections.EMPTY_LIST; @@ -208,7 +208,7 @@ public class LauncherApps { return info; } } catch (RemoteException re) { - throw new RuntimeException("Failed to call LauncherAppsService", re); + throw re.rethrowFromSystemServer(); } return null; } @@ -229,7 +229,7 @@ public class LauncherApps { try { mService.startActivityAsUser(component, sourceBounds, opts, user); } catch (RemoteException re) { - // Oops! + throw re.rethrowFromSystemServer(); } } @@ -247,7 +247,7 @@ public class LauncherApps { try { mService.showAppDetailsAsUser(component, sourceBounds, opts, user); } catch (RemoteException re) { - // Oops! + throw re.rethrowFromSystemServer(); } } @@ -263,7 +263,7 @@ public class LauncherApps { try { return mService.isPackageEnabled(packageName, user); } catch (RemoteException re) { - throw new RuntimeException("Failed to call LauncherAppsService", re); + throw re.rethrowFromSystemServer(); } } @@ -282,7 +282,7 @@ public class LauncherApps { try { return mService.getApplicationInfo(packageName, flags, user); } catch (RemoteException re) { - throw new RuntimeException("Failed to call LauncherAppsService", re); + throw re.rethrowFromSystemServer(); } } @@ -298,7 +298,7 @@ public class LauncherApps { try { return mService.isActivityEnabled(component, user); } catch (RemoteException re) { - throw new RuntimeException("Failed to call LauncherAppsService", re); + throw re.rethrowFromSystemServer(); } } @@ -327,6 +327,7 @@ public class LauncherApps { try { mService.addOnAppsChangedListener(mAppsChangedListener); } catch (RemoteException re) { + throw re.rethrowFromSystemServer(); } } } @@ -346,6 +347,7 @@ public class LauncherApps { try { mService.removeOnAppsChangedListener(mAppsChangedListener); } catch (RemoteException re) { + throw re.rethrowFromSystemServer(); } } } diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java index 32830053fae2..2cbb7825ec80 100644 --- a/core/java/android/content/pm/PackageInstaller.java +++ b/core/java/android/content/pm/PackageInstaller.java @@ -301,7 +301,7 @@ public class PackageInstaller { ExceptionUtils.maybeUnwrapIOException(e); throw e; } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -321,7 +321,7 @@ public class PackageInstaller { ExceptionUtils.maybeUnwrapIOException(e); throw e; } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -337,7 +337,7 @@ public class PackageInstaller { try { mInstaller.updateSessionAppIcon(sessionId, appIcon); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -353,7 +353,7 @@ public class PackageInstaller { final String val = (appLabel != null) ? appLabel.toString() : null; mInstaller.updateSessionAppLabel(sessionId, val); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -370,7 +370,7 @@ public class PackageInstaller { try { mInstaller.abandonSession(sessionId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -385,7 +385,7 @@ public class PackageInstaller { try { return mInstaller.getSessionInfo(sessionId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -403,7 +403,7 @@ public class PackageInstaller { try { return mInstaller.getAllSessions(mUserId).getList(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -414,7 +414,7 @@ public class PackageInstaller { try { return mInstaller.getMySessions(mInstallerPackageName, mUserId).getList(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -427,7 +427,7 @@ public class PackageInstaller { try { mInstaller.uninstall(packageName, mInstallerPackageName, 0, statusReceiver, mUserId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -436,7 +436,7 @@ public class PackageInstaller { try { mInstaller.setPermissionsResult(sessionId, accepted); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -611,7 +611,7 @@ public class PackageInstaller { try { mInstaller.registerCallback(delegate, mUserId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } mDelegates.add(delegate); } @@ -634,7 +634,7 @@ public class PackageInstaller { try { mInstaller.unregisterCallback(delegate); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } i.remove(); } @@ -681,7 +681,7 @@ public class PackageInstaller { try { mSession.setClientProgress(progress); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -690,7 +690,7 @@ public class PackageInstaller { try { mSession.addClientProgress(progress); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -734,7 +734,7 @@ public class PackageInstaller { ExceptionUtils.maybeUnwrapIOException(e); throw e; } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -767,7 +767,7 @@ public class PackageInstaller { ExceptionUtils.maybeUnwrapIOException(e); throw e; } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -790,7 +790,7 @@ public class PackageInstaller { ExceptionUtils.maybeUnwrapIOException(e); throw e; } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -810,7 +810,7 @@ public class PackageInstaller { try { mSession.commit(statusReceiver); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -823,7 +823,7 @@ public class PackageInstaller { try { mSession.close(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -837,7 +837,7 @@ public class PackageInstaller { try { mSession.abandon(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } } diff --git a/core/java/android/hardware/display/DisplayManagerGlobal.java b/core/java/android/hardware/display/DisplayManagerGlobal.java index 121a187b3639..93da3e5af4e9 100644 --- a/core/java/android/hardware/display/DisplayManagerGlobal.java +++ b/core/java/android/hardware/display/DisplayManagerGlobal.java @@ -132,8 +132,7 @@ public final class DisplayManagerGlobal { return info; } } catch (RemoteException ex) { - Log.e(TAG, "Could not get display information from display manager.", ex); - return null; + throw ex.rethrowFromSystemServer(); } } @@ -159,8 +158,7 @@ public final class DisplayManagerGlobal { return displayIds; } } catch (RemoteException ex) { - Log.e(TAG, "Could not get display ids from display manager.", ex); - return new int[] { Display.DEFAULT_DISPLAY }; + throw ex.rethrowFromSystemServer(); } } @@ -237,8 +235,7 @@ public final class DisplayManagerGlobal { try { mDm.registerCallback(mCallback); } catch (RemoteException ex) { - Log.e(TAG, "Failed to register callback with display manager service.", ex); - mCallback = null; + throw ex.rethrowFromSystemServer(); } } } @@ -267,7 +264,7 @@ public final class DisplayManagerGlobal { try { mDm.startWifiDisplayScan(); } catch (RemoteException ex) { - Log.e(TAG, "Failed to scan for Wifi displays.", ex); + throw ex.rethrowFromSystemServer(); } } } @@ -279,7 +276,7 @@ public final class DisplayManagerGlobal { try { mDm.stopWifiDisplayScan(); } catch (RemoteException ex) { - Log.e(TAG, "Failed to scan for Wifi displays.", ex); + throw ex.rethrowFromSystemServer(); } } else if (mWifiDisplayScanNestCount < 0) { Log.wtf(TAG, "Wifi display scan nest count became negative: " @@ -297,7 +294,7 @@ public final class DisplayManagerGlobal { try { mDm.connectWifiDisplay(deviceAddress); } catch (RemoteException ex) { - Log.e(TAG, "Failed to connect to Wifi display " + deviceAddress + ".", ex); + throw ex.rethrowFromSystemServer(); } } @@ -305,7 +302,7 @@ public final class DisplayManagerGlobal { try { mDm.pauseWifiDisplay(); } catch (RemoteException ex) { - Log.e(TAG, "Failed to pause Wifi display.", ex); + throw ex.rethrowFromSystemServer(); } } @@ -313,7 +310,7 @@ public final class DisplayManagerGlobal { try { mDm.resumeWifiDisplay(); } catch (RemoteException ex) { - Log.e(TAG, "Failed to resume Wifi display.", ex); + throw ex.rethrowFromSystemServer(); } } @@ -321,7 +318,7 @@ public final class DisplayManagerGlobal { try { mDm.disconnectWifiDisplay(); } catch (RemoteException ex) { - Log.e(TAG, "Failed to disconnect from Wifi display.", ex); + throw ex.rethrowFromSystemServer(); } } @@ -333,8 +330,7 @@ public final class DisplayManagerGlobal { try { mDm.renameWifiDisplay(deviceAddress, alias); } catch (RemoteException ex) { - Log.e(TAG, "Failed to rename Wifi display " + deviceAddress - + " with alias " + alias + ".", ex); + throw ex.rethrowFromSystemServer(); } } @@ -346,7 +342,7 @@ public final class DisplayManagerGlobal { try { mDm.forgetWifiDisplay(deviceAddress); } catch (RemoteException ex) { - Log.e(TAG, "Failed to forget Wifi display.", ex); + throw ex.rethrowFromSystemServer(); } } @@ -354,8 +350,7 @@ public final class DisplayManagerGlobal { try { return mDm.getWifiDisplayStatus(); } catch (RemoteException ex) { - Log.e(TAG, "Failed to get Wifi display status.", ex); - return new WifiDisplayStatus(); + throw ex.rethrowFromSystemServer(); } } @@ -363,7 +358,7 @@ public final class DisplayManagerGlobal { try { mDm.requestColorTransform(displayId, colorTransformId); } catch (RemoteException ex) { - Log.e(TAG, "Failed to request color transform.", ex); + throw ex.rethrowFromSystemServer(); } } @@ -385,8 +380,7 @@ public final class DisplayManagerGlobal { displayId = mDm.createVirtualDisplay(callbackWrapper, projectionToken, context.getPackageName(), name, width, height, densityDpi, surface, flags); } catch (RemoteException ex) { - Log.e(TAG, "Could not create virtual display: " + name, ex); - return null; + throw ex.rethrowFromSystemServer(); } if (displayId < 0) { Log.e(TAG, "Could not create virtual display: " + name); @@ -399,6 +393,7 @@ public final class DisplayManagerGlobal { try { mDm.releaseVirtualDisplay(callbackWrapper); } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); } return null; } @@ -409,7 +404,7 @@ public final class DisplayManagerGlobal { try { mDm.setVirtualDisplaySurface(token, surface); } catch (RemoteException ex) { - Log.w(TAG, "Failed to set virtual display surface.", ex); + throw ex.rethrowFromSystemServer(); } } @@ -418,7 +413,7 @@ public final class DisplayManagerGlobal { try { mDm.resizeVirtualDisplay(token, width, height, densityDpi); } catch (RemoteException ex) { - Log.w(TAG, "Failed to resize virtual display.", ex); + throw ex.rethrowFromSystemServer(); } } @@ -426,7 +421,7 @@ public final class DisplayManagerGlobal { try { mDm.releaseVirtualDisplay(token); } catch (RemoteException ex) { - Log.w(TAG, "Failed to release virtual display.", ex); + throw ex.rethrowFromSystemServer(); } } diff --git a/core/java/android/hardware/usb/UsbManager.java b/core/java/android/hardware/usb/UsbManager.java index 1e3bcd0fc796..3792e5c03756 100644 --- a/core/java/android/hardware/usb/UsbManager.java +++ b/core/java/android/hardware/usb/UsbManager.java @@ -302,8 +302,7 @@ public class UsbManager { } return result; } catch (RemoteException e) { - Log.e(TAG, "RemoteException in getDeviceList", e); - return null; + throw e.rethrowFromSystemServer(); } } @@ -347,8 +346,7 @@ public class UsbManager { return new UsbAccessory[] { accessory }; } } catch (RemoteException e) { - Log.e(TAG, "RemoteException in getAccessoryList", e); - return null; + throw e.rethrowFromSystemServer(); } } @@ -362,8 +360,7 @@ public class UsbManager { try { return mService.openAccessory(accessory); } catch (RemoteException e) { - Log.e(TAG, "RemoteException in openAccessory", e); - return null; + throw e.rethrowFromSystemServer(); } } @@ -380,8 +377,7 @@ public class UsbManager { try { return mService.hasDevicePermission(device); } catch (RemoteException e) { - Log.e(TAG, "RemoteException in hasPermission", e); - return false; + throw e.rethrowFromSystemServer(); } } @@ -398,8 +394,7 @@ public class UsbManager { try { return mService.hasAccessoryPermission(accessory); } catch (RemoteException e) { - Log.e(TAG, "RemoteException in hasPermission", e); - return false; + throw e.rethrowFromSystemServer(); } } @@ -425,7 +420,7 @@ public class UsbManager { try { mService.requestDevicePermission(device, mContext.getPackageName(), pi); } catch (RemoteException e) { - Log.e(TAG, "RemoteException in requestPermission", e); + throw e.rethrowFromSystemServer(); } } @@ -451,7 +446,7 @@ public class UsbManager { try { mService.requestAccessoryPermission(accessory, mContext.getPackageName(), pi); } catch (RemoteException e) { - Log.e(TAG, "RemoteException in requestPermission", e); + throw e.rethrowFromSystemServer(); } } @@ -466,7 +461,7 @@ public class UsbManager { try { mService.grantDevicePermission(device, Process.myUid()); } catch (RemoteException e) { - Log.e(TAG, "RemoteException in grantPermission", e); + throw e.rethrowFromSystemServer(); } } @@ -486,8 +481,7 @@ public class UsbManager { try { return mService.isFunctionEnabled(function); } catch (RemoteException e) { - Log.e(TAG, "RemoteException in setCurrentFunction", e); - return false; + throw e.rethrowFromSystemServer(); } } @@ -517,7 +511,7 @@ public class UsbManager { try { mService.setCurrentFunction(function); } catch (RemoteException e) { - Log.e(TAG, "RemoteException in setCurrentFunction", e); + throw e.rethrowFromSystemServer(); } } @@ -533,7 +527,7 @@ public class UsbManager { try { mService.setUsbDataUnlocked(unlocked); } catch (RemoteException e) { - Log.e(TAG, "RemoteException in setUsbDataUnlocked", e); + throw e.rethrowFromSystemServer(); } } @@ -554,9 +548,8 @@ public class UsbManager { try { return mService.getPorts(); } catch (RemoteException e) { - Log.e(TAG, "RemoteException in getPorts", e); + throw e.rethrowFromSystemServer(); } - return null; } /** @@ -573,9 +566,8 @@ public class UsbManager { try { return mService.getPortStatus(port.getId()); } catch (RemoteException e) { - Log.e(TAG, "RemoteException in getPortStatus", e); + throw e.rethrowFromSystemServer(); } - return null; } /** @@ -604,7 +596,7 @@ public class UsbManager { try { mService.setPortRoles(port.getId(), powerRole, dataRole); } catch (RemoteException e) { - Log.e(TAG, "RemoteException in setPortRole", e); + throw e.rethrowFromSystemServer(); } } diff --git a/core/java/android/net/NetworkPolicyManager.java b/core/java/android/net/NetworkPolicyManager.java index a83e72240310..94de93329294 100644 --- a/core/java/android/net/NetworkPolicyManager.java +++ b/core/java/android/net/NetworkPolicyManager.java @@ -106,6 +106,7 @@ public class NetworkPolicyManager { try { mService.setUidPolicy(uid, policy); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -118,6 +119,7 @@ public class NetworkPolicyManager { try { mService.addUidPolicy(uid, policy); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -130,6 +132,7 @@ public class NetworkPolicyManager { try { mService.removeUidPolicy(uid, policy); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -137,7 +140,7 @@ public class NetworkPolicyManager { try { return mService.getUidPolicy(uid); } catch (RemoteException e) { - return POLICY_NONE; + throw e.rethrowFromSystemServer(); } } @@ -145,7 +148,7 @@ public class NetworkPolicyManager { try { return mService.getUidsWithPolicy(policy); } catch (RemoteException e) { - return new int[0]; + throw e.rethrowFromSystemServer(); } } @@ -153,6 +156,7 @@ public class NetworkPolicyManager { try { mService.registerListener(listener); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -160,6 +164,7 @@ public class NetworkPolicyManager { try { mService.unregisterListener(listener); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -167,6 +172,7 @@ public class NetworkPolicyManager { try { mService.setNetworkPolicies(policies); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -174,7 +180,7 @@ public class NetworkPolicyManager { try { return mService.getNetworkPolicies(mContext.getOpPackageName()); } catch (RemoteException e) { - return null; + throw e.rethrowFromSystemServer(); } } @@ -182,6 +188,7 @@ public class NetworkPolicyManager { try { mService.setRestrictBackground(restrictBackground); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } @@ -189,7 +196,7 @@ public class NetworkPolicyManager { try { return mService.getRestrictBackground(); } catch (RemoteException e) { - return false; + throw e.rethrowFromSystemServer(); } } @@ -202,6 +209,7 @@ public class NetworkPolicyManager { try { mService.factoryReset(subscriber); } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } } diff --git a/core/java/android/net/TrafficStats.java b/core/java/android/net/TrafficStats.java index e82485da32f7..ba8bd34bfc6d 100644 --- a/core/java/android/net/TrafficStats.java +++ b/core/java/android/net/TrafficStats.java @@ -310,7 +310,7 @@ public class TrafficStats { try { getStatsService().incrementOperationCount(uid, tag, operationCount); } catch (RemoteException e) { - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -653,7 +653,7 @@ public class TrafficStats { try { return getStatsService().getDataLayerSnapshotForUid(uid); } catch (RemoteException e) { - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } @@ -666,7 +666,7 @@ public class TrafficStats { try { return getStatsService().getMobileIfaces(); } catch (RemoteException e) { - throw new RuntimeException(e); + throw e.rethrowFromSystemServer(); } } diff --git a/core/java/android/os/DeadSystemException.java b/core/java/android/os/DeadSystemException.java new file mode 100644 index 000000000000..595365c55472 --- /dev/null +++ b/core/java/android/os/DeadSystemException.java @@ -0,0 +1,27 @@ +/* + * 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 android.os; + +/** + * The core Android system has died and is going through a runtime restart. All + * running apps will be promptly be killed. + */ +public class DeadSystemException extends DeadObjectException { + public DeadSystemException() { + super(); + } +} diff --git a/core/java/android/os/DropBoxManager.java b/core/java/android/os/DropBoxManager.java index 2b144683dc70..0d940723b7d2 100644 --- a/core/java/android/os/DropBoxManager.java +++ b/core/java/android/os/DropBoxManager.java @@ -267,7 +267,11 @@ public class DropBoxManager { * @param data value to store */ public void addText(String tag, String data) { - try { mService.add(new Entry(tag, 0, data)); } catch (RemoteException e) {} + try { + mService.add(new Entry(tag, 0, data)); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } /** @@ -279,7 +283,11 @@ public class DropBoxManager { */ public void addData(String tag, byte[] data, int flags) { if (data == null) throw new NullPointerException("data == null"); - try { mService.add(new Entry(tag, 0, data, flags)); } catch (RemoteException e) {} + try { + mService.add(new Entry(tag, 0, data, flags)); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } /** @@ -297,7 +305,7 @@ public class DropBoxManager { try { mService.add(entry); } catch (RemoteException e) { - // ignore + throw e.rethrowFromSystemServer(); } finally { entry.close(); } @@ -312,7 +320,11 @@ public class DropBoxManager { * @return whether events with that tag would be accepted */ public boolean isTagEnabled(String tag) { - try { return mService.isTagEnabled(tag); } catch (RemoteException e) { return false; } + try { + return mService.isTagEnabled(tag); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } /** @@ -325,7 +337,11 @@ public class DropBoxManager { * @return the next entry, or null if there are no more entries */ public Entry getNextEntry(String tag, long msec) { - try { return mService.getNextEntry(tag, msec); } catch (RemoteException e) { return null; } + try { + return mService.getNextEntry(tag, msec); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } // TODO: It may be useful to have some sort of notification mechanism diff --git a/core/java/android/os/RemoteException.java b/core/java/android/os/RemoteException.java index 98d75233e8df..6d25fc17bd6a 100644 --- a/core/java/android/os/RemoteException.java +++ b/core/java/android/os/RemoteException.java @@ -15,6 +15,7 @@ */ package android.os; + import android.util.AndroidException; /** @@ -33,4 +34,25 @@ public class RemoteException extends AndroidException { public RuntimeException rethrowAsRuntimeException() { throw new RuntimeException(this); } + + /** + * Rethrow this exception when we know it came from the system server. This + * gives us an opportunity to throw a nice clean + * {@link DeadSystemException} signal to avoid spamming logs with + * misleading stack traces. + * <p> + * Apps making calls into the system server may end up persisting internal + * state or making security decisions based on the perceived success or + * failure of a call, or any default values returned. For this reason, we + * want to strongly throw when there was trouble with the transaction. + * + * @hide + */ + public RuntimeException rethrowFromSystemServer() { + if (this instanceof DeadObjectException) { + throw new RuntimeException(new DeadSystemException()); + } else { + throw new RuntimeException(this); + } + } } diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java index 91d88da8b733..e4a76db7a86c 100644 --- a/core/java/android/os/StrictMode.java +++ b/core/java/android/os/StrictMode.java @@ -1517,7 +1517,11 @@ public final class StrictMode { violationMaskSubset, info); } catch (RemoteException e) { - Log.e(TAG, "RemoteException trying to handle StrictMode violation", e); + if (e instanceof DeadObjectException) { + // System process is dead; ignore + } else { + Log.e(TAG, "RemoteException trying to handle StrictMode violation", e); + } } finally { // Restore the policy. setThreadPolicyMask(savedPolicyMask); @@ -1569,7 +1573,11 @@ public final class StrictMode { info); } } catch (RemoteException e) { - Log.e(TAG, "RemoteException handling StrictMode violation", e); + if (e instanceof DeadObjectException) { + // System process is dead; ignore + } else { + Log.e(TAG, "RemoteException handling StrictMode violation", e); + } } int outstanding = sDropboxCallsInFlight.decrementAndGet(); if (LOG_V) Log.d(TAG, "Dropbox complete; in-flight=" + outstanding); @@ -1897,7 +1905,11 @@ public final class StrictMode { violationMaskSubset, info); } catch (RemoteException e) { - Log.e(TAG, "RemoteException trying to handle StrictMode violation", e); + if (e instanceof DeadObjectException) { + // System process is dead; ignore + } else { + Log.e(TAG, "RemoteException trying to handle StrictMode violation", e); + } } finally { // Restore the policy. setThreadPolicyMask(savedPolicyMask); diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java index 0edc43c755b4..20b3798b56b8 100644 --- a/core/java/android/os/UserManager.java +++ b/core/java/android/os/UserManager.java @@ -699,7 +699,7 @@ public class UserManager { try { return mService.getUserInfo(getUserHandle()).name; } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -769,7 +769,7 @@ public class UserManager { try { return mService.isRestricted(); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -781,7 +781,7 @@ public class UserManager { try { return mService.canHaveRestrictedProfile(userId); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -844,7 +844,7 @@ public class UserManager { try { return ActivityManagerNative.getDefault().isUserRunning(userId, 0); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -861,7 +861,7 @@ public class UserManager { return ActivityManagerNative.getDefault().isUserRunning( user.getIdentifier(), ActivityManager.FLAG_OR_STOPPED); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -890,7 +890,7 @@ public class UserManager { return ActivityManagerNative.getDefault().isUserRunning( user.getIdentifier(), ActivityManager.FLAG_AND_LOCKED); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -919,7 +919,7 @@ public class UserManager { return ActivityManagerNative.getDefault().isUserRunning( user.getIdentifier(), ActivityManager.FLAG_AND_UNLOCKED); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -964,7 +964,7 @@ public class UserManager { try { return mService.getUserInfo(userHandle); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -985,7 +985,7 @@ public class UserManager { try { return mService.getUserRestrictions(userHandle.getIdentifier()); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1001,7 +1001,7 @@ public class UserManager { try { return mService.hasBaseUserRestriction(restrictionKey, userHandle.getIdentifier()); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1057,7 +1057,7 @@ public class UserManager { try { mService.setUserRestriction(key, value, userHandle.getIdentifier()); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1084,7 +1084,7 @@ public class UserManager { return mService.hasUserRestriction(restrictionKey, userHandle.getIdentifier()); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1138,7 +1138,7 @@ public class UserManager { mService.setUserRestriction(DISALLOW_OUTGOING_CALLS, true, user.id); } } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } return user; } @@ -1158,7 +1158,7 @@ public class UserManager { Settings.Secure.SKIP_FIRST_USE_HINTS, "1", guest.id); } } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } return guest; } @@ -1179,7 +1179,7 @@ public class UserManager { try { return mService.createProfileForUser(name, flags, userHandle); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1202,7 +1202,7 @@ public class UserManager { } return user; } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1271,7 +1271,7 @@ public class UserManager { try { return mService.getSeedAccountName(); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1285,7 +1285,7 @@ public class UserManager { try { return mService.getSeedAccountType(); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1301,7 +1301,7 @@ public class UserManager { try { return mService.getSeedAccountOptions(); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1322,7 +1322,7 @@ public class UserManager { mService.setSeedAccountData(userId, accountName, accountType, accountOptions, /* persist= */ true); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1335,7 +1335,7 @@ public class UserManager { try { mService.clearSeedAccountData(); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1350,7 +1350,7 @@ public class UserManager { try { return mService.markGuestForDeletion(userHandle); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1370,7 +1370,7 @@ public class UserManager { try { mService.setUserEnabled(userHandle); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1392,7 +1392,7 @@ public class UserManager { try { return mService.getUsers(false); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1414,7 +1414,7 @@ public class UserManager { } return result; } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1430,7 +1430,7 @@ public class UserManager { try { return mService.getUserAccount(userHandle); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1446,7 +1446,7 @@ public class UserManager { try { mService.setUserAccount(userHandle, accountName); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1461,7 +1461,7 @@ public class UserManager { try { return mService.getPrimaryUser(); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1498,7 +1498,7 @@ public class UserManager { try { return mService.canAddMoreManagedProfiles(userId, allowedToRemoveOne); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1517,7 +1517,7 @@ public class UserManager { try { return mService.getProfiles(userHandle, false /* enabledOnly */); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1532,7 +1532,7 @@ public class UserManager { try { return mService.isSameProfileGroup(userId, otherUserId); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1550,7 +1550,7 @@ public class UserManager { try { return mService.getProfiles(userHandle, true /* enabledOnly */); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1566,7 +1566,7 @@ public class UserManager { try { users = mService.getProfiles(UserHandle.myUserId(), true /* enabledOnly */); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } for (UserInfo info : users) { UserHandle userHandle = new UserHandle(info.id); @@ -1586,7 +1586,7 @@ public class UserManager { try { return mService.getCredentialOwnerProfile(userHandle); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1600,7 +1600,7 @@ public class UserManager { try { return mService.getProfileParent(userHandle); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1615,7 +1615,7 @@ public class UserManager { try { mService.setQuietModeEnabled(userHandle, enableQuietMode); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1629,7 +1629,7 @@ public class UserManager { try { return mService.isQuietModeEnabled(userHandle.getIdentifier()); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1715,7 +1715,7 @@ public class UserManager { try { return mService.getUsers(excludeDying); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1729,7 +1729,7 @@ public class UserManager { try { return mService.removeUser(userHandle); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1745,7 +1745,7 @@ public class UserManager { try { mService.setUserName(userHandle, name); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1759,7 +1759,7 @@ public class UserManager { try { mService.setUserIcon(userHandle, icon); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1784,7 +1784,7 @@ public class UserManager { } } } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } return null; } @@ -1840,7 +1840,7 @@ public class UserManager { try { return mService.getUserSerialNumber(userHandle); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1857,7 +1857,7 @@ public class UserManager { try { return mService.getUserHandle(userSerialNumber); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1884,7 +1884,7 @@ public class UserManager { try { return mService.getApplicationRestrictions(packageName); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1895,7 +1895,7 @@ public class UserManager { try { return mService.getApplicationRestrictionsForUser(packageName, user.getIdentifier()); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1907,7 +1907,7 @@ public class UserManager { try { mService.setApplicationRestrictions(packageName, restrictions, user.getIdentifier()); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1931,7 +1931,7 @@ public class UserManager { try { mService.setDefaultGuestRestrictions(restrictions); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1943,7 +1943,7 @@ public class UserManager { try { return mService.getDefaultGuestRestrictions(); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1957,7 +1957,7 @@ public class UserManager { try { return mService.getUserCreationTime(userHandle.getIdentifier()); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } @@ -1973,7 +1973,7 @@ public class UserManager { try { return mService.someUserHasSeedAccount(accountName, accountType); } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); + throw re.rethrowFromSystemServer(); } } } diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java index 97ee90dc9ea2..17df7080acf1 100644 --- a/core/java/android/os/storage/StorageManager.java +++ b/core/java/android/os/storage/StorageManager.java @@ -332,7 +332,7 @@ public class StorageManager { try { mMountService.registerListener(delegate); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } mDelegates.add(delegate); } @@ -353,7 +353,7 @@ public class StorageManager { try { mMountService.unregisterListener(delegate); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } i.remove(); } @@ -434,10 +434,8 @@ public class StorageManager { } catch (IOException e) { throw new IllegalArgumentException("Failed to resolve path: " + rawPath, e); } catch (RemoteException e) { - Log.e(TAG, "Failed to mount OBB", e); + throw e.rethrowFromSystemServer(); } - - return false; } /** @@ -469,10 +467,8 @@ public class StorageManager { mMountService.unmountObb(rawPath, force, mObbActionListener, nonce); return true; } catch (RemoteException e) { - Log.e(TAG, "Failed to mount OBB", e); + throw e.rethrowFromSystemServer(); } - - return false; } /** @@ -487,10 +483,8 @@ public class StorageManager { try { return mMountService.isObbMounted(rawPath); } catch (RemoteException e) { - Log.e(TAG, "Failed to check if OBB is mounted", e); + throw e.rethrowFromSystemServer(); } - - return false; } /** @@ -508,10 +502,8 @@ public class StorageManager { try { return mMountService.getMountedObbPath(rawPath); } catch (RemoteException e) { - Log.e(TAG, "Failed to find mounted path for OBB", e); + throw e.rethrowFromSystemServer(); } - - return null; } /** {@hide} */ @@ -519,7 +511,7 @@ public class StorageManager { try { return Arrays.asList(mMountService.getDisks()); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -605,7 +597,7 @@ public class StorageManager { try { return Arrays.asList(mMountService.getVolumes(0)); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -620,7 +612,7 @@ public class StorageManager { } return res; } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -629,7 +621,7 @@ public class StorageManager { try { return Arrays.asList(mMountService.getVolumeRecords(0)); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -672,7 +664,7 @@ public class StorageManager { try { mMountService.mount(volId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -681,7 +673,7 @@ public class StorageManager { try { mMountService.unmount(volId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -690,7 +682,7 @@ public class StorageManager { try { mMountService.format(volId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -699,7 +691,7 @@ public class StorageManager { try { return mMountService.benchmark(volId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -708,7 +700,7 @@ public class StorageManager { try { mMountService.partitionPublic(diskId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -717,7 +709,7 @@ public class StorageManager { try { mMountService.partitionPrivate(diskId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -726,7 +718,7 @@ public class StorageManager { try { mMountService.partitionMixed(diskId, ratio); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -759,7 +751,7 @@ public class StorageManager { try { mMountService.setVolumeNickname(fsUuid, nickname); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -769,7 +761,7 @@ public class StorageManager { mMountService.setVolumeUserFlags(fsUuid, inited ? VolumeRecord.USER_FLAG_INITED : 0, VolumeRecord.USER_FLAG_INITED); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -779,7 +771,7 @@ public class StorageManager { mMountService.setVolumeUserFlags(fsUuid, snoozed ? VolumeRecord.USER_FLAG_SNOOZED : 0, VolumeRecord.USER_FLAG_SNOOZED); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -788,7 +780,7 @@ public class StorageManager { try { mMountService.forgetVolume(fsUuid); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -802,7 +794,7 @@ public class StorageManager { try { return mMountService.getPrimaryStorageUuid(); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -816,7 +808,7 @@ public class StorageManager { try { mMountService.setPrimaryStorageUuid(volumeUuid, callback); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -900,7 +892,7 @@ public class StorageManager { } return mountService.getVolumeList(uid, packageName, flags); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -984,7 +976,7 @@ public class StorageManager { try { mMountService.createUserKey(userId, serialNumber, ephemeral); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -993,7 +985,7 @@ public class StorageManager { try { mMountService.destroyUserKey(userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1002,7 +994,7 @@ public class StorageManager { try { mMountService.unlockUserKey(userId, serialNumber, token, secret); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1011,7 +1003,7 @@ public class StorageManager { try { mMountService.lockUserKey(userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1020,7 +1012,7 @@ public class StorageManager { try { mMountService.prepareUserStorage(volumeUuid, userId, serialNumber, flags); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1029,7 +1021,7 @@ public class StorageManager { try { return mMountService.isUserKeyUnlocked(userId); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } @@ -1064,7 +1056,8 @@ public class StorageManager { } } } - } catch (RemoteException ignored) { + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } return path; } @@ -1074,7 +1067,7 @@ public class StorageManager { try { return mMountService.mountAppFuse(name); } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + throw e.rethrowFromSystemServer(); } } diff --git a/core/java/android/print/PrintManager.java b/core/java/android/print/PrintManager.java index 58f260cbe1cf..0540036f1a49 100644 --- a/core/java/android/print/PrintManager.java +++ b/core/java/android/print/PrintManager.java @@ -232,9 +232,8 @@ public final class PrintManager { try { return mService.getPrintJobInfo(printJobId, mAppId, mUserId); } catch (RemoteException re) { - Log.e(LOG_TAG, "Error getting a print job info:" + printJobId, re); + throw re.rethrowFromSystemServer(); } - return null; } /** @@ -258,7 +257,7 @@ public final class PrintManager { mService.addPrintJobStateChangeListener(wrappedListener, mAppId, mUserId); mPrintJobStateChangeListeners.put(listener, wrappedListener); } catch (RemoteException re) { - Log.e(LOG_TAG, "Error adding print job state change listener", re); + throw re.rethrowFromSystemServer(); } } @@ -288,7 +287,7 @@ public final class PrintManager { try { mService.removePrintJobStateChangeListener(wrappedListener, mUserId); } catch (RemoteException re) { - Log.e(LOG_TAG, "Error removing print job state change listener", re); + throw re.rethrowFromSystemServer(); } } @@ -311,7 +310,7 @@ public final class PrintManager { return new PrintJob(printJob, this); } } catch (RemoteException re) { - Log.e(LOG_TAG, "Error getting print job", re); + throw re.rethrowFromSystemServer(); } return null; } @@ -334,9 +333,8 @@ public final class PrintManager { try { return mService.getCustomPrinterIcon(printerId, mUserId); } catch (RemoteException re) { - Log.e(LOG_TAG, "Error getting custom printer icon", re); + throw re.rethrowFromSystemServer(); } - return null; } /** @@ -362,9 +360,8 @@ public final class PrintManager { } return printJobs; } catch (RemoteException re) { - Log.e(LOG_TAG, "Error getting print jobs", re); + throw re.rethrowFromSystemServer(); } - return Collections.emptyList(); } void cancelPrintJob(PrintJobId printJobId) { @@ -375,7 +372,7 @@ public final class PrintManager { try { mService.cancelPrintJob(printJobId, mAppId, mUserId); } catch (RemoteException re) { - Log.e(LOG_TAG, "Error canceling a print job: " + printJobId, re); + throw re.rethrowFromSystemServer(); } } @@ -387,7 +384,7 @@ public final class PrintManager { try { mService.restartPrintJob(printJobId, mAppId, mUserId); } catch (RemoteException re) { - Log.e(LOG_TAG, "Error restarting a print job: " + printJobId, re); + throw re.rethrowFromSystemServer(); } } @@ -475,7 +472,7 @@ public final class PrintManager { } } } catch (RemoteException re) { - Log.e(LOG_TAG, "Error creating a print job", re); + throw re.rethrowFromSystemServer(); } return null; } @@ -497,7 +494,7 @@ public final class PrintManager { return enabledServices; } } catch (RemoteException re) { - Log.e(LOG_TAG, "Error getting the enabled print services", re); + throw re.rethrowFromSystemServer(); } return Collections.emptyList(); } @@ -519,7 +516,7 @@ public final class PrintManager { return installedServices; } } catch (RemoteException re) { - Log.e(LOG_TAG, "Error getting the installed print services", re); + throw re.rethrowFromSystemServer(); } return Collections.emptyList(); } diff --git a/core/java/android/service/persistentdata/PersistentDataBlockManager.java b/core/java/android/service/persistentdata/PersistentDataBlockManager.java index ddb6980046ed..cfeed51da86f 100644 --- a/core/java/android/service/persistentdata/PersistentDataBlockManager.java +++ b/core/java/android/service/persistentdata/PersistentDataBlockManager.java @@ -85,8 +85,7 @@ public class PersistentDataBlockManager { try { return sService.write(data); } catch (RemoteException e) { - onError("writing data"); - return -1; + throw e.rethrowFromSystemServer(); } } @@ -97,8 +96,7 @@ public class PersistentDataBlockManager { try { return sService.read(); } catch (RemoteException e) { - onError("reading data"); - return null; + throw e.rethrowFromSystemServer(); } } @@ -111,8 +109,7 @@ public class PersistentDataBlockManager { try { return sService.getDataBlockSize(); } catch (RemoteException e) { - onError("getting data block size"); - return -1; + throw e.rethrowFromSystemServer(); } } @@ -125,8 +122,7 @@ public class PersistentDataBlockManager { try { return sService.getMaximumDataBlockSize(); } catch (RemoteException e) { - onError("getting maximum data block size"); - return -1; + throw e.rethrowFromSystemServer(); } } @@ -138,7 +134,7 @@ public class PersistentDataBlockManager { try { sService.wipe(); } catch (RemoteException e) { - onError("wiping persistent partition"); + throw e.rethrowFromSystemServer(); } } @@ -149,7 +145,7 @@ public class PersistentDataBlockManager { try { sService.setOemUnlockEnabled(enabled); } catch (RemoteException e) { - onError("setting OEM unlock enabled to " + enabled); + throw e.rethrowFromSystemServer(); } } @@ -160,8 +156,7 @@ public class PersistentDataBlockManager { try { return sService.getOemUnlockEnabled(); } catch (RemoteException e) { - onError("getting OEM unlock enabled bit"); - return false; + throw e.rethrowFromSystemServer(); } } @@ -178,12 +173,7 @@ public class PersistentDataBlockManager { try { return sService.getFlashLockState(); } catch (RemoteException e) { - onError("getting flash lock state"); - return FLASH_LOCK_UNKNOWN; + throw e.rethrowFromSystemServer(); } } - - private void onError(String msg) { - Slog.v(TAG, "Remote exception while " + msg); - } } diff --git a/core/java/android/util/Log.java b/core/java/android/util/Log.java index 3d7cb4954e5b..5bc6c9480025 100644 --- a/core/java/android/util/Log.java +++ b/core/java/android/util/Log.java @@ -16,6 +16,8 @@ package android.util; +import android.os.DeadSystemException; + import com.android.internal.os.RuntimeInit; import com.android.internal.util.FastPrintWriter; import com.android.internal.util.LineBreakBufferedWriter; @@ -405,6 +407,11 @@ public final class Log { if (t instanceof UnknownHostException) { break; } + if (t instanceof DeadSystemException) { + lbbw.println("DeadSystemException: The system died; " + + "earlier logs will point to the root cause"); + break; + } t = t.getCause(); } if (t == null) { diff --git a/core/java/com/android/internal/os/RuntimeInit.java b/core/java/com/android/internal/os/RuntimeInit.java index e2982019d3bf..fff9d7c3247b 100644 --- a/core/java/com/android/internal/os/RuntimeInit.java +++ b/core/java/com/android/internal/os/RuntimeInit.java @@ -20,6 +20,7 @@ import android.app.ActivityManagerNative; import android.app.ActivityThread; import android.app.ApplicationErrorReport; import android.os.Build; +import android.os.DeadObjectException; import android.os.Debug; import android.os.IBinder; import android.os.Process; @@ -96,10 +97,14 @@ public class RuntimeInit { ActivityManagerNative.getDefault().handleApplicationCrash( mApplicationObject, new ApplicationErrorReport.CrashInfo(e)); } catch (Throwable t2) { - try { - Clog_e(TAG, "Error reporting crash", t2); - } catch (Throwable t3) { - // Even Clog_e() fails! Oh well. + if (t2 instanceof DeadObjectException) { + // System process is dead; ignore + } else { + try { + Clog_e(TAG, "Error reporting crash", t2); + } catch (Throwable t3) { + // Even Clog_e() fails! Oh well. + } } } finally { // Try everything to make sure this process goes away. @@ -358,8 +363,12 @@ public class RuntimeInit { System.exit(10); } } catch (Throwable t2) { - Slog.e(TAG, "Error reporting WTF", t2); - Slog.e(TAG, "Original WTF:", t); + if (t2 instanceof DeadObjectException) { + // System process is dead; ignore + } else { + Slog.e(TAG, "Error reporting WTF", t2); + Slog.e(TAG, "Original WTF:", t); + } } } |
