diff options
| author | 2017-07-25 13:34:36 -0700 | |
|---|---|---|
| committer | 2017-09-19 12:47:51 -0700 | |
| commit | 49b54d64ca5c2aa08021c2ad747597cdd4486ad8 (patch) | |
| tree | ec7be76596167702f5301ec8f3d38b2ce9caf90f | |
| parent | 14b86be8da0166a1594b67cec6e584bfb7ec2a12 (diff) | |
Convert ICarrierService to oneway.
Change the carrier config AIDL used by CarrierService to a oneway call.
This is the IPC used to fetch carrier config bundles from carrier apps.
Converting to oneway allows CarrierConfigLoader to be non-blocking while
it fetches config.
Bug: 63176442
Test: runtest carrierconfig-unit & manual
Change-Id: Iceaf0446321f719011f67897398da7d5998c5fc7
| -rw-r--r-- | core/java/android/service/carrier/CarrierService.java | 26 | ||||
| -rw-r--r-- | core/java/android/service/carrier/ICarrierService.aidl | 3 |
2 files changed, 25 insertions, 4 deletions
diff --git a/core/java/android/service/carrier/CarrierService.java b/core/java/android/service/carrier/CarrierService.java index 813acc232289..2707f1467bcf 100644 --- a/core/java/android/service/carrier/CarrierService.java +++ b/core/java/android/service/carrier/CarrierService.java @@ -17,10 +17,13 @@ package android.service.carrier; import android.annotation.CallSuper; import android.app.Service; import android.content.Intent; +import android.os.Bundle; import android.os.IBinder; import android.os.PersistableBundle; import android.os.RemoteException; +import android.os.ResultReceiver; import android.os.ServiceManager; +import android.util.Log; import com.android.internal.telephony.ITelephonyRegistry; @@ -48,6 +51,8 @@ import com.android.internal.telephony.ITelephonyRegistry; */ public abstract class CarrierService extends Service { + private static final String LOG_TAG = "CarrierService"; + public static final String CARRIER_SERVICE_INTERFACE = "android.service.carrier.CarrierService"; private static ITelephonyRegistry sRegistry; @@ -133,11 +138,26 @@ public abstract class CarrierService extends Service { /** * A wrapper around ICarrierService that forwards calls to implementations of * {@link CarrierService}. + * @hide */ - private class ICarrierServiceWrapper extends ICarrierService.Stub { + public class ICarrierServiceWrapper extends ICarrierService.Stub { + /** @hide */ + public static final int RESULT_OK = 0; + /** @hide */ + public static final int RESULT_ERROR = 1; + /** @hide */ + public static final String KEY_CONFIG_BUNDLE = "config_bundle"; + @Override - public PersistableBundle getCarrierConfig(CarrierIdentifier id) { - return CarrierService.this.onLoadConfig(id); + public void getCarrierConfig(CarrierIdentifier id, ResultReceiver result) { + try { + Bundle data = new Bundle(); + data.putParcelable(KEY_CONFIG_BUNDLE, CarrierService.this.onLoadConfig(id)); + result.send(RESULT_OK, data); + } catch (Exception e) { + Log.e(LOG_TAG, "Error in onLoadConfig: " + e.getMessage(), e); + result.send(RESULT_ERROR, null); + } } } } diff --git a/core/java/android/service/carrier/ICarrierService.aidl b/core/java/android/service/carrier/ICarrierService.aidl index 4c875851cfc8..ac6f9614d8f5 100644 --- a/core/java/android/service/carrier/ICarrierService.aidl +++ b/core/java/android/service/carrier/ICarrierService.aidl @@ -17,6 +17,7 @@ package android.service.carrier; import android.os.PersistableBundle; +import android.os.ResultReceiver; import android.service.carrier.CarrierIdentifier; /** @@ -28,5 +29,5 @@ import android.service.carrier.CarrierIdentifier; interface ICarrierService { /** @see android.service.carrier.CarrierService#onLoadConfig */ - PersistableBundle getCarrierConfig(in CarrierIdentifier id); + oneway void getCarrierConfig(in CarrierIdentifier id, in ResultReceiver result); } |