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

Commit d95a2255 authored by Winson Chung's avatar Winson Chung Committed by Matthew Ng
Browse files

Revert "Revert "Nav icons and quick step states are determined by service enabled""

This reverts commit 317ee507.

Reason for revert: Have fix for b/77566214

Test: manual
Bug: 77566214
Change-Id: Ie827e3651f70dfde5f02a5099fd81a5eb4e4cd5e
parent ae26aa74
Loading
Loading
Loading
Loading
+31 −4
Original line number Original line Diff line number Diff line
@@ -22,6 +22,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.content.ServiceConnection;
import android.content.pm.PackageManager;
import android.graphics.Rect;
import android.graphics.Rect;
import android.os.Binder;
import android.os.Binder;
import android.os.Handler;
import android.os.Handler;
@@ -39,6 +40,7 @@ import com.android.systemui.recents.events.activity.DockedFirstAnimationFrameEve
import com.android.systemui.recents.misc.SystemServicesProxy;
import com.android.systemui.recents.misc.SystemServicesProxy;
import com.android.systemui.shared.recents.IOverviewProxy;
import com.android.systemui.shared.recents.IOverviewProxy;
import com.android.systemui.shared.recents.ISystemUiProxy;
import com.android.systemui.shared.recents.ISystemUiProxy;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.GraphicBufferCompat;
import com.android.systemui.shared.system.GraphicBufferCompat;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.policy.CallbackController;
import com.android.systemui.statusbar.policy.CallbackController;
@@ -71,11 +73,13 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
    private final DeviceProvisionedController mDeviceProvisionedController
    private final DeviceProvisionedController mDeviceProvisionedController
            = Dependency.get(DeviceProvisionedController.class);
            = Dependency.get(DeviceProvisionedController.class);
    private final List<OverviewProxyListener> mConnectionCallbacks = new ArrayList<>();
    private final List<OverviewProxyListener> mConnectionCallbacks = new ArrayList<>();
    private final Intent mQuickStepIntent;


    private IOverviewProxy mOverviewProxy;
    private IOverviewProxy mOverviewProxy;
    private int mConnectionBackoffAttempts;
    private int mConnectionBackoffAttempts;
    private CharSequence mOnboardingText;
    private CharSequence mOnboardingText;
    private @InteractionType int mInteractionFlags;
    private @InteractionType int mInteractionFlags;
    private boolean mIsEnabled;


    private ISystemUiProxy mSysUiProxy = new ISystemUiProxy.Stub() {
    private ISystemUiProxy mSysUiProxy = new ISystemUiProxy.Stub() {


@@ -130,14 +134,23 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
                    });
                    });
                }
                }
            } finally {
            } finally {
                Prefs.putInt(mContext, Prefs.Key.QUICK_STEP_INTERACTION_FLAGS, mInteractionFlags);
                Binder.restoreCallingIdentity(token);
                Binder.restoreCallingIdentity(token);
            }
            }
        }
        }
    };
    };


    private final BroadcastReceiver mLauncherAddedReceiver = new BroadcastReceiver() {
    private final BroadcastReceiver mLauncherStateChangedReceiver = new BroadcastReceiver() {
        @Override
        @Override
        public void onReceive(Context context, Intent intent) {
        public void onReceive(Context context, Intent intent) {
            updateEnabledState();

            // When launcher service is disabled, reset interaction flags because it is inactive
            if (!isEnabled()) {
                mInteractionFlags = 0;
                Prefs.remove(mContext, Prefs.Key.QUICK_STEP_INTERACTION_FLAGS);
            }

            // Reconnect immediately, instead of waiting for resume to arrive.
            // Reconnect immediately, instead of waiting for resume to arrive.
            startConnectionToCurrentUser();
            startConnectionToCurrentUser();
        }
        }
@@ -196,17 +209,21 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
        mConnectionBackoffAttempts = 0;
        mConnectionBackoffAttempts = 0;
        mRecentsComponentName = ComponentName.unflattenFromString(context.getString(
        mRecentsComponentName = ComponentName.unflattenFromString(context.getString(
                com.android.internal.R.string.config_recentsComponentName));
                com.android.internal.R.string.config_recentsComponentName));
        mQuickStepIntent = new Intent(ACTION_QUICKSTEP)
                .setPackage(mRecentsComponentName.getPackageName());
        mInteractionFlags = Prefs.getInt(mContext, Prefs.Key.QUICK_STEP_INTERACTION_FLAGS, 0);


        // Listen for the package update changes.
        // Listen for the package update changes.
        if (SystemServicesProxy.getInstance(context)
        if (SystemServicesProxy.getInstance(context)
                .isSystemUser(mDeviceProvisionedController.getCurrentUser())) {
                .isSystemUser(mDeviceProvisionedController.getCurrentUser())) {
            updateEnabledState();
            mDeviceProvisionedController.addCallback(mDeviceProvisionedCallback);
            mDeviceProvisionedController.addCallback(mDeviceProvisionedCallback);
            IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
            IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
            filter.addDataScheme("package");
            filter.addDataScheme("package");
            filter.addDataSchemeSpecificPart(mRecentsComponentName.getPackageName(),
            filter.addDataSchemeSpecificPart(mRecentsComponentName.getPackageName(),
                    PatternMatcher.PATTERN_LITERAL);
                    PatternMatcher.PATTERN_LITERAL);
            filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
            filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
            mContext.registerReceiver(mLauncherAddedReceiver, filter);
            mContext.registerReceiver(mLauncherStateChangedReceiver, filter);
        }
        }
    }
    }


