diff options
| -rw-r--r-- | packages/SystemUI/Android.bp | 12 | ||||
| -rw-r--r-- | packages/SystemUI/shared/Android.bp | 31 | ||||
| -rw-r--r-- | packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt (renamed from packages/SystemUI/plugin/src/com/android/systemui/flags/Flag.kt) | 0 | ||||
| -rw-r--r-- | packages/SystemUI/shared/src/com/android/systemui/flags/FlagManager.kt | 64 | ||||
| -rw-r--r-- | packages/SystemUI/src-debug/com/android/systemui/flags/FeatureFlagManager.java | 9 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/flags/Flags.java (renamed from packages/SystemUI/plugin/src/com/android/systemui/flags/Flags.java) | 0 |
6 files changed, 112 insertions, 4 deletions
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp index 721b432099f5..f44893e013ab 100644 --- a/packages/SystemUI/Android.bp +++ b/packages/SystemUI/Android.bp @@ -50,6 +50,17 @@ java_library { srcs: ["src/com/android/systemui/EventLogTags.logtags"], } +java_library { + name: "SystemUI-flags", + srcs: [ + "src/com/android/systemui/flags/Flags.java", + ], + libs: [ + "SystemUI-flag-types", + ], + static_kotlin_stdlib: false, +} + filegroup { name: "ReleaseJavaFiles", srcs: [ @@ -116,6 +127,7 @@ android_library { "iconloader_base", "SystemUI-tags", "SystemUI-proto", + "SystemUI-flags", "monet", "dagger2", "jsr330", diff --git a/packages/SystemUI/shared/Android.bp b/packages/SystemUI/shared/Android.bp index 23307de519c8..7cf22a38837b 100644 --- a/packages/SystemUI/shared/Android.bp +++ b/packages/SystemUI/shared/Android.bp @@ -45,9 +45,40 @@ android_library { ":wm_shell-aidls", ":wm_shell_util-sources", ], + libs: [ + "SystemUI-flags", + ], static_libs: [ "PluginCoreLib", "androidx.dynamicanimation_dynamicanimation", + "androidx.concurrent_concurrent-futures", + ], + java_version: "1.8", + min_sdk_version: "current", +} + +java_library { + name: "SystemUI-flag-types", + srcs: [ + "src/com/android/systemui/flags/Flag.kt", + ], + static_kotlin_stdlib: false, + java_version: "1.8", + min_sdk_version: "current", +} + +java_library { + name: "SystemUIFlagsLib", + srcs: [ + "src/com/android/systemui/flags/**/*.kt", + ], + static_kotlin_stdlib: false, + libs: [ + "androidx.concurrent_concurrent-futures", + "SystemUI-flags", + ], + static_libs: [ + "SystemUI-flag-types", ], java_version: "1.8", min_sdk_version: "current", diff --git a/packages/SystemUI/plugin/src/com/android/systemui/flags/Flag.kt b/packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt index 68834bc2aa23..68834bc2aa23 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/flags/Flag.kt +++ b/packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt diff --git a/packages/SystemUI/shared/src/com/android/systemui/flags/FlagManager.kt b/packages/SystemUI/shared/src/com/android/systemui/flags/FlagManager.kt new file mode 100644 index 000000000000..89fee7084332 --- /dev/null +++ b/packages/SystemUI/shared/src/com/android/systemui/flags/FlagManager.kt @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2021 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.systemui.flags + +import android.content.Context +import android.content.Intent +import androidx.concurrent.futures.CallbackToFutureAdapter +import com.google.common.util.concurrent.ListenableFuture + +class FlagManager constructor(val context: Context) { + companion object { + const val RECEIVING_PACKAGE = "com.android.systemui" + const val ACTION_SET_FLAG = "com.android.systemui.action.SET_FLAG" + const val FLAGS_PERMISSION = "com.android.systemui.permission.FLAGS" + const val FIELD_ID = "id" + const val FIELD_VALUE = "value" + } + + fun getFlagsFuture(): ListenableFuture<Collection<Flag<*>>> { + val knownFlagMap = Flags.collectFlags() + // Possible todo in the future: query systemui async to actually get the known flag ids. + return CallbackToFutureAdapter.getFuture( + CallbackToFutureAdapter.Resolver { + completer: CallbackToFutureAdapter.Completer<Collection<Flag<*>>> -> + completer.set(knownFlagMap.values as Collection<Flag<*>>) + "Retrieving Flags" + }) + } + + fun setFlagValue(id: Int, enabled: Boolean) { + val intent = createIntent(id) + intent.putExtra(FIELD_VALUE, enabled) + + context.sendBroadcast(intent) + } + + fun eraseFlag(id: Int) { + val intent = createIntent(id) + + context.sendBroadcast(intent) + } + + private fun createIntent(id: Int): Intent { + val intent = Intent(ACTION_SET_FLAG) + intent.setPackage(RECEIVING_PACKAGE) + intent.putExtra(FIELD_ID, id) + + return intent + } +}
\ No newline at end of file diff --git a/packages/SystemUI/src-debug/com/android/systemui/flags/FeatureFlagManager.java b/packages/SystemUI/src-debug/com/android/systemui/flags/FeatureFlagManager.java index 1eeb51601682..c2ed1ac6f0e8 100644 --- a/packages/SystemUI/src-debug/com/android/systemui/flags/FeatureFlagManager.java +++ b/packages/SystemUI/src-debug/com/android/systemui/flags/FeatureFlagManager.java @@ -16,6 +16,11 @@ package com.android.systemui.flags; +import static com.android.systemui.flags.FlagManager.ACTION_SET_FLAG; +import static com.android.systemui.flags.FlagManager.FIELD_ID; +import static com.android.systemui.flags.FlagManager.FIELD_VALUE; +import static com.android.systemui.flags.FlagManager.FLAGS_PERMISSION; + import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -55,11 +60,7 @@ public class FeatureFlagManager implements FlagReader, FlagWriter, Dumpable { private static final String SYSPROP_PREFIX = "persist.systemui.flag_"; private static final String FIELD_TYPE = "type"; - private static final String FIELD_ID = "id"; - private static final String FIELD_VALUE = "value"; private static final String TYPE_BOOLEAN = "boolean"; - private static final String ACTION_SET_FLAG = "com.android.systemui.action.SET_FLAG"; - private static final String FLAGS_PERMISSION = "com.android.systemui.permission.FLAGS"; private final SystemPropertiesHelper mSystemPropertiesHelper; private final Map<Integer, Boolean> mBooleanFlagCache = new HashMap<>(); diff --git a/packages/SystemUI/plugin/src/com/android/systemui/flags/Flags.java b/packages/SystemUI/src/com/android/systemui/flags/Flags.java index 3761d42ae98c..3761d42ae98c 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/flags/Flags.java +++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.java |