Merge changes from topic "presubmit-am-b87ddd3bbf2947f1aa639cddcee6ecb8" into tm-dev am: 09f7f6f69b
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17319805 Change-Id: I4dc7b1e71c736a37eb200f12eb0ff3ef1c5349bf Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -8399,6 +8399,7 @@ public final class ViewRootImpl implements ViewParent,
|
||||
return;
|
||||
}
|
||||
mRemoved = true;
|
||||
mOnBackInvokedDispatcher.detachFromWindow();
|
||||
if (mAdded) {
|
||||
dispatchDetachedFromWindow();
|
||||
}
|
||||
@@ -8433,8 +8434,6 @@ public final class ViewRootImpl implements ViewParent,
|
||||
|
||||
mAdded = false;
|
||||
}
|
||||
unregisterCompatOnBackInvokedCallback();
|
||||
mOnBackInvokedDispatcher.detachFromWindow();
|
||||
WindowManagerGlobal.getInstance().doRemoveView(this);
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.app.compat.CompatChanges;
|
||||
import android.content.Context;
|
||||
import android.os.Debug;
|
||||
import android.os.Handler;
|
||||
import android.os.RemoteException;
|
||||
import android.os.SystemProperties;
|
||||
@@ -35,11 +36,11 @@ import java.util.TreeMap;
|
||||
|
||||
/**
|
||||
* Provides window based implementation of {@link OnBackInvokedDispatcher}.
|
||||
*
|
||||
* <p>
|
||||
* Callbacks with higher priorities receive back dispatching first.
|
||||
* Within the same priority, callbacks receive back dispatching in the reverse order
|
||||
* in which they are added.
|
||||
*
|
||||
* <p>
|
||||
* When the top priority callback is updated, the new callback is propagated to the Window Manager
|
||||
* if the window the instance is associated with has been attached. It is allowed to register /
|
||||
* unregister {@link OnBackInvokedCallback}s before the window is attached, although
|
||||
@@ -166,6 +167,10 @@ public class WindowOnBackInvokedDispatcher implements OnBackInvokedDispatcher {
|
||||
mWindowSession.setOnBackInvokedCallback(
|
||||
mWindow, new OnBackInvokedCallbackWrapper(callback), priority);
|
||||
}
|
||||
if (DEBUG && callback == null) {
|
||||
Log.d(TAG, TextUtils.formatSimple("setTopOnBackInvokedCallback(null) Callers:%s",
|
||||
Debug.getCallers(5, " ")));
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Failed to set OnBackInvokedCallback to WM. Error: " + e);
|
||||
}
|
||||
@@ -243,7 +248,7 @@ public class WindowOnBackInvokedDispatcher implements OnBackInvokedDispatcher {
|
||||
|
||||
/**
|
||||
* Returns if the legacy back behavior should be used.
|
||||
*
|
||||
* <p>
|
||||
* Legacy back behavior dispatches KEYCODE_BACK instead of invoking the application registered
|
||||
* {@link OnBackInvokedCallback}.
|
||||
*/
|
||||
|
||||
@@ -940,12 +940,12 @@ class Session extends IWindowSession.Stub implements IBinder.DeathRecipient {
|
||||
public void setOnBackInvokedCallback(
|
||||
IWindow window,
|
||||
IOnBackInvokedCallback onBackInvokedCallback,
|
||||
@OnBackInvokedDispatcher.Priority int priority) throws RemoteException {
|
||||
@OnBackInvokedDispatcher.Priority int priority) {
|
||||
synchronized (mService.mGlobalLock) {
|
||||
WindowState windowState = mService.windowForClientLocked(this, window, true);
|
||||
WindowState windowState = mService.windowForClientLocked(this, window, false);
|
||||
if (windowState == null) {
|
||||
Slog.e(TAG_WM,
|
||||
"setOnBackInvokedCallback(): Can't find window state for package:"
|
||||
"setOnBackInvokedCallback(): No window state for package:"
|
||||
+ mPackageName);
|
||||
} else {
|
||||
windowState.setOnBackInvokedCallback(onBackInvokedCallback, priority);
|
||||
|
||||
Reference in New Issue
Block a user