From 258b2cf2272ec53193c3474a072e21b78c94ef27 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Leif=20=C3=85strand?= Date: Tue, 7 Jul 2015 21:21:58 +0300 Subject: [PATCH] Log exception from responsive with cross site css in FF (#16249) Change-Id: I073659e782d1451f1d5ca4782d6bb5b8cb988d1d --- .../extensions/ResponsiveConnector.java | 19 ++++++++-- .../ResponsiveWithCrossDomainStyles.java | 37 +++++++++++++++++++ .../ResponsiveWithCrossDomainStylesTest.java | 34 +++++++++++++++++ 3 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 uitest/src/com/vaadin/tests/extensions/ResponsiveWithCrossDomainStyles.java create mode 100644 uitest/src/com/vaadin/tests/extensions/ResponsiveWithCrossDomainStylesTest.java diff --git a/client/src/com/vaadin/client/extensions/ResponsiveConnector.java b/client/src/com/vaadin/client/extensions/ResponsiveConnector.java index 2e1e75f6cd..621c69788c 100644 --- a/client/src/com/vaadin/client/extensions/ResponsiveConnector.java +++ b/client/src/com/vaadin/client/extensions/ResponsiveConnector.java @@ -84,6 +84,10 @@ public class ResponsiveConnector extends AbstractExtensionConnector implements getLogger().log(Level.SEVERE, message); } + private static void warning(String message) { + getLogger().warning(message); + } + @Override protected void extend(ServerConnector target) { this.target = (AbstractComponentConnector) target; @@ -204,10 +208,17 @@ public class ResponsiveConnector extends AbstractExtensionConnector implements var IE = @com.vaadin.client.BrowserInfo::get()().@com.vaadin.client.BrowserInfo::isIE()(); var IE8 = @com.vaadin.client.BrowserInfo::get()().@com.vaadin.client.BrowserInfo::isIE8()(); - if (sheet.cssRules) { - theRules = sheet.cssRules - } else if (sheet.rules) { - theRules = sheet.rules + try { + if (sheet.cssRules) { + theRules = sheet.cssRules + } else if (sheet.rules) { + theRules = sheet.rules + } + } catch (e) { + // FF spews if trying to access rules for cross domain styles + @ResponsiveConnector::warning(*)("Can't process styles from " + sheet.href + + ", probably because of cross domain issues: " + e); + return; } // Special import handling for IE8 diff --git a/uitest/src/com/vaadin/tests/extensions/ResponsiveWithCrossDomainStyles.java b/uitest/src/com/vaadin/tests/extensions/ResponsiveWithCrossDomainStyles.java new file mode 100644 index 0000000000..9f9453d505 --- /dev/null +++ b/uitest/src/com/vaadin/tests/extensions/ResponsiveWithCrossDomainStyles.java @@ -0,0 +1,37 @@ +/* + * 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.extensions; + +import com.vaadin.annotations.StyleSheet; +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; + +@StyleSheet("http://fonts.googleapis.com/css?family=Cabin+Sketch") +public class ResponsiveWithCrossDomainStyles extends AbstractTestUI { + + @Override + protected void setup(VaadinRequest request) { + addComponent(new Button("Make responsive", new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + event.getButton().setResponsive(true); + } + })); + } + +} diff --git a/uitest/src/com/vaadin/tests/extensions/ResponsiveWithCrossDomainStylesTest.java b/uitest/src/com/vaadin/tests/extensions/ResponsiveWithCrossDomainStylesTest.java new file mode 100644 index 0000000000..4089618635 --- /dev/null +++ b/uitest/src/com/vaadin/tests/extensions/ResponsiveWithCrossDomainStylesTest.java @@ -0,0 +1,34 @@ +/* + * 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.extensions; + +import org.junit.Test; + +import com.vaadin.testbench.elements.ButtonElement; +import com.vaadin.tests.tb3.MultiBrowserTest; + +public class ResponsiveWithCrossDomainStylesTest extends MultiBrowserTest { + @Test + public void testResponsive() { + setDebug(true); + openTestURL(); + + $(ButtonElement.class).first().click(); + + assertNoErrorNotifications(); + } + +} -- 2.39.5