[Bug 281318]
diff --git a/plugins/org.eclipse.actf.visualization.blind.html/src/org/eclipse/actf/visualization/blind/html/BlindVisualizerHtml.java b/plugins/org.eclipse.actf.visualization.blind.html/src/org/eclipse/actf/visualization/blind/html/BlindVisualizerHtml.java
index 05453a7..11f0256 100644
--- a/plugins/org.eclipse.actf.visualization.blind.html/src/org/eclipse/actf/visualization/blind/html/BlindVisualizerHtml.java
+++ b/plugins/org.eclipse.actf.visualization.blind.html/src/org/eclipse/actf/visualization/blind/html/BlindVisualizerHtml.java
@@ -18,6 +18,7 @@
import java.io.PrintWriter;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Date;
import java.util.HashSet;
import java.util.Vector;
@@ -82,6 +83,8 @@
return false;
}
+ private final boolean PERFORMANCE_DEBUG = false;
+
public int visualize() {
GuidelineHolder.getInstance().setTargetMimeType("text/html"); //$NON-NLS-1$
@@ -92,13 +95,15 @@
File targetFile;
try {
-
+ if (PERFORMANCE_DEBUG) System.out.println("vizualize start\t"+(new Date()).getTime());
srcFile = webBrowser.saveOriginalDocument(tmpDirS + ORIG_HTML_FILE);
liveFile = webBrowser
.saveDocumentAsHTMLFile(tmpDirS + IE_HTML_FILE);
// for srcViewer
webBrowser.saveOriginalDocument(tmpDirS + HTML_SOURCE_FILE);
+ if (PERFORMANCE_DEBUG) System.out.println("save documents\t"+(new Date()).getTime());
+
Vector<Html2ViewMapData> html2ViewMapV = new Vector<Html2ViewMapData>();
IHTMLParser htmlParser = HTMLParserFactory.createHTMLParser();
HtmlErrorLogListener errorLogListener = new HtmlErrorLogListener();
@@ -148,6 +153,8 @@
targetFile = srcFile;
}
+ if (PERFORMANCE_DEBUG) System.out.println("parse documents\t"+(new Date()).getTime());
+
// System.out.println(document+" "+ _originalDom+" "+ ieDom);
boolean hasFrame = false;
@@ -182,9 +189,13 @@
// engine.setInvisibleIdSet(invisibleIdSet);
engine.setInvisibleIdSet(new HashSet<String>());
+ if (PERFORMANCE_DEBUG) System.out.println("setInvisibleIdSet\t"+(new Date()).getTime());
engine.setPageData(pageData);
+ if (PERFORMANCE_DEBUG) System.out.println("setPageData\t"+(new Date()).getTime());
+
engine.visualize();
+ if (PERFORMANCE_DEBUG) System.out.println("do vizualize\t"+(new Date()).getTime());
maxReachingTime = engine.getMaxTime();
setInfoMessage(getMaxReachingTime());
@@ -212,6 +223,8 @@
edu.setSrcFile(srcFile);
edu.setTargetFile(targetFile);
+ if (PERFORMANCE_DEBUG) System.out.println("HtmlEvalUtil\t"+(new Date()).getTime());
+
ArrayList<IProblemItem> tmpResults = new ArrayList<IProblemItem>(
1024);
@@ -233,6 +246,9 @@
tmpResults.addAll(checkers[i].check(checkTarget));
}
}
+
+ if (PERFORMANCE_DEBUG) System.out.println("checked\t"+(new Date()).getTime());
+
// TODO support blind biz -> visitor
for (int i = 0; i < tmpResults.size(); i++) {
@@ -252,6 +268,9 @@
checkResult
.addProblemItems(errorLogListener.getHtmlProblemVector());
checkResult.accept(pageData);
+
+ if (PERFORMANCE_DEBUG) System.out.println("process problems\t"+(new Date()).getTime());
+
// TODO move (add Icons into result doc) here
@@ -272,6 +291,7 @@
.devOrDebugPrintln("error: saveHtmlDocumentAsUTF8"); //$NON-NLS-1$
}
+ if (PERFORMANCE_DEBUG) System.out.println("vizualize end\t"+(new Date()).getTime());
if (hasFrame) {
pageData.setHasFrame(true);
return FRAME;
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/eval/EvaluationResultBlind.java b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/eval/EvaluationResultBlind.java
index b14c754..fa2fc40 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/eval/EvaluationResultBlind.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/eval/EvaluationResultBlind.java
@@ -15,24 +15,16 @@
import java.util.Iterator;
import java.util.List;
-import org.eclipse.actf.util.xpath.XPathService;
-import org.eclipse.actf.util.xpath.XPathServiceFactory;
import org.eclipse.actf.visualization.eval.EvaluationResultImpl;
import org.eclipse.actf.visualization.eval.IEvaluationResult;
import org.eclipse.actf.visualization.eval.guideline.GuidelineHolder;
+import org.eclipse.actf.visualization.eval.html.HtmlTagUtil;
import org.eclipse.actf.visualization.eval.problem.IProblemItem;
-import org.w3c.dom.NodeList;
/**
* Implementation class of {@link IEvaluationResult}
*/
public class EvaluationResultBlind extends EvaluationResultImpl {
-
- private static final XPathService xpathService = XPathServiceFactory
- .newService();
- private static final Object EXP1 = xpathService
- .compile("ancestor::noscript"); //$NON-NLS-1$
-
private int count = 0;
private PageEvaluation pageEvaluation = null;
@@ -56,10 +48,8 @@
tmpItem.setSerialNumber(count);
if (tmpItem.isCanHighlight()
&& tmpItem.getTargetNode() != null) {
- NodeList tmpNL = xpathService.evalForNodeList(EXP1,
- tmpItem.getTargetNode());
- // noframes can highlight
- if (tmpNL != null && tmpNL.getLength() > 0) {
+
+ if (HtmlTagUtil.hasAncestor(tmpItem.getTargetNode(), "script")) {
tmpItem.setCanHighlight(false);
}
}
diff --git a/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/html/HtmlEvalUtil.java b/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/html/HtmlEvalUtil.java
index 15f8b7c..15846f3 100644
--- a/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/html/HtmlEvalUtil.java
+++ b/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/html/HtmlEvalUtil.java
@@ -15,6 +15,7 @@
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;
+import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -38,6 +39,8 @@
* Utility class for HTML evaluation
*/
public class HtmlEvalUtil extends HtmlTagUtil {
+
+ private static final boolean PERFORMANCE_DEBUG = false;
private static final int LONG_TEXT_NUM = 200; // TODO check
@@ -247,6 +250,8 @@
this.document2IdMap = document2IdMap;
// this.html2ViewMapData = html2ViewMapData;
+ if (PERFORMANCE_DEBUG) System.out.println("document2IdMap\t"+(new Date()).getTime());
+
this.isDBCS = isDBCS;
// prepare freq use elements
@@ -255,7 +260,7 @@
NodeList tmpNL = xpathService.evalForNodeList(EXP1, target);
int length = tmpNL.getLength();
-
+
if (length > 0) {
hasAwithHref = true;
}
@@ -293,6 +298,8 @@
pageData.setImageDataMap(tmpMap);
pageData.setLinkImageDataMap(linkImgMap);
+ if (PERFORMANCE_DEBUG) System.out.println("process images\t"+(new Date()).getTime());
+
// TODO use XPath
tmpNL = target.getElementsByTagName("table"); //$NON-NLS-1$
length = tmpNL.getLength();
@@ -324,11 +331,16 @@
b1row1colV.toArray(bottom_1row1col_tables);
bNotDataV.toArray(bottom_notdata_tables);
parentV.toArray(parent_table_elements);
+
+ if (PERFORMANCE_DEBUG) System.out.println("process tables\t"+(new Date()).getTime());
+
body_elements = getElementsArray(target, "body");
frame_elements = getElementsArray(target, "frame");
iframe_elements = getElementsArray(target, "iframe");
+ if (PERFORMANCE_DEBUG) System.out.println("process frames\t"+(new Date()).getTime());
+
HashSet<Element> embedInObjectSet = new HashSet<Element>();
// TODO ieDOM
@@ -402,6 +414,8 @@
}
}
+ if (PERFORMANCE_DEBUG) System.out.println("process object\t"+(new Date()).getTime());
+
NodeList headingsNL = xpathService.evalForNodeList(EXP2, target);
length = headingsNL.getLength();
Vector<HeadingsData> tmpV2 = new Vector<HeadingsData>();
@@ -413,8 +427,12 @@
}
pageData.setHeadingsData(tmpV2);
+ if (PERFORMANCE_DEBUG) System.out.println("process headins\t"+(new Date()).getTime());
+
collectScriptElements();
+ if (PERFORMANCE_DEBUG) System.out.println("collectScriptElements\t"+(new Date()).getTime());
calcDomDifference();
+ if (PERFORMANCE_DEBUG) System.out.println("calcDomDifference\t"+(new Date()).getTime());
}
private Element[] getElementsArray(Document target, String tagName) {
@@ -508,10 +526,19 @@
.asList(aWithHref_hrefs));
// trim()?
+ /*
NodeList ieNL = xpathService.evalForNodeList(EXP1, liveDom);
int size = ieNL.getLength();
+ */
+
+ NodeList ieNL = liveDom.getElementsByTagName("a");
+ int size = ieNL.getLength();
+
for (int i = 0; i < size; i++) {
Element tmpE = (Element) ieNL.item(i);
+ if (!tmpE.hasAttribute(ATTR_HREF)) {
+ continue;
+ }
String tmpS = tmpE.getAttribute(ATTR_HREF);
if (!existSet.contains(tmpS)) {
notExistHrefSet.add(tmpS);
diff --git a/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/html/HtmlTagUtil.java b/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/html/HtmlTagUtil.java
index b9ee8d8..8f330b1 100644
--- a/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/html/HtmlTagUtil.java
+++ b/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/html/HtmlTagUtil.java
@@ -81,6 +81,27 @@
}
return (result);
}
+
+
+ /**
+ * Get ancestor node whose name is specified target name
+ *
+ * @param target
+ * target {@link Node}
+ * @param ancestorName
+ * target ancestor tag name
+ * @return true if target {@link Node} has target ancestor
+ */
+ public static Node getAncestor(Node target, String ancestorName) {
+ Node tmpNode = target;
+ while (tmpNode != null) {
+ if (tmpNode.getNodeName().equals(ancestorName)) {
+ return tmpNode;
+ }
+ tmpNode = tmpNode.getParentNode();
+ }
+ return null;
+ }
/**
* Get <i>noscript</i> text of the {@link Node}
diff --git a/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/html/statistics/ImageStatData.java b/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/html/statistics/ImageStatData.java
index 2af850d..a26a7e3 100644
--- a/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/html/statistics/ImageStatData.java
+++ b/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/html/statistics/ImageStatData.java
@@ -17,11 +17,12 @@
import org.eclipse.actf.util.FileUtils;
import org.eclipse.actf.util.xpath.XPathService;
import org.eclipse.actf.util.xpath.XPathServiceFactory;
+import org.eclipse.actf.visualization.eval.html.HtmlTagUtil;
import org.eclipse.actf.visualization.eval.problem.IProblemItem;
import org.eclipse.actf.visualization.eval.problem.ProblemItemImpl;
import org.eclipse.actf.visualization.internal.eval.XMLStringUtil;
import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
import org.w3c.dom.html.HTMLAnchorElement;
import org.w3c.dom.html.HTMLImageElement;
import org.xml.sax.Attributes;
@@ -37,10 +38,6 @@
public static final String LONGDESC = "longdesc"; //$NON-NLS-1$
- private static final XPathService xpathService = XPathServiceFactory
- .newService();
- private static final Object EXP1 = xpathService.compile("ancestor::a"); //$NON-NLS-1$
-
protected String altS = ""; //$NON-NLS-1$
protected Element ancestorLink = null;
@@ -117,18 +114,19 @@
}
isMap = target.getIsMap();
+
- NodeList tmpNL = xpathService.evalForNodeList(EXP1, target);
- // XPathUtil.showNodeList(tmpNL,true);
- int len = tmpNL.getLength();
- if (len > 0) {
- HTMLAnchorElement tmpE = (HTMLAnchorElement) tmpNL.item(0);
- if (isInLink = tmpE.hasAttribute(HREF)) {
- destUrlS = tmpE.getHref();
- ancestorLink = tmpE;
- try {
- destUrlS = new URL(baseURL, destUrlS).toString();
- } catch (Exception e) {
+ if (HtmlTagUtil.hasAncestor(target, "a")) {
+ Node temp = HtmlTagUtil.getAncestor(target, "a");
+ if (temp != null) {
+ HTMLAnchorElement tmpE = (HTMLAnchorElement) temp;
+ if (isInLink = tmpE.hasAttribute(HREF)) {
+ destUrlS = tmpE.getHref();
+ ancestorLink = tmpE;
+ try {
+ destUrlS = new URL(baseURL, destUrlS).toString();
+ } catch (Exception e) {
+ }
}
}
}