diff options
| author | 2023-06-07 11:01:55 +0000 | |
|---|---|---|
| committer | 2023-06-07 11:01:55 +0000 | |
| commit | 4c34ffcfb007df59fcbf154f2ee5a675d56eb8c5 (patch) | |
| tree | 0770ec2f57ae0d1afa5a4a8c12ed52852dfcda71 | |
| parent | a3905d30a48777ecdd9c50e7f01b368896fe0744 (diff) | |
| parent | 41dd323ac08077f22b9e305d9be9848a19c564d9 (diff) | |
Merge "Revert "Pass LayoutParams from SCVH to Parent window"" into udc-qpr-dev
| -rw-r--r-- | core/java/android/view/ISurfaceControlViewHost.aidl | 6 | ||||
| -rw-r--r-- | core/java/android/view/ISurfaceControlViewHostParent.aidl | 27 | ||||
| -rw-r--r-- | core/java/android/view/SurfaceControlViewHost.java | 11 | ||||
| -rw-r--r-- | core/java/android/view/SurfaceView.java | 60 | ||||
| -rw-r--r-- | core/java/android/view/WindowlessWindowManager.java | 48 |
5 files changed, 8 insertions, 144 deletions
diff --git a/core/java/android/view/ISurfaceControlViewHost.aidl b/core/java/android/view/ISurfaceControlViewHost.aidl index fd4b329570d9..15008ae18618 100644 --- a/core/java/android/view/ISurfaceControlViewHost.aidl +++ b/core/java/android/view/ISurfaceControlViewHost.aidl @@ -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); } diff --git a/core/java/android/view/ISurfaceControlViewHostParent.aidl b/core/java/android/view/ISurfaceControlViewHostParent.aidl deleted file mode 100644 index f42e00148587..000000000000 --- a/core/java/android/view/ISurfaceControlViewHostParent.aidl +++ /dev/null @@ -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); -} diff --git a/core/java/android/view/SurfaceControlViewHost.java b/core/java/android/view/SurfaceControlViewHost.java index d7d0d08cccb4..c8cf7d9a5194 100644 --- a/core/java/android/view/SurfaceControlViewHost.java +++ b/core/java/android/view/SurfaceControlViewHost.java @@ -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(); diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index 1e268bed3b17..0e4cf89e7772 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -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; - } - } - } } diff --git a/core/java/android/view/WindowlessWindowManager.java b/core/java/android/view/WindowlessWindowManager.java index 7d3d283a45f2..96bfb2d9e1e6 100644 --- a/core/java/android/view/WindowlessWindowManager.java +++ b/core/java/android/view/WindowlessWindowManager.java @@ -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) { - } - } - } } |