/* * Copyright (C) 2018 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.settings.development.featureflags; import android.content.Context; import android.os.SystemProperties; import android.text.TextUtils; import android.util.FeatureFlagUtils; import androidx.annotation.VisibleForTesting; import com.android.settings.core.FeatureFlags; import java.util.HashSet; /** * Helper class to get feature persistent flag information. */ public class FeatureFlagPersistent { private static final HashSet PERSISTENT_FLAGS; static { PERSISTENT_FLAGS = new HashSet<>(); PERSISTENT_FLAGS.add(FeatureFlags.HEARING_AID_SETTINGS); PERSISTENT_FLAGS.add(FeatureFlags.NETWORK_INTERNET_V2); PERSISTENT_FLAGS.add(FeatureFlags.DYNAMIC_SYSTEM); } public static boolean isEnabled(Context context, String feature) { String value = SystemProperties.get(FeatureFlagUtils.PERSIST_PREFIX + feature); if (!TextUtils.isEmpty(value)) { return Boolean.parseBoolean(value); } else { return FeatureFlagUtils.isEnabled(context, feature); } } public static void setEnabled(Context context, String feature, boolean enabled) { SystemProperties.set(FeatureFlagUtils.PERSIST_PREFIX + feature, enabled ? "true" : "false"); FeatureFlagUtils.setEnabled(context, feature, enabled); } public static boolean isPersistent(String feature) { return PERSISTENT_FLAGS.contains(feature); } /** * Returns all persistent flags in their raw form. */ @VisibleForTesting(otherwise = VisibleForTesting.NONE) static HashSet getAllPersistentFlags() { return PERSISTENT_FLAGS; } }