diff options
author | Artur Signell <artur@vaadin.com> | 2016-02-07 19:23:29 +0200 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2016-02-13 12:58:43 +0000 |
commit | ae0d2bd61cb82a524e4ef810de21f0bc72aecc93 (patch) | |
tree | 7d7a750903bb2db9d18ecc7a7cb2e5f82c86c375 /uitest | |
parent | e025ba86520da8953365429c2b9956be95e14684 (diff) | |
download | vaadin-framework-ae0d2bd61cb82a524e4ef810de21f0bc72aecc93.tar.gz vaadin-framework-ae0d2bd61cb82a524e4ef810de21f0bc72aecc93.zip |
Fix NPE if stopping navigation in onBeforeUnload (#19541)
Change-Id: Idcba5ceeff9df88a4ea7fe6b34e2e2537b7ee58c
Diffstat (limited to 'uitest')
-rw-r--r-- | uitest/src/com/vaadin/tests/application/ConfirmBrowserTabClose.java | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/application/ConfirmBrowserTabClose.java b/uitest/src/com/vaadin/tests/application/ConfirmBrowserTabClose.java new file mode 100644 index 0000000000..3d3d84f9bd --- /dev/null +++ b/uitest/src/com/vaadin/tests/application/ConfirmBrowserTabClose.java @@ -0,0 +1,47 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.application; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUIWithLog; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; + +public class ConfirmBrowserTabClose extends AbstractTestUIWithLog { + + @Override + protected void setup(VaadinRequest request) { + // To test the behavior, do + // 1. Open the test in the browser + // 2. Close the browser tab/window + // 3. Choose to stay on the page after all + // 4. Click the button + // There should be no error + Button b = new Button("Say hello", new Button.ClickListener() { + + @Override + public void buttonClick(ClickEvent event) { + log("Hello"); + } + }); + addComponent(b); + getPage().getJavaScript().eval( + "window.addEventListener('beforeunload', function (e) {" + + "var confirmationMessage = 'Please stay!';" + + "e.returnValue = confirmationMessage;" + + "return confirmationMessage;" + "});"); + } +} |