Remove tuner icon from settings button

This removes a two-way call to system_server in the main thread. The
only way to enable the tuner right now is through adb and it's largely
not used, so removing this indicator is not a big loss.

Fixes: 207257090
Test: atest FooterActionsControllerTest
Change-Id: If03c697f97a6c155122be98e369da66d2617069b
This commit is contained in:
Fabian Kozynski
2022-02-11 11:22:24 -05:00
parent 444b42ef59
commit eb52aa2d40
6 changed files with 10 additions and 77 deletions

View File

@@ -77,16 +77,6 @@
android:src="@drawable/ic_settings"
android:tint="?android:attr/textColorPrimary" />
<com.android.systemui.statusbar.AlphaOptimizedImageView
android:id="@+id/tuner_icon"
android:layout_width="8dp"
android:layout_height="8dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="@dimen/qs_footer_icon_padding"
android:src="@drawable/tuner"
android:tint="?android:attr/textColorTertiary"
android:visibility="invisible" />
</com.android.systemui.statusbar.AlphaOptimizedFrameLayout>
</com.android.systemui.qs.FooterActionsView>

View File

@@ -78,16 +78,6 @@
android:src="@drawable/ic_settings"
android:tint="?android:attr/textColorPrimary" />
<com.android.systemui.statusbar.AlphaOptimizedImageView
android:id="@+id/tuner_icon"
android:layout_width="8dp"
android:layout_height="8dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="@dimen/qs_footer_icon_padding"
android:src="@drawable/tuner"
android:tint="?android:attr/textColorTertiary"
android:visibility="invisible" />
</com.android.systemui.statusbar.AlphaOptimizedFrameLayout>
<com.android.systemui.statusbar.AlphaOptimizedImageView

View File

