Add a webApiUsage property to control whether prefixed API's will be used. This is a simple implementation that doesn't include browser or feature-specific settings. Change-Id: I416794f99bafa78a9a0ef84ef698d372c8263613 Review-Link: https://gwt-review.googlesource.com/#/c/1840/ Review by: goktug@google.com git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@11495 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/animation/Animation.gwt.xml b/user/src/com/google/gwt/animation/Animation.gwt.xml index bc2a47c..8fd4427 100644 --- a/user/src/com/google/gwt/animation/Animation.gwt.xml +++ b/user/src/com/google/gwt/animation/Animation.gwt.xml
@@ -32,11 +32,13 @@ <replace-with class="com.google.gwt.animation.client.AnimationSchedulerImplMozilla"> <when-type-is class="com.google.gwt.animation.client.AnimationScheduler"/> <when-property-is name="user.agent" value="gecko1_8"/> + <when-property-is name="webApiUsage" value="modern"/> </replace-with> <!-- Implementation based on webkitRequestAnimationFrame --> <replace-with class="com.google.gwt.animation.client.AnimationSchedulerImplWebkit"> <when-type-is class="com.google.gwt.animation.client.AnimationScheduler"/> <when-property-is name="user.agent" value="safari"/> + <when-property-is name="webApiUsage" value="modern"/> </replace-with> </module>
diff --git a/user/src/com/google/gwt/useragent/UserAgent.gwt.xml b/user/src/com/google/gwt/useragent/UserAgent.gwt.xml index 16a65ec..3039a35 100644 --- a/user/src/com/google/gwt/useragent/UserAgent.gwt.xml +++ b/user/src/com/google/gwt/useragent/UserAgent.gwt.xml
@@ -33,6 +33,15 @@ is-multi-valued="false" /> <set-configuration-property name="user.agent.runtimeWarning" value="true"/> + <!-- + If set to "modern", GWT widgets will sometimes attempt to use new web API's that + aren't yet standardized (such as prefixed API's). The "stable" setting turns this off. + If recompiling and redeploying your GWT app when someone reports a browser bug would be + a problem, you should choose "stable". + --> + <define-property name="webApiUsage" values="stable,modern"/> + <set-property name="webApiUsage" value="modern"/> + <!-- Asserts that the compile time user.agent value matches the runtime --> <!-- user.agent value --> <entry-point class="com.google.gwt.useragent.client.UserAgentAsserter" />
diff --git a/user/test/com/google/gwt/animation/AnimationApiUsage.gwt.xml b/user/test/com/google/gwt/animation/AnimationApiUsage.gwt.xml new file mode 100644 index 0000000..b8afd4c --- /dev/null +++ b/user/test/com/google/gwt/animation/AnimationApiUsage.gwt.xml
@@ -0,0 +1,19 @@ +<!-- --> +<!-- Copyright 2013 Google Inc. --> +<!-- Licensed under the Apache License, Version 2.0 (the "License"); you --> +<!-- may not use this file except in compliance with the License. You may --> +<!-- 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. License for the specific language governing permissions and --> +<!-- limitations under the License. --> + +<!-- Module used to test Animation API usage. --> +<module> + <inherits name="com.google.gwt.animation.Animation"/> + <set-property name="webApiUsage" value="stable"/> +</module> \ No newline at end of file
diff --git a/user/test/com/google/gwt/animation/AnimationSuite.java b/user/test/com/google/gwt/animation/AnimationSuite.java index ef8551f..8302101 100644 --- a/user/test/com/google/gwt/animation/AnimationSuite.java +++ b/user/test/com/google/gwt/animation/AnimationSuite.java
@@ -15,6 +15,7 @@ */ package com.google.gwt.animation; +import com.google.gwt.animation.client.AnimationApiUsageTest; import com.google.gwt.animation.client.AnimationSchedulerImplTimerTest; import com.google.gwt.animation.client.AnimationTest; @@ -28,6 +29,7 @@ public static Test suite() { TestSuite suite = new TestSuite("Tests of the animation package"); + suite.addTestSuite(AnimationApiUsageTest.class); suite.addTestSuite(AnimationSchedulerImplTimerTest.class); suite.addTestSuite(AnimationTest.class);
diff --git a/user/test/com/google/gwt/animation/client/AnimationApiUsageTest.java b/user/test/com/google/gwt/animation/client/AnimationApiUsageTest.java new file mode 100644 index 0000000..27a6c64 --- /dev/null +++ b/user/test/com/google/gwt/animation/client/AnimationApiUsageTest.java
@@ -0,0 +1,34 @@ +/* + * Copyright 2013 Google Inc. + * + * 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.google.gwt.animation.client; + +import com.google.gwt.junit.client.GWTTestCase; + +/** + * Verifies that we always use timers in 'resistance' mode. + */ +public class AnimationApiUsageTest extends GWTTestCase { + @Override + public String getModuleName() { + return "com.google.gwt.animation.AnimationApiUsage"; + } + + public void testAnimationSchedulerUsesTimer() { + AnimationScheduler scheduler = AnimationScheduler.get(); + assertEquals("Expected timer implementation but got: " + scheduler.getClass().getName(), + AnimationSchedulerImplTimer.class, scheduler.getClass()); + } +}