vaadin 6.8.18 Chrome issue

Hello dear Vaadin developers!

We have a legacy application that uses Vaadin 6.8.18. Unfortunately since the update of Chrome version 80.0.3987.100 certain components in our vaadin application started not working as expected. For example, we use Tabsheet and in certain part of the application the tabs are not shown i.e they are not visible but you can still click on them. Once the click is triggered then the rest of the tabs are immediately shown. It looks like it needs an explicit client side request in order to show the tabs. We experienced the same also with several other Layout types and components. This is not the case with older version of Chrome. Also this works fine on Mozilla and Internet Explorer. See attachment.

We checked the HTML and the CSS code with the Developer tools from Chrome and everything is there as expected. We worked around the issue in some locations by playing with the layouts but this is not a viable solution. Did someone else encounter this issue too? or found a fix/workaround that is more reliable?

Thank you!

18090700.jpg
18090703.jpg

I can confirm that at least with version 80.xxx there are problems with some components i.e. the “confirmdialog- Addon” does not show the button’s anymore. Firefox or I.E are OK, Chrome unfortunately not… with Tabsheets i do not have any problems, but like you said maybe it’s just luck depending on the position in the layout…My application has a frontend which is 95% pure HTML (i used only customlayouts) an some “lowlevel” components like buttons or dropdowns so that should not be a problem for the future, but the backend is really complex what makes me a little nervous :frowning:

Im am using Vaadin 6.x with Grails 2.x, would say it’s a “ticking time bomb” so as far as possibly i have to upgrade at least to Vaadin 8.x with Grails 3.x. Would love to switch to Vaddin 14 but i could not find any Documention to use it with Grails and my skills are really to low to managed this step alone in a “justifiable” time with “try and error”…

Same here. The confirmdialog won’t display button on Google Chrome. My Vaadin version is 6.8.18. I wish there is some kind of workaround for this problem. I don’t have time to upgrade the Vaadin, too much work.

I don’t use confirmdialog anymore, implemented an “quick an dirty” own dialog in “20 minutes” which works fine for me…


/* Base Modal */
class WinModalBase extends Window {

    WinModalBase(String caption) {
	
        super(caption)
        setCloseShortcut(ShortcutAction.KeyCode.ESCAPE);
        setCaption(caption)
        setModal(true)
        setClosable(true)
        setResizable(false)
        setDraggable(false)
        window.getContent().setSizeUndefined()
        center()
    }
}

/* Quick and Dirty Confirm-Dialog */
class WinConfirmDialog extends WinModalBase {

    public WinConfirmDialog winConfirmDialog
    public Button buttonYes
    public Button buttonNo
    public WinConfirm userSelection //currently not in use
    private String question
    public Label labelQuestion

    WinConfirmDialog(String title, String question) {
        
		super(title)
        
		this.question = question
        this.winConfirmDialog = this        
		
		init()
        drawComponents()
        addEventListener()
    }

    //@Todo Abstract
    def void doYES () {}
    def void doNo () {}

    private void init() {
	
        userSelection = WinConfirm.confirmCancel
        setClosable(true)
        setDraggable(false)
    }

    public void drawComponents() {	
	
        labelQuestion = new Label(question)
        labelQuestion.setWidth("450px")

        //Buttons
        HorizontalLayout panel = new HorizontalLayout()
        buttonYes = new Button("Ja")
        buttonNo = new Button("Nein")
        panel.addComponent(buttonYes)
        panel.addComponent(buttonNo)
        panel.setMargin(true)
        panel.setSpacing(true)

        addComponent(labelQuestion)
        addComponent(panel)
    }

    def addEventListener(){

        buttonYes.addListener(new Button.ClickListener() {
            @Override
            void buttonClick(Button.ClickEvent clickEvent) {
                userSelection = WinConfirm.confirmYES
                doYES()
                VaadinApplication.getInstance().getMainWindow().removeWindow(winConfirmDialog)
            }
        })

        buttonNo.addListener(new Button.ClickListener() {
            @Override
            void buttonClick(Button.ClickEvent clickEvent) {
                userSelection = WinConfirm.confirmNO
                doNo()
                VaadinApplication.getInstance().getMainWindow().removeWindow(winConfirmDialog)
            }
        })
    }

    enum WinConfirm {
	
        confirmYES,
        confirmNO,
        confirmCancel
    }
}

//Using the dialog

private String titel = "MyTitel"
private String question = "Are you sure?"

WinConfirmDialog confirmDialog = new WinConfirmDialog(titel, question){

    @Override
    void doYES() {
        //implement your Action  
    }

    @Override
    void doNo() {
        //implement your Action
    }
}
//Overrides if necessary
confirmDialog.buttonYes.setCaption("your Text")
confirmDialog.buttonNo.setCaption("your Text")
confirmDialog.labelQuestion.setContentMode(Label.PREFORMATTED)

//Show Window
VaadinApplication.getInstance().getMainWindow().attachWindow(confirmDialog)

Sample…
18134412.png

Thanks. However, I got another problem. I accidentally updated the vaadin eclipse plug-in, now the widget won’t compile anymore. It seems they abandoned the support for version 6. Just setup another eclipse instance and installed the old plug-in. The project will compile (including widget), but my application won’t response to the front end. The browser did send back ajax calls, but the buttons won’t work anymore. I stuck on login window…

I work with Bojan and it seems our issues with Vaadin 6 and Chrome are a result from [this]
(https://bugs.chromium.org/p/chromium/issues/detail?id=1049973) regression in Chrome version 80. According to the thread, the bugfix will be part of the Chrome 81 release on March 17. And indeed our application works as expected again on both the Chromium master as on the Chrome Canary and Chrome Dev builds. I suggest testing it with your issues too.