summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sam Dubey <dubeyshubham@google.com> 2023-06-07 11:01:55 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-06-07 11:01:55 +0000
commit4c34ffcfb007df59fcbf154f2ee5a675d56eb8c5 (patch)
tree0770ec2f57ae0d1afa5a4a8c12ed52852dfcda71
parenta3905d30a48777ecdd9c50e7f01b368896fe0744 (diff)
parent41dd323ac08077f22b9e305d9be9848a19c564d9 (diff)
Merge "Revert "Pass LayoutParams from SCVH to Parent window"" into udc-qpr-dev
-rw-r--r--core/java/android/view/ISurfaceControlViewHost.aidl6
-rw-r--r--core/java/android/view/ISurfaceControlViewHostParent.aidl27
-rw-r--r--core/java/android/view/SurfaceControlViewHost.java11
-rw-r--r--core/java/android/view/SurfaceView.java60
-rw-r--r--core/java/android/view/WindowlessWindowManager.java48
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) {
- }
- }
- }
}