Merge "Binding to overview service before setup is complete so that the accessibility gestures could work" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
161d39b45d
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user