Merge "Do not propagate always-on-top config to child containers" into tm-dev
This commit is contained in:
@@ -345,6 +345,14 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu
|
|||||||
mAlwaysOnTop = alwaysOnTop ? ALWAYS_ON_TOP_ON : ALWAYS_ON_TOP_OFF;
|
mAlwaysOnTop = alwaysOnTop ? ALWAYS_ON_TOP_ON : ALWAYS_ON_TOP_OFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unsets always-on-top to undefined.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public void unsetAlwaysOnTop() {
|
||||||
|
mAlwaysOnTop = ALWAYS_ON_TOP_UNDEFINED;
|
||||||
|
}
|
||||||
|
|
||||||
private void setAlwaysOnTop(@AlwaysOnTop int alwaysOnTop) {
|
private void setAlwaysOnTop(@AlwaysOnTop int alwaysOnTop) {
|
||||||
mAlwaysOnTop = alwaysOnTop;
|
mAlwaysOnTop = alwaysOnTop;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,6 +126,10 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> {
|
|||||||
mResolvedTmpConfig.setTo(mResolvedOverrideConfiguration);
|
mResolvedTmpConfig.setTo(mResolvedOverrideConfiguration);
|
||||||
resolveOverrideConfiguration(newParentConfig);
|
resolveOverrideConfiguration(newParentConfig);
|
||||||
mFullConfiguration.setTo(newParentConfig);
|
mFullConfiguration.setTo(newParentConfig);
|
||||||
|
// Do not inherit always-on-top property from parent, otherwise the always-on-top
|
||||||
|
// property is propagated to all children. In that case, newly added child is
|
||||||
|
// always being positioned at bottom (behind the always-on-top siblings).
|
||||||
|
mFullConfiguration.windowConfiguration.unsetAlwaysOnTop();
|
||||||
mFullConfiguration.updateFrom(mResolvedOverrideConfiguration);
|
mFullConfiguration.updateFrom(mResolvedOverrideConfiguration);
|
||||||
onMergedOverrideConfigurationChanged();
|
onMergedOverrideConfigurationChanged();
|
||||||
if (!mResolvedTmpConfig.equals(mResolvedOverrideConfiguration)) {
|
if (!mResolvedTmpConfig.equals(mResolvedOverrideConfiguration)) {
|
||||||
@@ -228,6 +232,10 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> {
|
|||||||
final ConfigurationContainer parent = getParent();
|
final ConfigurationContainer parent = getParent();
|
||||||
if (parent != null) {
|
if (parent != null) {
|
||||||
mMergedOverrideConfiguration.setTo(parent.getMergedOverrideConfiguration());
|
mMergedOverrideConfiguration.setTo(parent.getMergedOverrideConfiguration());
|
||||||
|
// Do not inherit always-on-top property from parent, otherwise the always-on-top
|
||||||
|
// property is propagated to all children. In that case, newly added child is
|
||||||
|
// always being positioned at bottom (behind the always-on-top siblings).
|
||||||
|
mMergedOverrideConfiguration.windowConfiguration.unsetAlwaysOnTop();
|
||||||
mMergedOverrideConfiguration.updateFrom(mResolvedOverrideConfiguration);
|
mMergedOverrideConfiguration.updateFrom(mResolvedOverrideConfiguration);
|
||||||
} else {
|
} else {
|
||||||
mMergedOverrideConfiguration.setTo(mResolvedOverrideConfiguration);
|
mMergedOverrideConfiguration.setTo(mResolvedOverrideConfiguration);
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
|
|||||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
|
import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
|
||||||
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
|
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
|
||||||
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
|
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
|
||||||
|
import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
|
||||||
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
|
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
|
||||||
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
|
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
|
||||||
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
|
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
|
||||||
@@ -209,6 +210,20 @@ public class ConfigurationContainerTests {
|
|||||||
assertEquals(mergedConfig2, child2.getConfiguration());
|
assertEquals(mergedConfig2, child2.getConfiguration());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSetAlwaysOnTop() {
|
||||||
|
final TestConfigurationContainer root = new TestConfigurationContainer();
|
||||||
|
final TestConfigurationContainer child1 = root.addChild();
|
||||||
|
final TestConfigurationContainer child2 = root.addChild();
|
||||||
|
root.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
|
||||||
|
root.setAlwaysOnTop(true);
|
||||||
|
final TestConfigurationContainer child3 = root.addChild();
|
||||||
|
assertEquals(true, root.isAlwaysOnTop());
|
||||||
|
assertEquals(false, child1.isAlwaysOnTop());
|
||||||
|
assertEquals(false, child2.isAlwaysOnTop());
|
||||||
|
assertEquals(false, child3.isAlwaysOnTop());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetWindowingMode() {
|
public void testSetWindowingMode() {
|
||||||
final TestConfigurationContainer root = new TestConfigurationContainer();
|
final TestConfigurationContainer root = new TestConfigurationContainer();
|
||||||
|
|||||||
@@ -674,8 +674,6 @@ public class TaskDisplayAreaTests extends WindowTestsBase {
|
|||||||
taskDisplayArea.positionChildAt(POSITION_TOP, alwaysOnTopRootTask,
|
taskDisplayArea.positionChildAt(POSITION_TOP, alwaysOnTopRootTask,
|
||||||
false /* includingParents */);
|
false /* includingParents */);
|
||||||
assertTrue(alwaysOnTopRootTask.isAlwaysOnTop());
|
assertTrue(alwaysOnTopRootTask.isAlwaysOnTop());
|
||||||
// Ensure always on top state is synced to the children of the root task.
|
|
||||||
assertTrue(alwaysOnTopRootTask.getTopNonFinishingActivity().isAlwaysOnTop());
|
|
||||||
assertEquals(alwaysOnTopRootTask, taskDisplayArea.getTopRootTask());
|
assertEquals(alwaysOnTopRootTask, taskDisplayArea.getTopRootTask());
|
||||||
|
|
||||||
final Task pinnedRootTask = taskDisplayArea.createRootTask(
|
final Task pinnedRootTask = taskDisplayArea.createRootTask(
|
||||||
|
|||||||
Reference in New Issue
Block a user