Update CompareOrUpdateResult with NULL Check

Like CompareResult, add in null check for input objects.

Test: updated unit test
Change-Id: Iea63752ff23a5bfb1cc5cb716ec579bec6c403bf
diff --git a/common/src_frameworkcommon/android/net/util/LinkPropertiesUtils.java b/common/src_frameworkcommon/android/net/util/LinkPropertiesUtils.java
index c50ca0b..bd96edb 100644
--- a/common/src_frameworkcommon/android/net/util/LinkPropertiesUtils.java
+++ b/common/src_frameworkcommon/android/net/util/LinkPropertiesUtils.java
@@ -91,23 +91,26 @@
                 Function<T, K> keyCalculator) {
             HashMap<K, T> updateTracker = new HashMap<>();
 
-            for (T oldItem : oldItems) {
-                updateTracker.put(keyCalculator.apply(oldItem), oldItem);
-            }
-
-            for (T newItem : newItems) {
-                T oldItem = updateTracker.remove(keyCalculator.apply(newItem));
-                if (oldItem != null) {
-                    if (!oldItem.equals(newItem)) {
-                        // Update of existing item.
-                        updated.add(newItem);
-                    }
-                } else {
-                    // New item.
-                    added.add(newItem);
+            if (oldItems != null) {
+                for (T oldItem : oldItems) {
+                    updateTracker.put(keyCalculator.apply(oldItem), oldItem);
                 }
             }
 
+            if (newItems != null) {
+                for (T newItem : newItems) {
+                    T oldItem = updateTracker.remove(keyCalculator.apply(newItem));
+                    if (oldItem != null) {
+                        if (!oldItem.equals(newItem)) {
+                            // Update of existing item.
+                            updated.add(newItem);
+                        }
+                    } else {
+                        // New item.
+                        added.add(newItem);
+                    }
+                }
+            }
             removed.addAll(updateTracker.values());
         }
 
diff --git a/common/tests/unit/src/android/net/util/LinkPropertiesUtilsTest.java b/common/tests/unit/src/android/net/util/LinkPropertiesUtilsTest.java
index e2cde34..0fa1c52 100644
--- a/common/tests/unit/src/android/net/util/LinkPropertiesUtilsTest.java
+++ b/common/tests/unit/src/android/net/util/LinkPropertiesUtilsTest.java
@@ -229,7 +229,7 @@
         CompareOrUpdateResult<String, String> result =
                 new CompareOrUpdateResult<String, String>(oldItems, emptyList, extractPrefix);
         assertCompareOrUpdateResult(result,
-                emptyList,  strArray("hello123", "howareyou669", "goodbye5678"), emptyList);
+                emptyList, strArray("hello123", "howareyou669", "goodbye5678"), emptyList);
 
         // Empty -> items: everything added.
         result = new CompareOrUpdateResult<String, String>(emptyList, newItems, extractPrefix);
@@ -244,5 +244,15 @@
         result =  new CompareOrUpdateResult<>(oldItems, newItems, extractPrefix);
         assertCompareOrUpdateResult(result,
                 strArray("verywell"), strArray("howareyou669"), strArray("goodbye000"));
+
+        // Null -> items: everything added.
+        result = new CompareOrUpdateResult<String, String>(null, newItems, extractPrefix);
+        assertCompareOrUpdateResult(result,
+                strArray("hello123", "goodbye000", "verywell"), emptyList,  emptyList);
+
+        // Items -> null: everything removed.
+        result = new CompareOrUpdateResult<String, String>(oldItems, null, extractPrefix);
+        assertCompareOrUpdateResult(result,
+                emptyList, strArray("hello123", "howareyou669", "goodbye5678"), emptyList);
     }
 }
\ No newline at end of file