Merge "Don't throw runtime exceptions in ResumeOnRebootServiceProvider" am: 8ad97c0d63

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1608534

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Id7977a64ae425335c5f54c98065b75ccfb12fe1f
This commit is contained in:
Tianjie Xu
2021-03-05 04:46:02 +00:00
committed by Automerger Merge Worker

View File

@@ -136,7 +136,7 @@ public class ResumeOnRebootServiceProvider {
} }
/** Bind to the service */ /** Bind to the service */
public void bindToService(long timeOut) throws TimeoutException { public void bindToService(long timeOut) throws RemoteException, TimeoutException {
if (mBinder == null || !mBinder.asBinder().isBinderAlive()) { if (mBinder == null || !mBinder.asBinder().isBinderAlive()) {
CountDownLatch connectionLatch = new CountDownLatch(1); CountDownLatch connectionLatch = new CountDownLatch(1);
Intent intent = new Intent(); Intent intent = new Intent();
@@ -210,27 +210,25 @@ public class ResumeOnRebootServiceProvider {
private void throwTypedException( private void throwTypedException(
ParcelableException exception) ParcelableException exception)
throws IOException { throws IOException, RemoteException {
if (exception.getCause() instanceof IOException) { if (exception != null && exception.getCause() instanceof IOException) {
exception.maybeRethrow(IOException.class); exception.maybeRethrow(IOException.class);
} else if (exception.getCause() instanceof IllegalStateException) {
exception.maybeRethrow(IllegalStateException.class);
} else { } else {
// This should not happen. Wrap the cause in IllegalStateException so that it // Wrap the exception and throw it as a RemoteException.
// doesn't disrupt the exception handling throw new RemoteException(TAG + " wrap/unwrap failed", exception,
throw new IllegalStateException(exception.getCause()); true /* enableSuppression */, true /* writableStackTrace */);
} }
} }
private void waitForLatch(CountDownLatch latch, String reason, long timeOut) private void waitForLatch(CountDownLatch latch, String reason, long timeOut)
throws TimeoutException { throws RemoteException, TimeoutException {
try { try {
if (!latch.await(timeOut, TimeUnit.SECONDS)) { if (!latch.await(timeOut, TimeUnit.SECONDS)) {
throw new TimeoutException("Latch wait for " + reason + " elapsed"); throw new TimeoutException("Latch wait for " + reason + " elapsed");
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
throw new IllegalStateException("Latch wait for " + reason + " interrupted"); throw new RemoteException("Latch wait for " + reason + " interrupted");
} }
} }
} }