[gwt-contrib] Change in gwt[master]: Adds Node#removeAllChildren.
Manuel Carrasco Moñino has posted comments on this change. Change subject: Adds Node#removeAllChildren. .. Patch Set 1: (2 comments) File user/src/com/google/gwt/dom/client/Node.java Line 298: while (this.lastChild) { Doesn't innerHTML = "" perform better in HTML? I know it cannot be used with non html nodes though Line 303: /** Agree, using java here would reuse jsni from other methods, taking advantage of gwtc optimizations. -- To view, visit https://gwt-review.googlesource.com/3511 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic607bf6523a41c0ee4020a12e8505b1d8b39d916 Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Manuel Carrasco Moñino Gerrit-HasComments: Yes -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Adds Node#removeAllChildren.
Daniel Kurka has posted comments on this change. Change subject: Adds Node#removeAllChildren. .. Patch Set 1: (1 comment) File user/src/com/google/gwt/dom/client/Node.java Line 298: while (this.lastChild) { for some reason this is actually way slower. I am looking into this, but see: http://jsperf.com/innerhtml-vs-removechild/47 -- To view, visit https://gwt-review.googlesource.com/3511 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic607bf6523a41c0ee4020a12e8505b1d8b39d916 Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Manuel Carrasco Moñino Gerrit-HasComments: Yes -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Fixes GWT.runAsync that was broken in a recent patch.
Roberto Lublinerman has posted comments on this change. Change subject: Fixes GWT.runAsync that was broken in a recent patch. .. Patch Set 1: Code-Review+2 -- To view, visit https://gwt-review.googlesource.com/3510 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: If396a7f72ac533b304daf4d8afd8684d25e018ba Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: John Stalcup Gerrit-Reviewer: Roberto Lublinerman Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Fixes GWT.runAsync that was broken in a recent patch.
Roberto Lublinerman has posted comments on this change. Change subject: Fixes GWT.runAsync that was broken in a recent patch. .. Patch Set 1: GWT.runAsync is special treated in ReplaceRunAsync::isRunAsyncMethod() I am wondering whether we should have an annotation @GWTSpecialMethod on every method that is "indexed"/special treated. Then (1) people would know that even trivial changes there might have unforeseen consequences and (2) we could even check that every special treated method is annotated and viceversa. -- To view, visit https://gwt-review.googlesource.com/3510 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: If396a7f72ac533b304daf4d8afd8684d25e018ba Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: John Stalcup Gerrit-Reviewer: Roberto Lublinerman Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Adds Node#removeAllChildren.
Manuel Carrasco Moñino has posted comments on this change. Change subject: Adds Node#removeAllChildren. .. Patch Set 1: (1 comment) File user/src/com/google/gwt/dom/client/Node.java Line 298: while (this.lastChild) { You are right Daniel. I saw this as well http://jsperf.com/innerhtml-vs-removechild/50 and innerHTML is the worst option. -- To view, visit https://gwt-review.googlesource.com/3511 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic607bf6523a41c0ee4020a12e8505b1d8b39d916 Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Manuel Carrasco Moñino Gerrit-HasComments: Yes -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Adds Element#toggleClassName.
Manuel Carrasco Moñino has posted comments on this change. Change subject: Adds Element#toggleClassName. .. Patch Set 1: Code-Review+1 -- To view, visit https://gwt-review.googlesource.com/3501 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I1b2a507d5ee8482a91aae28c9dc9a6b6826afb2f Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Manuel Carrasco Moñino Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Adds Node#removeAllChildren.
Goktug Gokdogan has posted comments on this change. Change subject: Adds Node#removeAllChildren. .. Patch Set 1: (1 comment) File user/src/com/google/gwt/dom/client/Node.java Line 303: /** This one is slightly (~10%) faster as I don't need an explicit null checks. I don't see any optimization opportunities missed for using JSNI. Am I missing something? -- To view, visit https://gwt-review.googlesource.com/3511 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic607bf6523a41c0ee4020a12e8505b1d8b39d916 Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Manuel Carrasco Moñino Gerrit-HasComments: Yes -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Fixes GWT.runAsync that was broken in a recent patch.
Goktug Gokdogan has posted comments on this change. Change subject: Fixes GWT.runAsync that was broken in a recent patch. .. Patch Set 1: Yes, we can do that but better we should be able to catch these with test cases. I already knew that runAsync was special treated but couldn't see internals of the method would matter. -- To view, visit https://gwt-review.googlesource.com/3510 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: If396a7f72ac533b304daf4d8afd8684d25e018ba Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: John Stalcup Gerrit-Reviewer: Roberto Lublinerman Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Adds Node#removeAllChildren.
Daniel Kurka has posted comments on this change. Change subject: Adds Node#removeAllChildren. .. Patch Set 1: Code-Review+2 (1 comment) File user/src/com/google/gwt/dom/client/Node.java Line 303: /** I was just curious, sounds good to me -- To view, visit https://gwt-review.googlesource.com/3511 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ic607bf6523a41c0ee4020a12e8505b1d8b39d916 Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Manuel Carrasco Moñino Gerrit-HasComments: Yes -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Adds Timer#isRunning().
Goktug Gokdogan has posted comments on this change. Change subject: Adds Timer#isRunning(). .. Patch Set 2: Thanks for the review. -- To view, visit https://gwt-review.googlesource.com/3321 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0133c64de75d5d95cff863c5ab950d474dda0c56 Gerrit-PatchSet: 2 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Leeroy Jenkins Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Adds Timer#isRunning().
Goktug Gokdogan has submitted this change and it was merged. Change subject: Adds Timer#isRunning(). .. Adds Timer#isRunning(). This patch uses Integer instead of int to keep track of the running status. As now, running state is kept, cancel is no longer called for timers that are not scheduled. Bug: issue 462, issue 3935 Change-Id: I0133c64de75d5d95cff863c5ab950d474dda0c56 Review-Link: https://gwt-review.googlesource.com/#/c/3321/ --- M user/src/com/google/gwt/user/client/Timer.java M user/test/com/google/gwt/user/MiscSuite.java D user/test/com/google/gwt/user/client/TimerCancelTest.java A user/test/com/google/gwt/user/client/TimerTest.java 4 files changed, 171 insertions(+), 139 deletions(-) Approvals: Daniel Kurka: Looks good to me, approved Leeroy Jenkins: Verified diff --git a/user/src/com/google/gwt/user/client/Timer.java b/user/src/com/google/gwt/user/client/Timer.java index f95a5a7..ae2dccf 100644 --- a/user/src/com/google/gwt/user/client/Timer.java +++ b/user/src/com/google/gwt/user/client/Timer.java @@ -15,7 +15,6 @@ */ package com.google.gwt.user.client; - /** * A simplified, browser-safe timer class. This class serves the same purpose as * java.util.Timer, but is simplified because of the single-threaded @@ -61,7 +60,7 @@ private boolean isRepeating; - private int timerId; + private Integer timerId = null; /** * Workaround for broken clearTimeout in IE. Keeps track of whether cancel has been called since @@ -70,15 +69,28 @@ private int cancelCounter = 0; /** - * Cancels this timer. + * Returns {@code true} if the timer is running. Timer is running if and only if it is scheduled + * but it is not expired or cancelled. + */ + public final boolean isRunning() { +return timerId != null; + } + + /** + * Cancels this timer. If the timer is not running, this is a no-op. */ public void cancel() { +if (!isRunning()) { + return; +} + cancelCounter++; if (isRepeating) { clearInterval(timerId); } else { clearTimeout(timerId); } +timerId = null; } /** @@ -88,31 +100,36 @@ public abstract void run(); /** - * Schedules a timer to elapse in the future. - * - * @param delayMillis how long to wait before the timer elapses, in - * milliseconds + * Schedules a timer to elapse in the future. If the timer is already running then it will be + * first canceled before re-scheduling. + * + * @param delayMillis how long to wait before the timer elapses, in milliseconds */ public void schedule(int delayMillis) { if (delayMillis < 0) { throw new IllegalArgumentException("must be non-negative"); } -cancel(); +if (isRunning()) { + cancel(); +} isRepeating = false; timerId = createTimeout(this, delayMillis, cancelCounter); } /** - * Schedules a timer that elapses repeatedly. - * - * @param periodMillis how long to wait before the timer elapses, in - * milliseconds, between each repetition + * Schedules a timer that elapses repeatedly. If the timer is already running then it will be + * first canceled before re-scheduling. + * + * @param periodMillis how long to wait before the timer elapses, in milliseconds, between each + *repetition */ public void scheduleRepeating(int periodMillis) { if (periodMillis <= 0) { throw new IllegalArgumentException("must be positive"); } -cancel(); +if (isRunning()) { + cancel(); +} isRepeating = true; timerId = createInterval(this, periodMillis, cancelCounter); } @@ -123,10 +140,15 @@ * Only call run() if cancelCounter has not changed since the timer was scheduled. */ final void fire(int scheduleCancelCounter) { +// Workaround for broken clearTimeout in IE. if (scheduleCancelCounter != cancelCounter) { return; } +if (!isRepeating) { + timerId = null; +} + // Run the timer's code. run(); } diff --git a/user/test/com/google/gwt/user/MiscSuite.java b/user/test/com/google/gwt/user/MiscSuite.java index 63eba39..1ad8318 100644 --- a/user/test/com/google/gwt/user/MiscSuite.java +++ b/user/test/com/google/gwt/user/MiscSuite.java @@ -25,7 +25,7 @@ import com.google.gwt.user.client.EventTest; import com.google.gwt.user.client.GestureEventSinkTest; import com.google.gwt.user.client.HistoryDisabledTest; -import com.google.gwt.user.client.TimerCancelTest; +import com.google.gwt.user.client.TimerTest; import com.google.gwt.user.client.TouchEventSinkTest; import com.google.gwt.user.client.WindowTest; import com.google.gwt.user.datepicker.client.CalendarUtilTest; @@ -54,7 +54,7 @@ suite.addTestSuite(HistoryDisabledTest.class); suite.addTestSuite(ImageBundleGeneratorTest.class); suite.addTestSuite(LayoutTest.class); -suite.addTe
[gwt-contrib] Change in gwt[master]: Adds Timer#isRunning().
Daniel Kurka has posted comments on this change. Change subject: Adds Timer#isRunning(). .. Patch Set 2: Code-Review+2 -- To view, visit https://gwt-review.googlesource.com/3321 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I0133c64de75d5d95cff863c5ab950d474dda0c56 Gerrit-PatchSet: 2 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Leeroy Jenkins Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Temporarily disabling CR+2 on Gerrit
Hi GWT contributors, We're happy to see so much increased activity in the recent weeks since opening Gerrit to direct external contributions! Unfortunately, the new velocity has stressed our workflow for importing changes back internally within Google, and we've now fallen a couple weeks behind master. After discussing this some, we've decided we need to *temporarily* disable CR+2 on Gerrit while we catch up internally and experiment with a new more scalable workflow for going forward. As soon as we're caught up, we'll reallow CR+2 and try to ramp up again. We really regret the inconvenience in the meantime! :( Thanks, Matthew, on behalf of Google's GWT team -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Add hasClassName method in com.google.gwt.dom.client.Element
Brian Slesinsky has posted comments on this change. Change subject: Add hasClassName method in com.google.gwt.dom.client.Element .. Patch Set 7: As mentioned above, there's a conflict with Sencha which bit us when we tried to import into Google. I created an issue: https://code.google.com/p/google-web-toolkit/issues/detail?id=8211 -- To view, visit https://gwt-review.googlesource.com/3070 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia09567b8c58cac02f8126c33ef169b26def3d19c Gerrit-PatchSet: 7 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Andrey Korzhevskiy Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Colin Alworth Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Stephen Haberman Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Adds Element#toggleClassName.
Goktug Gokdogan has submitted this change and it was merged. Change subject: Adds Element#toggleClassName. .. Adds Element#toggleClassName. Change-Id: I1b2a507d5ee8482a91aae28c9dc9a6b6826afb2f --- M user/src/com/google/gwt/dom/client/Element.java M user/test/com/google/gwt/dom/client/ElementTest.java 2 files changed, 46 insertions(+), 8 deletions(-) Approvals: Daniel Kurka: Looks good to me, approved Manuel Carrasco Moñino: Looks good to me, but someone else must approve Leeroy Jenkins: Verified diff --git a/user/src/com/google/gwt/dom/client/Element.java b/user/src/com/google/gwt/dom/client/Element.java index c801f5d..6232db6 100644 --- a/user/src/com/google/gwt/dom/client/Element.java +++ b/user/src/com/google/gwt/dom/client/Element.java @@ -595,6 +595,18 @@ } /** + * Add the class name if it doesn't exist or removes it if does. + * + * @param className the class name to be toggled + */ + public final void toggleClassName(String className) { +boolean added = addClassName(className); +if (!added) { + removeClassName(className); +} + } + + /** * Replace one class name with another. * * @param oldClassName the class name to be replaced diff --git a/user/test/com/google/gwt/dom/client/ElementTest.java b/user/test/com/google/gwt/dom/client/ElementTest.java index 911d788..c4a2acf 100644 --- a/user/test/com/google/gwt/dom/client/ElementTest.java +++ b/user/test/com/google/gwt/dom/client/ElementTest.java @@ -34,11 +34,9 @@ return "com.google.gwt.dom.DOMTest"; } - public void testAddRemoveReplaceHasClassName() { + public void testAddClassName() { DivElement div = Document.get().createDivElement(); - div.setClassName("foo"); -assertEquals("foo", div.getClassName()); assertTrue(div.addClassName("bar")); assertEquals("foo bar", div.getClassName()); @@ -48,12 +46,13 @@ assertFalse(div.addClassName("baz")); assertEquals("foo bar baz", div.getClassName()); + } -div.replaceClassName("bar", "tintin"); -assertTrue(div.getClassName().contains("tintin")); -assertFalse(div.getClassName().contains("bar")); + public void testRemoveClassName() { +DivElement div = Document.get().createDivElement(); +div.setClassName("foo bar baz"); -assertTrue(div.removeClassName("tintin")); +assertTrue(div.removeClassName("bar")); assertEquals("foo baz", div.getClassName()); assertFalse(div.removeClassName("bar")); @@ -64,15 +63,42 @@ assertTrue(div.removeClassName("foo")); assertEquals("", div.getClassName()); + } + public void testHasClassName() { +DivElement div = Document.get().createDivElement(); div.setClassName("foo bar"); + assertTrue(div.hasClassName("bar")); assertTrue(div.hasClassName("foo")); -div.removeClassName("foo"); + +div.setClassName("bar"); assertFalse(div.hasClassName("foo")); assertTrue(div.hasClassName("bar")); } + public void testToggleClassName() { +DivElement div = Document.get().createDivElement(); +div.setClassName("foo bar baz"); + +div.toggleClassName("bar"); +assertEquals("foo baz", div.getClassName()); + +div.toggleClassName("bar"); +assertEquals("foo baz bar", div.getClassName()); + } + + public void testReplaceClassName() { +DivElement div = Document.get().createDivElement(); +div.setClassName("foo bar baz"); + +div.replaceClassName("bar", "tintin"); +assertEquals("foo baz tintin", div.getClassName()); + +div.replaceClassName("bar", "tintin2"); +assertEquals("foo baz tintin tintin2", div.getClassName()); + } + public void testIndexOfName() { assertEquals(-1, Element.indexOfName("", "foo")); -- To view, visit https://gwt-review.googlesource.com/3501 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1b2a507d5ee8482a91aae28c9dc9a6b6826afb2f Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Manuel Carrasco Moñino -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Adds an accessor to original throwable from SerializableThro...
Goktug Gokdogan has submitted this change and it was merged. Change subject: Adds an accessor to original throwable from SerializableThrowable. .. Adds an accessor to original throwable from SerializableThrowable. This provides ability for client side code (e.g. a client log handler) to look into the original throwable. Change-Id: I6856ca06f85af0165eea5ff6ac3015081b579352 Review-Link: https://gwt-review.googlesource.com/#/c/3500/ --- M user/src/com/google/gwt/core/shared/SerializableThrowable.java 1 file changed, 12 insertions(+), 1 deletion(-) Approvals: Leeroy Jenkins: Verified Goktug Gokdogan: Looks good to me, approved diff --git a/user/src/com/google/gwt/core/shared/SerializableThrowable.java b/user/src/com/google/gwt/core/shared/SerializableThrowable.java index cbbd612..fdc7d4d 100644 --- a/user/src/com/google/gwt/core/shared/SerializableThrowable.java +++ b/user/src/com/google/gwt/core/shared/SerializableThrowable.java @@ -55,6 +55,7 @@ private String typeName; private boolean exactTypeKnown; + private transient Throwable originalThrowable; private StackTraceElement[] dummyFieldToIncludeTheTypeInSerialization; /** @@ -95,7 +96,7 @@ } /** - * Return {@code true} if provided type name is the exact type of the throwable that is designed + * Return {@code true} if provided type name is the exact type of the throwable that is designated * by this instance. This can return {@code false} if the class metadata is not available in the * runtime. In that case {@link #getDesignatedType()} will return the type resolved by best-effort * and may not be the exact type; instead it can be one of the ancestors of the real type that @@ -115,6 +116,15 @@ return super.initCause(fromThrowable(cause)); } + /** + * Returns the original throwable that this serializable throwable is derived from. Note that the + * original throwable is kept in a transient field; that is; it will not be transferred to server + * side. In that case this method will return {@code null}. + */ + public Throwable getOriginalThrowable() { +return originalThrowable; + } + @Override public String toString() { String type = exactTypeKnown ? typeName : (typeName + "(EXACT TYPE UNKNOWN)"); @@ -126,6 +136,7 @@ SerializableThrowable throwable = new SerializableThrowable(null, t.getMessage()); throwable.setStackTrace(t.getStackTrace()); throwable.initCause(t.getCause()); +throwable.originalThrowable = t; ThrowableTypeResolver.resolveDesignatedType(throwable, t); return throwable; } -- To view, visit https://gwt-review.googlesource.com/3500 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6856ca06f85af0165eea5ff6ac3015081b579352 Gerrit-PatchSet: 3 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Leeroy Jenkins -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Adds an accessor to original throwable from SerializableThro...
Goktug Gokdogan has posted comments on this change. Change subject: Adds an accessor to original throwable from SerializableThrowable. .. Patch Set 3: Code-Review+2 Only made a trivial change to javadoc after +2. -- To view, visit https://gwt-review.googlesource.com/3500 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I6856ca06f85af0165eea5ff6ac3015081b579352 Gerrit-PatchSet: 3 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Leeroy Jenkins Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Adds Node#removeAllChildren.
Goktug Gokdogan has submitted this change and it was merged. Change subject: Adds Node#removeAllChildren. .. Adds Node#removeAllChildren. Change-Id: Ic607bf6523a41c0ee4020a12e8505b1d8b39d916 --- M user/src/com/google/gwt/dom/client/Node.java M user/test/com/google/gwt/dom/client/NodeTest.java 2 files changed, 28 insertions(+), 2 deletions(-) Approvals: Daniel Kurka: Looks good to me, approved Leeroy Jenkins: Verified diff --git a/user/src/com/google/gwt/dom/client/Node.java b/user/src/com/google/gwt/dom/client/Node.java index 7433829..0f34f1e 100644 --- a/user/src/com/google/gwt/dom/client/Node.java +++ b/user/src/com/google/gwt/dom/client/Node.java @@ -292,6 +292,15 @@ }-*/; /** + * Remove all children of the node. + */ + public final native Node removeAllChildren() /*-{ +while (this.lastChild) { + this.removeChild(this.lastChild); +} + }-*/; + + /** * Removes this node from its parent node if it is attached to one. */ public final void removeFromParent() { diff --git a/user/test/com/google/gwt/dom/client/NodeTest.java b/user/test/com/google/gwt/dom/client/NodeTest.java index fe9935f..eddaf4b 100644 --- a/user/test/com/google/gwt/dom/client/NodeTest.java +++ b/user/test/com/google/gwt/dom/client/NodeTest.java @@ -40,7 +40,7 @@ // foobar DivElement div = doc.createDivElement(); Text txt0 = doc.createTextNode("foo"); -ButtonElement btn0 = doc.createButtonElement(); +ButtonElement btn0 = doc.createPushButtonElement(); Text txt1 = doc.createTextNode("bar"); body.appendChild(div); @@ -49,7 +49,7 @@ div.appendChild(txt1); // appendChild, insertBefore -ButtonElement btn1 = doc.createButtonElement(); +ButtonElement btn1 = doc.createPushButtonElement(); // foobar div.appendChild(btn1); @@ -88,6 +88,23 @@ assertEquals(txt0, div.getFirstChild()); } + public void testRemoveAllChildren() throws Exception { +Document doc = Document.get(); +BodyElement body = doc.getBody(); + +DivElement div = doc.createDivElement(); +div.appendChild(doc.createTextNode("foo")); +div.appendChild(doc.createAnchorElement()); +div.appendChild(doc.createTextNode("bar")); +body.appendChild(div); + +assertEquals("foobar", div.getInnerHTML()); + +div.removeAllChildren(); +assertEquals("", div.getInnerHTML()); +assertEquals(0, div.getChildCount()); + } + /** * setAttribute, getAttribute, hasAttributes, hasAttribute. */ -- To view, visit https://gwt-review.googlesource.com/3511 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic607bf6523a41c0ee4020a12e8505b1d8b39d916 Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Manuel Carrasco Moñino -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Fixes GWT.runAsync that was broken in a recent patch.
Goktug Gokdogan has submitted this change and it was merged. Change subject: Fixes GWT.runAsync that was broken in a recent patch. .. Fixes GWT.runAsync that was broken in a recent patch. This is a regression to my previous change to GWT.runAsync to make it always run async. In the previous patch, GWT.runAsync was calling overloaded GWT.runAsync that is treated as a split point itself. Apparently, it was treated as a split point before the code was replaced for production mode. This patch avoids the problem by delegating both runAsync calls to a helper method. Change-Id: If396a7f72ac533b304daf4d8afd8684d25e018ba --- M user/src/com/google/gwt/core/client/GWT.java 1 file changed, 7 insertions(+), 2 deletions(-) Approvals: Roberto Lublinerman: Looks good to me, approved Leeroy Jenkins: Verified diff --git a/user/src/com/google/gwt/core/client/GWT.java b/user/src/com/google/gwt/core/client/GWT.java index 3d3440d..6216e27 100644 --- a/user/src/com/google/gwt/core/client/GWT.java +++ b/user/src/com/google/gwt/core/client/GWT.java @@ -258,14 +258,19 @@ * should use the same name. */ @SuppressWarnings("unused") // parameter will be used following replacement - public static void runAsync(Class name, RunAsyncCallback callback) { -runAsync(callback); + public static void runAsync(Class name, final RunAsyncCallback callback) { +runAsyncImpl(callback); } + /** * Run the specified callback once the necessary code for it has been loaded. */ public static void runAsync(final RunAsyncCallback callback) { +runAsyncImpl(callback); + } + + private static void runAsyncImpl(final RunAsyncCallback callback) { Scheduler.get().scheduleDeferred(new ScheduledCommand() { @Override public void execute() { callback.onSuccess(); -- To view, visit https://gwt-review.googlesource.com/3510 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: merged Gerrit-Change-Id: If396a7f72ac533b304daf4d8afd8684d25e018ba Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: John Stalcup Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Roberto Lublinerman -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Move StackTraceDeobfuscator from core.server.impl to core.se...
Hello Leeroy Jenkins, I'd like you to reexamine a change. Please visit https://gwt-review.googlesource.com/3512 to look at the new patch set (#2). Change subject: Move StackTraceDeobfuscator from core.server.impl to core.server. .. Move StackTraceDeobfuscator from core.server.impl to core.server. This patch moves StackTraceDeobfuscator to core.server as the API is finalized. Change-Id: Ic84f3b2210e3c40f0f7dc41bdeea9d13bf1a4dc6 Review-Link: https://gwt-review.googlesource.com/#/c/3512/ --- R user/src/com/google/gwt/core/server/StackTraceDeobfuscator.java M user/src/com/google/gwt/junit/server/JUnitHostImpl.java M user/src/com/google/gwt/logging/server/RemoteLoggingServiceImpl.java M user/src/com/google/gwt/logging/server/RemoteLoggingServiceUtil.java M user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java M user/src/com/google/web/bindery/requestfactory/server/Logging.java M user/test/com/google/gwt/user/server/rpc/LoggingRPCTestServiceImpl.java 7 files changed, 7 insertions(+), 7 deletions(-) -- To view, visit https://gwt-review.googlesource.com/3512 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ic84f3b2210e3c40f0f7dc41bdeea9d13bf1a4dc6 Gerrit-PatchSet: 2 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Leeroy Jenkins -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: adds type tightening (and tests) for casts inside of RunAsyn...
Hello Roberto Lublinerman, Leeroy Jenkins, I'd like you to reexamine a change. Please visit https://gwt-review.googlesource.com/3460 to look at the new patch set (#2). Change subject: adds type tightening (and tests) for casts inside of RunAsync onSuccessCalls, resulting in smaller leftover fragments .. adds type tightening (and tests) for casts inside of RunAsync onSuccessCalls, resulting in smaller leftover fragments Change-Id: I7b454db222da054834aa0d78b1a769100bf9da9b Review-Link: https://gwt-review.googlesource.com/#/c/3460/ --- M dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java M dev/core/test/com/google/gwt/dev/jjs/impl/CodeSplitter2Test.java 2 files changed, 56 insertions(+), 9 deletions(-) -- To view, visit https://gwt-review.googlesource.com/3460 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I7b454db222da054834aa0d78b1a769100bf9da9b Gerrit-PatchSet: 2 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: John Stalcup Gerrit-Reviewer: John Stalcup Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Roberto Lublinerman -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: replaces stale jProgram runAsync references and fixes JRunAs...
John Stalcup has uploaded a new change for review. https://gwt-review.googlesource.com/3520 Change subject: replaces stale jProgram runAsync references and fixes JRunAsync method inlining to occasionally benefit from tighter types .. replaces stale jProgram runAsync references and fixes JRunAsync method inlining to occasionally benefit from tighter types Change-Id: I930a31272a5f9b689e8cb68971d7ffb77389488a --- M dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java M dev/core/src/com/google/gwt/dev/jjs/ast/JRunAsync.java M dev/core/src/com/google/gwt/dev/jjs/impl/CloneExpressionVisitor.java M dev/core/src/com/google/gwt/dev/jjs/impl/MakeCallsStatic.java M dev/core/src/com/google/gwt/dev/jjs/impl/MethodInliner.java M dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRunAsyncs.java A dev/core/src/com/google/gwt/dev/jjs/impl/RunAsyncsTightener.java 7 files changed, 116 insertions(+), 4 deletions(-) diff --git a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java index 78fb2ca..ae47527 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java +++ b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java @@ -97,6 +97,7 @@ import com.google.gwt.dev.jjs.impl.ReplaceGetClassOverrides; import com.google.gwt.dev.jjs.impl.ReplaceRunAsyncs; import com.google.gwt.dev.jjs.impl.ResolveRebinds; +import com.google.gwt.dev.jjs.impl.RunAsyncsTightener; import com.google.gwt.dev.jjs.impl.SameParameterValueOptimizer; import com.google.gwt.dev.jjs.impl.SourceInfoCorrelator; import com.google.gwt.dev.jjs.impl.TypeTightener; @@ -350,6 +351,8 @@ // prune all Object.getClass() overrides and replace with inline field ref ReplaceGetClassOverrides.exec(jprogram); + RunAsyncsTightener.exec(jprogram); + // (7) Generate a JavaScript code DOM from the Java type declarations jprogram.typeOracle.recomputeAfterOptimizations(); Pair> genAstResult = diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JRunAsync.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JRunAsync.java index 50cd058..9cc0a39 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/ast/JRunAsync.java +++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JRunAsync.java @@ -82,6 +82,14 @@ return true; } + public void setOnSuccessCall(JExpression onSuccessCall) { +this.onSuccessCall = onSuccessCall; + } + + public void setRunAsyncCall(JExpression runAsyncCall) { +this.runAsyncCall = runAsyncCall; + } + public void traverse(JVisitor visitor, Context ctx) { if (visitor.visit(this, ctx)) { /* diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/CloneExpressionVisitor.java b/dev/core/src/com/google/gwt/dev/jjs/impl/CloneExpressionVisitor.java index d1089da..26c2e15 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/CloneExpressionVisitor.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/CloneExpressionVisitor.java @@ -227,11 +227,10 @@ @Override public boolean visit(JRunAsync x, Context ctx) { -// Only the runAsync call itself needs cloning, the onSuccess can be shared. JExpression runAsyncCall = cloneExpression(x.getRunAsyncCall()); -expression = -new JRunAsync(x.getSourceInfo(), x.getSplitPoint(), x.getName(), runAsyncCall, x -.getOnSuccessCall()); +JExpression onSuccessCall = cloneExpression(x.getOnSuccessCall()); +expression = new JRunAsync( +x.getSourceInfo(), x.getSplitPoint(), x.getName(), runAsyncCall, onSuccessCall); return false; } diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/MakeCallsStatic.java b/dev/core/src/com/google/gwt/dev/jjs/impl/MakeCallsStatic.java index 88cfd1c..3132ef0 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/MakeCallsStatic.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/MakeCallsStatic.java @@ -30,6 +30,7 @@ import com.google.gwt.dev.jjs.ast.JParameterRef; import com.google.gwt.dev.jjs.ast.JProgram; import com.google.gwt.dev.jjs.ast.JReturnStatement; +import com.google.gwt.dev.jjs.ast.JRunAsync; import com.google.gwt.dev.jjs.ast.JStatement; import com.google.gwt.dev.jjs.ast.JThisRef; import com.google.gwt.dev.jjs.ast.JType; @@ -113,6 +114,13 @@ } @Override + public boolean visit(JRunAsync x, Context ctx) { +x.setRunAsyncCall(accept(x.getRunAsyncCall())); +x.setOnSuccessCall(accept(x.getOnSuccessCall())); +return false; + } + + @Override public void endVisit(JParameterRef x, Context ctx) { JParameter param = varMap.get(x.getTarget()); JParameterRef paramRef = new JParameterRef(x.getSourceInfo(), param); diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/MethodInliner.java b/dev/core/src/com/google/gwt/dev/jjs/impl/MethodInliner.java index d2b05ae..49f406a 100644 --- a/dev/co
[gwt-contrib] Change in gwt[master]: adds type tightening (and tests) for casts inside of RunAsyn...
John Stalcup has posted comments on this change. Change subject: adds type tightening (and tests) for casts inside of RunAsync onSuccessCalls, resulting in smaller leftover fragments .. Patch Set 1: (1 comment) File dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java Line 631: return super.visit(x, ctx); Done -- To view, visit https://gwt-review.googlesource.com/3460 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I7b454db222da054834aa0d78b1a769100bf9da9b Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: John Stalcup Gerrit-Reviewer: John Stalcup Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Roberto Lublinerman Gerrit-HasComments: Yes -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: replaces stale jProgram runAsync references and fixes JRunAs...
John Stalcup has posted comments on this change. Change subject: replaces stale jProgram runAsync references and fixes JRunAsync method inlining to occasionally benefit from tighter types .. Patch Set 1: i'll add a CodeSplitter2Test for this once https://gwt-review.googlesource.com/#/c/3460/ is in -- To view, visit https://gwt-review.googlesource.com/3520 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I930a31272a5f9b689e8cb68971d7ffb77389488a Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: John Stalcup Gerrit-Reviewer: John Stalcup Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: replaces stale jProgram runAsync references and fixes JRunAs...
John Stalcup has posted comments on this change. Change subject: replaces stale jProgram runAsync references and fixes JRunAsync method inlining to occasionally benefit from tighter types .. Patch Set 1: addresses part of https://code.google.com/p/google-web-toolkit/issues/detail?id=7874 -- To view, visit https://gwt-review.googlesource.com/3520 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I930a31272a5f9b689e8cb68971d7ffb77389488a Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: John Stalcup Gerrit-Reviewer: John Stalcup Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.