Remove FlingAnimationUtils.Builder provider.

Mark it as directly injectable.

Use a Provider<> of the Builder so that, if DisplayMetrics changes,
the changes get picked up.

Fixes: 174653877
Test: manual
Change-Id: If8b404cbb7f5111144c21ce4810323d95f962359
This commit is contained in:
Dave Mankoff
2020-12-02 11:15:27 -05:00
parent ab130fd905
commit 9179b302bb
6 changed files with 14 additions and 24 deletions

View File

@@ -125,9 +125,10 @@ android_library {
"protolog-lib",
"SettingsLib",
"WindowManager-Shell-proto",
"jsr330"
],
kotlincflags: ["-Xjvm-default=enable"],
manifest: "AndroidManifest.xml",
min_sdk_version: "26",
}
}

View File

@@ -23,6 +23,8 @@ import android.view.ViewPropertyAnimator;
import android.view.animation.Interpolator;
import android.view.animation.PathInterpolator;
import javax.inject.Inject;
/**
* Utility class to calculate general fling animation when the finger is released.
*/
@@ -368,6 +370,7 @@ public class FlingAnimationUtils {
float mX2;
float mY2;
@Inject
public Builder(DisplayMetrics displayMetrics) {
mDisplayMetrics = displayMetrics;
reset();

View File

@@ -30,7 +30,6 @@ import android.os.HandlerThread;
import android.os.Looper;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.util.DisplayMetrics;
import android.view.Choreographer;
import android.view.IWindowManager;
import android.view.LayoutInflater;
@@ -141,16 +140,6 @@ public class DependencyProvider {
return networkController.getDataSaverController();
}
/** */
@Provides
@SysUISingleton
public DisplayMetrics provideDisplayMetrics(Context context, WindowManager windowManager) {
DisplayMetrics displayMetrics = new DisplayMetrics();
context.getDisplay().getMetrics(displayMetrics);
return displayMetrics;
}
/** */
@Provides
@SysUISingleton
public INotificationManager provideINotificationManager() {

View File

@@ -22,7 +22,6 @@ import android.util.DisplayMetrics;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.UiEventLoggerImpl;
import com.android.systemui.util.concurrency.GlobalConcurrencyModule;
import com.android.wm.shell.animation.FlingAnimationUtils;
import javax.inject.Singleton;
@@ -49,15 +48,12 @@ import dagger.Provides;
GlobalConcurrencyModule.class})
public class GlobalModule {
// TODO(b/162923491): This should not be a singleton at all, the display metrics can change and
// callers should be creating a new builder on demand
@Singleton
/** */
@Provides
static FlingAnimationUtils.Builder provideFlingAnimationUtilsBuilder(
Context context) {
public DisplayMetrics provideDisplayMetrics(Context context) {
DisplayMetrics displayMetrics = new DisplayMetrics();
context.getDisplay().getMetrics(displayMetrics);
return new FlingAnimationUtils.Builder(displayMetrics);
return displayMetrics;
}
/** Provides an instance of {@link com.android.internal.logging.UiEventLogger} */

View File

@@ -140,6 +140,7 @@ import java.util.function.Consumer;
import java.util.function.Function;
import javax.inject.Inject;
import javax.inject.Provider;
@StatusBarComponent.StatusBarScope
public class NotificationPanelViewController extends PanelViewController {
@@ -184,7 +185,7 @@ public class NotificationPanelViewController extends PanelViewController {
private final MetricsLogger mMetricsLogger;
private final ActivityManager mActivityManager;
private final ConfigurationController mConfigurationController;
private final FlingAnimationUtils.Builder mFlingAnimationUtilsBuilder;
private final Provider<FlingAnimationUtils.Builder> mFlingAnimationUtilsBuilder;
private final NotificationStackScrollLayoutController mNotificationStackScrollLayoutController;
private final NotificationIconAreaController mNotificationIconAreaController;
@@ -535,7 +536,7 @@ public class NotificationPanelViewController extends PanelViewController {
KeyguardUpdateMonitor keyguardUpdateMonitor, MetricsLogger metricsLogger,
ActivityManager activityManager,
ConfigurationController configurationController,
FlingAnimationUtils.Builder flingAnimationUtilsBuilder,
Provider<FlingAnimationUtils.Builder> flingAnimationUtilsBuilder,
StatusBarTouchableRegionManager statusBarTouchableRegionManager,
ConversationNotificationManager conversationNotificationManager,
MediaHierarchyManager mediaHierarchyManager,
@@ -549,7 +550,7 @@ public class NotificationPanelViewController extends PanelViewController {
QSDetailDisplayer qsDetailDisplayer) {
super(view, falsingManager, dozeLog, keyguardStateController,
(SysuiStatusBarStateController) statusBarStateController, vibratorHelper,
latencyTracker, flingAnimationUtilsBuilder, statusBarTouchableRegionManager);
latencyTracker, flingAnimationUtilsBuilder.get(), statusBarTouchableRegionManager);
mView = view;
mMetricsLogger = metricsLogger;
mActivityManager = activityManager;
@@ -688,7 +689,7 @@ public class NotificationPanelViewController extends PanelViewController {
@Override
protected void loadDimens() {
super.loadDimens();
mFlingAnimationUtils = mFlingAnimationUtilsBuilder.reset()
mFlingAnimationUtils = mFlingAnimationUtilsBuilder.get()
.setMaxLengthSeconds(0.4f).build();
mStatusBarMinHeight = mResources.getDimensionPixelSize(
com.android.internal.R.dimen.status_bar_height);

View File

@@ -267,7 +267,7 @@ public class NotificationPanelViewTest extends SysuiTestCase {
mDozeParameters, mCommandQueue, mVibratorHelper,
mLatencyTracker, mPowerManager, mAccessibilityManager, 0, mUpdateMonitor,
mMetricsLogger, mActivityManager, mConfigurationController,
flingAnimationUtilsBuilder, mStatusBarTouchableRegionManager,
() -> flingAnimationUtilsBuilder, mStatusBarTouchableRegionManager,
mConversationNotificationManager, mMediaHiearchyManager,
mBiometricUnlockController, mStatusBarKeyguardViewManager,
mNotificationStackScrollLayoutController,