summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Loureiro <pedroql@google.com>2023-02-07 18:32:17 +0000
committerPedro Loureiro <pedroql@google.com>2023-02-10 15:22:22 +0000
commitbb220cddab91497b3a06bcce4893356de244baa5 (patch)
tree75cb393a83e5f14765e911051c73ce8f4d38e9d7
parent1de860ac5ff34ef498022e9108ea6090435be8ea (diff)
downloadConfigInfrastructure-bb220cddab91497b3a06bcce4893356de244baa5.tar.gz
Create DeviceConfigShellCommandHandler
Bug: 265948913 Test: manual Change-Id: I0a133988ae44677b8a44ed62ddd8208c439e9ae5
-rw-r--r--framework/api/module-lib-current.txt4
-rw-r--r--framework/java/android/provider/DeviceConfigShellCommandHandler.java64
-rw-r--r--service/java/com/android/server/deviceconfig/DeviceConfigInit.java2
3 files changed, 69 insertions, 1 deletions
diff --git a/framework/api/module-lib-current.txt b/framework/api/module-lib-current.txt
index da891e4..579149b 100644
--- a/framework/api/module-lib-current.txt
+++ b/framework/api/module-lib-current.txt
@@ -37,5 +37,9 @@ package android.provider {
ctor public DeviceConfig.Properties(@NonNull String, @Nullable java.util.Map<java.lang.String,java.lang.String>);
}
+ public final class DeviceConfigShellCommandHandler {
+ method public static int handleShellCommand(@NonNull android.os.ParcelFileDescriptor, @NonNull android.os.ParcelFileDescriptor, @NonNull android.os.ParcelFileDescriptor, @NonNull String[]);
+ }
+
}
diff --git a/framework/java/android/provider/DeviceConfigShellCommandHandler.java b/framework/java/android/provider/DeviceConfigShellCommandHandler.java
new file mode 100644
index 0000000..fc09c4b
--- /dev/null
+++ b/framework/java/android/provider/DeviceConfigShellCommandHandler.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2023 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 android.provider;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.os.Binder;
+import android.os.ParcelFileDescriptor;
+import android.os.RemoteException;
+import android.os.ResultReceiver;
+
+import java.io.IOException;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+
+/**
+ * Class that allows to pass shell commands sent to device_config service
+ * (provided in the platform) to the service provided by this mainline module.
+ *
+ * @hide
+ */
+@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+public final class DeviceConfigShellCommandHandler {
+ private DeviceConfigShellCommandHandler() {
+ // fully static class
+ }
+
+ /**
+ * Runs a shell command in the service defined in this module.
+ *
+ * @param inPfd standard input
+ * @param outPfd standard output
+ * @param errPfd standard error
+ * @param args arguments passed to the command. Can be empty. The first argument
+ * is typically a subcommand, such as {@code run} for
+ * {@code adb shell cmd jobscheduler run}.
+ * @return the status code returned from the {@code cmd} command.
+ */
+ static public int handleShellCommand(
+ @NonNull ParcelFileDescriptor inPfd,
+ @NonNull ParcelFileDescriptor outPfd,
+ @NonNull ParcelFileDescriptor errPfd,
+ @NonNull String[] args) {
+ Binder newBinder = (Binder) DeviceConfigInitializer
+ .getDeviceConfigServiceManager()
+ .getDeviceConfigUpdatableServiceRegisterer()
+ .get();
+ return newBinder.handleShellCommand(inPfd, outPfd, errPfd, args);
+ }
+}
diff --git a/service/java/com/android/server/deviceconfig/DeviceConfigInit.java b/service/java/com/android/server/deviceconfig/DeviceConfigInit.java
index dba14ba..0921d81 100644
--- a/service/java/com/android/server/deviceconfig/DeviceConfigInit.java
+++ b/service/java/com/android/server/deviceconfig/DeviceConfigInit.java
@@ -38,7 +38,7 @@ public class DeviceConfigInit {
@Override
public void onStart() {
if (UpdatableDeviceConfigServiceReadiness.shouldStartUpdatableService()) {
- publishBinderService("device_config", mShellService);
+ publishBinderService("device_config_updatable", mShellService);
}
}
}