Commits

Adam Powell authored 946d05b95f8
DO NOT MERGE - Revert fixes for ImageView/MeasureSpec/RelativeLayout MeasureSpec.makeMeasureSpec has a bug where a negative or very large size parameter will cause the resulting MeasureSpec value to overflow. RelativeLayout partially relies on this when measuring children with mode UNSPECIFIED; a default value of -1 in a local variable ends up being passed to makeMeasureSpec, overflowing a mode value to create a measurespec that is very large in size, with AT_MOST as the mode. The correct behavior is for RelativeLayout to propagate the UNSPECIFIED mode. Unfortunately a number of custom view implementations in apps rely on the buggy behavior as they do not implement their own onMeasure method. This makes them fall back to View's default onMeasure implementation, which accepts the spec's size unconditionally for AT_MOST or EXACTLY modes, but falls back on getSuggestedMinimum[Width|Height] for UNSPECIFIED. If the view had no background drawable with dimensions and no minWidth field set, this fix for RelativeLayout causes some views to measure with a size of 0 rather than a size of the 30-bit version of 0xFF... Revert these fixes in the interests of compatibility. The next version will conditionally use the new behavior if targetSdk > JB-MR1. This also required reverting a fix for ImageView's adjustViewBounds functionality, as it cannot be implemented reliably if this RelativeLayout fix is not also in place. Revert "Fix UNSPECIFIED measurement in RelativeLayout" This reverts commit 132a742b94b9716451ddef30cec20548b346f1b9. Revert "Fix adjustViewBounds handling for ImageView" This reverts commit d5edc7721791ad807b9a8fbd923b8d6e73c399cc.