Merge "Check success before registering DeathRecipient"

This commit is contained in:
Hall Liu
2017-10-20 23:10:09 +00:00
committed by Gerrit Code Review
2 changed files with 52 additions and 34 deletions

View File

@@ -118,14 +118,8 @@ public class MbmsDownloadServiceBase extends IMbmsDownloadService.Stub {
} }
final int uid = Binder.getCallingUid(); final int uid = Binder.getCallingUid();
callback.asBinder().linkToDeath(new DeathRecipient() {
@Override
public void binderDied() {
onAppCallbackDied(uid, subscriptionId);
}
}, 0);
return initialize(subscriptionId, new MbmsDownloadSessionCallback() { int result = initialize(subscriptionId, new MbmsDownloadSessionCallback() {
@Override @Override
public void onError(int errorCode, String message) { public void onError(int errorCode, String message) {
try { try {
@@ -153,6 +147,17 @@ public class MbmsDownloadServiceBase extends IMbmsDownloadService.Stub {
} }
} }
}); });
if (result == MbmsErrors.SUCCESS) {
callback.asBinder().linkToDeath(new DeathRecipient() {
@Override
public void binderDied() {
onAppCallbackDied(uid, subscriptionId);
}
}, 0);
}
return result;
} }
/** /**
@@ -251,6 +256,16 @@ public class MbmsDownloadServiceBase extends IMbmsDownloadService.Stub {
throw new NullPointerException("Callback must not be null"); throw new NullPointerException("Callback must not be null");
} }
DownloadStateCallback exposedCallback = new FilteredDownloadStateCallback(callback, flags) {
@Override
protected void onRemoteException(RemoteException e) {
onAppCallbackDied(uid, downloadRequest.getSubscriptionId());
}
};
int result = registerStateCallback(downloadRequest, exposedCallback);
if (result == MbmsErrors.SUCCESS) {
DeathRecipient deathRecipient = new DeathRecipient() { DeathRecipient deathRecipient = new DeathRecipient() {
@Override @Override
public void binderDied() { public void binderDied() {
@@ -261,17 +276,10 @@ public class MbmsDownloadServiceBase extends IMbmsDownloadService.Stub {
}; };
mDownloadCallbackDeathRecipients.put(callback.asBinder(), deathRecipient); mDownloadCallbackDeathRecipients.put(callback.asBinder(), deathRecipient);
callback.asBinder().linkToDeath(deathRecipient, 0); callback.asBinder().linkToDeath(deathRecipient, 0);
DownloadStateCallback exposedCallback = new FilteredDownloadStateCallback(callback, flags) {
@Override
protected void onRemoteException(RemoteException e) {
onAppCallbackDied(uid, downloadRequest.getSubscriptionId());
}
};
mDownloadCallbackBinderMap.put(callback.asBinder(), exposedCallback); mDownloadCallbackBinderMap.put(callback.asBinder(), exposedCallback);
}
return registerStateCallback(downloadRequest, exposedCallback); return result;
} }
/** /**

View File

@@ -70,14 +70,8 @@ public class MbmsStreamingServiceBase extends IMbmsStreamingService.Stub {
} }
final int uid = Binder.getCallingUid(); final int uid = Binder.getCallingUid();
callback.asBinder().linkToDeath(new DeathRecipient() {
@Override
public void binderDied() {
onAppCallbackDied(uid, subscriptionId);
}
}, 0);
return initialize(new MbmsStreamingSessionCallback() { int result = initialize(new MbmsStreamingSessionCallback() {
@Override @Override
public void onError(final int errorCode, final String message) { public void onError(final int errorCode, final String message) {
try { try {
@@ -105,6 +99,17 @@ public class MbmsStreamingServiceBase extends IMbmsStreamingService.Stub {
} }
} }
}, subscriptionId); }, subscriptionId);
if (result == MbmsErrors.SUCCESS) {
callback.asBinder().linkToDeath(new DeathRecipient() {
@Override
public void binderDied() {
onAppCallbackDied(uid, subscriptionId);
}
}, 0);
}
return result;
} }
@@ -161,14 +166,8 @@ public class MbmsStreamingServiceBase extends IMbmsStreamingService.Stub {
} }
final int uid = Binder.getCallingUid(); final int uid = Binder.getCallingUid();
callback.asBinder().linkToDeath(new DeathRecipient() {
@Override
public void binderDied() {
onAppCallbackDied(uid, subscriptionId);
}
}, 0);
return startStreaming(subscriptionId, serviceId, new StreamingServiceCallback() { int result = startStreaming(subscriptionId, serviceId, new StreamingServiceCallback() {
@Override @Override
public void onError(final int errorCode, final String message) { public void onError(final int errorCode, final String message) {
try { try {
@@ -215,6 +214,17 @@ public class MbmsStreamingServiceBase extends IMbmsStreamingService.Stub {
} }
} }
}); });
if (result == MbmsErrors.SUCCESS) {
callback.asBinder().linkToDeath(new DeathRecipient() {
@Override
public void binderDied() {
onAppCallbackDied(uid, subscriptionId);
}
}, 0);
}
return result;
} }
/** /**