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

Commit 178a1ce5 authored by Winson Chung's avatar Winson Chung Committed by Android (Google) Code Review
Browse files

Merge "Remove dependency on OverviewProxyService from StatusBarWindowController"

parents 8310420b 5b5af8df
Loading
Loading
Loading
Loading
+20 −2
Original line number Original line Diff line number Diff line
@@ -27,6 +27,9 @@ import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_INP
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SUPPORTS_WINDOW_CORNERS;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SUPPORTS_WINDOW_CORNERS;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYSUI_PROXY;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYSUI_PROXY;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_WINDOW_CORNER_RADIUS;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_WINDOW_CORNER_RADIUS;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;


import android.annotation.FloatRange;
import android.annotation.FloatRange;
import android.app.ActivityTaskManager;
import android.app.ActivityTaskManager;
@@ -67,6 +70,7 @@ import com.android.systemui.statusbar.phone.NavigationBarFragment;
import com.android.systemui.statusbar.phone.NavigationBarView;
import com.android.systemui.statusbar.phone.NavigationBarView;
import com.android.systemui.statusbar.phone.NavigationModeController;
import com.android.systemui.statusbar.phone.NavigationModeController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarWindowCallback;
import com.android.systemui.statusbar.phone.StatusBarWindowController;
import com.android.systemui.statusbar.phone.StatusBarWindowController;
import com.android.systemui.statusbar.policy.CallbackController;
import com.android.systemui.statusbar.policy.CallbackController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
@@ -90,7 +94,6 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
    private static final String ACTION_QUICKSTEP = "android.intent.action.QUICKSTEP_SERVICE";
    private static final String ACTION_QUICKSTEP = "android.intent.action.QUICKSTEP_SERVICE";


    public static final String TAG_OPS = "OverviewProxyService";
    public static final String TAG_OPS = "OverviewProxyService";
    public static final boolean DEBUG_OVERVIEW_PROXY = false;
    private static final long BACKOFF_MILLIS = 1000;
    private static final long BACKOFF_MILLIS = 1000;
    private static final long DEFERRED_CALLBACK_MILLIS = 5000;
    private static final long DEFERRED_CALLBACK_MILLIS = 5000;


@@ -442,6 +445,8 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
        }
        }
    };
    };


    private final StatusBarWindowCallback mStatusBarWindowCallback = this::onStatusBarStateChanged;

    // This is the death handler for the binder from the launcher service
    // This is the death handler for the binder from the launcher service
    private final IBinder.DeathRecipient mOverviewServiceDeathRcpt
    private final IBinder.DeathRecipient mOverviewServiceDeathRcpt
            = this::cleanupAfterDeath;
            = this::cleanupAfterDeath;
@@ -481,6 +486,9 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
                PatternMatcher.PATTERN_LITERAL);
                PatternMatcher.PATTERN_LITERAL);
        filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
        filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
        mContext.registerReceiver(mLauncherStateChangedReceiver, filter);
        mContext.registerReceiver(mLauncherStateChangedReceiver, filter);

        // Listen for status bar state changes
        statusBarWinController.registerCallback(mStatusBarWindowCallback);
    }
    }


    public void notifyBackAction(boolean completed, int downX, int downY, boolean isButton,
    public void notifyBackAction(boolean completed, int downX, int downY, boolean isButton,
@@ -531,7 +539,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
            navBarView.updateSystemUiStateFlags();
            navBarView.updateSystemUiStateFlags();
        }
        }
        if (mStatusBarWinController != null) {
        if (mStatusBarWinController != null) {
            mStatusBarWinController.updateSystemUiStateFlags();
            mStatusBarWinController.notifyStateChangedCallbacks();
        }
        }
        notifySystemUiStateFlags(mSysUiStateFlags);
        notifySystemUiStateFlags(mSysUiStateFlags);
    }
    }
@@ -546,6 +554,16 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
        }
        }
    }
    }


    private void onStatusBarStateChanged(boolean keyguardShowing, boolean keyguardOccluded,
            boolean bouncerShowing) {
        int displayId = mContext.getDisplayId();
        setSystemUiStateFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING,
                keyguardShowing && !keyguardOccluded, displayId);
        setSystemUiStateFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED,
                keyguardShowing && keyguardOccluded, displayId);
        setSystemUiStateFlag(SYSUI_STATE_BOUNCER_SHOWING, bouncerShowing, displayId);
    }

    /**
    /**
     * Sets the navbar region which can receive touch inputs
     * Sets the navbar region which can receive touch inputs
     */
     */
