Merge "Tests for computeFrameLw docked type scenarios."
This commit is contained in:
@@ -66,6 +66,8 @@ public class WindowFrameTests {
|
||||
|
||||
class TaskWithBounds extends Task {
|
||||
final Rect mBounds;
|
||||
final Rect mInsetBounds = new Rect();
|
||||
boolean mFullscreenForTest = true;
|
||||
TaskWithBounds(Rect bounds) {
|
||||
super(0, mStubStack, 0, sWm, null, null, false);
|
||||
mBounds = bounds;
|
||||
@@ -76,11 +78,11 @@ public class WindowFrameTests {
|
||||
}
|
||||
@Override
|
||||
void getTempInsetBounds(Rect outBounds) {
|
||||
outBounds.setEmpty();
|
||||
outBounds.set(mInsetBounds);
|
||||
}
|
||||
@Override
|
||||
boolean isFullscreen() {
|
||||
return true;
|
||||
return mFullscreenForTest;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,6 +239,41 @@ public class WindowFrameTests {
|
||||
assertRect(w.mFrame, 600, 600, 900, 900);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLayoutNonfullscreenTask() {
|
||||
final Rect taskBounds = new Rect(300, 300, 700, 700);
|
||||
TaskWithBounds task = new TaskWithBounds(taskBounds);
|
||||
task.mFullscreenForTest = false;
|
||||
WindowState w = createWindow(task, FILL_PARENT, FILL_PARENT);
|
||||
w.mAttrs.gravity = Gravity.LEFT | Gravity.TOP;
|
||||
|
||||
final Rect pf = new Rect(0, 0, 1000, 1000);
|
||||
w.computeFrameLw(pf, pf, pf, pf, pf, pf, pf, null);
|
||||
// For non fullscreen tasks the containing frame is based off the
|
||||
// task bounds not the parent frame.
|
||||
assertRect(w.mFrame, 300, 300, 700, 700);
|
||||
assertRect(w.getContentFrameLw(), 300, 300, 700, 700);
|
||||
assertRect(w.mContentInsets, 0, 0, 0, 0);
|
||||
|
||||
pf.set(0, 0, 1000, 1000);
|
||||
// We still produce insets against the containing frame the same way.
|
||||
final Rect cf = new Rect(0, 0, 500, 500);
|
||||
w.computeFrameLw(pf, pf, pf, cf, cf, pf, cf, null);
|
||||
assertRect(w.mFrame, 300, 300, 700, 700);
|
||||
assertRect(w.getContentFrameLw(), 300, 300, 500, 500);
|
||||
assertRect(w.mContentInsets, 0, 0, 200, 200);
|
||||
|
||||
pf.set(0, 0, 1000, 1000);
|
||||
// However if we set temp inset bounds, the insets will be computed
|
||||
// as if our window was laid out there, but it will be laid out according to
|
||||
// the task bounds.
|
||||
task.mInsetBounds.set(200, 200, 600, 600);
|
||||
w.computeFrameLw(pf, pf, pf, cf, cf, pf, cf, null);
|
||||
assertRect(w.mFrame, 300, 300, 700, 700);
|
||||
assertRect(w.getContentFrameLw(), 300, 300, 600, 600);
|
||||
assertRect(w.mContentInsets, 0, 0, 100, 100);
|
||||
}
|
||||
|
||||
private WindowState createWindow(Task task, int width, int height) {
|
||||
final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_APPLICATION);
|
||||
attrs.width = width;
|
||||
|
||||
Reference in New Issue
Block a user