Merge "Binding to overview service before setup is complete so that the accessibility gestures could work" into rvc-dev am: 161d39b45d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11622016

Change-Id: Ifc21111937705cd218819c622961f21c1a8dbde5
This commit is contained in:
TreeHugger Robot
2020-06-03 18:49:28 +00:00
committed by Automerger Merge Worker

View File

@@ -64,10 +64,12 @@ import com.android.internal.accessibility.dialog.AccessibilityButtonChooserActiv
import com.android.internal.policy.ScreenDecorationsUtils; import com.android.internal.policy.ScreenDecorationsUtils;
import com.android.internal.util.ScreenshotHelper; import com.android.internal.util.ScreenshotHelper;
import com.android.systemui.Dumpable; import com.android.systemui.Dumpable;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.model.SysUiState; import com.android.systemui.model.SysUiState;
import com.android.systemui.pip.PipAnimationController; import com.android.systemui.pip.PipAnimationController;
import com.android.systemui.pip.PipUI; import com.android.systemui.pip.PipUI;
import com.android.systemui.recents.OverviewProxyService.OverviewProxyListener; import com.android.systemui.recents.OverviewProxyService.OverviewProxyListener;
import com.android.systemui.settings.CurrentUserTracker;
import com.android.systemui.shared.recents.IOverviewProxy; import com.android.systemui.shared.recents.IOverviewProxy;
import com.android.systemui.shared.recents.IPinnedStackAnimationListener; import com.android.systemui.shared.recents.IPinnedStackAnimationListener;
import com.android.systemui.shared.recents.ISystemUiProxy; import com.android.systemui.shared.recents.ISystemUiProxy;
@@ -83,8 +85,6 @@ import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
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.StatusBarWindowCallback;
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.DeviceProvisionedListener;
import java.io.FileDescriptor; import java.io.FileDescriptor;
import java.io.PrintWriter; import java.io.PrintWriter;
@@ -101,8 +101,9 @@ import dagger.Lazy;
* Class to send information from overview to launcher with a binder. * Class to send information from overview to launcher with a binder.
*/ */
@Singleton @Singleton
public class OverviewProxyService implements CallbackController<OverviewProxyListener>, public class OverviewProxyService extends CurrentUserTracker implements
NavigationModeController.ModeChangedListener, Dumpable { CallbackController<OverviewProxyListener>, NavigationModeController.ModeChangedListener,
Dumpable {
private static final String ACTION_QUICKSTEP = "android.intent.action.QUICKSTEP_SERVICE"; private static final String ACTION_QUICKSTEP = "android.intent.action.QUICKSTEP_SERVICE";
@@ -123,7 +124,6 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
private final NotificationShadeWindowController mStatusBarWinController; private final NotificationShadeWindowController mStatusBarWinController;
private final Runnable mConnectionRunnable = this::internalConnectToCurrentUser; private final Runnable mConnectionRunnable = this::internalConnectToCurrentUser;
private final ComponentName mRecentsComponentName; private final ComponentName mRecentsComponentName;
private final DeviceProvisionedController mDeviceProvisionedController;
private final List<OverviewProxyListener> mConnectionCallbacks = new ArrayList<>(); private final List<OverviewProxyListener> mConnectionCallbacks = new ArrayList<>();
private final Intent mQuickStepIntent; private final Intent mQuickStepIntent;
private final ScreenshotHelper mScreenshotHelper; private final ScreenshotHelper mScreenshotHelper;
@@ -480,7 +480,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
return; return;
} }
mCurrentBoundedUserId = mDeviceProvisionedController.getCurrentUser(); mCurrentBoundedUserId = getCurrentUserId();
mOverviewProxy = IOverviewProxy.Stub.asInterface(service); mOverviewProxy = IOverviewProxy.Stub.asInterface(service);
Bundle params = new Bundle(); Bundle params = new Bundle();
@@ -523,22 +523,6 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
} }
}; };
private final DeviceProvisionedListener mDeviceProvisionedCallback =
new DeviceProvisionedListener() {
@Override
public void onUserSetupChanged() {
if (mDeviceProvisionedController.isCurrentUserSetup()) {
internalConnectToCurrentUser();
}
}
@Override
public void onUserSwitched() {
mConnectionBackoffAttempts = 0;
internalConnectToCurrentUser();
}
};
private final StatusBarWindowCallback mStatusBarWindowCallback = this::onStatusBarStateChanged; 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
@@ -548,18 +532,18 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
@SuppressWarnings("OptionalUsedAsFieldOrParameterType") @SuppressWarnings("OptionalUsedAsFieldOrParameterType")
@Inject @Inject
public OverviewProxyService(Context context, CommandQueue commandQueue, public OverviewProxyService(Context context, CommandQueue commandQueue,
DeviceProvisionedController provisionController,
NavigationBarController navBarController, NavigationModeController navModeController, NavigationBarController navBarController, NavigationModeController navModeController,
NotificationShadeWindowController statusBarWinController, SysUiState sysUiState, NotificationShadeWindowController statusBarWinController, SysUiState sysUiState,
PipUI pipUI, Optional<Divider> dividerOptional, PipUI pipUI, Optional<Divider> dividerOptional,
Optional<Lazy<StatusBar>> statusBarOptionalLazy) { Optional<Lazy<StatusBar>> statusBarOptionalLazy,
BroadcastDispatcher broadcastDispatcher) {
super(broadcastDispatcher);
mContext = context; mContext = context;
mPipUI = pipUI; mPipUI = pipUI;
mStatusBarOptionalLazy = statusBarOptionalLazy; mStatusBarOptionalLazy = statusBarOptionalLazy;
mHandler = new Handler(); mHandler = new Handler();
mNavBarController = navBarController; mNavBarController = navBarController;
mStatusBarWinController = statusBarWinController; mStatusBarWinController = statusBarWinController;
mDeviceProvisionedController = provisionController;
mConnectionBackoffAttempts = 0; mConnectionBackoffAttempts = 0;
mDividerOptional = dividerOptional; mDividerOptional = dividerOptional;
mRecentsComponentName = ComponentName.unflattenFromString(context.getString( mRecentsComponentName = ComponentName.unflattenFromString(context.getString(
@@ -580,7 +564,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
// Listen for device provisioned/user setup // Listen for device provisioned/user setup
updateEnabledState(); updateEnabledState();
mDeviceProvisionedController.addCallback(mDeviceProvisionedCallback); startTracking();
// Listen for launcher package changes // Listen for launcher package changes
IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED); IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
@@ -604,6 +588,12 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
}); });
} }
@Override
public void onUserSwitched(int newUserId) {
mConnectionBackoffAttempts = 0;
internalConnectToCurrentUser();
}
public void notifyBackAction(boolean completed, int downX, int downY, boolean isButton, public void notifyBackAction(boolean completed, int downX, int downY, boolean isButton,
boolean gestureSwipeLeft) { boolean gestureSwipeLeft) {
try { try {
@@ -709,10 +699,8 @@ 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() || !isEnabled()) { if (!isEnabled()) {
Log.v(TAG_OPS, "Cannot attempt connection, is setup " Log.v(TAG_OPS, "Cannot attempt connection, is enabled " + isEnabled());
+ mDeviceProvisionedController.isCurrentUserSetup() + ", is enabled "
+ isEnabled());
return; return;
} }
mHandler.removeCallbacks(mConnectionRunnable); mHandler.removeCallbacks(mConnectionRunnable);
@@ -722,7 +710,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
mBound = mContext.bindServiceAsUser(launcherServiceIntent, mBound = mContext.bindServiceAsUser(launcherServiceIntent,
mOverviewServiceConnection, mOverviewServiceConnection,
Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE, Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE,
UserHandle.of(mDeviceProvisionedController.getCurrentUser())); UserHandle.of(getCurrentUserId()));
} catch (SecurityException e) { } catch (SecurityException e) {
Log.e(TAG_OPS, "Unable to bind because of security error", e); Log.e(TAG_OPS, "Unable to bind because of security error", e);
} }
@@ -881,8 +869,6 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
pw.println(TAG_OPS + " state:"); pw.println(TAG_OPS + " state:");
pw.print(" recentsComponentName="); pw.println(mRecentsComponentName); pw.print(" recentsComponentName="); pw.println(mRecentsComponentName);
pw.print(" isConnected="); pw.println(mOverviewProxy != null); pw.print(" isConnected="); pw.println(mOverviewProxy != null);
pw.print(" isCurrentUserSetup="); pw.println(mDeviceProvisionedController
.isCurrentUserSetup());
pw.print(" connectionBackoffAttempts="); pw.println(mConnectionBackoffAttempts); pw.print(" connectionBackoffAttempts="); pw.println(mConnectionBackoffAttempts);
pw.print(" quickStepIntent="); pw.println(mQuickStepIntent); pw.print(" quickStepIntent="); pw.println(mQuickStepIntent);