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);