Browse Source

Properly encode special UTF-8 characters (#19928)

The main encoding problem was fixed in GWT 2.7.0.vaadin4.
Vaadin 8 is already fixed as it uses GWT 2.8

Change-Id: I78ea30c1ff81d44432cd82ecd23eda8eb86e6efb
tags/7.7.1
Artur Signell 7 years ago
parent
commit
11c3f8bd9e

+ 1
- 1
build.properties View File

@@ -6,5 +6,5 @@ vaadin.url=http://vaadin.com
vaadin.java.version=1.6
vaadin.version=7.7.0-SNAPSHOT
vaadin.sass.version=0.9.13
gwt.version=2.7.0.vaadin3
gwt.version=2.7.0.vaadin4
commons-io.version=2.4

+ 1
- 1
pom.xml View File

@@ -29,7 +29,7 @@
<liferay.portal.version>6.0.2</liferay.portal.version>

<vaadin.sass.version>0.9.13</vaadin.sass.version>
<vaadin.gwt.version>2.7.0.vaadin3</vaadin.gwt.version>
<vaadin.gwt.version>2.7.0.vaadin4</vaadin.gwt.version>
<vaadin.plugin.version>7.7.0.alpha1</vaadin.plugin.version>

<javax.portlet.version>2.0</javax.portlet.version>

+ 32
- 0
uitest/src/main/java/com/vaadin/tests/core/SpecialCharactersEncodingUI.java View File

@@ -0,0 +1,32 @@
package com.vaadin.tests.core;

import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.Label;
import com.vaadin.ui.MenuBar;
import com.vaadin.ui.MenuBar.MenuItem;
import com.vaadin.ui.TextField;

public class SpecialCharactersEncodingUI extends AbstractTestUI {

public static String textWithZwnj = "\ufeffछुट्‌याउनेछन् क्ष क्‌ष क्‍ष";

@Override
protected void setup(VaadinRequest request) {
MenuBar menubar = new MenuBar();
menubar.setId("menubar");
addComponent(menubar);
menubar.addItem(textWithZwnj, null);

Label label = new Label(textWithZwnj);
label.setId("label");
addComponent(label);

TextField f = new TextField("Textfield", textWithZwnj);
f.setId("textfield");
addComponent(f);

}

}

+ 44
- 0
uitest/src/test/java/com/vaadin/tests/core/SpecialCharactersEncodingUITest.java View File

@@ -0,0 +1,44 @@
package com.vaadin.tests.core;

import java.util.Collections;
import java.util.List;

import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;

import com.vaadin.testbench.By;
import com.vaadin.testbench.elements.LabelElement;
import com.vaadin.testbench.elements.MenuBarElement;
import com.vaadin.testbench.elements.TextFieldElement;
import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.MultiBrowserTest;
import com.vaadin.tests.tb3.SingleBrowserTest;
import com.vaadin.tests.tb3.SingleBrowserTestPhantomJS2;

public class SpecialCharactersEncodingUITest extends SingleBrowserTest {

@Test
public void checkEncoding() {
openTestURL();
String textFieldValue = $(TextFieldElement.class).id("textfield")
.getValue();
Assert.assertEquals(SpecialCharactersEncodingUI.textWithZwnj,
textFieldValue);
LabelElement label = $(LabelElement.class).id("label");
String labelValue = getHtml(label); // getText() strips some characters
Assert.assertEquals(SpecialCharactersEncodingUI.textWithZwnj,
labelValue);

MenuBarElement menubar = $(MenuBarElement.class).first();
WebElement menuItem = menubar
.findElement(By.className("v-menubar-menuitem-caption"));
Assert.assertEquals(SpecialCharactersEncodingUI.textWithZwnj,
getHtml(menuItem));
}

private String getHtml(WebElement element) {
return element.getAttribute("innerHTML");
}
}

Loading…
Cancel
Save