Address TODOs in WifiNoInternetDialog.

Bug: 20081183
Change-Id: I30a4f04ca892796a674ff0306aafaed485126092
diff --git a/src/com/android/settings/wifi/WifiNoInternetDialog.java b/src/com/android/settings/wifi/WifiNoInternetDialog.java
index a45d6a2..f044114 100644
--- a/src/com/android/settings/wifi/WifiNoInternetDialog.java
+++ b/src/com/android/settings/wifi/WifiNoInternetDialog.java
@@ -36,6 +36,8 @@
 import com.android.internal.app.AlertController;
 import com.android.settings.R;
 
+import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
+
 public final class WifiNoInternetDialog extends AlertActivity implements
         DialogInterface.OnClickListener {
     private static final String TAG = "WifiNoInternetDialog";
@@ -67,14 +69,9 @@
 
         // TODO: add a registerNetworkCallback(Network network, NetworkCallback networkCallback) and
         // simplify this.
-        final NetworkRequest.Builder builder = new NetworkRequest.Builder();
-        for (int i = 0; i < 256; i++) {
-            try {
-                builder.removeCapability(i);
-            } catch (IllegalArgumentException e) {}
-        }
-        final NetworkRequest request = builder.build();
+        final NetworkRequest request = new NetworkRequest.Builder().clearCapabilities().build();
         mNetworkCallback = new NetworkCallback() {
+            @Override
             public void onLost(Network network) {
                 // Close the dialog if the network disconnects.
                 if (mNetwork.equals(network)) {
@@ -82,8 +79,14 @@
                     finish();
                 }
             }
-            // TODO: implement onNetworkCapabilitiesChanged so we can close the dialog if the
-            // network is now validated.
+            @Override
+            public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) {
+                // Close the dialog if the network validates.
+                if (mNetwork.equals(network) && nc.hasCapability(NET_CAPABILITY_VALIDATED)) {
+                    Log.d(TAG, "Network " + mNetwork + " validated");
+                    finish();
+                }
+            }
         };
 
         mCM = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);