diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java b/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java
index 47bb8f00992037827c4f11d60728848e99846f71..eeb5c499282e5129a0f5df89ce47c0e250667385 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java
@@ -19,6 +19,9 @@ package com.android.server.net;
 import static android.net.NetworkPolicyManager.POLICY_ALLOW_METERED_BACKGROUND;
 import static android.net.NetworkPolicyManager.POLICY_NONE;
 import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND;
+import static android.net.NetworkPolicyManager.POLICY_REJECT_WIFI;
+import static android.net.NetworkPolicyManager.POLICY_REJECT_CELLULAR;
+import static android.net.NetworkPolicyManager.POLICY_REJECT_VPN;
 
 import android.content.Context;
 import android.net.NetworkPolicyManager;
@@ -83,6 +86,12 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
         pw.println("    Adds a UID to the whitelist for restrict background usage.");
         pw.println("  add restrict-background-blacklist UID");
         pw.println("    Adds a UID to the blacklist for restrict background usage.");
+        pw.println("  add restrict-wifi-data-blacklist UID");
+        pw.println("    Adds a UID to the blacklist for restrict Wi-Fi data usage.");
+        pw.println("  add restrict-mobile-data-blacklist UID");
+        pw.println("    Adds a UID to the blacklist for restrict Mobile data usage.");
+        pw.println("  add restrict-vpn-data-blacklist UID");
+        pw.println("    Adds a UID to the blacklist for restrict VPN data usage.");
         pw.println("  add app-idle-whitelist UID");
         pw.println("    Adds a UID to the temporary app idle whitelist.");
         pw.println("  get restrict-background");
@@ -95,10 +104,22 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
         pw.println("    Lists UIDs that are whitelisted for restrict background usage.");
         pw.println("  list restrict-background-blacklist");
         pw.println("    Lists UIDs that are blacklisted for restrict background usage.");
+        pw.println("  list restrict-wifi-data-blacklist");
+        pw.println("    Lists UIDs that are blacklisted for restrict Wi-Fi data usage.");
+        pw.println("  list restrict-mobile-data-blacklist");
+        pw.println("    Lists UIDs that are blacklisted for restrict Mobile data usage.");
+        pw.println("  list restrict-vpn-data-blacklist");
+        pw.println("    Lists UIDs that are blacklisted for restrict VPN data usage.");
         pw.println("  remove restrict-background-whitelist UID");
         pw.println("    Removes a UID from the whitelist for restrict background usage.");
         pw.println("  remove restrict-background-blacklist UID");
         pw.println("    Removes a UID from the blacklist for restrict background usage.");
+        pw.println("  remove restrict-wifi-data-blacklist UID");
+        pw.println("    Removes a UID from the blacklist for restrict Wi-Fi data usage.");
+        pw.println("  remove restrict-mobile-data-blacklist UID");
+        pw.println("    Removes a UID from the blacklist for restrict Mobile data usage.");
+        pw.println("  remove restrict-vpn-data-blacklist UID");
+        pw.println("    Removes a UID from the blacklist for restrict VPN data usage.");
         pw.println("  remove app-idle-whitelist UID");
         pw.println("    Removes a UID from the temporary app idle whitelist.");
         pw.println("  set metered-network ID [undefined|true|false]");
@@ -161,6 +182,12 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
                 return listRestrictBackgroundWhitelist();
             case "restrict-background-blacklist":
                 return listRestrictBackgroundBlacklist();
+            case "restrict-wifi-data-blacklist":
+                return listRestrictWiFiDataBlacklist();
+            case "restrict-mobile-data-blacklist":
+                return listRestrictCellularDataBlacklist();
+            case "restrict-vpn-data-blacklist":
+                return listRestrictVpnDataBlacklist();
         }
         pw.println("Error: unknown list type '" + type + "'");
         return -1;
@@ -178,6 +205,12 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
                 return addRestrictBackgroundWhitelist();
             case "restrict-background-blacklist":
                 return addRestrictBackgroundBlacklist();
+            case "restrict-wifi-data-blacklist":
+                return addRestrictWiFiDataBlacklist();
+            case "restrict-mobile-data-blacklist":
+                return addRestrictCellularDataBlacklist();
+            case "restrict-vpn-data-blacklist":
+                return addRestrictVpnDataBlacklist();
             case "app-idle-whitelist":
                 return addAppIdleWhitelist();
         }
@@ -197,6 +230,12 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
                 return removeRestrictBackgroundWhitelist();
             case "restrict-background-blacklist":
                 return removeRestrictBackgroundBlacklist();
+            case "restrict-wifi-data-blacklist":
+                return removeRestrictWiFiDataBlacklist();
+            case "restrict-mobile-data-blacklist":
+                return removeRestrictCellularDataBlacklist();
+            case "restrict-vpn-data-blacklist":
+                return removeRestrictVpnDataBlacklist();
             case "app-idle-whitelist":
                 return removeAppIdleWhitelist();
         }
@@ -251,6 +290,21 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
                 POLICY_REJECT_METERED_BACKGROUND);
     }
 
+    private int listRestrictWiFiDataBlacklist() throws RemoteException {
+        return listUidPolicies("Restrict Wi-Fi data blacklisted UIDs",
+                POLICY_REJECT_WIFI);
+    }
+
+    private int listRestrictCellularDataBlacklist() throws RemoteException {
+        return listUidPolicies("Restrict Mobile data blacklisted UIDs",
+                POLICY_REJECT_CELLULAR);
+    }
+
+    private int listRestrictVpnDataBlacklist() throws RemoteException {
+        return listUidPolicies("Restrict VPN data blacklisted UIDs",
+                POLICY_REJECT_VPN);
+    }
+
     private int listAppIdleWhitelist() throws RemoteException {
         final PrintWriter pw = getOutPrintWriter();
         final int[] uids = mInterface.getAppIdleWhitelist();
@@ -323,10 +377,34 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
         return setUidPolicy(POLICY_REJECT_METERED_BACKGROUND);
     }
 
+    private int addRestrictWiFiDataBlacklist() throws RemoteException {
+        return setUidPolicy(POLICY_REJECT_WIFI);
+    }
+
+    private int addRestrictCellularDataBlacklist() throws RemoteException {
+        return setUidPolicy(POLICY_REJECT_CELLULAR);
+    }
+
+    private int addRestrictVpnDataBlacklist() throws RemoteException {
+        return setUidPolicy(POLICY_REJECT_VPN);
+    }
+
     private int removeRestrictBackgroundBlacklist() throws RemoteException {
         return resetUidPolicy("not blacklisted", POLICY_REJECT_METERED_BACKGROUND);
     }
 
+    private int removeRestrictWiFiDataBlacklist() throws RemoteException {
+        return resetUidPolicy("not blacklisted", POLICY_REJECT_WIFI);
+    }
+
+    private int removeRestrictCellularDataBlacklist() throws RemoteException {
+        return resetUidPolicy("not blacklisted", POLICY_REJECT_CELLULAR);
+    }
+
+    private int removeRestrictVpnDataBlacklist() throws RemoteException {
+        return resetUidPolicy("not blacklisted", POLICY_REJECT_VPN);
+    }
+
     private int setAppIdleWhitelist(boolean isWhitelisted) {
         final int uid = getUidFromNextArg();
         if (uid < 0) {