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);
}
}