summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--WebContent/license.html2
-rw-r--r--build.properties2
-rw-r--r--client/src/com/vaadin/client/ApplicationConnection.java18
-rw-r--r--client/src/com/vaadin/client/VTooltip.java14
-rw-r--r--server/src/com/vaadin/server/VaadinServlet.java36
-rw-r--r--shared/ivy.xml4
-rw-r--r--uitest/src/com/vaadin/tests/push/PushConfigurationStreamingTest.java22
-rw-r--r--uitest/src/com/vaadin/tests/push/ReconnectTest.java26
-rw-r--r--uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java30
-rw-r--r--uitest/src/com/vaadin/tests/tooltip/TooltipAndJavascript.java48
-rw-r--r--uitest/src/com/vaadin/tests/tooltip/TooltipAndJavascriptTest.java54
-rw-r--r--uitest/src/com/vaadin/tests/tooltip/tooltipandjavascript.js1
12 files changed, 170 insertions, 87 deletions
diff --git a/WebContent/license.html b/WebContent/license.html
index d0bcbdd94d..f714e4d64d 100644
--- a/WebContent/license.html
+++ b/WebContent/license.html
@@ -99,7 +99,7 @@
<!-- In vaadin-shared-deps -->
<tr>
<td>JSON</td>
- <td><a href="licenses/apache-license-version-2-0.txt">Apache License, Version 2.0</a></td>
+ <td><a href="licenses/the-json-license.txt">The JSON License</a></td>
</tr>
<!-- Used by vaadin-server -->
diff --git a/build.properties b/build.properties
index 074fdac09d..a7871ad1ef 100644
--- a/build.properties
+++ b/build.properties
@@ -6,5 +6,5 @@ vaadin.url=http://vaadin.com
vaadin.java.version=1.6
vaadin.version=0.0.0.unversioned-development-build
vaadin.sass.version=0.9.7
-gwt.version=2.6.0.vaadin2
+gwt.version=2.6.0.vaadin3
commons-io.version=2.4
diff --git a/client/src/com/vaadin/client/ApplicationConnection.java b/client/src/com/vaadin/client/ApplicationConnection.java
index c39beffd87..94fa3c3c01 100644
--- a/client/src/com/vaadin/client/ApplicationConnection.java
+++ b/client/src/com/vaadin/client/ApplicationConnection.java
@@ -66,6 +66,7 @@ import com.google.gwt.user.client.Window.ClosingHandler;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Widget;
import com.vaadin.client.ApplicationConfiguration.ErrorMessage;
+import com.vaadin.client.ApplicationConnection.ApplicationStoppedEvent;
import com.vaadin.client.ResourceLoader.ResourceLoadEvent;
import com.vaadin.client.ResourceLoader.ResourceLoadListener;
import com.vaadin.client.communication.HasJavaScriptConnectorHelper;
@@ -471,6 +472,8 @@ public class ApplicationConnection implements HasHandlers {
private Heartbeat heartbeat = GWT.create(Heartbeat.class);
+ private boolean tooltipInitialized = false;
+
public static class MultiStepDuration extends Duration {
private int previousStep = elapsedMillis();
@@ -580,10 +583,19 @@ public class ApplicationConnection implements HasHandlers {
// initial UIDL provided in DOM, continue as if returned by request
handleJSONText(jsonText, -1);
+ }
- // Tooltip can't be created earlier because the necessary fields are
- // not setup to add it in the correct place in the DOM
- getVTooltip().showAssistive(new TooltipInfo(" "));
+ // Tooltip can't be created earlier because the
+ // necessary fields are not setup to add it in the
+ // correct place in the DOM
+ if (!tooltipInitialized) {
+ tooltipInitialized = true;
+ ApplicationConfiguration.runWhenDependenciesLoaded(new Command() {
+ @Override
+ public void execute() {
+ getVTooltip().initializeAssistiveTooltips();
+ }
+ });
}
}
diff --git a/client/src/com/vaadin/client/VTooltip.java b/client/src/com/vaadin/client/VTooltip.java
index d1a2c395f7..b1315a0d8b 100644
--- a/client/src/com/vaadin/client/VTooltip.java
+++ b/client/src/com/vaadin/client/VTooltip.java
@@ -108,6 +108,20 @@ public class VTooltip extends VWindowOverlay {
showTooltip();
}
+ /**
+ * Initialize the tooltip overlay for assistive devices.
+ *
+ * @param info
+ * with the content of the tooltip
+ */
+ public void initializeAssistiveTooltips() {
+ updatePosition(null, true);
+ setTooltipText(new TooltipInfo(" "));
+ showTooltip();
+ hideTooltip();
+ description.getParentElement().getStyle().clearWidth();
+ }
+
private void setTooltipText(TooltipInfo info) {
if (info.getErrorMessage() != null && !info.getErrorMessage().isEmpty()) {
em.setVisible(true);
diff --git a/server/src/com/vaadin/server/VaadinServlet.java b/server/src/com/vaadin/server/VaadinServlet.java
index 81c3f374ea..12e7c28cd8 100644
--- a/server/src/com/vaadin/server/VaadinServlet.java
+++ b/server/src/com/vaadin/server/VaadinServlet.java
@@ -547,42 +547,6 @@ public class VaadinServlet extends HttpServlet implements Constants {
return DEFAULT_THEME_NAME;
}
- private void handleServiceSecurityException(VaadinServletRequest request,
- VaadinServletResponse response) throws IOException,
- ServletException {
-
- try {
- /*
- * We might have a UI, but we don't want to leak any information in
- * this case so just use the info provided in the request.
- */
- SystemMessages ci = getService().getSystemMessages(
- request.getLocale(), request);
- if (ServletPortletHelper.isUIDLRequest(request)) {
- // send uidl redirect
- getService().writeStringResponse(
- response,
- JsonConstants.JSON_CONTENT_TYPE,
- VaadinService.createCriticalNotificationJSON(
- ci.getCommunicationErrorCaption(),
- ci.getCommunicationErrorMessage(),
- INVALID_SECURITY_KEY_MSG,
- ci.getCommunicationErrorURL()));
- } else if (ServletPortletHelper.isHeartbeatRequest(request)) {
- response.sendError(HttpServletResponse.SC_FORBIDDEN,
- "Forbidden");
- } else {
- // 'plain' http req - e.g. browser reload;
- // just go ahead redirect the browser
- response.sendRedirect(ci.getCommunicationErrorURL());
- }
- } catch (SystemMessageException ee) {
- throw new ServletException(ee);
- }
-
- log("Invalid security key received from " + request.getRemoteHost());
- }
-
/**
* Check if this is a request for a static resource and, if it is, serve the
* resource to the client.
diff --git a/shared/ivy.xml b/shared/ivy.xml
index 3dfe1a51c2..2dac7adbc2 100644
--- a/shared/ivy.xml
+++ b/shared/ivy.xml
@@ -27,8 +27,8 @@
conf="build,ide,test->default" />
<dependency org="com.vaadin.external.google" name="guava"
rev="16.0.1.vaadin1" conf="build,ide,test->default" />
- <dependency org="com.vaadin.external.google" name="android-json"
- rev="0.0.20131108.vaadin1" conf="build,ide,test->default" />
+ <dependency org="com.vaadin.external.json" name="json"
+ rev="0.0.20080701" conf="build,ide,test->default" />
<dependency org="junit" name="junit" rev="4.11"
conf="test,ide -> default" />
diff --git a/uitest/src/com/vaadin/tests/push/PushConfigurationStreamingTest.java b/uitest/src/com/vaadin/tests/push/PushConfigurationStreamingTest.java
index 8dc960c9ac..0861e618a2 100644
--- a/uitest/src/com/vaadin/tests/push/PushConfigurationStreamingTest.java
+++ b/uitest/src/com/vaadin/tests/push/PushConfigurationStreamingTest.java
@@ -27,33 +27,19 @@ import org.openqa.selenium.support.ui.Select;
public class PushConfigurationStreamingTest extends PushConfigurationTest {
- @Override
- public List<DesiredCapabilities> getBrowsersToTest() {
- List<DesiredCapabilities> browsers = super.getBrowsersToTest();
-
- browsers.remove(Browser.IE8.getDesiredCapabilities());
-
- return browsers;
- }
-
@Test
public void testStreaming() throws InterruptedException {
openDebugLogTab();
new Select(getTransportSelect()).selectByVisibleText("STREAMING");
- new Select(getPushModeSelect()).selectByVisibleText("AUTOMATIC");
-
assertThat(getStatusText(),
containsString("fallbackTransport: long-polling"));
assertThat(getStatusText(), containsString("transport: streaming"));
- waitForServerCounterToUpdate();
+ clearDebugMessages();
+ new Select(getPushModeSelect()).selectByVisibleText("AUTOMATIC");
- // Use debug console to verify we used the correct transport type
- assertThat(
- driver.getPageSource(),
- not(containsString("Push connection established using websocket")));
- assertThat(driver.getPageSource(),
- containsString("Push connection established using streaming"));
+ waitForDebugMessage("Push connection established using streaming", 10);
+ waitForServerCounterToUpdate();
}
}
diff --git a/uitest/src/com/vaadin/tests/push/ReconnectTest.java b/uitest/src/com/vaadin/tests/push/ReconnectTest.java
index 5ad2e7a127..6a632f2667 100644
--- a/uitest/src/com/vaadin/tests/push/ReconnectTest.java
+++ b/uitest/src/com/vaadin/tests/push/ReconnectTest.java
@@ -83,32 +83,6 @@ public abstract class ReconnectTest extends MultiBrowserTestWithProxy {
waitForDebugMessage("Reopening push connection");
}
- private void clearDebugMessages() {
- driver.findElement(
- By.xpath("//button[@class='v-debugwindow-button' and @title='Clear log']"))
- .click();
- }
-
- private boolean hasDebugMessage(String message) {
- return getDebugMessage(message) != null;
- }
-
- private WebElement getDebugMessage(String message) {
- return driver.findElement(By.xpath(String.format(
- "//span[@class='v-debugwindow-message' and text()='%s']",
- message)));
- }
-
- private void waitForDebugMessage(final String expectedMessage) {
- waitUntil(new ExpectedCondition<Boolean>() {
-
- @Override
- public Boolean apply(WebDriver input) {
- return hasDebugMessage(expectedMessage);
- }
- }, 30);
- }
-
private void connectAndVerifyConnectionEstablished() throws JSchException {
connectProxy();
waitUntilServerCounterChanges();
diff --git a/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java b/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java
index 14be226de6..e5cceca6b8 100644
--- a/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java
+++ b/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java
@@ -165,6 +165,36 @@ public abstract class AbstractTB3Test extends TestBenchTestCase {
return ((Locatable) element.getWrappedElement()).getCoordinates();
}
+ private boolean hasDebugMessage(String message) {
+ return getDebugMessage(message) != null;
+ }
+
+ private WebElement getDebugMessage(String message) {
+ return driver.findElement(By.xpath(String.format(
+ "//span[@class='v-debugwindow-message' and text()='%s']",
+ message)));
+ }
+
+ protected void waitForDebugMessage(final String expectedMessage) {
+ waitForDebugMessage(expectedMessage, 30);
+ }
+
+ protected void waitForDebugMessage(final String expectedMessage, int timeout) {
+ waitUntil(new ExpectedCondition<Boolean>() {
+
+ @Override
+ public Boolean apply(WebDriver input) {
+ return hasDebugMessage(expectedMessage);
+ }
+ }, timeout);
+ }
+
+ protected void clearDebugMessages() {
+ driver.findElement(
+ By.xpath("//button[@class='v-debugwindow-button' and @title='Clear log']"))
+ .click();
+ }
+
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface RunLocally {
diff --git a/uitest/src/com/vaadin/tests/tooltip/TooltipAndJavascript.java b/uitest/src/com/vaadin/tests/tooltip/TooltipAndJavascript.java
new file mode 100644
index 0000000000..2ada6e819a
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/tooltip/TooltipAndJavascript.java
@@ -0,0 +1,48 @@
+/*
+ * 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.tooltip;
+
+import com.vaadin.annotations.JavaScript;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+
+public class TooltipAndJavascript extends AbstractTestUI {
+
+ @JavaScript("tooltipandjavascript.js")
+ public static class MyButton extends Button {
+
+ }
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ MyButton b = new MyButton();
+ b.setCaption("Hover for tooltip");
+ b.setDescription("Tooltip for the button");
+ addComponent(b);
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "Hover the button for a tooltip. It should be styled correctly";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 14028;
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/tooltip/TooltipAndJavascriptTest.java b/uitest/src/com/vaadin/tests/tooltip/TooltipAndJavascriptTest.java
new file mode 100644
index 0000000000..cc9309ac2c
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/tooltip/TooltipAndJavascriptTest.java
@@ -0,0 +1,54 @@
+/*
+ * 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.tooltip;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.JavascriptExecutor;
+import org.openqa.selenium.WebElement;
+
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class TooltipAndJavascriptTest extends MultiBrowserTest {
+
+ @Test
+ public void ensureTooltipInOverlay() throws InterruptedException {
+ openTestURL();
+ $(ButtonElement.class).first().showTooltip();
+ WebElement tooltip = findElement(By
+ .cssSelector(".v-overlay-container .v-tooltip"));
+ WebElement overlayContainer = getParent(tooltip);
+ Assert.assertTrue("v-overlay-container did not receive theme",
+ hasClass(overlayContainer, "reindeer"));
+ }
+
+ private boolean hasClass(WebElement element, String classname) {
+ String[] classes = element.getAttribute("class").split(" ");
+ for (String classString : classes) {
+ if (classname.equals(classString)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private WebElement getParent(WebElement element) {
+ return (WebElement) ((JavascriptExecutor) getDriver()).executeScript(
+ "return arguments[0].parentNode;", element);
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/tooltip/tooltipandjavascript.js b/uitest/src/com/vaadin/tests/tooltip/tooltipandjavascript.js
new file mode 100644
index 0000000000..f6aea090ba
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/tooltip/tooltipandjavascript.js
@@ -0,0 +1 @@
+window.console.log("tooltipandjavascript.js executing") \ No newline at end of file