diff options
author | Pedro Loureiro <pedroql@google.com> | 2022-12-12 16:46:50 +0000 |
---|---|---|
committer | Pedro Loureiro <pedroql@google.com> | 2022-12-22 10:29:22 +0000 |
commit | 9d30c1ffd57dc9ba8348458c88b4a684d029669d (patch) | |
tree | 9fd374ac9766d319c0bc36103913fc25e08921d5 /service/java/com | |
parent | e34847f27e1be80e76eeb1a3b33d0cd5152eff6f (diff) | |
download | ConfigInfrastructure-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.java | 45 | ||||
-rw-r--r-- | service/java/com/android/server/deviceconfig/DeviceConfigShellService.java | 40 |
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"); + } + } +} |