Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 465f2916 authored by Hall Liu's avatar Hall Liu Committed by Gerrit Code Review
Browse files

Merge "Add feature flag and EMBMS bug fixes"

parents a003d996 c6703d9a
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -10846,6 +10846,7 @@ package android.content.pm {
    field public static final java.lang.String FEATURE_TELEPHONY = "android.hardware.telephony";
    field public static final java.lang.String FEATURE_TELEPHONY_CDMA = "android.hardware.telephony.cdma";
    field public static final java.lang.String FEATURE_TELEPHONY_GSM = "android.hardware.telephony.gsm";
    field public static final java.lang.String FEATURE_TELEPHONY_MBMS = "android.hardware.telephony.mbms";
    field public static final deprecated java.lang.String FEATURE_TELEVISION = "android.hardware.type.television";
    field public static final java.lang.String FEATURE_TOUCHSCREEN = "android.hardware.touchscreen";
    field public static final java.lang.String FEATURE_TOUCHSCREEN_MULTITOUCH = "android.hardware.touchscreen.multitouch";
@@ -40162,19 +40163,19 @@ package android.telephony {
  }
  public class MbmsDownloadSession implements java.lang.AutoCloseable {
    method public void cancelDownload(android.telephony.mbms.DownloadRequest);
    method public int cancelDownload(android.telephony.mbms.DownloadRequest);
    method public void close();
    method public static android.telephony.MbmsDownloadSession create(android.content.Context, android.telephony.mbms.MbmsDownloadSessionCallback, android.os.Handler);
    method public static android.telephony.MbmsDownloadSession create(android.content.Context, android.telephony.mbms.MbmsDownloadSessionCallback, int, android.os.Handler);
    method public void download(android.telephony.mbms.DownloadRequest);
    method public int download(android.telephony.mbms.DownloadRequest);
    method public int getDownloadStatus(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo);
    method public java.io.File getTempFileRootDirectory();
    method public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads();
    method public void registerStateCallback(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStateCallback, android.os.Handler);
    method public int registerStateCallback(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStateCallback, android.os.Handler);
    method public void requestUpdateFileServices(java.util.List<java.lang.String>);
    method public void resetDownloadKnowledge(android.telephony.mbms.DownloadRequest);
    method public void setTempFileRootDirectory(java.io.File);
    method public void unregisterStateCallback(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStateCallback);
    method public int unregisterStateCallback(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStateCallback);
    field public static final java.lang.String DEFAULT_TOP_LEVEL_TEMP_DIRECTORY = "androidMbmsTempFileRoot";
    field public static final java.lang.String EXTRA_MBMS_COMPLETED_FILE_URI = "android.telephony.extra.MBMS_COMPLETED_FILE_URI";
    field public static final java.lang.String EXTRA_MBMS_DOWNLOAD_REQUEST = "android.telephony.extra.MBMS_DOWNLOAD_REQUEST";
+7 −0
Original line number Diff line number Diff line
@@ -2084,6 +2084,13 @@ public abstract class PackageManager {
    @SdkConstant(SdkConstantType.FEATURE)
    public static final String FEATURE_TELEPHONY_EUICC = "android.hardware.telephony.euicc";

    /**
     * Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device
     * supports cell-broadcast reception using the MBMS APIs.
     */
    @SdkConstant(SdkConstantType.FEATURE)
    public static final String FEATURE_TELEPHONY_MBMS = "android.hardware.telephony.mbms";

    /**
     * Feature for {@link #getSystemAvailableFeatures} and
     * {@link #hasSystemFeature}: The device supports connecting to USB devices
+31 −18
Original line number Diff line number Diff line
@@ -502,8 +502,10 @@ public class MbmsDownloadSession implements AutoCloseable {
     * Asynchronous errors through the callback may include any error not specific to the
     * streaming use-case.
     * @param request The request that specifies what should be downloaded.
     * @return {@link MbmsErrors#SUCCESS} if the operation did not encounter a synchronous error,
     * and some other error code otherwise.
     */
    public void download(@NonNull DownloadRequest request) {
    public int download(@NonNull DownloadRequest request) {
        IMbmsDownloadService downloadService = mService.get();
        if (downloadService == null) {
            throw new IllegalStateException("Middleware not yet bound");
@@ -519,13 +521,16 @@ public class MbmsDownloadSession implements AutoCloseable {
            setTempFileRootDirectory(tempRootDirectory);
        }

        writeDownloadRequestToken(request);
        try {
            downloadService.download(request);
            int result = downloadService.download(request);
            if (result == MbmsErrors.SUCCESS) {
                writeDownloadRequestToken(request);
            }
            return result;
        } catch (RemoteException e) {
            mService.set(null);
            sIsInitialized.set(false);
            sendErrorToApp(MbmsErrors.ERROR_MIDDLEWARE_LOST, null);
            return MbmsErrors.ERROR_MIDDLEWARE_LOST;
        }
    }

@@ -565,8 +570,10 @@ public class MbmsDownloadSession implements AutoCloseable {
     * @param callback The callback that should be called when the middleware has information to
     *                 share on the download.
     * @param handler The {@link Handler} on which calls to {@code callback} should be enqueued on.
     * @return {@link MbmsErrors#SUCCESS} if the operation did not encounter a synchronous error,
     * and some other error code otherwise.
     */
    public void registerStateCallback(@NonNull DownloadRequest request,
    public int registerStateCallback(@NonNull DownloadRequest request,
            @NonNull DownloadStateCallback callback, @NonNull Handler handler) {
        IMbmsDownloadService downloadService = mService.get();
        if (downloadService == null) {
@@ -583,16 +590,15 @@ public class MbmsDownloadSession implements AutoCloseable {
                if (result == MbmsErrors.DownloadErrors.ERROR_UNKNOWN_DOWNLOAD_REQUEST) {
                    throw new IllegalArgumentException("Unknown download request.");
                }
                sendErrorToApp(result, null);
                return;
                return result;
            }
        } catch (RemoteException e) {
            mService.set(null);
            sIsInitialized.set(false);
            sendErrorToApp(MbmsErrors.ERROR_MIDDLEWARE_LOST, null);
            return;
            return MbmsErrors.ERROR_MIDDLEWARE_LOST;
        }
        mInternalDownloadCallbacks.put(callback, internalCallback);
        return MbmsErrors.SUCCESS;
    }

    /**
@@ -606,8 +612,10 @@ public class MbmsDownloadSession implements AutoCloseable {
     *
     * @param request The {@link DownloadRequest} provided during registration
     * @param callback The callback provided during registration.
     * @return {@link MbmsErrors#SUCCESS} if the operation did not encounter a synchronous error,
     * and some other error code otherwise.
     */
    public void unregisterStateCallback(@NonNull DownloadRequest request,
    public int unregisterStateCallback(@NonNull DownloadRequest request,
            @NonNull DownloadStateCallback callback) {
        try {
            IMbmsDownloadService downloadService = mService.get();
@@ -617,6 +625,9 @@ public class MbmsDownloadSession implements AutoCloseable {

            InternalDownloadStateCallback internalCallback =
                    mInternalDownloadCallbacks.get(callback);
            if (internalCallback == null) {
                throw new IllegalArgumentException("Provided callback was never registered");
            }

            try {
                int result = downloadService.unregisterStateCallback(request, internalCallback);
@@ -624,12 +635,12 @@ public class MbmsDownloadSession implements AutoCloseable {
                    if (result == MbmsErrors.DownloadErrors.ERROR_UNKNOWN_DOWNLOAD_REQUEST) {
                        throw new IllegalArgumentException("Unknown download request.");
                    }
                    sendErrorToApp(result, null);
                    return result;
                }
            } catch (RemoteException e) {
                mService.set(null);
                sIsInitialized.set(false);
                sendErrorToApp(MbmsErrors.ERROR_MIDDLEWARE_LOST, null);
                return MbmsErrors.ERROR_MIDDLEWARE_LOST;
            }
        } finally {
            InternalDownloadStateCallback internalCallback =
@@ -638,6 +649,7 @@ public class MbmsDownloadSession implements AutoCloseable {
                internalCallback.stop();
            }
        }
        return MbmsErrors.SUCCESS;
    }

    /**
@@ -647,8 +659,10 @@ public class MbmsDownloadSession implements AutoCloseable {
     * this method will throw an {@link IllegalArgumentException}.
     *
     * @param downloadRequest The download request that you wish to cancel.
     * @return {@link MbmsErrors#SUCCESS} if the operation did not encounter a synchronous error,
     * and some other error code otherwise.
     */
    public void cancelDownload(@NonNull DownloadRequest downloadRequest) {
    public int cancelDownload(@NonNull DownloadRequest downloadRequest) {
        IMbmsDownloadService downloadService = mService.get();
        if (downloadService == null) {
            throw new IllegalStateException("Middleware not yet bound");
@@ -660,16 +674,15 @@ public class MbmsDownloadSession implements AutoCloseable {
                if (result == MbmsErrors.DownloadErrors.ERROR_UNKNOWN_DOWNLOAD_REQUEST) {
                    throw new IllegalArgumentException("Unknown download request.");
                }
                sendErrorToApp(result, null);
                return;
            } else {
                deleteDownloadRequestToken(downloadRequest);
            }
            return result;
        } catch (RemoteException e) {
            mService.set(null);
            sIsInitialized.set(false);
            sendErrorToApp(MbmsErrors.ERROR_MIDDLEWARE_LOST, null);
            return;
            return MbmsErrors.ERROR_MIDDLEWARE_LOST;
        }
        deleteDownloadRequestToken(downloadRequest);
    }

    /**
+2 −2
Original line number Diff line number Diff line
@@ -51,8 +51,8 @@ public class ServiceInfo {
    /** @hide */
    public ServiceInfo(Map<Locale, String> newNames, String newClassName, List<Locale> newLocales,
            String newServiceId, Date start, Date end) {
        if (newNames == null || newNames.isEmpty() || TextUtils.isEmpty(newClassName)
                || newLocales == null || newLocales.isEmpty() || TextUtils.isEmpty(newServiceId)
        if (newNames == null || newClassName == null
                || newLocales == null || newServiceId == null
                || start == null || end == null) {
            throw new IllegalArgumentException("Bad ServiceInfo construction");
        }