]> source.dussan.org Git - vaadin-framework.git/commitdiff
Log exception from responsive with cross site css in FF (#16249)
authorLeif Åstrand <leif@vaadin.com>
Tue, 7 Jul 2015 18:21:58 +0000 (21:21 +0300)
committerTeemu Suo-Anttila <teemusa@vaadin.com>
Tue, 21 Jul 2015 11:40:19 +0000 (14:40 +0300)
Change-Id: I073659e782d1451f1d5ca4782d6bb5b8cb988d1d

client/src/com/vaadin/client/extensions/ResponsiveConnector.java
uitest/src/com/vaadin/tests/extensions/ResponsiveWithCrossDomainStyles.java [new file with mode: 0644]
uitest/src/com/vaadin/tests/extensions/ResponsiveWithCrossDomainStylesTest.java [new file with mode: 0644]

index 2e1e75f6cd40d2eb1c1dac071a0f72f1e0d740d2..621c69788c0bbabce7547a5a0966dbfa1fb7e6a7 100644 (file)
@@ -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 (file)
index 0000000..9f9453d
--- /dev/null
@@ -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 (file)
index 0000000..4089618
--- /dev/null
@@ -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();
+    }
+
+}