summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Duong <joshuaduong@google.com>2020-06-30 00:57:37 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-06-30 00:57:37 +0000
commitb47d1e610072afe2209ca57bc3e1fe5373fbb2f4 (patch)
tree6a6d8b10712fc6a1a4d9cc56cddcbee80ffa1413
parentf30f3effddc650e2a0f7654277901b6a808890ea (diff)
parent5ab3aa0c7b913079e1a8146d347faf66c49761a3 (diff)
Merge changes from topic "adbwifi-cts" into rvc-dev am: 5ab3aa0c7b
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12000446 Change-Id: I27c6493f075ace2e9c12f9b7f359f42ccbb1406f
-rw-r--r--data/etc/privapp-permissions-platform.xml2
-rw-r--r--packages/Shell/AndroidManifest.xml3
-rw-r--r--services/core/java/com/android/server/adb/AdbService.java9
-rw-r--r--services/core/java/com/android/server/adb/AdbShellCommand.java68
4 files changed, 82 insertions, 0 deletions
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index 8520fffb3444..c710bed29361 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -424,6 +424,8 @@ applications that come with the platform
<permission name="android.permission.LOCATION_HARDWARE" />
<!-- Permissions required for GTS test - GtsDialerAudioTestCases -->
<permission name="android.permission.CAPTURE_AUDIO_OUTPUT" />
+ <!-- Permissions required for CTS test - AdbManagerTest -->
+ <permission name="android.permission.MANAGE_DEBUGGING" />
</privapp-permissions>
<privapp-permissions package="com.android.statementservice">
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index 9cecd52217a9..d50dc7cba52b 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -314,6 +314,9 @@
<!-- Permissions required for GTS test - GtsDialerAudioTestCases -->
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />
+ <!-- Permissions required for CTS test - AdbManagerTest -->
+ <uses-permission android:name="android.permission.MANAGE_DEBUGGING" />
+
<application android:label="@string/app_label"
android:theme="@android:style/Theme.DeviceDefault.DayNight"
android:defaultToDeviceProtectedStorage="true"
diff --git a/services/core/java/com/android/server/adb/AdbService.java b/services/core/java/com/android/server/adb/AdbService.java
index ef81d7159c42..29bb5428dd84 100644
--- a/services/core/java/com/android/server/adb/AdbService.java
+++ b/services/core/java/com/android/server/adb/AdbService.java
@@ -34,6 +34,7 @@ import android.hardware.usb.UsbManager;
import android.net.Uri;
import android.os.Binder;
import android.os.IBinder;
+import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.UserHandle;
@@ -509,6 +510,14 @@ public class AdbService extends IAdbManager.Stub {
}
@Override
+ public int handleShellCommand(ParcelFileDescriptor in, ParcelFileDescriptor out,
+ ParcelFileDescriptor err, String[] args) {
+ return new AdbShellCommand(this).exec(
+ this, in.getFileDescriptor(), out.getFileDescriptor(), err.getFileDescriptor(),
+ args);
+ }
+
+ @Override
public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
if (!DumpUtils.checkDumpPermission(mContext, TAG, writer)) return;
diff --git a/services/core/java/com/android/server/adb/AdbShellCommand.java b/services/core/java/com/android/server/adb/AdbShellCommand.java
new file mode 100644
index 000000000000..76918529d071
--- /dev/null
+++ b/services/core/java/com/android/server/adb/AdbShellCommand.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.adb;
+
+import android.os.BasicShellCommandHandler;
+
+import java.io.PrintWriter;
+import java.util.Objects;
+
+/**
+ * Interprets and executes 'adb shell cmd adb [args]'.
+ */
+class AdbShellCommand extends BasicShellCommandHandler {
+
+ private final AdbService mService;
+
+ AdbShellCommand(AdbService service) {
+ mService = Objects.requireNonNull(service);
+ }
+
+ @Override
+ public int onCommand(String cmd) {
+ if (cmd == null) {
+ return handleDefaultCommands(null);
+ }
+
+ final PrintWriter pw = getOutPrintWriter();
+ switch (cmd) {
+ case "is-wifi-supported": {
+ pw.println(Boolean.toString(mService.isAdbWifiSupported()));
+ return 0;
+ }
+ case "is-wifi-qr-supported": {
+ pw.println(Boolean.toString(mService.isAdbWifiQrSupported()));
+ return 0;
+ }
+ default:
+ return handleDefaultCommands(cmd);
+ }
+ }
+
+ @Override
+ public void onHelp() {
+ PrintWriter pw = getOutPrintWriter();
+ pw.println("Adb service commands:");
+ pw.println(" help or -h");
+ pw.println(" Print this help text.");
+ pw.println(" is-wifi-supported");
+ pw.println(" Returns \"true\" if adb over wifi is supported.");
+ pw.println(" is-wifi-qr-supported");
+ pw.println(" Returns \"true\" if adb over wifi + QR pairing is supported.");
+ pw.println();
+ }
+}