Merge "Support ContextWrapper by replacing instanceof checks with token checks" into tm-qpr-dev am: 18964627b6

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

Change-Id: I66859896b15892dea2bf5dea2a76b7ce4fb8b94d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Jiaming Liu
2022-12-16 18:00:41 +00:00
committed by Automerger Merge Worker

View File

@@ -35,7 +35,6 @@ import android.graphics.Rect;
import android.os.Bundle;
import android.os.IBinder;
import android.util.ArrayMap;
import android.window.WindowProvider;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -129,9 +128,10 @@ public class WindowLayoutComponentImpl implements WindowLayoutComponent {
});
mWindowLayoutChangeListeners.put(context, consumer);
// TODO(b/258065175) Further extend this to ContextWrappers.
if (context instanceof WindowProvider) {
final IBinder windowContextToken = context.getWindowContextToken();
final IBinder windowContextToken = context.getWindowContextToken();
if (windowContextToken != null) {
// We register component callbacks for window contexts. For activity contexts, they will
// receive callbacks from NotifyOnConfigurationChanged instead.
final ConfigurationChangeListener listener =
new ConfigurationChangeListener(windowContextToken);
context.registerComponentCallbacks(listener);
@@ -150,8 +150,8 @@ public class WindowLayoutComponentImpl implements WindowLayoutComponent {
if (!mWindowLayoutChangeListeners.get(context).equals(consumer)) {
continue;
}
if (context instanceof WindowProvider) {
final IBinder token = context.getWindowContextToken();
final IBinder token = context.getWindowContextToken();
if (token != null) {
context.unregisterComponentCallbacks(mConfigurationChangeListeners.get(token));
mConfigurationChangeListeners.remove(token);
}
@@ -308,9 +308,10 @@ public class WindowLayoutComponentImpl implements WindowLayoutComponent {
return false;
}
final int windowingMode;
if (context instanceof Activity) {
IBinder activityToken = context.getActivityToken();
if (activityToken != null) {
final Configuration taskConfig = ActivityClient.getInstance().getTaskConfiguration(
context.getActivityToken());
activityToken);
if (taskConfig == null) {
// If we cannot determine the task configuration for any reason, it is likely that
// we won't be able to determine its position correctly as well. DisplayFeatures'