Load no-mcc-mnc config for carriers w/o configs

Issue: when carrier config for mcc/mnc 000/000 doesn't exist, no-mcc-mnc
config in vendor.xml is not applied to carriers w/o any customized
configs in assets or vendor.xml.

Solution: Generate a 000/000 carrier if no-mcc-mnc config exists in
vendor.xml, so no-mcc-mnc config will be applied as the default config
for carriers without configs.

Bug: 181589307
Change-Id: Id2868f4469167834f928d915217803c5ab353b37
diff --git a/java/CarrierConfigConverterV2.java b/java/CarrierConfigConverterV2.java
index cca6462..2f8d254 100644
--- a/java/CarrierConfigConverterV2.java
+++ b/java/CarrierConfigConverterV2.java
@@ -102,6 +102,8 @@
   @Parameter(names = "--version", description = "The version number for all output textpb.")
   private long version = 1L;
 
+  private static final String MCCMNC_FOR_DEFAULT_SETTINGS = "000000";
+
   // Resource file path to the AOSP carrier list file
   private static final String RESOURCE_CARRIER_LIST =
       "/assets/latest_carrier_id/carrier_list.textpb";
@@ -238,11 +240,18 @@
           // Then, try to parse CarrierId
           CarrierId.Builder id = parseCarrierId(element);
           // A valid mccmnc is 5- or 6-digit. But vendor.xml see special cases below:
-          // <carrier_config> element may have just "mcc" and not "mnc" for
+          // Case 1: a <carrier_config> element may have neither "mcc" nor "mnc".
+          // Such a tag provides configs that should be applied to all carriers, including to
+          // unspecified carriers via the 000/000 default configs. Make sure 000/000 exists as
+          // a carrier.
+          // Case 2: a <carrier_config> element may have just "mcc" and not "mnc" for
           // country-wise config. Such a element doesn't make a carrier; but still keep it so
           // can be used if a mccmnc appears in APNs later.
-          if (id.getMccMnc().length() == 3) {
-            // special case
+          if (id.getMccMnc().isEmpty()) {
+            // special case 1
+            carriers.add(id.setMccMnc(MCCMNC_FOR_DEFAULT_SETTINGS).build());
+          } else if (id.getMccMnc().length() == 3) {
+            // special case 2
             carriers.add(id.build());
           } else if (id.getMccMnc().length() == 5 || id.getMccMnc().length() == 6) {
             // Normal mcc+mnc