Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e741d1c7 authored by dshivangi's avatar dshivangi
Browse files

Add trunkstable flags for Fold Lock Setting

Add trunkstable flag for Fold Lock Setting.
FoldLockSettingAvailabilityProvider would check resources and
trunkstable flag and return the availibility of the setting.
Test: Flashed the device with local build
* Locally enabled and disabled the flag
* Check if the behavior and setting visibility is changing according to
  flag status.
Fixes: 302682601
Flag: fold_lock_setting_enabled

Change-Id: Idb7a9519cb2b6ff0116ddf6765e427f9d6733d5e
parent 59279cd2
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ aconfig_srcjars = [
    ":android.permission.flags-aconfig-java{.generated_srcjars}",
    ":hwui_flags_java_lib{.generated_srcjars}",
    ":display_flags_lib{.generated_srcjars}",
    ":com.android.internal.foldables.flags-aconfig-java{.generated_srcjars}",
    ":android.multiuser.flags-aconfig-java{.generated_srcjars}",
    ":android.app.flags-aconfig-java{.generated_srcjars}",
]
@@ -317,6 +318,12 @@ java_aconfig_library {
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

java_aconfig_library {
    name: "com.android.internal.foldables.flags-aconfig-java",
    aconfig_declarations: "fold_lock_setting_flags",
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

// Multi user
aconfig_declarations {
    name: "android.multiuser.flags-aconfig",
+7 −0
Original line number Diff line number Diff line
aconfig_declarations {
    name: "fold_lock_setting_flags",
    package: "com.android.internal.foldables.flags",
    srcs: [
        "fold_lock_setting_flags.aconfig",
    ],
}
+25 −2
Original line number Diff line number Diff line
@@ -17,16 +17,23 @@
package com.android.internal.foldables;

import android.content.res.Resources;
import android.os.Build;
import android.sysprop.FoldLockBehaviorProperties;
import android.util.Slog;

import com.android.internal.R;
import com.android.internal.foldables.flags.Flags;

import java.util.function.Supplier;

/**
 * Wrapper class to access {@link FoldLockBehaviorProperties} and also assists with testing
 */
public class FoldLockSettingAvailabilityProvider {

    boolean mFoldLockBehaviorResourceValue;
    private static final String TAG = "FoldLockSettingAvailabilityProvider";
    private final boolean mFoldLockBehaviorResourceValue;
    private final Supplier<Boolean> mFoldLockSettingEnabled = Flags::foldLockSettingEnabled;

    public FoldLockSettingAvailabilityProvider(Resources resources) {
        mFoldLockBehaviorResourceValue = resources.getBoolean(
@@ -35,6 +42,22 @@ public class FoldLockSettingAvailabilityProvider {

    public boolean isFoldLockBehaviorAvailable() {
        return mFoldLockBehaviorResourceValue
                && FoldLockBehaviorProperties.fold_lock_setting_enabled().orElse(false);
                && flagOrSystemProperty();
    }

    private boolean flagOrSystemProperty() {
        if ((Build.IS_ENG || Build.IS_USERDEBUG)
                && FoldLockBehaviorProperties.fold_lock_setting_enabled().orElse(false)) {
            return true;
        }
        try {
            return mFoldLockSettingEnabled.get();
        } catch (Throwable ex) {
            Slog.i(TAG,
                    "Flags not ready yet. Return false for "
                            + Flags.FLAG_FOLD_LOCK_SETTING_ENABLED,
                    ex);
            return false;
        }
    }
}
+9 −0
Original line number Diff line number Diff line
package: "com.android.internal.foldables.flags"

flag {
    name: "fold_lock_setting_enabled"
    namespace: "display_manager"
    description: "Feature flag for Fold Lock Setting"
    bug: "274447767"
    is_fixed_read_only: true
}