@@ -24,7 +24,6 @@ import android.provider.Settings.Global.USER_SWITCHER_ENABLED
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.Toast
import androidx.annotation.VisibleForTesting
import com.android.internal.jank.InteractionJankMonitor
import com.android.internal.logging.MetricsLogger
@@ -46,7 +45,6 @@ import com.android.systemui.statusbar.phone.SettingsButton
import com.android.systemui.statusbar.policy.DeviceProvisionedController
import com.android.systemui.statusbar.policy.UserInfoController
import com.android.systemui.statusbar.policy.UserInfoController.OnUserInfoChangedListener
import com.android.systemui.tuner.TunerService
import com.android.systemui.util.DualHeightHorizontalLinearLayout
import com.android.systemui.util.ViewController
import com.android.systemui.util.settings.GlobalSettings
@@ -71,7 +69,6 @@ internal class FooterActionsController @Inject constructor(
private val fgsManagerFooterController: QSFgsManagerFooter,
private val falsingManager: FalsingManager,
private val metricsLogger: MetricsLogger,
private val tunerService: TunerService,
private val globalActionsDialog: GlobalActionsDialogLite,
private val uiEventLogger: UiEventLogger,
@Named(PM_LITE_ENABLED) private val showPMLiteButton: Boolean,
@@ -131,22 +128,7 @@ internal class FooterActionsController @Inject constructor(
return@OnClickListener
}
metricsLogger.action(MetricsProto.MetricsEvent.ACTION_QS_EXPANDED_SETTINGS_LAUNCH)
if (settingsButton.isTunerClick) {
activityStarter.postQSRunnableDismissingKeyguard {
if (isTunerEnabled()) {
tunerService.showResetRequest {
// Relaunch settings so that the tuner disappears.
startSettingsActivity()
}
} else {
Toast.makeText(context, R.string.tuner_toast, Toast.LENGTH_LONG).show()
tunerService.isTunerEnabled = true
}
startSettingsActivity()
}
} else {
startSettingsActivity()
}
startSettingsActivity()
} else if (v === powerMenuLite) {
uiEventLogger.log(GlobalActionsDialogLite.GlobalActionsEvent.GA_OPEN_QS)
globalActionsDialog.showOrHideDialog(false, true, v)
@@ -228,7 +210,7 @@ internal class FooterActionsController @Inject constructor(
}
private fun updateView() {
mView.updateEverything(isTunerEnabled(), multiUserSwitchController.isMultiUserEnabled)
mView.updateEverything(multiUserSwitchController.isMultiUserEnabled)
}
override fun onViewDetached() {
@@ -254,7 +236,7 @@ internal class FooterActionsController @Inject constructor(
}
fun disable(state2: Int) {
mView.disable(state2, isTunerEnabled(), multiUserSwitchController.isMultiUserEnabled)
mView.disable(state2, multiUserSwitchController.isMultiUserEnabled)
}
fun setExpansion(headerExpansionFraction: Float) {
@@ -275,6 +257,4 @@ internal class FooterActionsController @Inject constructor(
fun setKeyguardShowing(showing: Boolean) {
setExpansion(lastExpansion)
}
private fun isTunerEnabled() = tunerService.isTunerEnabled
}

View File

@@ -17,7 +17,6 @@ package com.android.systemui.qs
import android.app.StatusBarManager
import android.content.Context
import android.content.res.Configuration
import android.graphics.PorterDuff
import android.graphics.drawable.Drawable
import android.graphics.drawable.RippleDrawable
@@ -42,7 +41,6 @@ class FooterActionsView(context: Context?, attrs: AttributeSet?) : LinearLayout(
private lateinit var settingsButton: SettingsButton
private lateinit var multiUserSwitch: MultiUserSwitch
private lateinit var multiUserAvatar: ImageView
private lateinit var tunerIcon: View
private var qsDisabled = false
private var expansionAmount = 0f
@@ -53,50 +51,30 @@ class FooterActionsView(context: Context?, attrs: AttributeSet?) : LinearLayout(
settingsContainer = findViewById(R.id.settings_button_container)
multiUserSwitch = findViewById(R.id.multi_user_switch)
multiUserAvatar = multiUserSwitch.findViewById(R.id.multi_user_avatar)
tunerIcon = requireViewById(R.id.tuner_icon)
// RenderThread is doing more harm than good when touching the header (to expand quick
// settings), so disable it for this view
if (settingsButton.background is RippleDrawable) {
(settingsButton.background as RippleDrawable).setForceSoftware(true)
}
updateResources()
importantForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_YES
}
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
updateResources()
}
override fun onRtlPropertiesChanged(layoutDirection: Int) {
super.onRtlPropertiesChanged(layoutDirection)
updateResources()
}
private fun updateResources() {
val tunerIconTranslation = mContext.resources
.getDimensionPixelOffset(R.dimen.qs_footer_tuner_icon_translation).toFloat()
tunerIcon.translationX = if (isLayoutRtl) (-tunerIconTranslation) else tunerIconTranslation
}
fun disable(
state2: Int,
isTunerEnabled: Boolean,
multiUserEnabled: Boolean
) {
val disabled = state2 and StatusBarManager.DISABLE2_QUICK_SETTINGS != 0
if (disabled == qsDisabled) return
qsDisabled = disabled
updateEverything(isTunerEnabled, multiUserEnabled)
updateEverything(multiUserEnabled)
}
fun updateEverything(
isTunerEnabled: Boolean,
multiUserEnabled: Boolean
) {
post {
updateVisibilities(isTunerEnabled, multiUserEnabled)
updateVisibilities(multiUserEnabled)
updateClickabilities()
isClickable = false
}
@@ -108,11 +86,9 @@ class FooterActionsView(context: Context?, attrs: AttributeSet?) : LinearLayout(
}
private fun updateVisibilities(
isTunerEnabled: Boolean,
multiUserEnabled: Boolean
) {
settingsContainer.visibility = if (qsDisabled) GONE else VISIBLE
tunerIcon.visibility = if (isTunerEnabled) VISIBLE else INVISIBLE
multiUserSwitch.visibility = if (multiUserEnabled) VISIBLE else GONE
val isDemo = UserManager.isDeviceInDemoMode(context)
settingsButton.visibility = if (isDemo) INVISIBLE else VISIBLE

View File

@@ -34,6 +34,8 @@ import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import androidx.annotation.WorkerThread;
import com.android.internal.util.ArrayUtils;
import com.android.systemui.DejankUtils;
import com.android.systemui.R;
@@ -287,6 +289,7 @@ public class TunerServiceImpl extends TunerService {
}
@Override
@WorkerThread
public boolean isTunerEnabled() {
return mUserTracker.getUserContext().getPackageManager().getComponentEnabledSetting(
mTunerComponent) == PackageManager.COMPONENT_ENABLED_STATE_ENABLED;

View File

@@ -12,7 +12,6 @@ import androidx.test.filters.SmallTest
import com.android.internal.logging.MetricsLogger
import com.android.internal.logging.UiEventLogger
import com.android.internal.logging.testing.FakeMetricsLogger
import com.android.systemui.Dependency
import com.android.systemui.R
import com.android.systemui.classifier.FalsingManagerFake
import com.android.systemui.flags.FeatureFlags
@@ -23,9 +22,7 @@ import com.android.systemui.settings.UserTracker
import com.android.systemui.statusbar.phone.MultiUserSwitchController
import com.android.systemui.statusbar.policy.DeviceProvisionedController
import com.android.systemui.statusbar.policy.UserInfoController
import com.android.systemui.tuner.TunerService
import com.android.systemui.util.settings.FakeSettings
import com.android.systemui.utils.leaks.FakeTunerService
import com.android.systemui.utils.leaks.LeakCheckedTest
import com.google.common.truth.Truth.assertThat
import org.junit.After
@@ -82,8 +79,6 @@ class FooterActionsControllerTest : LeakCheckedTest() {
MockitoAnnotations.initMocks(this)
testableLooper = TestableLooper.get(this)
fakeSettings = FakeSettings()
injectLeakCheckedDependencies(*LeakCheckedTest.ALL_SUPPORTED_CLASSES)
val fakeTunerService = Dependency.get(TunerService::class.java) as FakeTunerService
whenever(multiUserSwitchControllerFactory.create(any()))
.thenReturn(multiUserSwitchController)
@@ -95,9 +90,8 @@ class FooterActionsControllerTest : LeakCheckedTest() {
controller = FooterActionsController(view, multiUserSwitchControllerFactory,
activityStarter, userManager, userTracker, userInfoController,
deviceProvisionedController, securityFooterController, fgsManagerController,
falsingManager, metricsLogger, fakeTunerService,
globalActionsDialog, uiEventLogger, showPMLiteButton = true, fakeSettings,
Handler(testableLooper.looper), featureFlags)
falsingManager, metricsLogger, globalActionsDialog, uiEventLogger,
showPMLiteButton = true, fakeSettings, Handler(testableLooper.looper), featureFlags)
controller.init()
ViewUtils.attachView(view)
// View looper is the testable looper associated with the test