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

Commit ee2afb34 authored by Shuo Qian's avatar Shuo Qian
Browse files

Add test function for emergency number db update

1) get emergency number db version
2) override emergency db file partition

Test: atest TelephonyHostTest#testEmergencyNumberDb
(Though the condition is RVC, I manually triggered all the running with QT build,
 and ensured each Assert is hit)
https://paste.googleplex.com/4679407325151232
Bug: 136027884

Change-Id: I3a2f5a668d84804c80f94e2227c8e0d6c51e5153
parent 92ce228c
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1735,6 +1735,11 @@ public class GsmCdmaPhone extends Phone {
        return mCarrierResolver.getCarrierListVersion();
    }

    @Override
    public int getEmergencyNumberDbVersion() {
        return getEmergencyNumberTracker().getEmergencyNumberDbVersion();
    }

    @Override
    public void resetCarrierKeysForImsiEncryption() {
        mCIM.resetCarrierKeysForImsiEncryption(mContext, mPhoneId);
+4 −0
Original line number Diff line number Diff line
@@ -3425,6 +3425,10 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
        return TelephonyManager.UNKNOWN_CARRIER_ID_LIST_VERSION;
    }

    public int getEmergencyNumberDbVersion() {
        return TelephonyManager.INVALID_EMERGENCY_NUMBER_DB_VERSION;
    }

    public void resolveSubscriptionCarrierId(String simState) {
    }

+47 −10
Original line number Diff line number Diff line
@@ -75,7 +75,8 @@ public class EmergencyNumberTracker extends Handler {
    private static final String EMERGENCY_NUMBER_DB_OTA_FILE_NAME = "emergency_number_db";
    private static final String EMERGENCY_NUMBER_DB_OTA_FILE_PATH =
            "misc/emergencynumberdb/" + EMERGENCY_NUMBER_DB_OTA_FILE_NAME;

    private File mEmergencyNumberDbOtaFilePath = new File(Environment.getDataDirectory(),
            EMERGENCY_NUMBER_DB_OTA_FILE_PATH);

    /** @hide */
    public static boolean DBG = false;
@@ -124,6 +125,8 @@ public class EmergencyNumberTracker extends Handler {
    private static final int EVENT_UPDATE_EMERGENCY_NUMBER_PREFIX = 4;
    /** Event indicating the update for the OTA emergency number database. */
    private static final int EVENT_UPDATE_OTA_EMERGENCY_NUMBER_DB = 5;
    /** Event indicating the override for the test OTA emergency number database. */
    private static final int EVENT_OVERRIDE_TEST_OTA_EMERGENCY_NUMBER_DB_FILE_PATH = 6;

    private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
        @Override
@@ -153,11 +156,6 @@ public class EmergencyNumberTracker extends Handler {
                    updateEmergencyCountryIsoAllPhones(countryIso);
                }
                return;
            } else if (intent.getAction().equals(
                    TelephonyManager.ACTION_OTA_EMERGENCY_NUMBER_DB_INSTALLED)) {
                logd("ACTION_OTA_EMERGENCY_NUMBER_DB_INSTALLED: triggered");
                updateOtaEmergencyNumberDatabase();
                return;
            }
        }
    };
@@ -183,8 +181,6 @@ public class EmergencyNumberTracker extends Handler {
                    CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
            // Receive Telephony Network Country Changes
            filter.addAction(TelephonyManager.ACTION_NETWORK_COUNTRY_CHANGED);
            // Receive Emergency Number OTA Update Changes
            filter.addAction(TelephonyManager.ACTION_OTA_EMERGENCY_NUMBER_DB_INSTALLED);

            mPhone.getContext().registerReceiver(mIntentReceiver, filter);
        } else {
@@ -244,6 +240,14 @@ public class EmergencyNumberTracker extends Handler {
            case EVENT_UPDATE_OTA_EMERGENCY_NUMBER_DB:
                updateOtaEmergencyNumberListDatabaseAndNotify();
                break;
            case EVENT_OVERRIDE_TEST_OTA_EMERGENCY_NUMBER_DB_FILE_PATH:
                if (msg.obj == null) {
                    loge("EVENT_OVERRIDE_TEST_OTA_EMERGENCY_NUMBER_DB_FILE_PATH:"
                            + " Result from otaFilePath is null.");
                } else {
                    overrideTestOtaEmergencyNumberDbFilePath((String) msg.obj);
                }
                break;
        }
    }

