Merge "Add test API for if the device supports QS" into oc-dev
diff --git a/api/test-current.txt b/api/test-current.txt
index 414c4b3..7b56071 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -37528,6 +37528,7 @@
     ctor public TileService();
     method public final android.service.quicksettings.Tile getQsTile();
     method public final boolean isLocked();
+    method public static boolean isQuickSettingsSupported();
     method public final boolean isSecure();
     method public android.os.IBinder onBind(android.content.Intent);
     method public void onClick();
diff --git a/core/java/android/service/quicksettings/TileService.java b/core/java/android/service/quicksettings/TileService.java
index 8e01030..56b267f 100644
--- a/core/java/android/service/quicksettings/TileService.java
+++ b/core/java/android/service/quicksettings/TileService.java
@@ -19,11 +19,13 @@
 import android.annotation.SdkConstant;
 import android.annotation.SdkConstant.SdkConstantType;
 import android.annotation.SystemApi;
+import android.annotation.TestApi;
 import android.app.Dialog;
 import android.app.Service;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.content.res.Resources;
 import android.graphics.drawable.Icon;
 import android.os.Handler;
 import android.os.IBinder;
@@ -34,6 +36,8 @@
 import android.view.View.OnAttachStateChangeListener;
 import android.view.WindowManager;
 
+import com.android.internal.R;
+
 /**
  * A TileService provides the user a tile that can be added to Quick Settings.
  * Quick Settings is a space provided that allows the user to change settings and
@@ -425,6 +429,15 @@
     }
 
     /**
+     * @return True if the device supports quick settings and its assocated APIs.
+     * @hide
+     */
+    @TestApi
+    public static boolean isQuickSettingsSupported() {
+        return Resources.getSystem().getBoolean(R.bool.config_quickSettingsSupported);
+    }
+
+    /**
      * Requests that a tile be put in the listening state so it can send an update.
      *
      * This method is only applicable to tiles that have {@link #META_DATA_ACTIVE_TILE} defined
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index bcd8a8a..85ecaff 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -2819,4 +2819,7 @@
          density will be scaled accordingly to maintain aspect ratio. A value of 0 indicates no
          constraint will be enforced. -->
     <integer name="config_maxUiWidth">0</integer>
+
+    <!-- Whether the device supports quick settings and its associated APIs -->
+    <bool name="config_quickSettingsSupported">true</bool>
 </resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index dfd18e7..ae05a69 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2955,4 +2955,5 @@
   <java-symbol type="string" name="etws_primary_default_message_test" />
 
   <java-symbol type="string" name="etws_primary_default_message_others" />
+  <java-symbol type="bool" name="config_quickSettingsSupported" />
 </resources>
diff --git a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java
index 963a572..40bb496 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java
@@ -17,6 +17,8 @@
 import android.content.ComponentName;
 import android.os.RemoteException;
 import android.os.ShellCommand;
+import android.service.quicksettings.TileService;
+
 import com.android.internal.statusbar.IStatusBarService;
 
 import java.io.PrintWriter;
@@ -48,6 +50,10 @@
                     return runRemoveTile();
                 case "click-tile":
                     return runClickTile();
+                case "check-support":
+                    final PrintWriter pw = getOutPrintWriter();
+                    pw.println(String.valueOf(TileService.isQuickSettingsSupported()));
+                    return 0;
                 default:
                     return handleDefaultCommands(cmd);
             }
@@ -113,5 +119,8 @@
         pw.println("  click-tile COMPONENT");
         pw.println("    Click on a TileService of the specified component");
         pw.println("");
+        pw.println("  check-support");
+        pw.println("    Check if this device supports QS + APIs");
+        pw.println("");
     }
 }