Added proper escaping to source code display to prevent HTML-in-code weirdnesses. Also handles the case of null source code correctly.
Suggested by: bruce
Patch by: scottb, jgw (pair prog)
Review by: bruce, jat, mmendez, tobyr (desk check)
git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.4@1389 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/tools/benchmark-viewer/src/com/google/gwt/junit/viewer/client/ReportViewer.java b/tools/benchmark-viewer/src/com/google/gwt/junit/viewer/client/ReportViewer.java
index 47112fe..6d9583b 100644
--- a/tools/benchmark-viewer/src/com/google/gwt/junit/viewer/client/ReportViewer.java
+++ b/tools/benchmark-viewer/src/com/google/gwt/junit/viewer/client/ReportViewer.java
@@ -18,6 +18,8 @@
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.http.client.URL;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.Button;
@@ -218,8 +220,17 @@
benchmarkTable.setCellPadding(5);
benchmarkTable.setText(0, 0, benchmark.getName());
// benchmarkTable.setText(0, 1, benchmark.getDescription());
- benchmarkTable.setWidget(1, 0, new HTML("<pre>"
- + benchmark.getSourceCode() + "</pre>"));
+ String codeHtml;
+ String sourceText = benchmark.getSourceCode();
+ if (sourceText != null) {
+ Element tempElem = DOM.createDiv();
+ DOM.setInnerText(tempElem, sourceText);
+ String escapedCodeHtml = DOM.getInnerHTML(tempElem);
+ codeHtml = "<pre>" + escapedCodeHtml + "</pre>";
+ } else {
+ codeHtml = "<i>(source not available)</i>";
+ }
+ benchmarkTable.setWidget(1, 0, new HTML(codeHtml));
benchmarkTable.getFlexCellFormatter().setStyleName(0, 0,
"benchmark-name");
// benchmarkTable.getFlexCellFormatter().setStyleName( 0, 1,