@@ -341,6 +345,16 @@ public class EmergencyNumberTracker extends Handler {
        this.obtainMessage(EVENT_UPDATE_OTA_EMERGENCY_NUMBER_DB).sendToTarget();
    }

    /**
     * Override the test OTA Emergency Number database file path.
     *
     * @hide
     */
    public void updateTestOtaEmergencyNumberDbFilePath(String otaFilePath) {
        this.obtainMessage(
                EVENT_OVERRIDE_TEST_OTA_EMERGENCY_NUMBER_DB_FILE_PATH, otaFilePath).sendToTarget();
    }

    private EmergencyNumber convertEmergencyNumberFromEccInfo(EccInfo eccInfo, String countryIso) {
        String phoneNumber = eccInfo.phoneNumber.trim();
        if (phoneNumber.isEmpty()) {
@@ -441,8 +455,7 @@ public class EmergencyNumberTracker extends Handler {
        List<EmergencyNumber> updatedOtaEmergencyNumberList = new ArrayList<>();
        try {
            inputStream = new BufferedInputStream(
                    new FileInputStream(new File(Environment.getDataDirectory(),
                            EMERGENCY_NUMBER_DB_OTA_FILE_PATH)));
                    new FileInputStream(mEmergencyNumberDbOtaFilePath));
            allEccMessages = ProtobufEccData.AllInfo.parseFrom(readInputStreamToByteArray(
                    new GZIPInputStream(inputStream)));
            logd(mCountryIso + " ota emergency database is loaded. Ver: " + otaDatabaseVersion);
@@ -539,6 +552,26 @@ public class EmergencyNumberTracker extends Handler {
        notifyEmergencyNumberList();
    }

    private void overrideTestOtaEmergencyNumberDbFilePath(String otaFilePath) {
        logd("overrideTestOtaEmergencyNumberDbFilePath:" + otaFilePath);
        if (otaFilePath.equals("RESET")) {
            mEmergencyNumberDbOtaFilePath = new File(Environment.getDataDirectory(),
                    EMERGENCY_NUMBER_DB_OTA_FILE_PATH);
            return;
        }
        String[] otaFilePathParts = otaFilePath.split("@");
        if (otaFilePathParts.length != 2) {
            loge("overrideTestOtaEmergencyNumberDbFilePath: otaFilePath length error");
            return;
        }
        if (otaFilePathParts[0].equals("sdcard")) {
            mEmergencyNumberDbOtaFilePath = new File(
                    Environment.getExternalStorageDirectory(), otaFilePathParts[1]);
        } else {
            loge("overrideTestOtaEmergencyNumberDbFilePath: otaFilePath prefix error");
        }
    }

    private void updateOtaEmergencyNumberListDatabaseAndNotify() {
        logd("updateOtaEmergencyNumberListDatabaseAndNotify():"
                + " receiving Emegency Number database OTA update");
@@ -724,6 +757,10 @@ public class EmergencyNumberTracker extends Handler {
        return mCountryIso;
    }

    public int getEmergencyNumberDbVersion() {
        return mCurrentDatabaseVersion;
    }

    private synchronized void updateEmergencyCountryIso(String countryIso) {
        mCountryIso = countryIso;
    }
+5 −0
Original line number Diff line number Diff line
@@ -241,6 +241,11 @@ public class ImsPhone extends ImsPhoneBase {
        return mCurrentSubscriberUris;
    }

    @Override
    public int getEmergencyNumberDbVersion() {
        return getEmergencyNumberTracker().getEmergencyNumberDbVersion();
    }

    @Override
    public EmergencyNumberTracker getEmergencyNumberTracker() {
        return mDefaultPhone.getEmergencyNumberTracker();