Revert "Pass LayoutParams from SCVH to Parent window"

This reverts commit 720913f56c.

Reason for revert: b/286121234

Change-Id: Ifac231e7e7eafe7232dd313b4e525cb3f1dde7d4
This commit is contained in:
Chavi Weingarten
2023-06-06 22:55:42 +00:00
committed by Android (Google) Code Review
parent 720913f56c
commit 41dd323ac0
5 changed files with 8 additions and 144 deletions

View File

@@ -19,7 +19,6 @@ package android.view;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.view.InsetsState;
import android.view.ISurfaceControlViewHostParent;
import android.window.ISurfaceSyncGroup;
/**
@@ -35,9 +34,4 @@ interface ISurfaceControlViewHost {
oneway void onDispatchDetachedFromWindow();
oneway void onInsetsChanged(in InsetsState state, in Rect insetFrame);
ISurfaceSyncGroup getSurfaceSyncGroup();
/**
* Attaches the parent interface so the embedded content can communicate back to the parent.
* If null is passed in, it will remove the parent interface and no more updates will be sent.
*/
oneway void attachParentInterface(in @nullable ISurfaceControlViewHostParent parentInterface);
}

View File

@@ -1,27 +0,0 @@
/*
** Copyright 2023, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
package android.view;
import android.view.WindowManager;
/**
* API from embedded content in SurfaceControlViewHost to parent containing the embedded.
* {@hide}
*/
oneway interface ISurfaceControlViewHostParent {
void updateParams(in WindowManager.LayoutParams[] childAttrs);
}

View File

@@ -54,7 +54,7 @@ public class SurfaceControlViewHost {
private final static String TAG = "SurfaceControlViewHost";
private final ViewRootImpl mViewRoot;
private final CloseGuard mCloseGuard = CloseGuard.get();
private final WindowlessWindowManager mWm;
private WindowlessWindowManager mWm;
private SurfaceControl mSurfaceControl;
private IAccessibilityEmbeddedConnection mAccessibilityEmbeddedConnection;
@@ -67,7 +67,9 @@ public class SurfaceControlViewHost {
return;
}
mViewRoot.mHandler.post(() -> {
mWm.setConfiguration(configuration);
if (mWm != null) {
mWm.setConfiguration(configuration);
}
if (mViewRoot != null) {
mViewRoot.forceWmRelayout();
}
@@ -114,11 +116,6 @@ public class SurfaceControlViewHost {
}
return null;
}
@Override
public void attachParentInterface(@Nullable ISurfaceControlViewHostParent parentInterface) {
mViewRoot.mHandler.post(() -> mWm.setParentInterface(parentInterface));
}
}
private ISurfaceControlViewHost mRemoteInterface = new ISurfaceControlViewHostImpl();

View File

@@ -16,7 +16,6 @@
package android.view;
import static android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
import static android.view.WindowManagerPolicyConstants.APPLICATION_MEDIA_OVERLAY_SUBLAYER;
import static android.view.WindowManagerPolicyConstants.APPLICATION_MEDIA_SUBLAYER;
import static android.view.WindowManagerPolicyConstants.APPLICATION_PANEL_SUBLAYER;
@@ -41,7 +40,6 @@ import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteException;
import android.os.SystemClock;
import android.util.ArraySet;
import android.util.AttributeSet;
@@ -56,8 +54,6 @@ import com.android.internal.view.SurfaceCallbackHelper;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.locks.ReentrantLock;
import java.util.function.Consumer;
@@ -306,26 +302,6 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
private SurfaceControl mBlastSurfaceControl;
private BLASTBufferQueue mBlastBufferQueue;
private final ConcurrentLinkedQueue<WindowManager.LayoutParams> mEmbeddedWindowParams =
new ConcurrentLinkedQueue<>();
private final ISurfaceControlViewHostParent mSurfaceControlViewHostParent =
new ISurfaceControlViewHostParent.Stub() {
@Override
public void updateParams(WindowManager.LayoutParams[] childAttrs) {
mEmbeddedWindowParams.clear();
mEmbeddedWindowParams.addAll(Arrays.asList(childAttrs));
if (isAttachedToWindow()) {
runOnUiThread(() -> {
if (mParent != null) {
mParent.recomputeViewAttributes(SurfaceView.this);
}
});
}
}
};
public SurfaceView(Context context) {
this(context, null);
}
@@ -825,18 +801,9 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
mBlastSurfaceControl = null;
}
if (mSurfacePackage != null) {
try {
mSurfacePackage.getRemoteInterface().attachParentInterface(null);
mEmbeddedWindowParams.clear();
} catch (RemoteException e) {
Log.d(TAG, "Failed to remove parent interface from SCVH. Likely SCVH is "
+ "already dead");
}
if (releaseSurfacePackage) {
mSurfacePackage.release();
mSurfacePackage = null;
}
if (releaseSurfacePackage && mSurfacePackage != null) {
mSurfacePackage.release();
mSurfacePackage = null;
}
applyTransactionOnVriDraw(transaction);
@@ -1887,12 +1854,6 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
applyTransactionOnVriDraw(transaction);
}
mSurfacePackage = p;
try {
mSurfacePackage.getRemoteInterface().attachParentInterface(
mSurfaceControlViewHostParent);
} catch (RemoteException e) {
Log.d(TAG, "Failed to attach parent interface to SCVH. Likely SCVH is already dead.");
}
if (isFocused()) {
requestEmbeddedFocus(true);
@@ -2053,19 +2014,4 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
mBlastBufferQueue.mergeWithNextTransaction(transaction, frameNumber);
}
}
@Override
void performCollectViewAttributes(AttachInfo attachInfo, int visibility) {
super.performCollectViewAttributes(attachInfo, visibility);
if (mEmbeddedWindowParams.isEmpty()) {
return;
}
for (WindowManager.LayoutParams embeddedWindowAttr : mEmbeddedWindowParams) {
if ((embeddedWindowAttr.flags & FLAG_KEEP_SCREEN_ON) == FLAG_KEEP_SCREEN_ON) {
attachInfo.mKeepScreenOn = true;
break;
}
}
}
}