@@ -222,7 +239,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
        disconnectFromLauncherService();
        disconnectFromLauncherService();


        // If user has not setup yet or already connected, do not try to connect
        // If user has not setup yet or already connected, do not try to connect
        if (!mDeviceProvisionedController.isCurrentUserSetup()) {
        if (!mDeviceProvisionedController.isCurrentUserSetup() || !isEnabled()) {
            return;
            return;
        }
        }
        mHandler.removeCallbacks(mConnectionRunnable);
        mHandler.removeCallbacks(mConnectionRunnable);
@@ -248,6 +265,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
    public void addCallback(OverviewProxyListener listener) {
    public void addCallback(OverviewProxyListener listener) {
        mConnectionCallbacks.add(listener);
        mConnectionCallbacks.add(listener);
        listener.onConnectionChanged(mOverviewProxy != null);
        listener.onConnectionChanged(mOverviewProxy != null);
        listener.onInteractionFlagsChanged(mInteractionFlags);
    }
    }


    @Override
    @Override
@@ -256,7 +274,11 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
    }
    }


    public boolean shouldShowSwipeUpUI() {
    public boolean shouldShowSwipeUpUI() {
        return getProxy() != null && ((mInteractionFlags & FLAG_DISABLE_SWIPE_UP) == 0);
        return isEnabled() && ((mInteractionFlags & FLAG_DISABLE_SWIPE_UP) == 0);
    }

    public boolean isEnabled() {
        return mIsEnabled;
    }
    }


    public IOverviewProxy getProxy() {
    public IOverviewProxy getProxy() {
@@ -292,6 +314,11 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
        }
        }
    }
    }


    private void updateEnabledState() {
        mIsEnabled = mContext.getPackageManager().resolveServiceAsUser(mQuickStepIntent, 0,
                ActivityManagerWrapper.getInstance().getCurrentUserId()) != null;
    }

    @Override
    @Override
    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        pw.println(TAG_OPS + " state:");
        pw.println(TAG_OPS + " state:");
