1package com.android.server.wm;
2
3import org.junit.Test;
4import org.junit.runner.RunWith;
5
6import android.content.res.Configuration;
7import android.graphics.Rect;
8
9import android.platform.test.annotations.Presubmit;
10import android.support.test.filters.SmallTest;
11import android.support.test.runner.AndroidJUnit4;
12
13import static org.junit.Assert.assertTrue;
14
15/**
16 * Tests for the {@link RootWindowContainer} class.
17 *
18 * Build/Install/Run:
19 *  atest FrameworksServicesTests:com.android.server.wm.RootWindowContainerTests
20 */
21@SmallTest
22@Presubmit
23@RunWith(AndroidJUnit4.class)
24public class RootWindowContainerTests extends WindowTestsBase {
25    @Test
26    public void testSetDisplayOverrideConfigurationIfNeeded() throws Exception {
27        synchronized (sWm.mWindowMap) {
28            // Add first stack we expect to be updated with configuration change.
29            final TaskStack stack = createTaskStackOnDisplay(mDisplayContent);
30            stack.getOverrideConfiguration().windowConfiguration.setBounds(new Rect(0, 0, 5, 5));
31
32            // Add second task that will be set for deferred removal that should not be returned
33            // with the configuration change.
34            final TaskStack deferredDeletedStack = createTaskStackOnDisplay(mDisplayContent);
35            deferredDeletedStack.getOverrideConfiguration().windowConfiguration.setBounds(
36                    new Rect(0, 0, 5, 5));
37            deferredDeletedStack.mDeferRemoval = true;
38
39            final Configuration override = new Configuration(
40                    mDisplayContent.getOverrideConfiguration());
41            override.windowConfiguration.setBounds(new Rect(0, 0, 10, 10));
42
43            // Set display override.
44            final int[] results = sWm.mRoot.setDisplayOverrideConfigurationIfNeeded(override,
45                    mDisplayContent.getDisplayId());
46
47            // Ensure only first stack is returned.
48            assertTrue(results.length == 1);
49            assertTrue(results[0] == stack.mStackId);
50        }
51    }
52}
53