Bug 489096
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/NodeInfoCreator.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/NodeInfoCreator.java
index 7145fdd..2d225df 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/NodeInfoCreator.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/NodeInfoCreator.java
@@ -38,6 +38,9 @@
private static final String LANDMARK_TAGS = "nav|main|article|aside"; //$NON-NLS-1$
private static final String HEADER_FOOTER_TAGS = "header|footer"; //$NON-NLS-1$
+
+ private static final String LANDMARK_ROLES = "banner|navigation|main|contentinfor|complementary|article|search|application";
+ //TBD form (not supported in some env)
private static final Set<String> BLOCK_TAG_SET = HtmlTagUtil.getBlockElementSet();
@@ -86,14 +89,15 @@
} else if (tagName.equals("input")) {
String type = el.getAttribute("type").toLowerCase();
if (type.equals("submit") || type.equals("reset") || type.equals("hidden") || type.equals("image")) {
- //TODO update by using techniques (only hidden state is not labelable in HTML5)
+ // TODO update by using techniques (only hidden state is not
+ // labelable in HTML5)
return false;
} else {
return true;
}
}
- //TODO update by using techniques
- //keygen, meter, output, progress
+ // TODO update by using techniques
+ // keygen, meter, output, progress
return false;
}
@@ -209,6 +213,7 @@
Node curNode = p.getNode();
while (curNode != null) {
+ boolean hasHeadingRole = false;
String nodeName = curNode.getNodeName();
if (curNode.getNodeType() == Node.ELEMENT_NODE) {
Element tmpE = (Element) curNode;
@@ -220,6 +225,9 @@
isVisible = false;
// System.out.println(tmpE.getAttribute("id"));
}
+ if (tmpE.hasAttribute("role") && "heading".equalsIgnoreCase(tmpE.getAttribute("role"))) {
+ hasHeadingRole = true;
+ }
}
if (nodeName.matches(HEADING_TAGS)) {
@@ -238,6 +246,11 @@
info.appendComment("mark");
}
+ if (hasHeadingRole && !info.isHeading()) {
+ info.setHeading(true);
+ info.appendComment("Heading: " + nodeName + " (role=\"heading\").");
+ }
+
if (nodeName.equals("body")) {
break;
}
@@ -368,8 +381,16 @@
// System.out.println("Landmark: " + curNodeName
// + " without ancestor article/section.");
}
+ } else {
+ Element tmpE = (Element) curNode;
+ if (tmpE.hasAttribute("role")) {
+ String roleS = tmpE.getAttribute("role");
+ if(roleS.matches(LANDMARK_ROLES)){
+ curInfo.setLandmark(true);
+ curInfo.appendComment("Landmark: " + curNodeName + "(role=\""+roleS+"\").");
+ }
+ }
}
-
}
if (curInfo != null) {
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeColorUtil.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeColorUtil.java
index d2e8b4d..a316290 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeColorUtil.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeColorUtil.java
@@ -262,8 +262,14 @@
curTotalLines += curInfo.getLines();
} else if (curInfo.isHeading()) {
- if (curInfo.getNode().getNodeName().matches("h[1-6]")) {
+ Node tmpN = curInfo.getNode();
+ if (tmpN.getNodeName().matches("h[1-6]")) {
headingCount++;
+ } else if (tmpN instanceof Element) {
+ Element tmpE = (Element) tmpN;
+ if (tmpE.hasAttribute("role") && "heading".equalsIgnoreCase(tmpE.getAttribute("role"))) {
+ headingCount++;
+ }
}
int tmpTotalWords = wordcountForHeading(headingCount);
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeViewUtil.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeViewUtil.java
index e8a62db..bd62ea9 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeViewUtil.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeViewUtil.java
@@ -22,6 +22,8 @@
import java.util.Set;
import org.eclipse.actf.util.logging.DebugPrintUtil;
+import org.eclipse.actf.util.xpath.XPathService;
+import org.eclipse.actf.util.xpath.XPathServiceFactory;
import org.eclipse.actf.visualization.engines.blind.BlindVizResourceUtil;
import org.eclipse.actf.visualization.engines.blind.html.IBlindProblem;
import org.eclipse.actf.visualization.engines.blind.html.VisualizeEngine;
@@ -40,6 +42,8 @@
// separated from VisualizeEngine
+ private static final XPathService xpathService = XPathServiceFactory.newService();
+
private static final String SCRIPT = "script"; //$NON-NLS-1$
private static final String NAME = "name"; //$NON-NLS-1$
private static final String TITLE = "title"; //$NON-NLS-1$
@@ -168,13 +172,27 @@
}
}
- public static void visualizeLandmark(Document doc, String baseUrl) {
- String[] landmarks = { "nav", "article", "aside" };
+ private static void addLandmarkImg(Document doc, Element target, String baseUrl, String landmarkName) {
+ Element imgel1 = doc.createElement(IMG);
+ imgel1.setAttribute(ALT, "Landmark: " + landmarkName);
+ // imgel1.setAttribute(TITLE, name);
+ imgel1.setAttribute(SRC, baseUrl + "img/" + landmarkName + ".gif");
- NodeList tmpNl = doc.getElementsByTagName("main");
+ if (target.hasChildNodes()) {
+ target.insertBefore(imgel1, target.getFirstChild());
+ } else {
+ target.appendChild(imgel1);
+ }
+ }
+
+ public static void visualizeLandmark(Document doc, String baseUrl) {
+ // String[] landmarks = { "nav", "article", "aside" };
+
+ // NodeList tmpNl = doc.getElementsByTagName("main");
+ NodeList tmpNl = xpathService.evalPathForNodeList("//main|//*[@role='main']", doc);
for (int i = 0; i < tmpNl.getLength(); i++) {
Element landE = (Element) tmpNl.item(i);
- addLandmarkImg(doc, landE, baseUrl);
+ addLandmarkImg(doc, landE, baseUrl, "main");
try {
Element parentE = (Element) landE.getParentNode();
@@ -186,11 +204,26 @@
}
}
- for (String tag : landmarks) {
- tmpNl = doc.getElementsByTagName(tag);
- for (int i = 0; i < tmpNl.getLength(); i++) {
- Element landE = (Element) tmpNl.item(i);
- addLandmarkImg(doc, landE, baseUrl);
+ tmpNl = xpathService.evalPathForNodeList("//article|//*[@role='article']", doc);
+ for (int i = 0; i < tmpNl.getLength(); i++) {
+ addLandmarkImg(doc, (Element) tmpNl.item(i), baseUrl, "article");
+ }
+
+ tmpNl = xpathService.evalPathForNodeList("//nav|//*[@role='navigation']", doc);
+ for (int i = 0; i < tmpNl.getLength(); i++) {
+ addLandmarkImg(doc, (Element) tmpNl.item(i), baseUrl, "nav");
+ }
+
+ tmpNl = doc.getElementsByTagName("aside");
+ for (int i = 0; i < tmpNl.getLength(); i++) {
+ addLandmarkImg(doc, (Element) tmpNl.item(i), baseUrl);
+ }
+
+ tmpNl = xpathService.evalPathForNodeList("//*[@role='complementary']", doc);
+ for (int i = 0; i < tmpNl.getLength(); i++) {
+ Element landE = (Element) tmpNl.item(i);
+ if (!"aside".equalsIgnoreCase(landE.getNodeName())) {
+ addLandmarkImg(doc, landE, baseUrl, "complementary");
}
}
@@ -205,6 +238,33 @@
}
}
+ tmpNl = xpathService.evalPathForNodeList("//*[@role='banner']", doc);
+ for (int i = 0; i < tmpNl.getLength(); i++) {
+ Element landE = (Element) tmpNl.item(i);
+ if (!"header".equalsIgnoreCase(landE.getNodeName())) {
+ addLandmarkImg(doc, landE, baseUrl, "banner");
+ }
+ }
+
+ tmpNl = xpathService.evalPathForNodeList("//*[@role='contentinfo']", doc);
+ for (int i = 0; i < tmpNl.getLength(); i++) {
+ Element landE = (Element) tmpNl.item(i);
+ if (!"footer".equalsIgnoreCase(landE.getNodeName())) {
+ addLandmarkImg(doc, landE, baseUrl, "contentinfo");
+ }
+ }
+
+ tmpNl = xpathService.evalPathForNodeList("//*[@role='application']", doc);
+ for (int i = 0; i < tmpNl.getLength(); i++) {
+ addLandmarkImg(doc, (Element) tmpNl.item(i), baseUrl, "application");
+ }
+
+ tmpNl = xpathService.evalPathForNodeList("//*[@role='search']", doc);
+ for (int i = 0; i < tmpNl.getLength(); i++) {
+ addLandmarkImg(doc, (Element) tmpNl.item(i), baseUrl, "search");
+ }
+
+
NodeList nl = doc.getElementsByTagName("head");
if (nl.getLength() > 0) {
Element el = (Element) nl.item(0);
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/BlindVizResourceUtil.java b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/BlindVizResourceUtil.java
index 1359af1..04f339e 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/BlindVizResourceUtil.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/BlindVizResourceUtil.java
@@ -72,6 +72,12 @@
FileUtils.copyFile(bundleBlind, new Path("vizResources/landmark_icons/header.gif"), path + "header.gif", true);
FileUtils.copyFile(bundleBlind, new Path("vizResources/landmark_icons/main.gif"), path + "main.gif", true);
FileUtils.copyFile(bundleBlind, new Path("vizResources/landmark_icons/nav.gif"), path + "nav.gif", true);
+ FileUtils.copyFile(bundleBlind, new Path("vizResources/landmark_icons/application.gif"), path + "application.gif", true);
+ FileUtils.copyFile(bundleBlind, new Path("vizResources/landmark_icons/banner.gif"), path + "banner.gif", true);
+ FileUtils.copyFile(bundleBlind, new Path("vizResources/landmark_icons/complementary.gif"), path + "complementary.gif", true);
+ FileUtils.copyFile(bundleBlind, new Path("vizResources/landmark_icons/contentinfo.gif"), path + "contentinfo.gif", true);
+ FileUtils.copyFile(bundleBlind, new Path("vizResources/landmark_icons/search.gif"), path + "search.gif", true);
+ //FileUtils.copyFile(bundleBlind, new Path("vizResources/landmark_icons/form.gif"), path + "form.gif", true);
}
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/css/visualization.css b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/css/visualization.css
index 12d8f6e..3d0ed0f 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/css/visualization.css
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/css/visualization.css
@@ -2,18 +2,18 @@
border: 5px blue solid; padding: 2px; margin: 1px;
}
-article,nav {
+article,nav,*[role="article"],*[role="navigation"],*[role="application"] {
border: 2px blue solid; padding: 2px; margin: 1px;
}
-.header_footer {
+.header_footer,*[role="banner"],*[role="contentinfo"] {
border: 2px blue solid; padding: 2px; margin: 1px;
}
-aside {
+aside,*[role="complementary"],*[role="search"] {
border: 1px blue solid; padding: 1px; margin: 1px;
}
-section {
+section,*[role="region"] {
border: 1px blue dotted; padding: 1px; margin: 1px;
}
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/application.gif b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/application.gif
new file mode 100644
index 0000000..7234682
--- /dev/null
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/application.gif
Binary files differ
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/banner.gif b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/banner.gif
new file mode 100644
index 0000000..45ed9db
--- /dev/null
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/banner.gif
Binary files differ
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/complementary.gif b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/complementary.gif
new file mode 100644
index 0000000..c1ec2ab
--- /dev/null
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/complementary.gif
Binary files differ
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/contentinfo.gif b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/contentinfo.gif
new file mode 100644
index 0000000..28b4bf1
--- /dev/null
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/contentinfo.gif
Binary files differ
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/form.gif b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/form.gif
new file mode 100644
index 0000000..c092172
--- /dev/null
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/form.gif
Binary files differ
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/search.gif b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/search.gif
new file mode 100644
index 0000000..63c8042
--- /dev/null
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/landmark_icons/search.gif
Binary files differ
diff --git a/plugins/org.eclipse.actf.visualization.eval/resources/checkitem.xml b/plugins/org.eclipse.actf.visualization.eval/resources/checkitem.xml
index efed27b..f19499f 100644
--- a/plugins/org.eclipse.actf.visualization.eval/resources/checkitem.xml
+++ b/plugins/org.eclipse.actf.visualization.eval/resources/checkitem.xml
@@ -265,11 +265,11 @@
<gItem id="o" name="Section508"/>
<gItem techniques="H42" id="1.3.1" name="JIS"/>
<gItem techniques="G1, G123, G124, H69" id="2.4.1" name="JIS"/>
- <gItem techniques="G141" id="2.4.10" name="JIS"/>
+ <gItem techniques="G141,ARIA12" id="2.4.10" name="JIS"/>
<gItem id="8" name="IBMGuideline"/>
<gItem techniques="H42" id="1.3.1" name="WCAG 2.0"/>
<gItem techniques="G1, G123, G124, H69" id="2.4.1" name="WCAG 2.0"/>
- <gItem techniques="G141" id="2.4.10" name="WCAG 2.0"/>
+ <gItem techniques="G141,ARIA12" id="2.4.10" name="WCAG 2.0"/>
</guideline>
<metrics>
<mItem name="Perceivable"/>