+3 −1
Original line number Original line Diff line number Diff line
@@ -54,7 +54,8 @@ public final class Prefs {
            Key.HAS_SEEN_RECENTS_ONBOARDING,
            Key.HAS_SEEN_RECENTS_ONBOARDING,
            Key.SEEN_RINGER_GUIDANCE_COUNT,
            Key.SEEN_RINGER_GUIDANCE_COUNT,
            Key.QS_HAS_TURNED_OFF_MOBILE_DATA,
            Key.QS_HAS_TURNED_OFF_MOBILE_DATA,
            Key.TOUCHED_RINGER_TOGGLE
            Key.TOUCHED_RINGER_TOGGLE,
            Key.QUICK_STEP_INTERACTION_FLAGS
    })
    })
    public @interface Key {
    public @interface Key {
        @Deprecated
        @Deprecated
@@ -93,6 +94,7 @@ public final class Prefs {
        String QS_TILE_SPECS_REVEALED = "QsTileSpecsRevealed";
        String QS_TILE_SPECS_REVEALED = "QsTileSpecsRevealed";
        String QS_HAS_TURNED_OFF_MOBILE_DATA = "QsHasTurnedOffMobileData";
        String QS_HAS_TURNED_OFF_MOBILE_DATA = "QsHasTurnedOffMobileData";
        String TOUCHED_RINGER_TOGGLE = "TouchedRingerToggle";
        String TOUCHED_RINGER_TOGGLE = "TouchedRingerToggle";
        String QUICK_STEP_INTERACTION_FLAGS = "QuickStepInteractionFlags";
    }
    }


    public static boolean getBoolean(Context context, @Key String key, boolean defaultValue) {
    public static boolean getBoolean(Context context, @Key String key, boolean defaultValue) {
+2 −2
Original line number Original line Diff line number Diff line
@@ -126,7 +126,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener
        @Override
        @Override
        public void onTaskStackChangedBackground() {
        public void onTaskStackChangedBackground() {
            // Skip background preloading recents in SystemUI if the overview services is bound
            // Skip background preloading recents in SystemUI if the overview services is bound
            if (Dependency.get(OverviewProxyService.class).getProxy() != null) {
            if (Dependency.get(OverviewProxyService.class).isEnabled()) {
                return;
                return;
            }
            }


@@ -300,7 +300,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener


    public void onBootCompleted() {
    public void onBootCompleted() {
        // Skip preloading tasks if we are already bound to the service
        // Skip preloading tasks if we are already bound to the service
        if (Dependency.get(OverviewProxyService.class).getProxy() != null) {
        if (Dependency.get(OverviewProxyService.class).isEnabled()) {
            return;
            return;
        }
        }


+2 −2
Original line number Original line Diff line number Diff line
@@ -398,7 +398,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav


    public boolean isQuickScrubEnabled() {
    public boolean isQuickScrubEnabled() {
        return SystemProperties.getBoolean("persist.quickstep.scrub.enabled", true)
        return SystemProperties.getBoolean("persist.quickstep.scrub.enabled", true)
                && mOverviewProxyService.getProxy() != null && isOverviewEnabled()
                && mOverviewProxyService.isEnabled() && isOverviewEnabled()
                && ((mOverviewProxyService.getInteractionFlags() & FLAG_DISABLE_QUICK_SCRUB) == 0);
                && ((mOverviewProxyService.getInteractionFlags() & FLAG_DISABLE_QUICK_SCRUB) == 0);
    }
    }


@@ -596,7 +596,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
        // recents buttons when disconnected from launcher service in screen pinning mode,
        // recents buttons when disconnected from launcher service in screen pinning mode,
        // as they are used for exiting.
        // as they are used for exiting.
        final boolean pinningActive = ActivityManagerWrapper.getInstance().isScreenPinningActive();
        final boolean pinningActive = ActivityManagerWrapper.getInstance().isScreenPinningActive();
        if (mOverviewProxyService.getProxy() != null) {
        if (mOverviewProxyService.isEnabled()) {
            // Use interaction flags to show/hide navigation buttons but will be shown if required
            // Use interaction flags to show/hide navigation buttons but will be shown if required
            // to exit screen pinning.
            // to exit screen pinning.
            final int flags = mOverviewProxyService.getInteractionFlags();
            final int flags = mOverviewProxyService.getInteractionFlags();
+2 −2
Original line number Original line Diff line number Diff line
@@ -172,8 +172,8 @@ public class QuickStepController implements GestureHelper {
    }
    }


    private boolean handleTouchEvent(MotionEvent event) {
    private boolean handleTouchEvent(MotionEvent event) {
        if (!mNavigationBarView.isQuickScrubEnabled()
        if (mOverviewEventSender.getProxy() == null || (!mNavigationBarView.isQuickScrubEnabled()
                && !mNavigationBarView.isQuickStepSwipeUpEnabled()) {
                && !mNavigationBarView.isQuickStepSwipeUpEnabled())) {
            mNavigationBarView.getHomeButton().setDelayTouchFeedback(false /* delay */);
            mNavigationBarView.getHomeButton().setDelayTouchFeedback(false /* delay */);
            return false;
            return false;
        }
        }
Loading