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

Commit dc381ae6 authored by Fengjiang Li's avatar Fengjiang Li Committed by Android (Google) Code Review
Browse files

Merge "[Launcher Jank] Avoid making ContentResolver binder calls from...

Merge "[Launcher Jank] Avoid making ContentResolver binder calls from GestureNavigationSettingsObserver" into main
parents 6254adfb c1274bdd
Loading
Loading
Loading
Loading
+42 −34
Original line number Diff line number Diff line
@@ -36,11 +36,13 @@ public class GestureNavigationSettingsObserver extends ContentObserver {
    private Context mContext;
    private Runnable mOnChangeRunnable;
    private Handler mMainHandler;
    private Handler mBgHandler;

    public GestureNavigationSettingsObserver(Handler handler, Context context,
            Runnable onChangeRunnable) {
        super(handler);
        mMainHandler = handler;
    public GestureNavigationSettingsObserver(
            Handler mainHandler, Handler bgHandler, Context context, Runnable onChangeRunnable) {
        super(mainHandler);
        mMainHandler = mainHandler;
        mBgHandler = bgHandler;
        mContext = context;
        mOnChangeRunnable = onChangeRunnable;
    }
@@ -60,6 +62,7 @@ public class GestureNavigationSettingsObserver extends ContentObserver {
     * Registers the observer for all users.
     */
    public void register() {
        mBgHandler.post(() -> {
            ContentResolver r = mContext.getContentResolver();
            r.registerContentObserver(
                    Settings.Secure.getUriFor(Settings.Secure.BACK_GESTURE_INSET_SCALE_LEFT),
@@ -74,12 +77,14 @@ public class GestureNavigationSettingsObserver extends ContentObserver {
                    DeviceConfig.NAMESPACE_SYSTEMUI,
                    runnable -> mMainHandler.post(runnable),
                    mOnPropertiesChangedListener);
        });
    }

    /**
     * Registers the observer for the calling user.
     */
    public void registerForCallingUser() {
        mBgHandler.post(() -> {
            ContentResolver r = mContext.getContentResolver();
            r.registerContentObserver(
                    Settings.Secure.getUriFor(Settings.Secure.BACK_GESTURE_INSET_SCALE_LEFT),
@@ -94,11 +99,14 @@ public class GestureNavigationSettingsObserver extends ContentObserver {
                    DeviceConfig.NAMESPACE_SYSTEMUI,
                    runnable -> mMainHandler.post(runnable),
                    mOnPropertiesChangedListener);
        });
    }

    public void unregister() {
        mBgHandler.post(() -> {
            mContext.getContentResolver().unregisterContentObserver(this);
            DeviceConfig.removeOnPropertiesChangedListener(mOnPropertiesChangedListener);
        });
    }

    @Override
+8 −1
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import android.graphics.Rect;
import android.graphics.Region;
import android.hardware.input.InputManager;
import android.icu.text.SimpleDateFormat;
import android.os.Handler;
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.SystemProperties;
@@ -410,6 +411,7 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack
            PluginManager pluginManager,
            @BackPanelUiThread UiThreadContext uiThreadContext,
            @Background Executor backgroundExecutor,
            @Background Handler bgHandler,
            UserTracker userTracker,
            NavigationModeController navigationModeController,
            BackPanelController.Factory backPanelControllerFactory,
@@ -473,7 +475,8 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack
                ViewConfiguration.getLongPressTimeout());

        mGestureNavigationSettingsObserver = new GestureNavigationSettingsObserver(
                mUiThreadContext.getHandler(), mContext, this::onNavigationSettingsChanged);
                mUiThreadContext.getHandler(), bgHandler, mContext,
                this::onNavigationSettingsChanged);

        updateCurrentUserResources();
    }
@@ -1316,6 +1319,7 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack
        private final PluginManager mPluginManager;
        private final UiThreadContext mUiThreadContext;
        private final Executor mBackgroundExecutor;
        private final Handler mBgHandler;
        private final UserTracker mUserTracker;
        private final NavigationModeController mNavigationModeController;
        private final BackPanelController.Factory mBackPanelControllerFactory;
@@ -1336,6 +1340,7 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack
                        PluginManager pluginManager,
                        @BackPanelUiThread UiThreadContext uiThreadContext,
                        @Background Executor backgroundExecutor,
                        @Background Handler bgHandler,
                        UserTracker userTracker,
                        NavigationModeController navigationModeController,
                        BackPanelController.Factory backPanelControllerFactory,
@@ -1354,6 +1359,7 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack
            mPluginManager = pluginManager;
            mUiThreadContext = uiThreadContext;
            mBackgroundExecutor = backgroundExecutor;
            mBgHandler = bgHandler;
            mUserTracker = userTracker;
            mNavigationModeController = navigationModeController;
            mBackPanelControllerFactory = backPanelControllerFactory;
@@ -1378,6 +1384,7 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack
                            mPluginManager,
                            mUiThreadContext,
                            mBackgroundExecutor,
                            mBgHandler,
                            mUserTracker,
                            mNavigationModeController,
                            mBackPanelControllerFactory,
+3 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.app.animation.Interpolators;
import com.android.internal.policy.GestureNavigationSettingsObserver;
import com.android.systemui.Dumpable;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.statusbar.CommandQueue;
@@ -124,6 +125,7 @@ public class LightBarTransitionsController implements Dumpable {
    @AssistedInject
    public LightBarTransitionsController(
            Context context,
            @Background Handler bgHandler,
            @Assisted DarkIntensityApplier applier,
            CommandQueue commandQueue,
            KeyguardStateController keyguardStateController,
@@ -140,7 +142,7 @@ public class LightBarTransitionsController implements Dumpable {
        mContext = context;
        mDisplayId = mContext.getDisplayId();
        mGestureNavigationSettingsObserver = new GestureNavigationSettingsObserver(
                mHandler, mContext, this::onNavigationSettingsChanged);
                mHandler, bgHandler, mContext, this::onNavigationSettingsChanged);
        mGestureNavigationSettingsObserver.register();
        onNavigationSettingsChanged();
    }
+5 −2
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

import android.os.Handler;
import android.testing.TestableLooper;

import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -58,14 +59,16 @@ public class LightBarTransitionsControllerTest extends SysuiTestCase {
    private KeyguardStateController mKeyguardStateController;
    @Mock
    private StatusBarStateController mStatusBarStateController;
    @Mock
    private Handler mBgHandler;

    private LightBarTransitionsController mLightBarTransitionsController;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
        mLightBarTransitionsController = new LightBarTransitionsController(mContext, mApplier,
                new CommandQueue(mContext, new FakeDisplayTracker(mContext)),
        mLightBarTransitionsController = new LightBarTransitionsController(mContext,
                mBgHandler, mApplier, new CommandQueue(mContext, new FakeDisplayTracker(mContext)),
                mKeyguardStateController, mStatusBarStateController);
    }

+2 −0
Original line number Diff line number Diff line
@@ -128,6 +128,7 @@ import android.window.ClientWindowFrames;

import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.os.BackgroundThread;
import com.android.internal.policy.ForceShowNavBarSettingsObserver;
import com.android.internal.policy.GestureNavigationSettingsObserver;
import com.android.internal.policy.ScreenDecorationsUtils;
@@ -673,6 +674,7 @@ public class DisplayPolicy {
                mService.mHighRefreshRateDenylist);

        mGestureNavigationSettingsObserver = new GestureNavigationSettingsObserver(mHandler,
                BackgroundThread.getHandler(),
                mContext, () -> {
            synchronized (mLock) {
                onConfigurationChanged();