Add has* utility functions to NetworkCapabilities

Change-Id: Icf735b778a3956812be522db39c29cf54c757a25
diff --git a/core/java/android/net/NetworkCapabilities.java b/core/java/android/net/NetworkCapabilities.java
index adbb185..0bb2632 100644
--- a/core/java/android/net/NetworkCapabilities.java
+++ b/core/java/android/net/NetworkCapabilities.java
@@ -84,6 +84,13 @@
     public Collection<Integer> getNetworkCapabilities() {
         return enumerateBits(mNetworkCapabilities);
     }
+    public boolean hasCapability(int networkCapability) {
+        if (networkCapability < MIN_NET_CAPABILITY ||
+                networkCapability > MAX_NET_CAPABILITY) {
+            return false;
+        }
+        return ((mNetworkCapabilities & (1 << networkCapability)) != 0);
+    }
 
     private Collection<Integer> enumerateBits(long val) {
         ArrayList<Integer> result = new ArrayList<Integer>();
@@ -142,6 +149,12 @@
     public Collection<Integer> getTransportTypes() {
         return enumerateBits(mTransportTypes);
     }
+    public boolean hasTransport(int transportType) {
+        if (transportType < MIN_TRANSPORT || transportType > MAX_TRANSPORT) {
+            return false;
+        }
+        return ((mTransportTypes & (1 << transportType)) != 0);
+    }
 
     private void combineTransportTypes(NetworkCapabilities nc) {
         this.mTransportTypes |= nc.mTransportTypes;
@@ -205,7 +218,8 @@
      * {@hide}
      */
     public boolean satisfiedByNetworkCapabilities(NetworkCapabilities nc) {
-        return (satisfiedByNetCapabilities(nc) &&
+        return (nc != null &&
+                satisfiedByNetCapabilities(nc) &&
                 satisfiedByTransportTypes(nc) &&
                 satisfiedByLinkBandwidths(nc));
     }