Merge "Screenshots broken for activities with dialog themes" into pi-dev

am: a52ddd989e

Change-Id: I9ac4407f9fd30edd7ba53120d65e16df9264bc2c
This commit is contained in:
Adrian Roos
2018-03-07 22:55:08 +00:00
committed by android-build-merger
3 changed files with 46 additions and 9 deletions

View File

@@ -1728,6 +1728,8 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
frame.set(win.mContainingFrame);
}
surfaceInsets = win.getAttrs().surfaceInsets;
// XXX(b/72757033): These are insets relative to the window frame, but we're really
// interested in the insets relative to the frame we chose in the if-blocks above.
insets.set(win.mContentInsets);
stableInsets.set(win.mStableInsets);
}
@@ -2120,4 +2122,12 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
}
return stringName + ((mIsExiting) ? " mIsExiting=" : "");
}
Rect getLetterboxInsets() {
if (mLetterbox != null) {
return mLetterbox.getInsets();
} else {
return new Rect();
}
}
}

View File

@@ -67,6 +67,17 @@ public class Letterbox {
mRight.setRect(t, inner.right, outer.top, outer.right, inner.bottom);
}
/**
* Gets the insets between the outer and inner rects.
*/
public Rect getInsets() {
return new Rect(
mLeft.getWidth(),
mTop.getHeight(),
mRight.getWidth(),
mBottom.getHeight());
}
/**
* Hides the letterbox.
*
@@ -141,5 +152,13 @@ public class Letterbox {
mSurface = null;
}
}
public int getWidth() {
return Math.max(0, mLastRight - mLastLeft);
}
public int getHeight() {
return Math.max(0, mLastBottom - mLastTop);
}
}
}

View File

@@ -281,17 +281,25 @@ class TaskSnapshotController {
}
private Rect getInsetsFromTaskBounds(WindowState state, Task task) {
final Rect r = new Rect();
r.set(state.getContentFrameLw());
r.intersectUnchecked(state.getStableFrameLw());
// XXX(b/72757033): These are insets relative to the window frame, but we're really
// interested in the insets relative to the task bounds.
Rect insets = minRect(state.mContentInsets, state.mStableInsets);
insets = maxRect(insets, state.mAppToken.getLetterboxInsets());
return insets;
}
final Rect taskBounds = task.getBounds();
private Rect minRect(Rect rect1, Rect rect2) {
return new Rect(Math.min(rect1.left, rect2.left),
Math.min(rect1.top, rect2.top),
Math.min(rect1.right, rect2.right),
Math.min(rect1.bottom, rect2.bottom));
}
r.set(Math.max(0, r.left - taskBounds.left),
Math.max(0, r.top - taskBounds.top),
Math.max(0, taskBounds.right - r.right),
Math.max(0, taskBounds.bottom - r.bottom));
return r;
private Rect maxRect(Rect rect1, Rect rect2) {
return new Rect(Math.max(rect1.left, rect2.left),
Math.max(rect1.top, rect2.top),
Math.max(rect1.right, rect2.right),
Math.max(rect1.bottom, rect2.bottom));
}
/**