diff options
author | Tor Norbye <tnorbye@google.com> | 2012-10-26 11:19:25 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2012-10-26 11:20:36 -0700 |
commit | ac99cb637751a29758986294d538270f85ada550 (patch) | |
tree | fff3c7087795fd09a0406b50ac4aaba167aa153d /lint | |
parent | 9e01d02bf6ee2240f01042dc86a417b62711ab6f (diff) | |
download | sdk-ac99cb637751a29758986294d538270f85ada550.zip sdk-ac99cb637751a29758986294d538270f85ada550.tar.gz sdk-ac99cb637751a29758986294d538270f85ada550.tar.bz2 |
38958: Lint misreports missing layout_[width/height]
Change-Id: I21c88f01ef7ae2b846f67533900eea7e8161266a
Diffstat (limited to 'lint')
3 files changed, 45 insertions, 0 deletions
diff --git a/lint/libs/lint_checks/src/com/android/tools/lint/checks/RequiredAttributeDetector.java b/lint/libs/lint_checks/src/com/android/tools/lint/checks/RequiredAttributeDetector.java index 8cb2c42..9fe8440 100644 --- a/lint/libs/lint_checks/src/com/android/tools/lint/checks/RequiredAttributeDetector.java +++ b/lint/libs/lint_checks/src/com/android/tools/lint/checks/RequiredAttributeDetector.java @@ -17,7 +17,9 @@ package com.android.tools.lint.checks; import static com.android.SdkConstants.ANDROID_NS_NAME_PREFIX; +import static com.android.SdkConstants.ANDROID_PREFIX; import static com.android.SdkConstants.ANDROID_STYLE_RESOURCE_PREFIX; +import static com.android.SdkConstants.ANDROID_THEME_PREFIX; import static com.android.SdkConstants.ANDROID_URI; import static com.android.SdkConstants.ATTR_LAYOUT; import static com.android.SdkConstants.ATTR_LAYOUT_HEIGHT; @@ -161,12 +163,41 @@ public class RequiredAttributeDetector extends LayoutDetector implements Detecto } private boolean isSizeStyle(String style, Set<String> sizeStyles) { + if (isFrameworkSizeStyle(style)) { + return true; + } if (sizeStyles == null) { return false; } return isSizeStyle(stripStylePrefix(style), sizeStyles, 0); } + private boolean isFrameworkSizeStyle(String style) { + // A few attributes + if (!(style.startsWith(ANDROID_THEME_PREFIX) || style.startsWith(ANDROID_PREFIX))) { + return false; + } + + // The styles Widget.TextView.ListSeparator (and several theme variations, such as + // Widget.Holo.TextView.ListSeparator, Widget.Holo.Light.TextView.ListSeparator, etc) + // define layout_width and layout_height. + // These are exposed through the listSeparatorTextViewStyle style. + if (style.equals("?android:attr/listSeparatorTextViewStyle")) { //$NON-NLS-1$ + return true; + } + + // It's also set on Widget.QuickContactBadge and Widget.QuickContactBadgeSmall + // These are exposed via a handful of attributes with a common prefix + if (style.startsWith("?android:attr/quickContactBadgeStyle")) { //$NON-NLS-1$ + return true; + } + + // Finally, the styles are set on MediaButton and Widget.Holo.Tab (and + // Widget.Holo.Light.Tab) but these are not exposed via attributes. + + return false; + } + private boolean isSizeStyle( @NonNull String style, @NonNull Set<String> sizeStyles, int depth) { diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/RequiredAttributeDetectorTest.java b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/RequiredAttributeDetectorTest.java index 3bae4d7..1e3b660 100644 --- a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/RequiredAttributeDetectorTest.java +++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/RequiredAttributeDetectorTest.java @@ -91,4 +91,15 @@ public class RequiredAttributeDetectorTest extends AbstractCheckTest { "res/layout/edit_type.xml" )); } + + public void testFrameworkStyles() throws Exception { + // See http://code.google.com/p/android/issues/detail?id=38958 + assertEquals( + "No warnings.", + + lintProject( + "res/layout/listseparator.xml" + )); + } + } diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/layout/listseparator.xml b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/layout/listseparator.xml new file mode 100644 index 0000000..ac50ff7 --- /dev/null +++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/layout/listseparator.xml @@ -0,0 +1,3 @@ +<TextView xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@id/text1" + style="?android:attr/listSeparatorTextViewStyle" /> |