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

Commit cf6f1952 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 13460502 from faf63e18 to 25Q3-release

Change-Id: I9a3e791d2cae1d92a1f939085773ac6c3b25e04a
parents f9c83775 faf63e18
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -27,6 +27,11 @@ message SatelliteConfigProto {
  optional int32 version = 1;
  repeated CarrierSupportedSatelliteServicesProto carrier_supported_satellite_services = 2;
  optional SatelliteRegionProto device_satellite_region = 3;
  optional CarrierRoamingConfigProto carrier_roaming_config = 4;
}

message CarrierRoamingConfigProto {
  optional int32 max_allowed_data_mode = 1;
}

message CarrierSupportedSatelliteServicesProto {
+52 −30
Original line number Diff line number Diff line
@@ -53,24 +53,29 @@ public class SatelliteConfig {
            "satelltie_access_config.json";
    private int mVersion;
    private Map<Integer, Map<String, Set<Integer>>> mSupportedServicesPerCarrier;
    private Integer mCarrierRoamingMaxAllowedDataMode;
    private List<String> mSatelliteRegionCountryCodes;
    private Boolean mIsSatelliteRegionAllowed;
    private File mSatS2File;
    private File mSatelliteAccessConfigJsonFile;
    private SatelliteConfigData.SatelliteConfigProto mConfigData;

    public SatelliteConfig(SatelliteConfigData.SatelliteConfigProto configData) {
    public SatelliteConfig(@NonNull SatelliteConfigData.SatelliteConfigProto configData) {
        mConfigData = configData;
        mVersion = mConfigData.version;
        mSupportedServicesPerCarrier = getCarrierSupportedSatelliteServices();
        if (mConfigData.carrierRoamingConfig != null) {
            mCarrierRoamingMaxAllowedDataMode = mConfigData.carrierRoamingConfig.maxAllowedDataMode;
        }
        mSatelliteRegionCountryCodes = List.of(
                mConfigData.deviceSatelliteRegion.countryCodes);
        mIsSatelliteRegionAllowed = mConfigData.deviceSatelliteRegion.isAllowed;
        mSatS2File = null;
        mSatelliteAccessConfigJsonFile = null;

        Log.d(TAG, "mVersion:" + mVersion + " | "
        logd("mVersion:" + mVersion + " | "
                + "mSupportedServicesPerCarrier:" + mSupportedServicesPerCarrier + " | "
                + "mCarrierRoamingMaxAllowedDataMode:" + mCarrierRoamingMaxAllowedDataMode + " | "
                + "mSatelliteRegionCountryCodes:"
                + String.join(",", mSatelliteRegionCountryCodes) + " | "
                + "mIsSatelliteRegionAllowed:" + mIsSatelliteRegionAllowed + " | "
@@ -105,6 +110,20 @@ public class SatelliteConfig {
        return carrierToServicesMap;
    }

    /**
     * @return An {@link Integer} representing the value of
     * {@code mCarrierRoamingMaxAllowedDataMode}. Returns {@code null} if it is not set,
     * which usually implies missing or incomplete configuration
     */
    @Nullable
    public Integer getSatelliteMaxAllowedDataMode() {
        if (mCarrierRoamingMaxAllowedDataMode != null) {
            return mCarrierRoamingMaxAllowedDataMode;
        }
        logd("mCarrierRoamingMaxAllowedDataMode : mConfigData is null or no config data");
        return null;
    }

    /**
     * Get satellite plmns for carrier
     *
@@ -120,7 +139,7 @@ public class SatelliteConfig {
                return new ArrayList<>(satelliteCapabilitiesMap.keySet());
            }
        }
        Log.d(TAG, "getAllSatellitePlmnsForCarrier : mConfigData is null or no config data");
        logd("getAllSatellitePlmnsForCarrier : mConfigData is null or no config data");
        return new ArrayList<>();
    }

@@ -139,10 +158,10 @@ public class SatelliteConfig {
            if (satelliteCapaMap != null) {
                return satelliteCapaMap;
            } else {
                Log.d(TAG, "No supported services found for carrier=" + carrierId);
                logd("No supported services found for carrier=" + carrierId);
            }
        } else {
            Log.d(TAG, "mSupportedServicesPerCarrier is null");
            logd("mSupportedServicesPerCarrier is null");
        }
        return new HashMap<>();
    }
@@ -168,7 +187,7 @@ public class SatelliteConfig {
        if (mSatelliteRegionCountryCodes != null) {
            return mSatelliteRegionCountryCodes;
        }
        Log.d(TAG, "getDeviceSatelliteCountryCodes : mConfigData is null or no config data");
        logd("getDeviceSatelliteCountryCodes : mConfigData is null or no config data");
        return new ArrayList<>();
    }

@@ -178,7 +197,7 @@ public class SatelliteConfig {
    @Nullable
    public Boolean isSatelliteDataForAllowedRegion() {
        if (mIsSatelliteRegionAllowed == null) {
            Log.d(TAG, "getIsSatelliteRegionAllowed : mConfigData is null or no config data");
            logd("getIsSatelliteRegionAllowed : mConfigData is null or no config data");
        }
        return mIsSatelliteRegionAllowed;
    }
@@ -191,12 +210,12 @@ public class SatelliteConfig {
    @Nullable
    public File getSatelliteS2CellFile(@Nullable Context context) {
        if (context == null) {
            Log.d(TAG, "getSatelliteS2CellFile : context is null");
            logd("getSatelliteS2CellFile : context is null");
            return null;
        }

        if (isFileExist(mSatS2File)) {
            Log.d(TAG, "File mSatS2File is already exist");
            logd("File mSatS2File is already exist");
            return mSatS2File;
        }

@@ -205,7 +224,7 @@ public class SatelliteConfig {
                    context, mConfigData.deviceSatelliteRegion.s2CellFile, S2_CELL_FILE_NAME);
            return mSatS2File;
        }
        Log.d(TAG, "getSatelliteS2CellFile: "
        logd("getSatelliteS2CellFile: "
                + "mConfigData is null or mConfigData.deviceSatelliteRegion is null");
        return null;
    }
@@ -217,12 +236,12 @@ public class SatelliteConfig {
    @Nullable
    public File getSatelliteAccessConfigJsonFile(@Nullable Context context) {
        if (context == null) {
            Log.d(TAG, "getSatelliteAccessConfigJsonFile : context is null");
            logd("getSatelliteAccessConfigJsonFile : context is null");
            return null;
        }

        if (isFileExist(mSatelliteAccessConfigJsonFile)) {
            Log.d(TAG, "File mSatelliteAccessConfigJsonFile is already exist");
            logd("File mSatelliteAccessConfigJsonFile is already exist");
            return mSatelliteAccessConfigJsonFile;
        }

@@ -232,7 +251,7 @@ public class SatelliteConfig {
                    SATELLITE_ACCESS_CONFIG_JSON_FILE_NAME);
            return mSatelliteAccessConfigJsonFile;
        }
        Log.d(TAG, "mSatelliteAccessConfigJsonFile: "
        logd("mSatelliteAccessConfigJsonFile: "
                + "mConfigData is null or mConfigData.deviceSatelliteRegion is null");
        return null;
    }
@@ -244,7 +263,7 @@ public class SatelliteConfig {
     */
    @NonNull
    public int getSatelliteConfigDataVersion() {
        Log.d(TAG, "getSatelliteConfigDataVersion: mVersion: " + mVersion);
        logd("getSatelliteConfigDataVersion: mVersion: " + mVersion);
        return mVersion;
    }

@@ -259,7 +278,7 @@ public class SatelliteConfig {
            @Nullable byte[] byteArrayFile, String fileName) {

        if (context == null || byteArrayFile == null) {
            Log.d(TAG, "copySatelliteFileToPhoneDirectory : context or byteArrayFile are null");
            logd("copySatelliteFileToPhoneDirectory : context or byteArrayFile are null");
            return null;
        }

@@ -272,18 +291,16 @@ public class SatelliteConfig {
        try {
            InputStream inputStream = new ByteArrayInputStream(byteArrayFile);
            if (inputStream == null) {
                Log.d(TAG, "copySatelliteFileToPhoneDirectory: Resource=" + fileName
                logd("copySatelliteFileToPhoneDirectory: Resource=" + fileName
                        + " not found");
            } else {
                Files.copy(inputStream, targetSatelliteFilePath,
                        StandardCopyOption.REPLACE_EXISTING);
            }
        } catch (IOException ex) {
            Log.e(TAG, "copySatelliteFileToPhoneDirectory: ex=" + ex);
            loge("copySatelliteFileToPhoneDirectory: ex=" + ex);
        }
        Log.d(
                TAG,
                "targetSatelliteFilePath's path: "
        logd("targetSatelliteFilePath's path: "
                + targetSatelliteFilePath.toAbsolutePath().toString());
        return targetSatelliteFilePath.toFile();
    }
@@ -295,23 +312,20 @@ public class SatelliteConfig {
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    public void cleanOtaResources(@Nullable Context context) {
        if (context == null) {
            Log.d(TAG, "cleanOtaResources : context is null");
            logd("cleanOtaResources : context is null");
            return;
        }
        try {
            File satelliteFileDir = context.getDir(SATELLITE_DIR_NAME, Context.MODE_PRIVATE);
            if (!satelliteFileDir.exists()) {
                Log.d(
                        TAG,
                        "cleanOtaResources: "
                                + SATELLITE_DIR_NAME
                logd("cleanOtaResources: " + SATELLITE_DIR_NAME
                        + " does not exist. No need to clean.");
                return;
            }
            Log.d(TAG, "cleanOtaResources: Deleting contents under " + SATELLITE_DIR_NAME);
            logd("cleanOtaResources: Deleting contents under " + SATELLITE_DIR_NAME);
            FileUtils.deleteContents(satelliteFileDir);
        } catch (Exception e) {
            Log.e(TAG, "cleanOtaResources error : " + e);
            loge("cleanOtaResources error : " + e);
        }
    }

@@ -321,9 +335,17 @@ public class SatelliteConfig {
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    public boolean isFileExist(@Nullable File file) {
        if (file == null) {
            Log.d(TAG, "isFileExist : file is null");
            logd("isFileExist : file is null");
            return false;
        }
        return file.exists();
    }

    private static void logd(@NonNull String log) {
        Log.d(TAG, log);
    }

    private static void loge(@NonNull String log) {
        Log.e(TAG, log);
    }
}
+4 −1
Original line number Diff line number Diff line
@@ -3644,7 +3644,10 @@ public class SubscriptionManagerService extends ISub.Stub {
                    + "carrier privilege");
        }

        if (!mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_force_phone_globals_creation)) {
            enforceTelephonyFeatureWithException(callingPackage, "isActiveSubId");
        }

        final long identity = Binder.clearCallingIdentity();
        try {
+178 −0
Original line number Diff line number Diff line
@@ -82,6 +82,13 @@ public class SatelliteConfigParserTest extends TelephonyTest {
        // carriersupportedservices#carrier_id
        carrierSupportedSatelliteServiceBuilder.setCarrierId(1);

        // carrierroamingconfig
        SatelliteConfigData.CarrierRoamingConfigProto.Builder carrierRoamingConfigBuilder =
                SatelliteConfigData.CarrierRoamingConfigProto.newBuilder();
        carrierRoamingConfigBuilder.setMaxAllowedDataMode(2);
        satelliteConfigBuilder.setCarrierRoamingConfig(carrierRoamingConfigBuilder);
        carrierRoamingConfigBuilder.clear();

        // carriersupportedservices#providercapability
        SatelliteConfigData.SatelliteProviderCapabilityProto.Builder
                satelliteProviderCapabilityBuilder =
@@ -379,4 +386,175 @@ public class SatelliteConfigParserTest extends TelephonyTest {
        assertNotNull(satelliteConfigParser.getConfig());
        assertEquals(4, satelliteConfigParser.getConfig().getSatelliteConfigDataVersion());
    }

    @Test
    public void testGetCarrierRoamingConfigMaxAllowedDataMode() {
        SatelliteConfigParser satelliteConfigParserNull = new SatelliteConfigParser((byte[]) null);
        assertNotNull(satelliteConfigParserNull);
        assertNull(satelliteConfigParserNull.getConfig());

        SatelliteConfigParser satelliteConfigParserPlaceholder =
                new SatelliteConfigParser("test".getBytes());
        assertNotNull(satelliteConfigParserPlaceholder);
        assertNull(satelliteConfigParserPlaceholder.getConfig());

        SatelliteConfigParser satelliteConfigParser = new SatelliteConfigParser(mBytesProtoBuffer);
        assertNotNull(satelliteConfigParser);
        assertNotNull(satelliteConfigParser.getConfig());
        assertNotNull(satelliteConfigParser.getConfig().getSatelliteMaxAllowedDataMode());
        assertEquals(Integer.valueOf(2),
                satelliteConfigParser.getConfig().getSatelliteMaxAllowedDataMode());
    }

    @Test
    public void testNullCarrierRoamingConfig() {
        SatelliteConfigData.TelephonyConfigProto.Builder telephonyConfigBuilder =
                SatelliteConfigData.TelephonyConfigProto.newBuilder();
        SatelliteConfigData.SatelliteConfigProto.Builder satelliteConfigBuilder =
                SatelliteConfigData.SatelliteConfigProto.newBuilder();

        // version
        satelliteConfigBuilder.setVersion(4);

        // carriersupportedservices
        SatelliteConfigData.CarrierSupportedSatelliteServicesProto.Builder
                carrierSupportedSatelliteServiceBuilder =
                        SatelliteConfigData.CarrierSupportedSatelliteServicesProto.newBuilder();

        // carriersupportedservices#carrier_id
        carrierSupportedSatelliteServiceBuilder.setCarrierId(1);

        // not building carrierroamingconfig

        // carriersupportedservices#providercapability
        SatelliteConfigData.SatelliteProviderCapabilityProto.Builder
                satelliteProviderCapabilityBuilder =
                        SatelliteConfigData.SatelliteProviderCapabilityProto.newBuilder();
        satelliteProviderCapabilityBuilder.setCarrierPlmn("310160");
        satelliteProviderCapabilityBuilder.addAllowedServices(1);
        satelliteProviderCapabilityBuilder.addAllowedServices(2);
        satelliteProviderCapabilityBuilder.addAllowedServices(3);
        carrierSupportedSatelliteServiceBuilder.addSupportedSatelliteProviderCapabilities(
                satelliteProviderCapabilityBuilder);
        satelliteProviderCapabilityBuilder.clear();

        satelliteProviderCapabilityBuilder.setCarrierPlmn("310220");
        satelliteProviderCapabilityBuilder.addAllowedServices(3);
        carrierSupportedSatelliteServiceBuilder.addSupportedSatelliteProviderCapabilities(
                satelliteProviderCapabilityBuilder);
        satelliteProviderCapabilityBuilder.clear();

        satelliteConfigBuilder.addCarrierSupportedSatelliteServices(
                carrierSupportedSatelliteServiceBuilder);

        // satelliteregion
        SatelliteConfigData.SatelliteRegionProto.Builder satelliteRegionBuilder =
                SatelliteConfigData.SatelliteRegionProto.newBuilder();
        String testS2Content = "0123456789", testSatelliteAccessConfigContent = "sac";
        satelliteRegionBuilder.setS2CellFile(ByteString.copyFrom(testS2Content.getBytes()));
        satelliteRegionBuilder.setSatelliteAccessConfigFile(
                ByteString.copyFrom(testSatelliteAccessConfigContent.getBytes()));
        satelliteRegionBuilder.addCountryCodes("US");
        satelliteRegionBuilder.setIsAllowed(true);
        satelliteConfigBuilder.setDeviceSatelliteRegion(satelliteRegionBuilder);

        telephonyConfigBuilder.setSatellite(satelliteConfigBuilder);

        SatelliteConfigData.TelephonyConfigProto telephonyConfigData =
                telephonyConfigBuilder.build();
        mBytesProtoBuffer = telephonyConfigData.toByteArray();

        SatelliteConfigParser satelliteConfigParserNull = new SatelliteConfigParser((byte[]) null);
        assertNotNull(satelliteConfigParserNull);
        assertNull(satelliteConfigParserNull.getConfig());

        SatelliteConfigParser satelliteConfigParserPlaceholder =
                new SatelliteConfigParser("test".getBytes());
        assertNotNull(satelliteConfigParserPlaceholder);
        assertNull(satelliteConfigParserPlaceholder.getConfig());

        SatelliteConfigParser satelliteConfigParser = new SatelliteConfigParser(mBytesProtoBuffer);
        assertNotNull(satelliteConfigParser);
        assertNotNull(satelliteConfigParser.getConfig());
        assertNull(satelliteConfigParser.getConfig().getSatelliteMaxAllowedDataMode());
    }

    @Test
    public void testNullMaxAllowedDataMode() {
        SatelliteConfigData.TelephonyConfigProto.Builder telephonyConfigBuilder =
                SatelliteConfigData.TelephonyConfigProto.newBuilder();
        SatelliteConfigData.SatelliteConfigProto.Builder satelliteConfigBuilder =
                SatelliteConfigData.SatelliteConfigProto.newBuilder();

        // version
        satelliteConfigBuilder.setVersion(4);

        // carriersupportedservices
        SatelliteConfigData.CarrierSupportedSatelliteServicesProto.Builder
                carrierSupportedSatelliteServiceBuilder =
                        SatelliteConfigData.CarrierSupportedSatelliteServicesProto.newBuilder();

        // carriersupportedservices#carrier_id
        carrierSupportedSatelliteServiceBuilder.setCarrierId(1);

        // carrierroamingconfig, but not setting maxAllowedDataMode
        SatelliteConfigData.CarrierRoamingConfigProto.Builder carrierRoamingConfigBuilder =
                SatelliteConfigData.CarrierRoamingConfigProto.newBuilder();
        satelliteConfigBuilder.setCarrierRoamingConfig(carrierRoamingConfigBuilder);
        carrierRoamingConfigBuilder.clear();

        // carriersupportedservices#providercapability
        SatelliteConfigData.SatelliteProviderCapabilityProto.Builder
                satelliteProviderCapabilityBuilder =
                        SatelliteConfigData.SatelliteProviderCapabilityProto.newBuilder();
        satelliteProviderCapabilityBuilder.setCarrierPlmn("310160");
        satelliteProviderCapabilityBuilder.addAllowedServices(1);
        satelliteProviderCapabilityBuilder.addAllowedServices(2);
        satelliteProviderCapabilityBuilder.addAllowedServices(3);
        carrierSupportedSatelliteServiceBuilder.addSupportedSatelliteProviderCapabilities(
                satelliteProviderCapabilityBuilder);
        satelliteProviderCapabilityBuilder.clear();

        satelliteProviderCapabilityBuilder.setCarrierPlmn("310220");
        satelliteProviderCapabilityBuilder.addAllowedServices(3);
        carrierSupportedSatelliteServiceBuilder.addSupportedSatelliteProviderCapabilities(
                satelliteProviderCapabilityBuilder);
        satelliteProviderCapabilityBuilder.clear();

        satelliteConfigBuilder.addCarrierSupportedSatelliteServices(
                carrierSupportedSatelliteServiceBuilder);

        // satelliteregion
        SatelliteConfigData.SatelliteRegionProto.Builder satelliteRegionBuilder =
                SatelliteConfigData.SatelliteRegionProto.newBuilder();
        String testS2Content = "0123456789", testSatelliteAccessConfigContent = "sac";
        satelliteRegionBuilder.setS2CellFile(ByteString.copyFrom(testS2Content.getBytes()));
        satelliteRegionBuilder.setSatelliteAccessConfigFile(
                ByteString.copyFrom(testSatelliteAccessConfigContent.getBytes()));
        satelliteRegionBuilder.addCountryCodes("US");
        satelliteRegionBuilder.setIsAllowed(true);
        satelliteConfigBuilder.setDeviceSatelliteRegion(satelliteRegionBuilder);

        telephonyConfigBuilder.setSatellite(satelliteConfigBuilder);

        SatelliteConfigData.TelephonyConfigProto telephonyConfigData =
                telephonyConfigBuilder.build();
        mBytesProtoBuffer = telephonyConfigData.toByteArray();

        SatelliteConfigParser satelliteConfigParserNull = new SatelliteConfigParser((byte[]) null);
        assertNotNull(satelliteConfigParserNull);
        assertNull(satelliteConfigParserNull.getConfig());

        SatelliteConfigParser satelliteConfigParserPlaceholder =
                new SatelliteConfigParser("test".getBytes());
        assertNotNull(satelliteConfigParserPlaceholder);
        assertNull(satelliteConfigParserPlaceholder.getConfig());

        SatelliteConfigParser satelliteConfigParser = new SatelliteConfigParser(mBytesProtoBuffer);
        assertNotNull(satelliteConfigParser);
        assertNotNull(satelliteConfigParser.getConfig());
        assertNotNull(satelliteConfigParser.getConfig().getSatelliteMaxAllowedDataMode());
        assertEquals(Integer.valueOf(0),
                satelliteConfigParser.getConfig().getSatelliteMaxAllowedDataMode());
    }
}