Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ff762299 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android (Google) Code Review
Browse files

Merge "Small fixes and cleanup of resource config handling." into honeycomb-mr2

parents 95f397ad 3904d03d
Loading
Loading
Loading
Loading
+10 −9
Original line number Diff line number Diff line
@@ -193,11 +193,7 @@ public class Resources {
            Configuration config, CompatibilityInfo compInfo) {
        mAssets = assets;
        mMetrics.setToDefaults();
        if (compInfo == null) {
            mCompatibilityInfo = CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO;
        } else {
        mCompatibilityInfo = compInfo;
        }
        updateConfiguration(config, metrics);
        assets.ensureStringBlocks();
    }
@@ -1416,7 +1412,9 @@ public class Resources {
            int configChanges = 0xfffffff;
            if (config != null) {
                mTmpConfig.setTo(config);
                if (mCompatibilityInfo != null) {
                    mCompatibilityInfo.applyToConfiguration(mTmpConfig);
                }
                configChanges = mConfiguration.updateFrom(mTmpConfig);
                configChanges = ActivityInfo.activityInfoConfigToNative(configChanges);
            }
@@ -1434,8 +1432,10 @@ public class Resources {
                // it would be cleaner and more maintainble to just be
                // consistently dealing with a compatible display everywhere in
                // the framework.
                if (mCompatibilityInfo != null) {
                    mCompatibilityInfo.applyToDisplayMetrics(mMetrics);
                }
            }
            mMetrics.scaledDensity = mMetrics.density * mConfiguration.fontScale;

            String locale = null;
@@ -1565,11 +1565,12 @@ public class Resources {
     * Return the compatibility mode information for the application.
     * The returned object should be treated as read-only.
     * 
     * @return compatibility info. null if the app does not require compatibility mode.
     * @return compatibility info.
     * @hide
     */
    public CompatibilityInfo getCompatibilityInfo() {
        return mCompatibilityInfo;
        return mCompatibilityInfo != null ? mCompatibilityInfo
                : CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO;
    }

    /**
+21 −42
Original line number Diff line number Diff line
@@ -1452,24 +1452,20 @@ struct ResTable_config
    // settings is the requested settings
    inline bool match(const ResTable_config& settings) const {
        if (imsi != 0) {
            if ((settings.mcc != 0 && mcc != 0
                 && mcc != settings.mcc) || 
                (settings.mcc == 0 && mcc != 0)) {
            if (mcc != 0 && mcc != settings.mcc) {
                return false;
            }
            if ((settings.mnc != 0 && mnc != 0
                 && mnc != settings.mnc) ||
                (settings.mnc == 0 && mnc != 0)) {
            if (mnc != 0 && mnc != settings.mnc) {
                return false;
            }
        }
        if (locale != 0) {
            if (settings.language[0] != 0 && language[0] != 0
            if (language[0] != 0
                && (language[0] != settings.language[0]
                    || language[1] != settings.language[1])) {
                return false;
            }
            if (settings.country[0] != 0 && country[0] != 0
            if (country[0] != 0
                && (country[0] != settings.country[0]
                    || country[1] != settings.country[1])) {
                return false;
@@ -1480,66 +1476,56 @@ struct ResTable_config
            const int setScreenSize = settings.screenLayout&MASK_SCREENSIZE;
            // Any screen sizes for larger screens than the setting do not
            // match.
            if ((setScreenSize != 0 && screenSize != 0
                    && screenSize > setScreenSize) ||
                    (setScreenSize == 0 && screenSize != 0)) {
            if (screenSize != 0 && screenSize > setScreenSize) {
                return false;
            }
            
            const int screenLong = screenLayout&MASK_SCREENLONG;
            const int setScreenLong = settings.screenLayout&MASK_SCREENLONG;
            if (setScreenLong != 0 && screenLong != 0
                    && screenLong != setScreenLong) {
            if (screenLong != 0 && screenLong != setScreenLong) {
                return false;
            }

            const int uiModeType = uiMode&MASK_UI_MODE_TYPE;
            const int setUiModeType = settings.uiMode&MASK_UI_MODE_TYPE;
            if (setUiModeType != 0 && uiModeType != 0
                    && uiModeType != setUiModeType) {
            if (uiModeType != 0 && uiModeType != setUiModeType) {
                return false;
            }

            const int uiModeNight = uiMode&MASK_UI_MODE_NIGHT;
            const int setUiModeNight = settings.uiMode&MASK_UI_MODE_NIGHT;
            if (setUiModeNight != 0 && uiModeNight != 0
                    && uiModeNight != setUiModeNight) {
            if (uiModeNight != 0 && uiModeNight != setUiModeNight) {
                return false;
            }

            if (settings.smallestScreenWidthDp != 0 && smallestScreenWidthDp != 0
            if (smallestScreenWidthDp != 0
                    && smallestScreenWidthDp > settings.smallestScreenWidthDp) {
                return false;
            }
        }
        if (screenSizeDp != 0) {
            if (settings.screenWidthDp != 0 && screenWidthDp != 0
                    && screenWidthDp > settings.screenWidthDp) {
            if (screenWidthDp != 0 && screenWidthDp > settings.screenWidthDp) {
                //LOGI("Filtering out width %d in requested %d", screenWidthDp, settings.screenWidthDp);
                return false;
            }
            if (settings.screenHeightDp != 0 && screenHeightDp != 0
                    && screenHeightDp > settings.screenHeightDp) {
            if (screenHeightDp != 0 && screenHeightDp > settings.screenHeightDp) {
                //LOGI("Filtering out height %d in requested %d", screenHeightDp, settings.screenHeightDp);
                return false;
            }
        }
        if (screenType != 0) {
            if (settings.orientation != 0 && orientation != 0
                && orientation != settings.orientation) {
            if (orientation != 0 && orientation != settings.orientation) {
                return false;
            }
            // density always matches - we can scale it.  See isBetterThan
            if (settings.touchscreen != 0 && touchscreen != 0
                && touchscreen != settings.touchscreen) {
            if (touchscreen != 0 && touchscreen != settings.touchscreen) {
                return false;
            }
        }
        if (input != 0) {
            const int keysHidden = inputFlags&MASK_KEYSHIDDEN;
            const int setKeysHidden = settings.inputFlags&MASK_KEYSHIDDEN;
            if (setKeysHidden != 0 && keysHidden != 0
                && keysHidden != setKeysHidden) {
            if (keysHidden != 0 && keysHidden != setKeysHidden) {
                // For compatibility, we count a request for KEYSHIDDEN_NO as also
                // matching the more recent KEYSHIDDEN_SOFT.  Basically
                // KEYSHIDDEN_NO means there is some kind of keyboard available.
@@ -1551,36 +1537,29 @@ struct ResTable_config
            }
            const int navHidden = inputFlags&MASK_NAVHIDDEN;
            const int setNavHidden = settings.inputFlags&MASK_NAVHIDDEN;
            if (setNavHidden != 0 && navHidden != 0
                && navHidden != setNavHidden) {
            if (navHidden != 0 && navHidden != setNavHidden) {
                return false;
            }
            if (settings.keyboard != 0 && keyboard != 0
                && keyboard != settings.keyboard) {
            if (keyboard != 0 && keyboard != settings.keyboard) {
                return false;
            }
            if (settings.navigation != 0 && navigation != 0
                && navigation != settings.navigation) {
            if (navigation != 0 && navigation != settings.navigation) {
                return false;
            }
        }
        if (screenSize != 0) {
            if (settings.screenWidth != 0 && screenWidth != 0
                && screenWidth > settings.screenWidth) {
            if (screenWidth != 0 && screenWidth > settings.screenWidth) {
                return false;
            }
            if (settings.screenHeight != 0 && screenHeight != 0
                && screenHeight > settings.screenHeight) {
            if (screenHeight != 0 && screenHeight > settings.screenHeight) {
                return false;
            }
        }
        if (version != 0) {
            if (settings.sdkVersion != 0 && sdkVersion != 0
                && sdkVersion > settings.sdkVersion) {
            if (sdkVersion != 0 && sdkVersion > settings.sdkVersion) {
                return false;
            }
            if (settings.minorVersion != 0 && minorVersion != 0
                && minorVersion != settings.minorVersion) {
            if (minorVersion != 0 && minorVersion != settings.minorVersion) {
                return false;
            }
        }