1aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Leepackage com.android.server.wm;
2aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee
3aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Leeimport org.junit.Test;
4aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Leeimport org.junit.runner.RunWith;
5aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee
6aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Leeimport android.content.res.Configuration;
7aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Leeimport android.graphics.Rect;
8aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee
9aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Leeimport android.platform.test.annotations.Presubmit;
10aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Leeimport android.support.test.filters.SmallTest;
11aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Leeimport android.support.test.runner.AndroidJUnit4;
12aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee
13aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Leeimport static org.junit.Assert.assertTrue;
14aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee
15aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee/**
16aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee * Tests for the {@link RootWindowContainer} class.
17aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee *
18aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee * Build/Install/Run:
19aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee *  atest FrameworksServicesTests:com.android.server.wm.RootWindowContainerTests
20aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee */
21aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee@SmallTest
22aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee@Presubmit
23aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee@RunWith(AndroidJUnit4.class)
24aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Leepublic class RootWindowContainerTests extends WindowTestsBase {
25aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee    @Test
26aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee    public void testSetDisplayOverrideConfigurationIfNeeded() throws Exception {
270dc5880ab7dc350738ce3edc873e443c226718f4chaviw        synchronized (sWm.mWindowMap) {
280dc5880ab7dc350738ce3edc873e443c226718f4chaviw            // Add first stack we expect to be updated with configuration change.
290dc5880ab7dc350738ce3edc873e443c226718f4chaviw            final TaskStack stack = createTaskStackOnDisplay(mDisplayContent);
300dc5880ab7dc350738ce3edc873e443c226718f4chaviw            stack.getOverrideConfiguration().windowConfiguration.setBounds(new Rect(0, 0, 5, 5));
310dc5880ab7dc350738ce3edc873e443c226718f4chaviw
320dc5880ab7dc350738ce3edc873e443c226718f4chaviw            // Add second task that will be set for deferred removal that should not be returned
330dc5880ab7dc350738ce3edc873e443c226718f4chaviw            // with the configuration change.
340dc5880ab7dc350738ce3edc873e443c226718f4chaviw            final TaskStack deferredDeletedStack = createTaskStackOnDisplay(mDisplayContent);
350dc5880ab7dc350738ce3edc873e443c226718f4chaviw            deferredDeletedStack.getOverrideConfiguration().windowConfiguration.setBounds(
360dc5880ab7dc350738ce3edc873e443c226718f4chaviw                    new Rect(0, 0, 5, 5));
370dc5880ab7dc350738ce3edc873e443c226718f4chaviw            deferredDeletedStack.mDeferRemoval = true;
380dc5880ab7dc350738ce3edc873e443c226718f4chaviw
390dc5880ab7dc350738ce3edc873e443c226718f4chaviw            final Configuration override = new Configuration(
400dc5880ab7dc350738ce3edc873e443c226718f4chaviw                    mDisplayContent.getOverrideConfiguration());
410dc5880ab7dc350738ce3edc873e443c226718f4chaviw            override.windowConfiguration.setBounds(new Rect(0, 0, 10, 10));
420dc5880ab7dc350738ce3edc873e443c226718f4chaviw
430dc5880ab7dc350738ce3edc873e443c226718f4chaviw            // Set display override.
440dc5880ab7dc350738ce3edc873e443c226718f4chaviw            final int[] results = sWm.mRoot.setDisplayOverrideConfigurationIfNeeded(override,
450dc5880ab7dc350738ce3edc873e443c226718f4chaviw                    mDisplayContent.getDisplayId());
460dc5880ab7dc350738ce3edc873e443c226718f4chaviw
470dc5880ab7dc350738ce3edc873e443c226718f4chaviw            // Ensure only first stack is returned.
480dc5880ab7dc350738ce3edc873e443c226718f4chaviw            assertTrue(results.length == 1);
490dc5880ab7dc350738ce3edc873e443c226718f4chaviw            assertTrue(results[0] == stack.mStackId);
500dc5880ab7dc350738ce3edc873e443c226718f4chaviw        }
51aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee    }
52aea60d2f55dc71ec05c4bd2636e25f2dd7d0bf12Bryce Lee}
53