Bug 565789: html-escape filenames in UploadPanel...
to avoid markup validation issues.
Signed-off-by: Clemens Eisserer <linuxhippy@gmail.com>
diff --git a/bundles/org.eclipse.rap.filedialog/src/org/eclipse/swt/internal/widgets/UploadPanel.java b/bundles/org.eclipse.rap.filedialog/src/org/eclipse/swt/internal/widgets/UploadPanel.java
index 3e6a497..8aed8b4 100644
--- a/bundles/org.eclipse.rap.filedialog/src/org/eclipse/swt/internal/widgets/UploadPanel.java
+++ b/bundles/org.eclipse.rap.filedialog/src/org/eclipse/swt/internal/widgets/UploadPanel.java
@@ -23,6 +23,7 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.internal.widgets.FileUploadRunnable.State;
+import org.eclipse.rap.rwt.internal.util.Entities;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
@@ -81,7 +82,7 @@
name.setData( RWT.MARKUP_ENABLED, Boolean.TRUE );
name.setData( FILENAME_KEY, fileName );
name.setLayoutData( createHorizontalFillData() );
- name.setText( fileName );
+ name.setText( prepareText( fileName, null ) );
labels.add( name );
}
}
@@ -141,10 +142,11 @@
private static String prepareText( String fileName, Exception exception ) {
String errorMessage = getErrorMessage( fileName, exception );
+ String escapedFileName = Entities.XML.escape( fileName );
if( errorMessage != null ) {
- return fileName + "<br/><small style=\"color: red;\">" + errorMessage + "</small>";
+ return escapedFileName + "<br/><small style=\"color: red;\">" + errorMessage + "</small>";
}
- return fileName;
+ return escapedFileName;
}
private static String getErrorToolTip( String fileName, Exception exception ) {
diff --git a/tests/org.eclipse.rap.filedialog.test/src/org/eclipse/swt/internal/widgets/UploadPanel_Test.java b/tests/org.eclipse.rap.filedialog.test/src/org/eclipse/swt/internal/widgets/UploadPanel_Test.java
index 1493754..c9550eb 100644
--- a/tests/org.eclipse.rap.filedialog.test/src/org/eclipse/swt/internal/widgets/UploadPanel_Test.java
+++ b/tests/org.eclipse.rap.filedialog.test/src/org/eclipse/swt/internal/widgets/UploadPanel_Test.java
@@ -55,6 +55,13 @@
assertEquals( 1, uploadPanel.getChildren().length );
}
+
+ @Test
+ public void testCreate_createsUploadsRows_withSpecialFileName() {
+ uploadPanel = new UploadPanel( shell, new String[] { "foo & bar" } );
+
+ assertEquals( 1, uploadPanel.getChildren().length );
+ }
@Test
public void testCreate_initsFileNames() {