Files
Flexera-Launcher/quickstep/src/com/android/quickstep/DeviceConfigWrapper.kt
T
Holly Sun 8b38295fb2 [omni] Dynamically configure timeout for LPAA.
Video: https://drive.google.com/file/d/1N7qOIolcSYM9n3z40FO9O6S_IdLJav9l/view?usp=sharing

Bug: 335018496
Test: manual
Flag: legacy CUSTOM_LPAA_THRESHOLDS disabled
Change-Id: I5b0f7cc7815ecd85c51254ad34f2be521c44795c
2024-05-14 12:42:28 -07:00

169 lines
6.3 KiB
Kotlin

/*
* Copyright (C) 2024 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.quickstep
import com.android.quickstep.util.DeviceConfigHelper
import com.android.quickstep.util.DeviceConfigHelper.PropReader
import java.io.PrintWriter
/** Various configurations specific to nav-bar functionalities */
class DeviceConfigWrapper private constructor(propReader: PropReader) {
val customLpnhThresholds =
propReader.get(
"CUSTOM_LPNH_THRESHOLDS",
true,
"Add dev options and server side control to customize the LPNH trigger slop and milliseconds"
)
val customLphThresholds =
propReader.get(
"CUSTOM_LPH_THRESHOLDS",
true,
"Server side control to customize LPH timeout and touch slop"
)
val customLpaaThresholds =
propReader.get(
"CUSTOM_LPAA_THRESHOLDS",
false,
"Server side control to customize LPAA timeout and touch slop"
)
val overrideLpnhLphThresholds =
propReader.get(
"OVERRIDE_LPNH_LPH_THRESHOLDS",
false,
"Enable AGSA override for LPNH and LPH timeout and touch slop"
)
val lpnhTimeoutMs =
propReader.get("LPNH_TIMEOUT_MS", 450, "Controls lpnh timeout in milliseconds")
val lpnhSlopPercentage =
propReader.get("LPNH_SLOP_PERCENTAGE", 100, "Controls touch slop percentage for lpnh")
val enableLpnhTwoStages =
propReader.get(
"ENABLE_LPNH_TWO_STAGES",
false,
"Enable two stage for LPNH duration and touch slop"
)
val twoStageMultiplier =
propReader.get(
"TWO_STAGE_MULTIPLIER",
2,
"Extends the duration and touch slop if the initial slop is passed"
)
val animateLpnh = propReader.get("ANIMATE_LPNH", false, "Animates navbar when long pressing")
val shrinkNavHandleOnPress =
propReader.get(
"SHRINK_NAV_HANDLE_ON_PRESS",
false,
"Shrinks navbar when long pressing if ANIMATE_LPNH is enabled"
)
val enableLongPressNavHandle =
propReader.get(
"ENABLE_LONG_PRESS_NAV_HANDLE",
true,
"Enables long pressing on the bottom bar nav handle to trigger events."
)
val enableSearchHapticHint =
propReader.get(
"ENABLE_SEARCH_HAPTIC_HINT",
true,
"Enables haptic hint while long pressing on the bottom bar nav handle."
)
val enableSearchHapticCommit =
propReader.get(
"ENABLE_SEARCH_HAPTIC_COMMIT",
true,
"Enables haptic hint at end of long pressing on the bottom bar nav handle."
)
val lpnhHapticHintStartScalePercent =
propReader.get("LPNH_HAPTIC_HINT_START_SCALE_PERCENT", 0, "Haptic hint start scale.")
val lpnhHapticHintEndScalePercent =
propReader.get("LPNH_HAPTIC_HINT_END_SCALE_PERCENT", 100, "Haptic hint end scale.")
val lpnhHapticHintScaleExponent =
propReader.get("LPNH_HAPTIC_HINT_SCALE_EXPONENT", 1, "Haptic hint scale exponent.")
val lpnhHapticHintIterations =
propReader.get("LPNH_HAPTIC_HINT_ITERATIONS", 50, "Haptic hint number of iterations.")
val enableLpnhDeepPress =
propReader.get(
"ENABLE_LPNH_DEEP_PRESS",
true,
"Long press of nav handle is instantly triggered if deep press is detected."
)
val lpnhHapticHintDelay =
propReader.get("LPNH_HAPTIC_HINT_DELAY", 0, "Delay before haptic hint starts.")
val lpnhExtraTouchWidthDp =
propReader.get(
"LPNH_EXTRA_TOUCH_WIDTH_DP",
0,
"Controls extra dp on the nav bar sides to trigger LPNH. Can be negative for a smaller touch region."
)
val allAppsOverviewThreshold =
propReader.get(
"ALL_APPS_OVERVIEW_THRESHOLD",
180,
"Threshold to open All Apps from Overview"
)
/** Dump config values. */
fun dump(prefix: String, writer: PrintWriter) {
writer.println("$prefix DeviceConfigWrapper:")
writer.println("$prefix\tcustomLpnhThresholds=$customLpnhThresholds")
writer.println("$prefix\tcustomLphThresholds=$customLphThresholds")
writer.println("$prefix\toverrideLpnhLphThresholds=$overrideLpnhLphThresholds")
writer.println("$prefix\tlpnhSlopPercentage=$lpnhSlopPercentage")
writer.println("$prefix\tanimateLpnh=$animateLpnh")
writer.println("$prefix\tshrinkNavHandleOnPress=$shrinkNavHandleOnPress")
writer.println("$prefix\tlpnhTimeoutMs=$lpnhTimeoutMs")
writer.println("$prefix\tenableLongPressNavHandle=$enableLongPressNavHandle")
writer.println("$prefix\tenableSearchHapticHint=$enableSearchHapticHint")
writer.println("$prefix\tenableSearchHapticCommit=$enableSearchHapticCommit")
writer.println("$prefix\tlpnhHapticHintStartScalePercent=$lpnhHapticHintStartScalePercent")
writer.println("$prefix\tlpnhHapticHintEndScalePercent=$lpnhHapticHintEndScalePercent")
writer.println("$prefix\tlpnhHapticHintScaleExponent=$lpnhHapticHintScaleExponent")
writer.println("$prefix\tlpnhHapticHintIterations=$lpnhHapticHintIterations")
writer.println("$prefix\tenableLpnhDeepPress=$enableLpnhDeepPress")
writer.println("$prefix\tlpnhHapticHintDelay=$lpnhHapticHintDelay")
writer.println("$prefix\tlpnhExtraTouchWidthDp=$lpnhExtraTouchWidthDp")
writer.println("$prefix\tallAppsOverviewThreshold=$allAppsOverviewThreshold")
}
companion object {
@JvmStatic val configHelper by lazy { DeviceConfigHelper(::DeviceConfigWrapper) }
@JvmStatic fun get() = configHelper.config
}
}