DO NOT MERGE ANYWHERE Add supports-multiwindow command to am.

The supports-multiwindow command allows the ability to
check if the device has multiwindow support in the shell.

Bug: 30120559
Change-Id: I466e28d8a794fa457826a6526ef9ef660cd3856c
diff --git a/cmds/am/src/com/android/commands/am/Am.java b/cmds/am/src/com/android/commands/am/Am.java
index d6c0058..c460b04 100644
--- a/cmds/am/src/com/android/commands/am/Am.java
+++ b/cmds/am/src/com/android/commands/am/Am.java
@@ -48,7 +48,9 @@
 import android.content.pm.ParceledListSlice;
 import android.content.pm.ResolveInfo;
 import android.content.pm.UserInfo;
+import android.content.res.AssetManager;
 import android.content.res.Configuration;
+import android.content.res.Resources;
 import android.graphics.Rect;
 import android.os.Binder;
 import android.os.Build;
@@ -64,6 +66,7 @@
 import android.text.TextUtils;
 import android.util.AndroidException;
 import android.util.ArrayMap;
+import android.util.DisplayMetrics;
 import android.view.IWindowManager;
 
 import com.android.internal.os.BaseCommand;
@@ -361,6 +364,8 @@
                 "am send-trim-memory: send a memory trim event to a <PROCESS>.\n" +
                 "\n" +
                 "am get-current-user: returns id of the current foreground user.\n" +
+                "\n" +
+                "am supports-multiwindow: returns true if the device supports multiwindow.\n" +
                 "\n"
         );
         Intent.printIntentArgsHelp(pw, "");
@@ -458,6 +463,8 @@
             runSendTrimMemory();
         } else if (op.equals("get-current-user")) {
             runGetCurrentUser();
+        } else if (op.equals("supports-multiwindow")) {
+            runSupportsMultiwindow();
         } else {
             showError("Error: unknown command '" + op + "'");
         }
@@ -2534,6 +2541,21 @@
         System.out.println(currentUser.id);
     }
 
+    private void runSupportsMultiwindow() throws Exception {
+        // system resources does not contain all the device configuration, construct it manually.
+        Configuration config = mAm.getConfiguration();
+        if (config == null) {
+            throw new AndroidException("Activity manager has no configuration");
+        }
+
+        final DisplayMetrics metrics = new DisplayMetrics();
+        metrics.setToDefaults();
+
+        Resources res = new Resources(AssetManager.getSystem(), metrics, config);
+
+        System.out.println(res.getBoolean(com.android.internal.R.bool.config_supportsMultiWindow));
+    }
+
     /**
      * Open the given file for sending into the system process. This verifies
      * with SELinux that the system will have access to the file.