Disable tests using toDataURL() or getImageData() on Safari 3. Review at http://gwt-code-reviews.appspot.com/1176801 Review by: rice@google.com git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@9333 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/dom/client/DOMImplMozilla.java b/user/src/com/google/gwt/dom/client/DOMImplMozilla.java index e46f3ca..900fcf9 100644 --- a/user/src/com/google/gwt/dom/client/DOMImplMozilla.java +++ b/user/src/com/google/gwt/dom/client/DOMImplMozilla.java
@@ -19,8 +19,6 @@ * Mozilla implementation of StandardBrowser. */ class DOMImplMozilla extends DOMImplStandard { - private static boolean isGecko190OrBefore; - private static boolean isGecko190OrBeforeDetected; /** * Return true if using Gecko 1.9.0 (Firefox 3) or earlier. @@ -28,20 +26,7 @@ * @return true if using Gecko 1.9.0 (Firefox 3) or earlier. */ @SuppressWarnings("unused") - static boolean isGecko190OrBefore() { - if (!isGecko190OrBeforeDetected) { - isGecko190OrBefore = isGecko190OrBeforeImpl(); - isGecko190OrBeforeDetected = true; - } - return isGecko190OrBefore; - } - - /** - * Return true if using Gecko 1.9.0 (Firefox 3) or earlier. - * - * @return true if using Gecko 1.9.0 (Firefox 3) or earlier. - */ - private static native boolean isGecko190OrBeforeImpl() /*-{ + private static native boolean isGecko190OrBefore() /*-{ var result = /rv:([0-9]+)\.([0-9]+)\.([0-9]+)?/.exec(navigator.userAgent.toLowerCase()); if (result && result.length >= 3) { var version = (parseInt(result[1]) * 1000000) + (parseInt(result[2]) * 1000) +
diff --git a/user/src/com/google/gwt/dom/client/DOMImplSafari.java b/user/src/com/google/gwt/dom/client/DOMImplSafari.java index 01454af..e9a4285 100644 --- a/user/src/com/google/gwt/dom/client/DOMImplSafari.java +++ b/user/src/com/google/gwt/dom/client/DOMImplSafari.java
@@ -22,6 +22,23 @@ */ class DOMImplSafari extends DOMImplStandard { + /** + * Return true if using Webkit 525.x (Safari 3) or earlier. + * + * @return true if using Webkit 525.x (Safari 3) or earlier. + */ + @SuppressWarnings("unused") + private static native boolean isWebkit525OrBefore() /*-{ + var result = /safari\/([\d.]+)/.exec(navigator.userAgent.toLowerCase()); + if (result) { + var version = (parseFloat(result[1])); + if (version < 526) { + return true; + } + } + return false; + }-*/; + private static class ClientRect extends JavaScriptObject { @SuppressWarnings("unused")
diff --git a/user/test/com/google/gwt/canvas/client/CanvasTest.java b/user/test/com/google/gwt/canvas/client/CanvasTest.java index bd3cb77..147ddfe 100644 --- a/user/test/com/google/gwt/canvas/client/CanvasTest.java +++ b/user/test/com/google/gwt/canvas/client/CanvasTest.java
@@ -34,6 +34,10 @@ protected Canvas canvas1; protected Canvas canvas2; + native boolean isWebkit525OrBefore() /*-{ + return @com.google.gwt.dom.client.DOMImplSafari::isWebkit525OrBefore()(); + }-*/; + @Override public String getModuleName() { return "com.google.gwt.canvas.Canvas"; @@ -69,6 +73,12 @@ return; // disable tests if not supported } + // Safari 3.0 does not support toDataURL(), so the following tests are disabled for + // Safari 3.0 and before. + if (isWebkit525OrBefore()) { + return; + } + canvas1.setHeight("0px"); canvas1.setWidth("0px"); assertEquals(0, canvas1.getOffsetHeight()); @@ -142,6 +152,12 @@ return; // disable tests if not supported } + // Safari 3.0 does not support toDataURL(), so the following tests are disabled for + // Safari 3.0 and before. + if (isWebkit525OrBefore()) { + return; + } + canvas1.setHeight("10px"); canvas1.setWidth("10px"); canvas1.setCoordinateSpaceHeight(10);
diff --git a/user/test/com/google/gwt/canvas/dom/client/Context2dTest.java b/user/test/com/google/gwt/canvas/dom/client/Context2dTest.java index f7834ce..600d811 100644 --- a/user/test/com/google/gwt/canvas/dom/client/Context2dTest.java +++ b/user/test/com/google/gwt/canvas/dom/client/Context2dTest.java
@@ -40,7 +40,11 @@ protected Canvas canvas2; native boolean isGecko190OrBefore() /*-{ - return @com.google.gwt.dom.client.DOMImplMozilla::isGecko190OrBeforeImpl()(); + return @com.google.gwt.dom.client.DOMImplMozilla::isGecko190OrBefore()(); + }-*/; + + native boolean isWebkit525OrBefore() /*-{ + return @com.google.gwt.dom.client.DOMImplSafari::isWebkit525OrBefore()(); }-*/; @Override @@ -71,6 +75,12 @@ return; // disable tests if not supported } + // Safari 3.0 does not support getImageData(), so the following tests are disabled for + // Safari 3.0 and before. + if (isWebkit525OrBefore()) { + return; + } + canvas1.setHeight("40px"); canvas1.setWidth("60px"); canvas1.setCoordinateSpaceHeight(80); @@ -196,6 +206,12 @@ return; // disable tests if not supported } + // Safari 3.0 does not support getImageData(), so the following tests are disabled for + // Safari 3.0 and before. + if (isWebkit525OrBefore()) { + return; + } + canvas1.setHeight("40px"); canvas1.setWidth("60px"); canvas1.setCoordinateSpaceHeight(40); @@ -242,6 +258,12 @@ return; } + // Safari 3.0 does not support getImageData(), so the following tests are disabled for + // Safari 3.0 and before. + if (isWebkit525OrBefore()) { + return; + } + canvas1.setHeight("40px"); canvas1.setWidth("60px"); canvas1.setCoordinateSpaceHeight(40); @@ -358,6 +380,12 @@ return; // disable tests if not supported } + // Safari 3.0 does not support getImageData(), so the following tests are disabled for + // Safari 3.0 and before. + if (isWebkit525OrBefore()) { + return; + } + canvas1.setHeight("40px"); canvas1.setWidth("60px"); canvas1.setCoordinateSpaceHeight(40);