diff options
| -rw-r--r-- | core/java/android/content/res/Configuration.java | 31 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/content/res/ConfigurationTest.java | 47 |
2 files changed, 10 insertions, 68 deletions
diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java index e039512f4fe4..ee1f1907fcb8 100644 --- a/core/java/android/content/res/Configuration.java +++ b/core/java/android/content/res/Configuration.java @@ -1047,29 +1047,18 @@ public final class Configuration implements Parcelable, Comparable<Configuration changed |= ActivityInfo.CONFIG_ORIENTATION; orientation = delta.orientation; } - - if (((delta.screenLayout & SCREENLAYOUT_SIZE_MASK) != SCREENLAYOUT_SIZE_UNDEFINED) - && (delta.screenLayout & SCREENLAYOUT_SIZE_MASK) - != (screenLayout & SCREENLAYOUT_SIZE_MASK)) { - changed |= ActivityInfo.CONFIG_SCREEN_LAYOUT; - screenLayout = (screenLayout & ~SCREENLAYOUT_SIZE_MASK) - | (delta.screenLayout & SCREENLAYOUT_SIZE_MASK); - } - if (((delta.screenLayout & SCREENLAYOUT_LONG_MASK) != SCREENLAYOUT_LONG_UNDEFINED) - && (delta.screenLayout & SCREENLAYOUT_LONG_MASK) - != (screenLayout & SCREENLAYOUT_LONG_MASK)) { - changed |= ActivityInfo.CONFIG_SCREEN_LAYOUT; - screenLayout = (screenLayout & ~SCREENLAYOUT_LONG_MASK) - | (delta.screenLayout & SCREENLAYOUT_LONG_MASK); - } - if (((delta.screenLayout & SCREENLAYOUT_ROUND_MASK) != SCREENLAYOUT_ROUND_UNDEFINED) - && (delta.screenLayout & SCREENLAYOUT_ROUND_MASK) - != (screenLayout & SCREENLAYOUT_ROUND_MASK)) { + if (getScreenLayoutNoDirection(delta.screenLayout) != + (SCREENLAYOUT_SIZE_UNDEFINED | SCREENLAYOUT_LONG_UNDEFINED) + && (getScreenLayoutNoDirection(screenLayout) != + getScreenLayoutNoDirection(delta.screenLayout))) { changed |= ActivityInfo.CONFIG_SCREEN_LAYOUT; - screenLayout = (screenLayout & ~SCREENLAYOUT_ROUND_MASK) - | (delta.screenLayout & SCREENLAYOUT_ROUND_MASK); + // We need to preserve the previous layout dir bits if they were defined + if ((delta.screenLayout&SCREENLAYOUT_LAYOUTDIR_MASK) == 0) { + screenLayout = (screenLayout&SCREENLAYOUT_LAYOUTDIR_MASK)|delta.screenLayout; + } else { + screenLayout = delta.screenLayout; + } } - if (delta.uiMode != (UI_MODE_TYPE_UNDEFINED|UI_MODE_NIGHT_UNDEFINED) && uiMode != delta.uiMode) { changed |= ActivityInfo.CONFIG_UI_MODE; diff --git a/core/tests/coretests/src/android/content/res/ConfigurationTest.java b/core/tests/coretests/src/android/content/res/ConfigurationTest.java deleted file mode 100644 index 3138c8f36fa6..000000000000 --- a/core/tests/coretests/src/android/content/res/ConfigurationTest.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package android.content.res; - -import org.junit.runner.RunWith; -import org.junit.Test; -import org.junit.runners.JUnit4; - -import android.content.res.Configuration; -import android.support.test.filters.SmallTest; -import android.platform.test.annotations.Presubmit; - -import junit.framework.TestCase; - -import static org.junit.Assert.assertEquals; - -/** - * Build/install/run: bit FrameworksCoreTests:android.content.res.ConfigurationTest - */ - -@RunWith(JUnit4.class) -@SmallTest -@Presubmit -public class ConfigurationTest extends TestCase { - @Test - public void testUpdateFromPreservesRoundBit() { - Configuration config = new Configuration(); - config.screenLayout = Configuration.SCREENLAYOUT_ROUND_YES; - Configuration config2 = new Configuration(); - - config.updateFrom(config2); - assertEquals(config.screenLayout, Configuration.SCREENLAYOUT_ROUND_YES); - } -} |