summaryrefslogtreecommitdiff
path: root/service/java/com
diff options
context:
space:
mode:
authorPedro Loureiro <pedroql@google.com>2022-12-12 16:46:50 +0000
committerPedro Loureiro <pedroql@google.com>2022-12-22 10:29:22 +0000
commit9d30c1ffd57dc9ba8348458c88b4a684d029669d (patch)
tree9fd374ac9766d319c0bc36103913fc25e08921d5 /service/java/com
parente34847f27e1be80e76eeb1a3b33d0cd5152eff6f (diff)
downloadConfigInfrastructure-9d30c1ffd57dc9ba8348458c88b4a684d029669d.tar.gz
Add updatable DeviceConfig Service
This adds a new service that will power the updatable DeviceConfig logic. The current design will take over from the "device_config" service that currently exists in the platform when UpdatableDeviceConfigServiceReadiness.shouldStartUpdatableService returns true. Otherwise the behaviour changes shouldn't be noticeable. Bug: 261723346 Test: manual Test: atest CtsDeviceConfigTestCases Change-Id: I761e62aaf9503964ed848953575788b59c14a304
Diffstat (limited to 'service/java/com')
-rw-r--r--service/java/com/android/server/deviceconfig/DeviceConfigInit.java45
-rw-r--r--service/java/com/android/server/deviceconfig/DeviceConfigShellService.java40
2 files changed, 85 insertions, 0 deletions
diff --git a/service/java/com/android/server/deviceconfig/DeviceConfigInit.java b/service/java/com/android/server/deviceconfig/DeviceConfigInit.java
new file mode 100644
index 0000000..dba14ba
--- /dev/null
+++ b/service/java/com/android/server/deviceconfig/DeviceConfigInit.java
@@ -0,0 +1,45 @@
+package com.android.server.deviceconfig;
+
+import java.io.FileDescriptor;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.content.Context;
+import android.os.Binder;
+import android.provider.UpdatableDeviceConfigServiceReadiness;
+
+import com.android.server.SystemService;
+
+/** @hide */
+@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
+public class DeviceConfigInit {
+
+ private DeviceConfigInit() {
+ // do not instantiate
+ }
+
+ /** @hide */
+ @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
+ public static class Lifecycle extends SystemService {
+ private DeviceConfigShellService mShellService;
+
+ /** @hide */
+ @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
+ public Lifecycle(@NonNull Context context) {
+ super(context);
+ // this service is always instantiated but should only launch subsequent services
+ // if the module is ready
+ if (UpdatableDeviceConfigServiceReadiness.shouldStartUpdatableService()) {
+ mShellService = new DeviceConfigShellService();
+ }
+ }
+
+ /** @hide */
+ @Override
+ public void onStart() {
+ if (UpdatableDeviceConfigServiceReadiness.shouldStartUpdatableService()) {
+ publishBinderService("device_config", mShellService);
+ }
+ }
+ }
+}
diff --git a/service/java/com/android/server/deviceconfig/DeviceConfigShellService.java b/service/java/com/android/server/deviceconfig/DeviceConfigShellService.java
new file mode 100644
index 0000000..14ced76
--- /dev/null
+++ b/service/java/com/android/server/deviceconfig/DeviceConfigShellService.java
@@ -0,0 +1,40 @@
+package com.android.server.deviceconfig;
+
+import java.io.PrintWriter;
+
+import android.annotation.NonNull;
+import android.os.Binder;
+import android.os.ParcelFileDescriptor;
+
+import com.android.modules.utils.BasicShellCommandHandler;
+
+/** @hide */
+public class DeviceConfigShellService extends Binder {
+
+ @Override
+ public int handleShellCommand(@NonNull ParcelFileDescriptor in,
+ @NonNull ParcelFileDescriptor out, @NonNull ParcelFileDescriptor err,
+ @NonNull String[] args) {
+ return (new MyShellCommand()).exec(
+ this, in.getFileDescriptor(), out.getFileDescriptor(), err.getFileDescriptor(),
+ args);
+ }
+
+ static final class MyShellCommand extends BasicShellCommandHandler {
+
+ @Override
+ public int onCommand(String cmd) {
+ if (cmd == null || "help".equals(cmd) || "-h".equals(cmd)) {
+ onHelp();
+ return -1;
+ }
+ return -1;
+ }
+
+ @Override
+ public void onHelp() {
+ PrintWriter pw = getOutPrintWriter();
+ pw.println("Device Config implemented in mainline");
+ }
+ }
+}