]> source.dussan.org Git - vaadin-framework.git/commitdiff
Read-only combobox should not handle PASTE event (#11529)
authorAnastasia Smirnova <anasmi@utu.fi>
Thu, 4 Apr 2019 07:00:46 +0000 (10:00 +0300)
committerSun Zhe <31067185+ZheSun88@users.noreply.github.com>
Thu, 4 Apr 2019 07:00:46 +0000 (10:00 +0300)
Fixes 11528

client/src/main/java/com/vaadin/client/ui/VComboBox.java
uitest/src/main/java/com/vaadin/tests/components/combobox/ComboboxReadOnlyPaste.java [new file with mode: 0644]
uitest/src/test/java/com/vaadin/tests/components/combobox/ComboboxReadOnlyPasteTest.java [new file with mode: 0644]

index 6ddb2cd29ae8ee426d32a6cd029afcd756abd9b7..95e4505d68c68b149c7bbbf66ae19a06f88767ad 100644 (file)
@@ -1807,9 +1807,9 @@ public class VComboBox extends Composite implements Field, KeyDownHandler,
     @Override
     public void onBrowserEvent(Event event) {
         super.onBrowserEvent(event);
-
         if (event.getTypeInt() == Event.ONPASTE) {
-            if (textInputEnabled && connector.isEnabled()) {
+            if (textInputEnabled && connector.isEnabled()
+                    && !connector.isReadOnly()) {
                 filterOptions(currentPage);
             }
         }
diff --git a/uitest/src/main/java/com/vaadin/tests/components/combobox/ComboboxReadOnlyPaste.java b/uitest/src/main/java/com/vaadin/tests/components/combobox/ComboboxReadOnlyPaste.java
new file mode 100644 (file)
index 0000000..d2e7126
--- /dev/null
@@ -0,0 +1,25 @@
+package com.vaadin.tests.components.combobox;
+
+import com.vaadin.annotations.Widgetset;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.ComboBox;
+
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@Widgetset("com.vaadin.DefaultWidgetSet")
+public class ComboboxReadOnlyPaste extends AbstractTestUI {
+    @Override
+    protected void setup(VaadinRequest request) {
+        ComboBox<String> nameComboBox = new ComboBox<>("Name");
+        nameComboBox.setId("readOnlyCB");
+        nameComboBox.setEmptySelectionAllowed(true);
+        nameComboBox.setItems(
+                Stream.of("A", "B", "C", "D").collect(Collectors.toList()));
+        nameComboBox.setValue("B");
+        nameComboBox.setReadOnly(true);
+
+        addComponent(nameComboBox);
+    }
+}
diff --git a/uitest/src/test/java/com/vaadin/tests/components/combobox/ComboboxReadOnlyPasteTest.java b/uitest/src/test/java/com/vaadin/tests/components/combobox/ComboboxReadOnlyPasteTest.java
new file mode 100644 (file)
index 0000000..07e73bd
--- /dev/null
@@ -0,0 +1,22 @@
+package com.vaadin.tests.components.combobox;
+
+import com.vaadin.testbench.elements.ComboBoxElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+import org.junit.Test;
+import org.openqa.selenium.Keys;
+
+import static org.junit.Assert.assertFalse;
+
+public class ComboboxReadOnlyPasteTest extends MultiBrowserTest {
+
+    @Test
+    public void popupNotOpened() {
+        openTestURL();
+        ComboBoxElement cb = $(ComboBoxElement.class).first();
+        cb.click();
+        String paste = Keys.chord(Keys.CONTROL, "v");
+        cb.sendKeys(paste);
+        assertFalse("Pop-up should not be opened in read-only mode",
+                cb.isPopupOpen());
+    }
+}