summaryrefslogtreecommitdiffstats
path: root/uitest
diff options
context:
space:
mode:
authorAleksi Hietanen <aleksi@vaadin.com>2017-04-19 13:54:16 +0300
committerHenri Sara <henri.sara@gmail.com>2017-04-19 13:54:16 +0300
commit7d1b06cbc4dd07b8b40fbc63d148027fd4c9cf4b (patch)
tree9e32e5d68c95428d6156d155c04d8ba9e074c0c2 /uitest
parent300f691b19e6ebb43578768f795125c0aa6a365e (diff)
downloadvaadin-framework-7d1b06cbc4dd07b8b40fbc63d148027fd4c9cf4b.tar.gz
vaadin-framework-7d1b06cbc4dd07b8b40fbc63d148027fd4c9cf4b.zip
Fix client-side memory leak caused by Grid events (#9103)
Refactors AbstractGridKeyEvent, AbstractGridMouseEvent and their descendants to follow the pattern used in other GWT DomEvents. Fixes #7633
Diffstat (limited to 'uitest')
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/grid/GridClientMemoryLeak.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/uitest/src/main/java/com/vaadin/tests/components/grid/GridClientMemoryLeak.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridClientMemoryLeak.java
new file mode 100644
index 0000000000..7071f187bd
--- /dev/null
+++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridClientMemoryLeak.java
@@ -0,0 +1,40 @@
+package com.vaadin.tests.components.grid;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.shared.ui.ContentMode;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.VerticalLayout;
+
+public class GridClientMemoryLeak extends AbstractTestUI {
+
+ private static final String INSTRUCTIONS = "This UI is for manually testing that the client side grid does not leak memory. "
+ + "Steps to take:\n"
+ + "\t1. Click the newGrid button 1-n times\n"
+ + "\t2. Capture a JS heap dump in your browser\n"
+ + "\t3. The heap dump should only contain 1 instance of each of the following:\n"
+ + "\t\tGrid, GridKeyDownEvent, GridKeyPressEvent, GridKeyUpEvent, GridClickEvent, GridDoubleClickEvent";
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ final Label instructionLabel = new Label(INSTRUCTIONS,
+ ContentMode.PREFORMATTED);
+ final VerticalLayout layout = new VerticalLayout();
+ final Button btn = new Button("newGrid");
+ btn.addClickListener(new Button.ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ layout.removeComponent(layout.getComponent(1));
+ layout.addComponent(new Grid<String>());
+ }
+ });
+ layout.addComponent(instructionLabel);
+ layout.addComponent(btn);
+ layout.addComponent(new Grid<String>());
+ addComponent(layout);
+ }
+}