diff options
author | Joshua Duong <joshuaduong@google.com> | 2020-06-30 00:57:37 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-06-30 00:57:37 +0000 |
commit | b47d1e610072afe2209ca57bc3e1fe5373fbb2f4 (patch) | |
tree | 6a6d8b10712fc6a1a4d9cc56cddcbee80ffa1413 | |
parent | f30f3effddc650e2a0f7654277901b6a808890ea (diff) | |
parent | 5ab3aa0c7b913079e1a8146d347faf66c49761a3 (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
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(); + } +} |