summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2022-01-14 02:15:22 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-01-14 02:15:22 +0000
commit446346bc4ed77cc1b48b7bf08686005f2c2b948d (patch)
treeda9197ffc7fd6cb72c444e243ac58acbee5ef16f
parentfe84f243b254142b6bf982265f4e83db0078cb31 (diff)
parent66a576b409a75e2ce185f5251dbb182689d3455b (diff)
downloadbase-446346bc4ed77cc1b48b7bf08686005f2c2b948d.tar.gz
Merge "[RESTRICT AUTOMERGE] Dimming on an embedded TaskFragment vs. parent Task" into sc-v2-dev
-rw-r--r--services/core/java/com/android/server/wm/Task.java1
-rw-r--r--services/core/java/com/android/server/wm/TaskFragment.java30
2 files changed, 30 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 2231ebd2fb9e..50a68450b5f2 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -486,7 +486,6 @@ class Task extends TaskFragment {
// root task moves and we in fact do so when moving from full screen to pinned.
private boolean mPreserveNonFloatingState = false;
- private Dimmer mDimmer = new Dimmer(this);
private final Rect mTmpDimBoundsRect = new Rect();
/** @see #setCanAffectSystemUiFlags */
diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java
index efd51e99a26a..24b66ca3ac9c 100644
--- a/services/core/java/com/android/server/wm/TaskFragment.java
+++ b/services/core/java/com/android/server/wm/TaskFragment.java
@@ -162,6 +162,8 @@ class TaskFragment extends WindowContainer<WindowContainer> {
*/
int mMinHeight;
+ Dimmer mDimmer = new Dimmer(this);
+
/** This task fragment will be removed when the cleanup of its children are done. */
private boolean mIsRemovalRequested;
@@ -2353,6 +2355,34 @@ class TaskFragment extends WindowContainer<WindowContainer> {
}
@Override
+ Dimmer getDimmer() {
+ // If the window is in an embedded TaskFragment, we want to dim at the TaskFragment.
+ if (asTask() == null) {
+ return mDimmer;
+ }
+
+ return super.getDimmer();
+ }
+
+ @Override
+ void prepareSurfaces() {
+ if (asTask() != null) {
+ super.prepareSurfaces();
+ return;
+ }
+
+ mDimmer.resetDimStates();
+ super.prepareSurfaces();
+
+ // Bounds need to be relative, as the dim layer is a child.
+ final Rect dimBounds = getBounds();
+ dimBounds.offsetTo(0 /* newLeft */, 0 /* newTop */);
+ if (mDimmer.updateDims(getPendingTransaction(), dimBounds)) {
+ scheduleAnimation();
+ }
+ }
+
+ @Override
boolean canBeAnimationTarget() {
return true;
}