From e05afb03c84e99d612be404c1e1f68ccf90e3235 Mon Sep 17 00:00:00 2001 From: Jonathan Basseri Date: Tue, 25 Jul 2017 13:34:36 -0700 Subject: 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 (cherry picked from commit 49b54d64ca5c2aa08021c2ad747597cdd4486ad8) Merged-in: Iceaf0446321f719011f67897398da7d5998c5fc7 Change-Id: I436f6c920f68f8bbc0fd66a5ff10676ed1529383 --- .../android/service/carrier/CarrierService.java | 26 +++++++++++++++++++--- .../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); } -- cgit v1.2.3-59-g8ed1b