View File

@@ -49,8 +49,7 @@ public class WindowlessWindowManager implements IWindowSession {
private class State {
SurfaceControl mSurfaceControl;
final WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
final WindowManager.LayoutParams mLastReportedParams = new WindowManager.LayoutParams();
WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
int mDisplayId;
IBinder mInputChannelToken;
Region mInputRegion;
@@ -95,8 +94,6 @@ public class WindowlessWindowManager implements IWindowSession {
private final MergedConfiguration mTmpConfig = new MergedConfiguration();
private final WindowlessWindowLayout mLayout = new WindowlessWindowLayout();
private ISurfaceControlViewHostParent mParentInterface;
public WindowlessWindowManager(Configuration c, SurfaceControl rootSurface,
IBinder hostInputToken) {
mRootSurface = rootSurface;
@@ -247,7 +244,6 @@ public class WindowlessWindowManager implements IWindowSession {
final int res = WindowManagerGlobal.ADD_OKAY | WindowManagerGlobal.ADD_FLAG_APP_VISIBLE |
WindowManagerGlobal.ADD_FLAG_USE_BLAST;
sendLayoutParamsToParent();
// Include whether the window is in touch mode.
return isInTouchModeInternal(displayId) ? res | WindowManagerGlobal.ADD_FLAG_IN_TOUCH_MODE
: res;
@@ -429,7 +425,6 @@ public class WindowlessWindowManager implements IWindowSession {
outInsetsState.set(mInsetsState);
}
sendLayoutParamsToParent();
return 0;
}
@@ -650,45 +645,4 @@ public class WindowlessWindowManager implements IWindowSession {
" we shouldn't get here!");
return false;
}
void setParentInterface(@Nullable ISurfaceControlViewHostParent parentInterface) {
IBinder oldInterface = mParentInterface == null ? null : mParentInterface.asBinder();
IBinder newInterface = parentInterface == null ? null : parentInterface.asBinder();
// If the parent interface has changed, it needs to clear the last reported params so it
// will update the new interface with the params.
if (oldInterface != newInterface) {
clearLastReportedParams();
}
mParentInterface = parentInterface;
sendLayoutParamsToParent();
}
private void clearLastReportedParams() {
WindowManager.LayoutParams emptyParam = new WindowManager.LayoutParams();
for (State windowInfo : mStateForWindow.values()) {
windowInfo.mLastReportedParams.copyFrom(emptyParam);
}
}
private void sendLayoutParamsToParent() {
if (mParentInterface == null) {
return;
}
WindowManager.LayoutParams[] params =
new WindowManager.LayoutParams[mStateForWindow.size()];
int index = 0;
boolean hasChanges = false;
for (State windowInfo : mStateForWindow.values()) {
int changes = windowInfo.mLastReportedParams.copyFrom(windowInfo.mParams);
hasChanges |= (changes != 0);
params[index++] = windowInfo.mParams;
}
if (hasChanges) {
try {
mParentInterface.updateParams(params);
} catch (RemoteException e) {
}
}
}
}