From 2d9b4faedc17e44e08cd255540c2adba2e1e1c92 Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Tue, 2 Apr 2019 10:49:35 -0700 Subject: [PATCH] Passing ServiceState as byte array into ServiceStateProvider This allows the provider to reconstruct the service state object correctly. Also we can get rid of all the 'set' methods in ServiceState, which we'd like to remove in the future. Test: Manual Bug: 129768354 Merged-In: I835d30e544b3ed49d5d0b6b1ca981a81e3ee2039 Change-Id: I835d30e544b3ed49d5d0b6b1ca981a81e3ee2039 (cherry picked from commit 2e273b2f0f160487b75f5386a2a0cd688f095727) --- telephony/java/android/provider/Telephony.java | 37 +++++++++++--------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/telephony/java/android/provider/Telephony.java b/telephony/java/android/provider/Telephony.java index 983d1341400e..6dd683a1376e 100644 --- a/telephony/java/android/provider/Telephony.java +++ b/telephony/java/android/provider/Telephony.java @@ -35,6 +35,7 @@ import android.database.Cursor; import android.database.sqlite.SqliteWrapper; import android.net.Uri; import android.os.Build; +import android.os.Parcel; import android.telephony.Rlog; import android.telephony.ServiceState; import android.telephony.SmsMessage; @@ -4066,32 +4067,24 @@ public final class Telephony { */ public static ContentValues getContentValuesForServiceState(ServiceState state) { ContentValues values = new ContentValues(); - values.put(VOICE_REG_STATE, state.getVoiceRegState()); - values.put(DATA_REG_STATE, state.getDataRegState()); - values.put(VOICE_ROAMING_TYPE, state.getVoiceRoamingType()); - values.put(DATA_ROAMING_TYPE, state.getDataRoamingType()); - values.put(VOICE_OPERATOR_ALPHA_LONG, state.getVoiceOperatorAlphaLong()); - values.put(VOICE_OPERATOR_ALPHA_SHORT, state.getVoiceOperatorAlphaShort()); - values.put(VOICE_OPERATOR_NUMERIC, state.getVoiceOperatorNumeric()); - values.put(DATA_OPERATOR_ALPHA_LONG, state.getDataOperatorAlphaLong()); - values.put(DATA_OPERATOR_ALPHA_SHORT, state.getDataOperatorAlphaShort()); - values.put(DATA_OPERATOR_NUMERIC, state.getDataOperatorNumeric()); - values.put(IS_MANUAL_NETWORK_SELECTION, state.getIsManualSelection()); - values.put(RIL_VOICE_RADIO_TECHNOLOGY, state.getRilVoiceRadioTechnology()); - values.put(RIL_DATA_RADIO_TECHNOLOGY, state.getRilDataRadioTechnology()); - values.put(CSS_INDICATOR, state.getCssIndicator()); - values.put(NETWORK_ID, state.getCdmaNetworkId()); - values.put(SYSTEM_ID, state.getCdmaSystemId()); - values.put(CDMA_ROAMING_INDICATOR, state.getCdmaRoamingIndicator()); - values.put(CDMA_DEFAULT_ROAMING_INDICATOR, state.getCdmaDefaultRoamingIndicator()); - values.put(CDMA_ERI_ICON_INDEX, state.getCdmaEriIconIndex()); - values.put(CDMA_ERI_ICON_MODE, state.getCdmaEriIconMode()); - values.put(IS_EMERGENCY_ONLY, state.isEmergencyOnly()); - values.put(IS_USING_CARRIER_AGGREGATION, state.isUsingCarrierAggregation()); + final Parcel p = Parcel.obtain(); + state.writeToParcel(p, 0); + // Turn the parcel to byte array. Safe to do this because the content values were never + // written into a persistent storage. ServiceStateProvider keeps values in the memory. + values.put(SERVICE_STATE, p.marshall()); return values; } /** + * The current service state. + * + * This is the entire {@link ServiceState} object in byte array. + * + * @hide + */ + public static final String SERVICE_STATE = "service_state"; + + /** * An integer value indicating the current voice service state. *

* Valid values: {@link ServiceState#STATE_IN_SERVICE}, -- 2.11.0