aboutsummaryrefslogtreecommitdiffstats
path: root/lint
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2012-10-26 11:19:25 -0700
committerTor Norbye <tnorbye@google.com>2012-10-26 11:20:36 -0700
commitac99cb637751a29758986294d538270f85ada550 (patch)
treefff3c7087795fd09a0406b50ac4aaba167aa153d /lint
parent9e01d02bf6ee2240f01042dc86a417b62711ab6f (diff)
downloadsdk-ac99cb637751a29758986294d538270f85ada550.zip
sdk-ac99cb637751a29758986294d538270f85ada550.tar.gz
sdk-ac99cb637751a29758986294d538270f85ada550.tar.bz2
38958: Lint misreports missing layout_[width/height]
Change-Id: I21c88f01ef7ae2b846f67533900eea7e8161266a
Diffstat (limited to 'lint')
-rw-r--r--lint/libs/lint_checks/src/com/android/tools/lint/checks/RequiredAttributeDetector.java31
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/RequiredAttributeDetectorTest.java11
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/res/layout/listseparator.xml3
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" />