Merge "Do not process root surface control of detached views." into udc-dev
This commit is contained in:
@@ -108,13 +108,18 @@ public class TouchInsetManager {
|
||||
private void updateTouchRegions() {
|
||||
mExecutor.execute(() -> {
|
||||
final HashMap<AttachedSurfaceControl, Region> affectedSurfaces = new HashMap<>();
|
||||
if (mTrackedViews.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
mTrackedViews.stream().forEach(view -> {
|
||||
if (!view.isAttachedToWindow()) {
|
||||
final AttachedSurfaceControl surface = view.getRootSurfaceControl();
|
||||
|
||||
// Detached views will not have a surface control.
|
||||
if (surface == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final AttachedSurfaceControl surface = view.getRootSurfaceControl();
|
||||
|
||||
if (!affectedSurfaces.containsKey(surface)) {
|
||||
affectedSurfaces.put(surface, Region.obtain());
|
||||
}
|
||||
@@ -179,6 +184,7 @@ public class TouchInsetManager {
|
||||
mSessionRegions.values().stream().forEach(regionMapping -> {
|
||||
regionMapping.entrySet().stream().forEach(entry -> {
|
||||
final AttachedSurfaceControl surface = entry.getKey();
|
||||
|
||||
if (!affectedSurfaces.containsKey(surface)) {
|
||||
affectedSurfaces.put(surface, Region.obtain());
|
||||
}
|
||||
|
||||
@@ -110,13 +110,14 @@ public class TouchInsetManagerTest extends SysuiTestCase {
|
||||
|
||||
clearInvocations(mAttachedSurfaceControl);
|
||||
when(view.isAttachedToWindow()).thenReturn(false);
|
||||
when(view.getRootSurfaceControl()).thenReturn(null);
|
||||
|
||||
// Trigger detachment and verify touchable region is set.
|
||||
listener.getValue().onViewDetachedFromWindow(view);
|
||||
|
||||
mFakeExecutor.runAllReady();
|
||||
|
||||
verify(mAttachedSurfaceControl).setTouchableRegion(any());
|
||||
verify(mAttachedSurfaceControl).setTouchableRegion(eq(null));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user