Fixed a crash when data network does not have PCO

Avoid crash when PCO data arrives, but it's only for certain data
networks but not all, it will crash in data network controller
when trying get PCO data from each network.

Test: Able to repro with unit test. Verified working after fix.
Fix: 242768045
Merged-In: I832ddcc80f4e92d487bd0fa93ec63f74e4978de3
Change-Id: I832ddcc80f4e92d487bd0fa93ec63f74e4978de3
(cherry picked from commit beed554dbc3fe810289150c6036435220493cce9)
Merged-In: I832ddcc80f4e92d487bd0fa93ec63f74e4978de3
diff --git a/src/java/com/android/internal/telephony/data/DataNetwork.java b/src/java/com/android/internal/telephony/data/DataNetwork.java
index 1caae29..8581759 100644
--- a/src/java/com/android/internal/telephony/data/DataNetwork.java
+++ b/src/java/com/android/internal/telephony/data/DataNetwork.java
@@ -3242,14 +3242,14 @@
 
     /**
      * @return The PCO data map of the network. The key is the PCO id, the value is the PCO data.
-     * An empty map if PCO data is not available.
+     * An empty map if PCO data is not available (or when the network is on IWLAN).
      */
     public @NonNull Map<Integer, PcoData> getPcoData() {
         if (mTransport == AccessNetworkConstants.TRANSPORT_TYPE_WLAN
                 || mCid.get(mTransport) == INVALID_CID) {
             return Collections.emptyMap();
         }
-        return mPcoData.get(mCid.get(mTransport));
+        return mPcoData.getOrDefault(mCid.get(mTransport), Collections.emptyMap());
     }
 
     /**
diff --git a/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java
index 88bd722..0fc6c3c 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java
@@ -2402,6 +2402,20 @@
     }
 
     @Test
+    public void testNrAdvancedByPcoMultipleNetworks() throws Exception {
+        testSetupDataNetwork();
+        setSuccessfulSetupDataResponse(mMockedDataServiceManagers
+                .get(AccessNetworkConstants.TRANSPORT_TYPE_WWAN), 2);
+        testSetupImsDataNetwork();
+
+        verify(mMockedDataNetworkControllerCallback, never())
+                .onNrAdvancedCapableByPcoChanged(anyBoolean());
+        mSimulatedCommands.triggerPcoData(2, "IPV6", 1234, new byte[]{1});
+        processAllMessages();
+        verify(mMockedDataNetworkControllerCallback).onNrAdvancedCapableByPcoChanged(eq(true));
+    }
+
+    @Test
     public void testNrAdvancedByEarlyUnrelatedPco() {
         Mockito.reset(mMockedWwanDataServiceManager);
         mDataNetworkControllerUT.addNetworkRequest(