+20 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2019 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.systemui.statusbar.phone;

public interface StatusBarWindowCallback {
    void onStateChanged(boolean keyguardShowing, boolean keyguardOccluded, boolean bouncerShowing);
}
+30 −16
Original line number Original line Diff line number Diff line
@@ -18,9 +18,6 @@ package com.android.systemui.statusbar.phone;


import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;


import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;
import static com.android.systemui.statusbar.NotificationRemoteInputManager.ENABLE_REMOTE_INPUT;
import static com.android.systemui.statusbar.NotificationRemoteInputManager.ENABLE_REMOTE_INPUT;


import android.app.ActivityManager;
import android.app.ActivityManager;
@@ -47,17 +44,19 @@ import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.statusbar.RemoteInputController.Callback;
import com.android.systemui.statusbar.RemoteInputController.Callback;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;


import com.google.android.collect.Lists;
import java.io.FileDescriptor;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.lang.reflect.Field;


import java.util.ArrayList;
import javax.inject.Inject;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.inject.Singleton;


@@ -84,6 +83,8 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
    private final State mCurrentState = new State();
    private final State mCurrentState = new State();
    private OtherwisedCollapsedListener mListener;
    private OtherwisedCollapsedListener mListener;
    private ForcePluginOpenListener mForcePluginOpenListener;
    private ForcePluginOpenListener mForcePluginOpenListener;
    private final ArrayList<WeakReference<StatusBarWindowCallback>>
            mCallbacks = Lists.newArrayList();


    private final SysuiColorExtractor mColorExtractor = Dependency.get(SysuiColorExtractor.class);
    private final SysuiColorExtractor mColorExtractor = Dependency.get(SysuiColorExtractor.class);


@@ -109,6 +110,19 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
        Dependency.get(ConfigurationController.class).addCallback(this);
        Dependency.get(ConfigurationController.class).addCallback(this);
    }
    }


    /**
     * Register to receive notifications about status bar window state changes.
     */
    public void registerCallback(StatusBarWindowCallback callback) {
        // Prevent adding duplicate callbacks
        for (int i = 0; i < mCallbacks.size(); i++) {
            if (mCallbacks.get(i).get() == callback) {
                return;
            }
        }
        mCallbacks.add(new WeakReference<StatusBarWindowCallback>(callback));
    }

    private boolean shouldEnableKeyguardScreenRotation() {
    private boolean shouldEnableKeyguardScreenRotation() {
        Resources res = mContext.getResources();
        Resources res = mContext.getResources();
        return SystemProperties.getBoolean("lockscreen.rot_override", false)
        return SystemProperties.getBoolean("lockscreen.rot_override", false)
@@ -319,18 +333,18 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
            }
            }
            mHasTopUi = mHasTopUiChanged;
            mHasTopUi = mHasTopUiChanged;
        }
        }
        updateSystemUiStateFlags();
        notifyStateChangedCallbacks();
    }
    }


    public void updateSystemUiStateFlags() {
    public void notifyStateChangedCallbacks() {
        int displayId = mContext.getDisplayId();
        for (int i = 0; i < mCallbacks.size(); i++) {
        OverviewProxyService overviewProxyService = Dependency.get(OverviewProxyService.class);
            StatusBarWindowCallback cb = mCallbacks.get(i).get();
        overviewProxyService.setSystemUiStateFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING,
            if (cb != null) {
                mCurrentState.keyguardShowing && !mCurrentState.keyguardOccluded, displayId);
                cb.onStateChanged(mCurrentState.keyguardShowing,
        overviewProxyService.setSystemUiStateFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED,
                        mCurrentState.keyguardOccluded,
                mCurrentState.keyguardShowing && mCurrentState.keyguardOccluded, displayId);
                        mCurrentState.bouncerShowing);
        overviewProxyService.setSystemUiStateFlag(SYSUI_STATE_BOUNCER_SHOWING,
            }
                mCurrentState.bouncerShowing, displayId);
        }
    }
    }


    private void applyForceStatusBarVisibleFlag(State state) {
    private void applyForceStatusBarVisibleFlag(State state) {