Merge "Make slight API and doc adjustments"

This commit is contained in:
Hall Liu
2017-07-21 21:09:34 +00:00
committed by Gerrit Code Review
8 changed files with 66 additions and 28 deletions

View File

@@ -211,9 +211,9 @@ public class MbmsDownloadManager {
private int mSubscriptionId = INVALID_SUBSCRIPTION_ID; private int mSubscriptionId = INVALID_SUBSCRIPTION_ID;
private AtomicReference<IMbmsDownloadService> mService = new AtomicReference<>(null); private AtomicReference<IMbmsDownloadService> mService = new AtomicReference<>(null);
private final IMbmsDownloadManagerCallback mCallback; private final MbmsDownloadManagerCallback mCallback;
private MbmsDownloadManager(Context context, IMbmsDownloadManagerCallback callback, int subId) { private MbmsDownloadManager(Context context, MbmsDownloadManagerCallback callback, int subId) {
mContext = context; mContext = context;
mCallback = callback; mCallback = callback;
mSubscriptionId = subId; mSubscriptionId = subId;
@@ -221,12 +221,12 @@ public class MbmsDownloadManager {
/** /**
* Create a new MbmsDownloadManager using the system default data subscription ID. * Create a new MbmsDownloadManager using the system default data subscription ID.
* See {@link #create(Context, IMbmsDownloadManagerCallback, int)} * See {@link #create(Context, MbmsDownloadManagerCallback, int)}
* *
* @hide * @hide
*/ */
public static MbmsDownloadManager create(Context context, public static MbmsDownloadManager create(Context context,
IMbmsDownloadManagerCallback listener) MbmsDownloadManagerCallback listener)
throws MbmsException { throws MbmsException {
return create(context, listener, SubscriptionManager.getDefaultSubscriptionId()); return create(context, listener, SubscriptionManager.getDefaultSubscriptionId());
} }
@@ -247,7 +247,7 @@ public class MbmsDownloadManager {
* @hide * @hide
*/ */
public static MbmsDownloadManager create(Context context, public static MbmsDownloadManager create(Context context,
IMbmsDownloadManagerCallback listener, int subscriptionId) MbmsDownloadManagerCallback listener, int subscriptionId)
throws MbmsException { throws MbmsException {
MbmsDownloadManager mdm = new MbmsDownloadManager(context, listener, subscriptionId); MbmsDownloadManager mdm = new MbmsDownloadManager(context, listener, subscriptionId);
mdm.bindAndInitialize(); mdm.bindAndInitialize();
@@ -261,11 +261,22 @@ public class MbmsDownloadManager {
public void onServiceConnected(ComponentName name, IBinder service) { public void onServiceConnected(ComponentName name, IBinder service) {
IMbmsDownloadService downloadService = IMbmsDownloadService downloadService =
IMbmsDownloadService.Stub.asInterface(service); IMbmsDownloadService.Stub.asInterface(service);
int result;
try { try {
downloadService.initialize(mSubscriptionId, mCallback); result = downloadService.initialize(mSubscriptionId, mCallback);
} catch (RemoteException e) { } catch (RemoteException e) {
Log.e(LOG_TAG, "Service died before initialization"); Log.e(LOG_TAG, "Service died before initialization");
return; return;
} catch (RuntimeException e) {
Log.e(LOG_TAG, "Runtime exception during initialization");
mCallback.error(
MbmsException.InitializationErrors.ERROR_UNABLE_TO_INITIALIZE,
e.toString());
return;
}
if (result != MbmsException.SUCCESS) {
mCallback.error(result, "Error returned during initialization");
return;
} }
mService.set(downloadService); mService.set(downloadService);
} }

View File

@@ -51,10 +51,10 @@ public class MbmsStreamingManager {
private int mSubscriptionId = INVALID_SUBSCRIPTION_ID; private int mSubscriptionId = INVALID_SUBSCRIPTION_ID;
/** @hide */ /** @hide */
private MbmsStreamingManager(Context context, MbmsStreamingManagerCallback listener, private MbmsStreamingManager(Context context, MbmsStreamingManagerCallback callback,
int subscriptionId) { int subscriptionId) {
mContext = context; mContext = context;
mCallbackToApp = listener; mCallbackToApp = callback;
mSubscriptionId = subscriptionId; mSubscriptionId = subscriptionId;
} }
@@ -66,14 +66,14 @@ public class MbmsStreamingManager {
* during the initialization or binding process. * during the initialization or binding process.
* *
* @param context The {@link Context} to use. * @param context The {@link Context} to use.
* @param listener A callback object on which you wish to receive results of asynchronous * @param callback A callback object on which you wish to receive results of asynchronous
* operations. * operations.
* @param subscriptionId The subscription ID to use. * @param subscriptionId The subscription ID to use.
*/ */
public static MbmsStreamingManager create(Context context, public static MbmsStreamingManager create(Context context,
MbmsStreamingManagerCallback listener, int subscriptionId) MbmsStreamingManagerCallback callback, int subscriptionId)
throws MbmsException { throws MbmsException {
MbmsStreamingManager manager = new MbmsStreamingManager(context, listener, subscriptionId); MbmsStreamingManager manager = new MbmsStreamingManager(context, callback, subscriptionId);
manager.bindAndInitialize(); manager.bindAndInitialize();
return manager; return manager;
} }
@@ -83,9 +83,9 @@ public class MbmsStreamingManager {
* See {@link #create(Context, MbmsStreamingManagerCallback, int)}. * See {@link #create(Context, MbmsStreamingManagerCallback, int)}.
*/ */
public static MbmsStreamingManager create(Context context, public static MbmsStreamingManager create(Context context,
MbmsStreamingManagerCallback listener) MbmsStreamingManagerCallback callback)
throws MbmsException { throws MbmsException {
return create(context, listener, SubscriptionManager.getDefaultSubscriptionId()); return create(context, callback, SubscriptionManager.getDefaultSubscriptionId());
} }
/** /**
@@ -195,11 +195,22 @@ public class MbmsStreamingManager {
public void onServiceConnected(ComponentName name, IBinder service) { public void onServiceConnected(ComponentName name, IBinder service) {
IMbmsStreamingService streamingService = IMbmsStreamingService streamingService =
IMbmsStreamingService.Stub.asInterface(service); IMbmsStreamingService.Stub.asInterface(service);
int result;
try { try {
streamingService.initialize(mCallbackToApp, mSubscriptionId); result = streamingService.initialize(mCallbackToApp, mSubscriptionId);
} catch (RemoteException e) { } catch (RemoteException e) {
Log.e(LOG_TAG, "Service died before initialization"); Log.e(LOG_TAG, "Service died before initialization");
return; return;
} catch (RuntimeException e) {
Log.e(LOG_TAG, "Runtime exception during initialization");
mCallbackToApp.error(
MbmsException.InitializationErrors.ERROR_UNABLE_TO_INITIALIZE,
e.toString());
return;
}
if (result != MbmsException.SUCCESS) {
mCallbackToApp.error(result, "Error returned during initialization");
return;
} }
mService.set(streamingService); mService.set(streamingService);
} }

View File

@@ -356,7 +356,7 @@ public class MbmsDownloadReceiver extends BroadcastReceiver {
intent.getParcelableExtra(MbmsDownloadManager.EXTRA_SERVICE_INFO); intent.getParcelableExtra(MbmsDownloadManager.EXTRA_SERVICE_INFO);
File tempFileDir = MbmsUtils.getEmbmsTempFileDirForService(context, File tempFileDir = MbmsUtils.getEmbmsTempFileDirForService(context,
serviceInfo.getServiceId()); serviceInfo.getServiceId());
List<Uri> filesInUse = final List<Uri> filesInUse =
intent.getParcelableArrayListExtra(MbmsDownloadManager.EXTRA_TEMP_FILES_IN_USE); intent.getParcelableArrayListExtra(MbmsDownloadManager.EXTRA_TEMP_FILES_IN_USE);
File[] filesToDelete = tempFileDir.listFiles(new FileFilter() { File[] filesToDelete = tempFileDir.listFiles(new FileFilter() {
@Override @Override

View File

@@ -50,9 +50,14 @@ public class StreamingService {
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
@IntDef({REASON_BY_USER_REQUEST, REASON_END_OF_SESSION, REASON_FREQUENCY_CONFLICT, @IntDef({REASON_BY_USER_REQUEST, REASON_END_OF_SESSION, REASON_FREQUENCY_CONFLICT,
REASON_OUT_OF_MEMORY, REASON_NOT_CONNECTED_TO_HOMECARRIER_LTE, REASON_OUT_OF_MEMORY, REASON_NOT_CONNECTED_TO_HOMECARRIER_LTE,
REASON_LEFT_MBMS_BROADCAST_AREA}) REASON_LEFT_MBMS_BROADCAST_AREA, REASON_NONE})
public @interface StreamingStateChangeReason {} public @interface StreamingStateChangeReason {}
/**
* Indicates that the middleware does not have a reason to provide for the state change.
*/
public static final int REASON_NONE = 0;
/** /**
* State changed due to a call to {@link #stopStreaming()} or * State changed due to a call to {@link #stopStreaming()} or
* {@link android.telephony.MbmsStreamingManager#startStreaming(StreamingServiceInfo, StreamingServiceCallback)} * {@link android.telephony.MbmsStreamingManager#startStreaming(StreamingServiceInfo, StreamingServiceCallback)}
@@ -167,7 +172,7 @@ public class StreamingService {
* *
* This may throw a {@link MbmsException} with the error code * This may throw a {@link MbmsException} with the error code
* {@link MbmsException#ERROR_MIDDLEWARE_LOST} * {@link MbmsException#ERROR_MIDDLEWARE_LOST}
* May also throw an {@link IllegalArgumentException} or an {@link IllegalStateException} * May also throw an {@link IllegalStateException}
*/ */
public void dispose() throws MbmsException { public void dispose() throws MbmsException {
if (mService == null) { if (mService == null) {
@@ -179,6 +184,8 @@ public class StreamingService {
} catch (RemoteException e) { } catch (RemoteException e) {
Log.w(LOG_TAG, "Remote process died"); Log.w(LOG_TAG, "Remote process died");
throw new MbmsException(MbmsException.ERROR_MIDDLEWARE_LOST); throw new MbmsException(MbmsException.ERROR_MIDDLEWARE_LOST);
} catch (IllegalArgumentException e) {
throw new IllegalStateException("StreamingService state inconsistent with middleware");
} finally { } finally {
mService = null; mService = null;
} }

View File

@@ -28,7 +28,7 @@ import android.telephony.mbms.IDownloadProgressListener;
*/ */
interface IMbmsDownloadService interface IMbmsDownloadService
{ {
void initialize(int subId, IMbmsDownloadManagerCallback listener); int initialize(int subId, IMbmsDownloadManagerCallback listener);
int getFileServices(int subId, in List<String> serviceClasses); int getFileServices(int subId, in List<String> serviceClasses);

View File

@@ -26,7 +26,7 @@ import android.telephony.mbms.StreamingServiceInfo;
*/ */
interface IMbmsStreamingService interface IMbmsStreamingService
{ {
void initialize(IMbmsStreamingManagerCallback listener, int subId); int initialize(IMbmsStreamingManagerCallback listener, int subId);
int getStreamingServices(int subId, in List<String> serviceClasses); int getStreamingServices(int subId, in List<String> serviceClasses);

View File

@@ -36,16 +36,21 @@ public class MbmsDownloadServiceBase extends IMbmsDownloadService.Stub {
/** /**
* Initialize the download service for this app and subId, registering the listener. * Initialize the download service for this app and subId, registering the listener.
* *
* Exceptions should not be thrown through this method -- this method is called from within a * May throw an {@link IllegalArgumentException} or an {@link IllegalStateException}, which
* {@link android.content.ServiceConnection} defined by the framework, so apps have no way of * will be intercepted and passed to the app as
* catching them. Call {@link IMbmsDownloadManagerCallback#error(int, String)} instead. * {@link android.telephony.mbms.MbmsException.InitializationErrors#ERROR_UNABLE_TO_INITIALIZE}
*
* May return any value from {@link android.telephony.mbms.MbmsException.InitializationErrors}
* or {@link MbmsException#SUCCESS}. Non-successful error codes will be passed to the app via
* {@link IMbmsDownloadManagerCallback#error(int, String)}.
* *
* @param listener The callback to use to communicate with the app. * @param listener The callback to use to communicate with the app.
* @param subscriptionId The subscription ID to use. * @param subscriptionId The subscription ID to use.
*/ */
@Override @Override
public void initialize(int subscriptionId, public int initialize(int subscriptionId,
IMbmsDownloadManagerCallback listener) throws RemoteException { IMbmsDownloadManagerCallback listener) throws RemoteException {
return 0;
} }
/** /**

View File

@@ -33,17 +33,21 @@ public class MbmsStreamingServiceBase extends IMbmsStreamingService.Stub {
/** /**
* Initialize streaming service for this app and subId, registering the listener. * Initialize streaming service for this app and subId, registering the listener.
* *
* Exceptions should not be thrown through this method -- this method is called from within a * May throw an {@link IllegalArgumentException} or an {@link IllegalStateException}, which
* {@link android.content.ServiceConnection} defined by the framework, so apps have no way of * will be intercepted and passed to the app as
* catching them. Call {@link IMbmsStreamingManagerCallback#error(int, String)} instead. * {@link android.telephony.mbms.MbmsException.InitializationErrors#ERROR_UNABLE_TO_INITIALIZE}
*
* May return any value from {@link android.telephony.mbms.MbmsException.InitializationErrors}
* or {@link MbmsException#SUCCESS}. Non-successful error codes will be passed to the app via
* {@link IMbmsStreamingManagerCallback#error(int, String)}.
* *
* @param listener The callback to use to communicate with the app. * @param listener The callback to use to communicate with the app.
* @param subscriptionId The subscription ID to use. * @param subscriptionId The subscription ID to use.
*/ */
@Override @Override
public void initialize(IMbmsStreamingManagerCallback listener, int subscriptionId) public int initialize(IMbmsStreamingManagerCallback listener, int subscriptionId)
throws RemoteException { throws RemoteException {
return; return 0;
} }
/** /**