Merge "Put wired charging ripple back."
This commit is contained in:
@@ -55,7 +55,6 @@ class ChargingRippleView(context: Context?, attrs: AttributeSet?) : View(context
|
||||
rippleShader.progress = 0f
|
||||
rippleShader.sparkleStrength = RIPPLE_SPARKLE_STRENGTH
|
||||
ripplePaint.shader = rippleShader
|
||||
visibility = View.GONE
|
||||
}
|
||||
|
||||
override fun onConfigurationChanged(newConfig: Configuration?) {
|
||||
@@ -86,12 +85,10 @@ class ChargingRippleView(context: Context?, attrs: AttributeSet?) : View(context
|
||||
animator.addListener(object : AnimatorListenerAdapter() {
|
||||
override fun onAnimationEnd(animation: Animator?) {
|
||||
rippleInProgress = false
|
||||
visibility = View.GONE
|
||||
onAnimationEnd?.run()
|
||||
}
|
||||
})
|
||||
animator.start()
|
||||
visibility = View.VISIBLE
|
||||
rippleInProgress = true
|
||||
}
|
||||
|
||||
@@ -100,6 +97,11 @@ class ChargingRippleView(context: Context?, attrs: AttributeSet?) : View(context
|
||||
}
|
||||
|
||||
override fun onDraw(canvas: Canvas?) {
|
||||
if (canvas == null || !canvas.isHardwareAccelerated) {
|
||||
// Drawing with the ripple shader requires hardware acceleration, so skip
|
||||
// if it's unsupported.
|
||||
return
|
||||
}
|
||||
// To reduce overdraw, we mask the effect to a circle whose radius is big enough to cover
|
||||
// the active effect area. Values here should be kept in sync with the
|
||||
// animation implementation in the ripple shader.
|
||||
|
||||
@@ -28,15 +28,15 @@ import com.android.internal.annotations.VisibleForTesting
|
||||
import com.android.internal.logging.UiEvent
|
||||
import com.android.internal.logging.UiEventLogger
|
||||
import com.android.settingslib.Utils
|
||||
import com.android.systemui.R
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.flags.FeatureFlags
|
||||
import com.android.systemui.flags.Flags
|
||||
import com.android.systemui.statusbar.commandline.Command
|
||||
import com.android.systemui.statusbar.commandline.CommandRegistry
|
||||
import com.android.systemui.statusbar.policy.BatteryController
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController
|
||||
import com.android.systemui.util.leak.RotationUtils
|
||||
import com.android.systemui.R
|
||||
import com.android.systemui.flags.Flags
|
||||
import com.android.systemui.util.time.SystemClock
|
||||
import java.io.PrintWriter
|
||||
import javax.inject.Inject
|
||||
@@ -53,8 +53,8 @@ private const val BASE_DEBOUNCE_TIME = 2000
|
||||
@SysUISingleton
|
||||
class WiredChargingRippleController @Inject constructor(
|
||||
commandRegistry: CommandRegistry,
|
||||
batteryController: BatteryController,
|
||||
configurationController: ConfigurationController,
|
||||
private val batteryController: BatteryController,
|
||||
private val configurationController: ConfigurationController,
|
||||
featureFlags: FeatureFlags,
|
||||
private val context: Context,
|
||||
private val windowManager: WindowManager,
|
||||
@@ -88,6 +88,11 @@ class WiredChargingRippleController @Inject constructor(
|
||||
|
||||
init {
|
||||
pluggedIn = batteryController.isPluggedIn
|
||||
commandRegistry.registerCommand("charging-ripple") { ChargingRippleCommand() }
|
||||
updateRippleColor()
|
||||
}
|
||||
|
||||
fun registerCallbacks() {
|
||||
val batteryStateChangeCallback = object : BatteryController.BatteryStateChangeCallback {
|
||||
override fun onBatteryLevelChanged(
|
||||
level: Int,
|
||||
@@ -123,9 +128,6 @@ class WiredChargingRippleController @Inject constructor(
|
||||
}
|
||||
}
|
||||
configurationController.addCallback(configurationChangedListener)
|
||||
|
||||
commandRegistry.registerCommand("charging-ripple") { ChargingRippleCommand() }
|
||||
updateRippleColor()
|
||||
}
|
||||
|
||||
// Lazily debounce ripple to avoid triggering ripple constantly (e.g. from flaky chargers).
|
||||
|
||||
@@ -203,6 +203,7 @@ import com.android.systemui.statusbar.PowerButtonReveal;
|
||||
import com.android.systemui.statusbar.PulseExpansionHandler;
|
||||
import com.android.systemui.statusbar.StatusBarState;
|
||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
||||
import com.android.systemui.statusbar.charging.WiredChargingRippleController;
|
||||
import com.android.systemui.statusbar.connectivity.NetworkController;
|
||||
import com.android.systemui.statusbar.core.StatusBarInitializer;
|
||||
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
|
||||
@@ -786,7 +787,8 @@ public class StatusBar extends CoreStartable implements
|
||||
NotifPipelineFlags notifPipelineFlags,
|
||||
InteractionJankMonitor jankMonitor,
|
||||
DeviceStateManager deviceStateManager,
|
||||
DreamOverlayStateController dreamOverlayStateController) {
|
||||
DreamOverlayStateController dreamOverlayStateController,
|
||||
WiredChargingRippleController wiredChargingRippleController) {
|
||||
super(context);
|
||||
mNotificationsController = notificationsController;
|
||||
mFragmentService = fragmentService;
|
||||
@@ -912,6 +914,7 @@ public class StatusBar extends CoreStartable implements
|
||||
|
||||
deviceStateManager.registerCallback(mMainExecutor,
|
||||
new FoldStateListener(mContext, this::onFoldedStateChanged));
|
||||
wiredChargingRippleController.registerCallbacks();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -64,6 +64,7 @@ import com.android.systemui.statusbar.NotificationShadeWindowController;
|
||||
import com.android.systemui.statusbar.NotificationViewHierarchyManager;
|
||||
import com.android.systemui.statusbar.PulseExpansionHandler;
|
||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
||||
import com.android.systemui.statusbar.charging.WiredChargingRippleController;
|
||||
import com.android.systemui.statusbar.connectivity.NetworkController;
|
||||
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
|
||||
import com.android.systemui.statusbar.notification.NotifPipelineFlags;
|
||||
@@ -233,7 +234,8 @@ public interface StatusBarPhoneModule {
|
||||
NotifPipelineFlags notifPipelineFlags,
|
||||
InteractionJankMonitor jankMonitor,
|
||||
DeviceStateManager deviceStateManager,
|
||||
DreamOverlayStateController dreamOverlayStateController) {
|
||||
DreamOverlayStateController dreamOverlayStateController,
|
||||
WiredChargingRippleController wiredChargingRippleController) {
|
||||
return new StatusBar(
|
||||
context,
|
||||
notificationsController,
|
||||
@@ -330,7 +332,8 @@ public interface StatusBarPhoneModule {
|
||||
notifPipelineFlags,
|
||||
jankMonitor,
|
||||
deviceStateManager,
|
||||
dreamOverlayStateController
|
||||
dreamOverlayStateController,
|
||||
wiredChargingRippleController
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,6 +63,7 @@ class WiredChargingRippleControllerTest : SysuiTestCase() {
|
||||
commandRegistry, batteryController, configurationController,
|
||||
featureFlags, context, windowManager, systemClock, uiEventLogger)
|
||||
controller.rippleView = rippleView // Replace the real ripple view with a mock instance
|
||||
controller.registerCallbacks()
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -116,6 +116,7 @@ import com.android.systemui.statusbar.OperatorNameViewController;
|
||||
import com.android.systemui.statusbar.PulseExpansionHandler;
|
||||
import com.android.systemui.statusbar.StatusBarState;
|
||||
import com.android.systemui.statusbar.StatusBarStateControllerImpl;
|
||||
import com.android.systemui.statusbar.charging.WiredChargingRippleController;
|
||||
import com.android.systemui.statusbar.connectivity.NetworkController;
|
||||
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
|
||||
import com.android.systemui.statusbar.notification.NotifPipelineFlags;
|
||||
@@ -288,6 +289,7 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
@Mock private InteractionJankMonitor mJankMonitor;
|
||||
@Mock private DeviceStateManager mDeviceStateManager;
|
||||
@Mock private DreamOverlayStateController mDreamOverlayStateController;
|
||||
@Mock private WiredChargingRippleController mWiredChargingRippleController;
|
||||
private ShadeController mShadeController;
|
||||
private final FakeSystemClock mFakeSystemClock = new FakeSystemClock();
|
||||
private FakeExecutor mMainExecutor = new FakeExecutor(mFakeSystemClock);
|
||||
@@ -479,7 +481,8 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
mNotifPipelineFlags,
|
||||
mJankMonitor,
|
||||
mDeviceStateManager,
|
||||
mDreamOverlayStateController);
|
||||
mDreamOverlayStateController,
|
||||
mWiredChargingRippleController);
|
||||
when(mKeyguardViewMediator.registerStatusBar(
|
||||
any(StatusBar.class),
|
||||
any(NotificationPanelViewController.class),
|
||||
|
||||
Reference in New Issue
Block a user