Deprecate the DeferredCommand API.
Patch by: bobv
Review by: rjrjr
Review at http://gwt-code-reviews.appspot.com/718802
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8508 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/jsonp/client/JsonpRequest.java b/user/src/com/google/gwt/jsonp/client/JsonpRequest.java
index c199339..422743c 100644
--- a/user/src/com/google/gwt/jsonp/client/JsonpRequest.java
+++ b/user/src/com/google/gwt/jsonp/client/JsonpRequest.java
@@ -16,11 +16,11 @@
package com.google.gwt.jsonp.client;
import com.google.gwt.core.client.JavaScriptObject;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Node;
import com.google.gwt.dom.client.ScriptElement;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -246,7 +246,7 @@
* scope of the script itself. Therefore, we need to defer the delete
* statement after the callback execution.
*/
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
unregisterCallbacks(CALLBACKS);
Node script = Document.get().getElementById(callbackId);
diff --git a/user/src/com/google/gwt/user/client/Command.java b/user/src/com/google/gwt/user/client/Command.java
index 90b9bde..e97f5bf 100644
--- a/user/src/com/google/gwt/user/client/Command.java
+++ b/user/src/com/google/gwt/user/client/Command.java
@@ -15,6 +15,8 @@
*/
package com.google.gwt.user.client;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+
/**
* Encapsulates an action for later execution, often from a different context.
*
@@ -22,14 +24,16 @@
* The Command interface provides a layer of separation between the code
* specifying some behavior and the code invoking that behavior. This separation
* aids in creating reusable code. For example, a
- * {@link com.google.gwt.user.client.ui.MenuItem} can have a Command
- * associated with it that it executes when the menu item is chosen by the user.
+ * {@link com.google.gwt.user.client.ui.MenuItem} can have a Command associated
+ * with it that it executes when the menu item is chosen by the user.
* Importantly, the code that constructed the Command to be executed when the
* menu item is invoked knows nothing about the internals of the MenuItem class
- * and vice-versa.</p>
+ * and vice-versa.
+ * </p>
*
- * <p> The Command interface is often implemented with an anonymous inner class.
- * For example,
+ * <p>
+ * The Command interface is often implemented with an anonymous inner class. For
+ * example,
*
* <pre>
* Command sayHello = new Command() {
@@ -42,10 +46,17 @@
*
* </p>
*/
-public interface Command {
+public interface Command extends ScheduledCommand {
+ /*
+ * NB: This extends ScheduledCommand to aid in transitioning from the old
+ * DeferredCommand interface. We can't have a class in core depend on a class
+ * in user, but we'd like switching to the Scheduler API to be pretty much
+ * just a name change. This type isn't deprecated, because it's used by other
+ * UI widget classes.
+ */
/**
* Causes the Command to perform its encapsulated behavior.
- */
+ * */
void execute();
}
diff --git a/user/src/com/google/gwt/user/client/CommandExecutor.java b/user/src/com/google/gwt/user/client/CommandExecutor.java
deleted file mode 100644
index 8db1fe2..0000000
--- a/user/src/com/google/gwt/user/client/CommandExecutor.java
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * Copyright 2007 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.user.client;
-
-import com.google.gwt.core.client.Duration;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.GWT.UncaughtExceptionHandler;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Class which executes {@link Command}s and {@link IncrementalCommand}s after
- * all currently pending event handlers have completed. This class attempts to
- * protect against slow script warnings by running commands in small time
- * increments.
- *
- * <p>
- * It is still possible that a poorly written command could cause a slow script
- * warning which a user may choose to cancel. In that event, a
- * {@link CommandCanceledException} or an
- * {@link IncrementalCommandCanceledException} is reported through the current
- * {@link UncaughtExceptionHandler} depending on the type of command which
- * caused the warning. All other commands will continue to be executed.
- * </p>
- *
- * TODO(mmendez): Can an SSW be detected without using a timer? Currently, if a
- * {@link Command} or an {@link IncrementalCommand} calls either
- * {@link Window#alert(String)} or the JavaScript <code>alert(String)</code>
- * methods directly or indirectly then the cancellation timer can fire,
- * resulting in a false SSW cancellation detection.
- */
-class CommandExecutor {
-
- /**
- * A circular iterator used by this class. This iterator will wrap back to
- * zero when it hits the end of the commands.
- */
- private class CircularIterator implements Iterator<Object> {
- /**
- * Index of the element where this iterator should wrap back to the
- * beginning of the collection.
- */
- private int end;
-
- /**
- * Index of the last item returned by {@link #next()}.
- */
- private int last = -1;
-
- /**
- * Index of the next command to execute.
- */
- private int next = 0;
-
- /**
- * Returns <code>true</code> if there are more commands in the queue.
- *
- * @return <code>true</code> if there are more commands in the queue.
- */
- public boolean hasNext() {
- return next < end;
- }
-
- /**
- * Returns the next command from the queue. When the end of the dispatch
- * region is reached it will wrap back to the start.
- *
- * @return next command from the queue.
- */
- public Object next() {
- last = next;
- Object command = commands.get(next++);
- if (next >= end) {
- next = 0;
- }
-
- return command;
- }
-
- /**
- * Removes the command which was previously returned by {@link #next()}.
- *
- */
- public void remove() {
- assert (last >= 0);
-
- commands.remove(last);
- --end;
-
- if (last <= next) {
- if (--next < 0) {
- next = 0;
- }
- }
-
- last = -1;
- }
-
- /**
- * Returns the last element returned by {@link #next()}.
- *
- * @return last element returned by {@link #next()}
- */
- private Object getLast() {
- assert (last >= 0);
- return commands.get(last);
- }
-
- private void setEnd(int end) {
- assert (end >= next);
-
- this.end = end;
- }
-
- private void setLast(int last) {
- this.last = last;
- }
-
- private boolean wasRemoved() {
- return last == -1;
- }
- }
-
- /**
- * Default amount of time to wait before assuming that a script cancellation
- * has taken place. This should be a platform dependent value, ultimately we
- * may need to acquire this value based on a rebind decision. For now, we
- * chose the smallest value known to cause an SSW.
- */
- private static final int DEFAULT_CANCELLATION_TIMEOUT_MILLIS = 10000;
-
- /**
- * Default amount of time to spend dispatching commands before we yield to the
- * system.
- */
- private static final int DEFAULT_TIME_SLICE_MILLIS = 100;
-
- /**
- * Returns true the end time has been reached or exceeded.
- *
- * @param currentTimeMillis current time in milliseconds
- * @param startTimeMillis end time in milliseconds
- * @return true if the end time has been reached
- */
- private static boolean hasTimeSliceExpired(double currentTimeMillis,
- double startTimeMillis) {
- return currentTimeMillis - startTimeMillis >= DEFAULT_TIME_SLICE_MILLIS;
- }
-
- /**
- * Timer used to recover from script cancellations arising from slow script
- * warnings.
- */
- private final Timer cancellationTimer = new Timer() {
- @Override
- public void run() {
- if (!isExecuting()) {
- /*
- * If we are not executing, then the cancellation timer expired right
- * about the time that the command dispatcher finished -- we are okay so
- * we just exit.
- */
- return;
- }
-
- doCommandCanceled();
- }
- };
-
- /**
- * Commands that need to be executed.
- */
- private final List<Object> commands = new ArrayList<Object>();
-
- /**
- * Set to <code>true</code> when we are actively dispatching commands.
- */
- private boolean executing = false;
-
- /**
- * Timer used to drive the dispatching of commands in the background.
- */
- private final Timer executionTimer = new Timer() {
- @Override
- public void run() {
- assert (!isExecuting());
-
- setExecutionTimerPending(false);
-
- doExecuteCommands(Duration.currentTimeMillis());
- }
- };
-
- /**
- * Set to <code>true</code> when we are waiting for a dispatch timer event
- * to fire.
- */
- private boolean executionTimerPending = false;
-
- /**
- * The single circular iterator instance that we use to iterate over the
- * collection of commands.
- */
- private final CircularIterator iterator = new CircularIterator();
-
- /**
- * Submits a {@link Command} for execution.
- *
- * @param command command to submit
- */
- public void submit(Command command) {
- commands.add(command);
-
- maybeStartExecutionTimer();
- }
-
- /**
- * Submits an {@link IncrementalCommand} for execution.
- *
- * @param command command to submit
- */
- public void submit(IncrementalCommand command) {
- commands.add(command);
-
- maybeStartExecutionTimer();
- }
-
- /**
- * Reports either a {@link CommandCanceledException} or an
- * {@link IncrementalCommandCanceledException} back through the
- * {@link UncaughtExceptionHandler} if one is set.
- */
- protected void doCommandCanceled() {
- Object cmd = iterator.getLast();
- iterator.remove();
- assert (cmd != null);
-
- RuntimeException ex = null;
- if (cmd instanceof Command) {
- ex = new CommandCanceledException((Command) cmd);
- } else if (cmd instanceof IncrementalCommand) {
- ex = new IncrementalCommandCanceledException((IncrementalCommand) cmd);
- }
-
- if (ex != null) {
- UncaughtExceptionHandler ueh = GWT.getUncaughtExceptionHandler();
- if (ueh != null) {
- ueh.onUncaughtException(ex);
- }
- }
-
- setExecuting(false);
-
- maybeStartExecutionTimer();
- }
-
- /**
- * This method will dispatch commands from the command queue. It will dispatch
- * commands until one of the following conditions is <code>true</code>:
- * <ul>
- * <li>It consumed its dispatching time slice
- * {@value #DEFAULT_TIME_SLICE_MILLIS}</li>
- * <li>It encounters a <code>null</code> in the command queue</li>
- * <li>All commands which were present at the start of the dispatching have
- * been removed from the command queue</li>
- * <li>The command that it was processing was canceled due to a false
- * cancellation -- in this case we exit without updating any state</li>
- * </ul>
- *
- * @param startTimeMillis the time when this method started
- */
- protected void doExecuteCommands(double startTimeMillis) {
- assert (!isExecutionTimerPending());
-
- boolean wasCanceled = false;
- try {
- setExecuting(true);
-
- iterator.setEnd(commands.size());
-
- cancellationTimer.schedule(DEFAULT_CANCELLATION_TIMEOUT_MILLIS);
-
- while (iterator.hasNext()) {
- Object element = iterator.next();
-
- boolean removeCommand = true;
- try {
- if (element == null) {
- // null forces a yield or pause in execution
- return;
- }
-
- if (element instanceof Command) {
- Command command = (Command) element;
- command.execute();
- } else if (element instanceof IncrementalCommand) {
- IncrementalCommand incrementalCommand = (IncrementalCommand) element;
- removeCommand = !incrementalCommand.execute();
- }
-
- } finally {
- wasCanceled = iterator.wasRemoved();
- if (!wasCanceled) {
- if (removeCommand) {
- iterator.remove();
- }
- }
- }
-
- if (hasTimeSliceExpired(Duration.currentTimeMillis(), startTimeMillis)) {
- // the time slice has expired
- return;
- }
- }
- } finally {
- if (!wasCanceled) {
- cancellationTimer.cancel();
-
- setExecuting(false);
-
- maybeStartExecutionTimer();
- }
- }
- }
-
- /**
- * Starts the dispatch timer if there are commands to dispatch and we are not
- * waiting for a dispatch timer and we are not actively dispatching.
- */
- protected void maybeStartExecutionTimer() {
- if (!commands.isEmpty() && !isExecutionTimerPending() && !isExecuting()) {
- setExecutionTimerPending(true);
- executionTimer.schedule(1);
- }
- }
-
- /**
- * This method is for testing only.
- */
- List<Object> getPendingCommands() {
- return commands;
- }
-
- /**
- * This method is for testing only.
- */
- void setExecuting(boolean executing) {
- this.executing = executing;
- }
-
- /**
- * This method is for testing only.
- */
- void setLast(int last) {
- iterator.setLast(last);
- }
-
- /**
- * Returns <code>true</code> if this instance is currently dispatching
- * commands.
- *
- * @return <code>true</code> if this instance is currently dispatching
- * commands
- */
- private boolean isExecuting() {
- return executing;
- }
-
- /**
- * Returns <code>true</code> if a the dispatch timer was scheduled but it
- * still has not fired.
- *
- * @return <code>true</code> if a the dispatch timer was scheduled but it
- * still has not fired
- */
- private boolean isExecutionTimerPending() {
- return executionTimerPending;
- }
-
- private void setExecutionTimerPending(boolean pending) {
- executionTimerPending = pending;
- }
-}
\ No newline at end of file
diff --git a/user/src/com/google/gwt/user/client/DeferredCommand.java b/user/src/com/google/gwt/user/client/DeferredCommand.java
index 9fe21d4..c7ed6eb 100644
--- a/user/src/com/google/gwt/user/client/DeferredCommand.java
+++ b/user/src/com/google/gwt/user/client/DeferredCommand.java
@@ -15,14 +15,41 @@
*/
package com.google.gwt.user.client;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+
+import java.util.ArrayList;
+import java.util.List;
+
/**
* This class allows you to execute code after all currently pending event
* handlers have completed, using the {@link #addCommand(Command)} or
* {@link #addCommand(IncrementalCommand)} methods. This is useful when you need
* to execute code outside of the context of the current stack.
+ *
+ * @deprecated Replaced by {@link Scheduler}
*/
+@Deprecated
public class DeferredCommand {
- private static final CommandExecutor commandExecutor = new CommandExecutor();
+ private static class PausedCommand implements ScheduledCommand {
+ List<ScheduledCommand> toSchedule = new ArrayList<ScheduledCommand>();
+ PausedCommand next;
+
+ public void execute() {
+ if (lastPaused == this) {
+ lastPaused = null;
+ }
+ for (ScheduledCommand cmd : toSchedule) {
+ Scheduler.get().scheduleDeferred(cmd);
+ }
+ if (next != null) {
+ // Scheduled a chained pause
+ Scheduler.get().scheduleDeferred(next);
+ }
+ }
+ }
+
+ private static PausedCommand lastPaused;
/**
* Enqueues a {@link Command} to be fired after all current events have been
@@ -32,12 +59,14 @@
* inserted into the queue. Any events added after the pause will
* wait for an additional cycle through the system event loop before
* executing. Pauses are cumulative.
- *
* @deprecated As of release 1.4, replaced by {@link #addCommand(Command)}
*/
- @Deprecated
public static void add(Command cmd) {
- commandExecutor.submit(cmd);
+ if (cmd == null) {
+ addPause();
+ } else {
+ addCommand(cmd);
+ }
}
/**
@@ -48,13 +77,19 @@
*
* @param cmd the command to be fired
* @throws NullPointerException if cmd is <code>null</code>
+ * @deprecated Replaced by
+ * {@link Scheduler#scheduleDeferred(ScheduledCommand)}
*/
public static void addCommand(Command cmd) {
if (cmd == null) {
throw new NullPointerException("cmd cannot be null");
}
- commandExecutor.submit(cmd);
+ if (lastPaused != null) {
+ lastPaused.toSchedule.add(cmd);
+ } else {
+ Scheduler.get().scheduleDeferred(cmd);
+ }
}
/**
@@ -66,13 +101,14 @@
*
* @param cmd the command to be fired
* @throws NullPointerException if cmd is <code>null</code>
+ * @deprecated Replaced by {@link Scheduler#scheduleIncremental}
*/
public static void addCommand(IncrementalCommand cmd) {
if (cmd == null) {
throw new NullPointerException("cmd cannot be null");
}
- commandExecutor.submit(cmd);
+ Scheduler.get().scheduleIncremental(cmd);
}
/**
@@ -80,8 +116,20 @@
* {@link DeferredCommand}s or pauses that are added after this pause will
* wait for an additional cycle through the system event loop before
* executing.
+ *
+ * @deprecated No direct replacement; instead, a ScheduledCommand should cause
+ * any other strictly-ordered commands to be scheduled
*/
public static void addPause() {
- commandExecutor.submit((Command) null);
+ if (lastPaused == null) {
+ // No existing pause
+ lastPaused = new PausedCommand();
+ Scheduler.get().scheduleDeferred(lastPaused);
+ } else {
+ // Chained pauses
+ PausedCommand newPaused = new PausedCommand();
+ lastPaused.next = newPaused;
+ lastPaused = newPaused;
+ }
}
}
diff --git a/user/src/com/google/gwt/user/client/IncrementalCommand.java b/user/src/com/google/gwt/user/client/IncrementalCommand.java
index d2f9739..4d18b32 100644
--- a/user/src/com/google/gwt/user/client/IncrementalCommand.java
+++ b/user/src/com/google/gwt/user/client/IncrementalCommand.java
@@ -15,6 +15,8 @@
*/
package com.google.gwt.user.client;
+import com.google.gwt.core.client.Scheduler;
+
/**
* An <code>IncrementalCommand</code> is a command that is broken into one or
* more substeps, each substep brings the whole command nearer to completion.
@@ -22,8 +24,12 @@
* <code>false</code>.
*
* {@example com.google.gwt.examples.IncrementalCommandExample}
+ *
+ * @deprecated Replaced by {@link Scheduler.RepeatingCommand} for use with
+ * {@link Scheduler#scheduleIncremental}
*/
-public interface IncrementalCommand {
+@Deprecated
+public interface IncrementalCommand extends Scheduler.RepeatingCommand {
/**
* Causes the <code>IncrementalCommand</code> to execute its encapsulated
* behavior.
diff --git a/user/src/com/google/gwt/user/client/ui/CaptionPanel.java b/user/src/com/google/gwt/user/client/ui/CaptionPanel.java
index 4364b2b..bacaaf1 100644
--- a/user/src/com/google/gwt/user/client/ui/CaptionPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/CaptionPanel.java
@@ -16,12 +16,12 @@
package com.google.gwt.user.client.ui;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.FieldSetElement;
import com.google.gwt.dom.client.LegendElement;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
import java.util.Iterator;
@@ -80,7 +80,7 @@
boolean asHTML) {
fieldset.getStyle().setProperty("visibility", "hidden");
super.setCaption(fieldset, legend, caption, asHTML);
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
fieldset.getStyle().setProperty("visibility", "");
}
diff --git a/user/src/com/google/gwt/user/client/ui/FormPanel.java b/user/src/com/google/gwt/user/client/ui/FormPanel.java
index 2ad6825..f3c4941 100644
--- a/user/src/com/google/gwt/user/client/ui/FormPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/FormPanel.java
@@ -16,6 +16,7 @@
package com.google.gwt.user.client.ui;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.FormElement;
@@ -23,7 +24,6 @@
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.impl.FormPanelImpl;
import com.google.gwt.user.client.ui.impl.FormPanelImplHost;
@@ -627,7 +627,7 @@
// because clients that detach the form panel when submission is
// complete can cause some browsers (i.e. Mozilla) to go into an
// 'infinite loading' state. See issue 916.
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
fireEvent(new SubmitCompleteEvent(impl.getContents(synthesizedFrame)));
}
diff --git a/user/src/com/google/gwt/user/client/ui/HorizontalSplitPanel.java b/user/src/com/google/gwt/user/client/ui/HorizontalSplitPanel.java
index c4b9157..09cd37a 100644
--- a/user/src/com/google/gwt/user/client/ui/HorizontalSplitPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/HorizontalSplitPanel.java
@@ -16,12 +16,12 @@
package com.google.gwt.user.client.ui;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.i18n.client.LocaleInfo;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Timer;
@@ -301,7 +301,7 @@
// before layout completes, the RIGHT element will
// appear to be blanked out.
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
setWidth(panel.getElement(LEFT), "0px");
}
@@ -578,7 +578,7 @@
* possible.
*/
setSplitPosition(lastSplitPosition);
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
setSplitPosition(lastSplitPosition);
}
diff --git a/user/src/com/google/gwt/user/client/ui/Image.java b/user/src/com/google/gwt/user/client/ui/Image.java
index 8d85c76..b7d7ec9 100644
--- a/user/src/com/google/gwt/user/client/ui/Image.java
+++ b/user/src/com/google/gwt/user/client/ui/Image.java
@@ -16,6 +16,7 @@
package com.google.gwt.user.client.ui;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.ImageElement;
@@ -45,7 +46,6 @@
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.impl.ClippedImageImpl;
@@ -258,7 +258,7 @@
* that a second load event would occur while you are in the load event
* handler.
*/
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
NativeEvent evt = Document.get().createLoadEvent();
getImageElement(image).dispatchEvent(evt);
diff --git a/user/src/com/google/gwt/user/client/ui/SplitLayoutPanel.java b/user/src/com/google/gwt/user/client/ui/SplitLayoutPanel.java
index b7277d7..352c815 100644
--- a/user/src/com/google/gwt/user/client/ui/SplitLayoutPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/SplitLayoutPanel.java
@@ -15,10 +15,10 @@
*/
package com.google.gwt.user.client.ui;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Event;
/**
@@ -170,7 +170,7 @@
forceLayout();
}
};
- DeferredCommand.addCommand(layoutCommand);
+ Scheduler.get().scheduleDeferred(layoutCommand);
}
}
}
diff --git a/user/src/com/google/gwt/user/client/ui/VerticalSplitPanel.java b/user/src/com/google/gwt/user/client/ui/VerticalSplitPanel.java
index c3f720d..b655644 100644
--- a/user/src/com/google/gwt/user/client/ui/VerticalSplitPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/VerticalSplitPanel.java
@@ -16,11 +16,11 @@
package com.google.gwt.user.client.ui;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Timer;
@@ -397,7 +397,7 @@
* This first call is simply to try to avoid a jitter effect if possible.
*/
setSplitPosition(lastSplitPosition);
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
setSplitPosition(lastSplitPosition);
}
diff --git a/user/src/com/google/gwt/user/client/ui/impl/PopupImplMozilla.java b/user/src/com/google/gwt/user/client/ui/impl/PopupImplMozilla.java
index 0c1dfef..0d9c16a 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/PopupImplMozilla.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/PopupImplMozilla.java
@@ -15,12 +15,12 @@
*/
package com.google.gwt.user.client.ui.impl;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.dom.client.Style.Overflow;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.DeferredCommand;
/**
* Implementation class used by {@link com.google.gwt.user.client.ui.PopupPanel}.
@@ -99,7 +99,7 @@
// 'overflow:auto' after all of the elements on the page have been
// rendered,
// the PopupPanel becomes the highest element in the stacking order.
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
outerElem.getStyle().setOverflow(Overflow.AUTO);
}
diff --git a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplOldMozilla.java b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplOldMozilla.java
index d78a4e6..548e928 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplOldMozilla.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplOldMozilla.java
@@ -15,8 +15,8 @@
*/
package com.google.gwt.user.client.ui.impl;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
/**
* Old Mozilla-specific implementation of rich-text editing.
@@ -28,7 +28,7 @@
*/
@Override
protected void onElementInitialized() {
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
RichTextAreaImplOldMozilla.super.onElementInitialized();
}
diff --git a/user/src/com/google/gwt/user/datepicker/client/DateBox.java b/user/src/com/google/gwt/user/datepicker/client/DateBox.java
index 7105c80..d060235 100644
--- a/user/src/com/google/gwt/user/datepicker/client/DateBox.java
+++ b/user/src/com/google/gwt/user/datepicker/client/DateBox.java
@@ -17,6 +17,7 @@
package com.google.gwt.user.datepicker.client;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.event.dom.client.BlurEvent;
import com.google.gwt.event.dom.client.BlurHandler;
import com.google.gwt.event.dom.client.ClickEvent;
@@ -33,7 +34,6 @@
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasValue;
import com.google.gwt.user.client.ui.PopupPanel;
@@ -458,7 +458,7 @@
private void preventDatePickerPopup() {
allowDPShow = false;
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
allowDPShow = true;
}
diff --git a/user/src/com/google/gwt/view/client/ListViewAdapter.java b/user/src/com/google/gwt/view/client/ListViewAdapter.java
index 0694d16..50cfce6 100644
--- a/user/src/com/google/gwt/view/client/ListViewAdapter.java
+++ b/user/src/com/google/gwt/view/client/ListViewAdapter.java
@@ -15,8 +15,8 @@
*/
package com.google.gwt.view.client;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
import java.util.ArrayList;
import java.util.Collection;
@@ -390,7 +390,7 @@
flushCancelled = false;
if (!flushPending) {
flushPending = true;
- DeferredCommand.addCommand(flushCommand);
+ Scheduler.get().scheduleDeferred(flushCommand);
}
}
diff --git a/user/test/com/google/gwt/dev/jjs/test/RunAsyncMetricsIntegrationTest.java b/user/test/com/google/gwt/dev/jjs/test/RunAsyncMetricsIntegrationTest.java
index 37085f6..fa8136e 100644
--- a/user/test/com/google/gwt/dev/jjs/test/RunAsyncMetricsIntegrationTest.java
+++ b/user/test/com/google/gwt/dev/jjs/test/RunAsyncMetricsIntegrationTest.java
@@ -18,9 +18,9 @@
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.RunAsyncCallback;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
import java.util.LinkedList;
import java.util.Queue;
@@ -131,7 +131,7 @@
}
public void onSuccess() {
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
checkMetrics();
diff --git a/user/test/com/google/gwt/dom/client/ElementTest.java b/user/test/com/google/gwt/dom/client/ElementTest.java
index 5806456..857dede 100644
--- a/user/test/com/google/gwt/dom/client/ElementTest.java
+++ b/user/test/com/google/gwt/dom/client/ElementTest.java
@@ -16,13 +16,13 @@
package com.google.gwt.dom.client;
import com.google.gwt.core.client.JavaScriptObject;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.dom.client.Style.Position;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.junit.DoNotRunWith;
import com.google.gwt.junit.Platform;
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
/**
* Element tests (many stolen from DOMTest).
@@ -201,7 +201,7 @@
elem.getStyle().setPropertyPx("width", width);
elem.getStyle().setPropertyPx("height", height);
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
int absLeft = left + margin;
int absTop = top + margin;
diff --git a/user/test/com/google/gwt/dom/client/StyleInjectorTest.java b/user/test/com/google/gwt/dom/client/StyleInjectorTest.java
index be61d38..c9a217f 100644
--- a/user/test/com/google/gwt/dom/client/StyleInjectorTest.java
+++ b/user/test/com/google/gwt/dom/client/StyleInjectorTest.java
@@ -15,9 +15,9 @@
*/
package com.google.gwt.dom.client;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
/**
* Tests StyleInjector by looking for effects of injected CSS on DOM elements.
@@ -45,7 +45,7 @@
// We need to allow the document to be redrawn
delayTestFinish(TEST_DELAY);
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
assertEquals(100, elt.getOffsetLeft());
assertEquals(100, elt.getClientHeight());
@@ -80,7 +80,7 @@
// We need to allow the document to be redrawn
delayTestFinish(TEST_DELAY);
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
assertEquals(100, elt.getOffsetLeft());
assertEquals(100, elt.getClientHeight());
@@ -131,7 +131,7 @@
if (immediate) {
command.execute();
} else {
- DeferredCommand.addCommand(command);
+ Scheduler.get().scheduleDeferred(command);
// We need to allow the BatchedCommands to execute
delayTestFinish(TEST_DELAY);
}
diff --git a/user/test/com/google/gwt/user/UISuite.java b/user/test/com/google/gwt/user/UISuite.java
index 06960cc..0940f39 100644
--- a/user/test/com/google/gwt/user/UISuite.java
+++ b/user/test/com/google/gwt/user/UISuite.java
@@ -18,7 +18,6 @@
import com.google.gwt.junit.tools.GWTTestSuite;
import com.google.gwt.layout.client.LayoutTest;
import com.google.gwt.user.client.AsyncProxyTest;
-import com.google.gwt.user.client.CommandExecutorTest;
import com.google.gwt.user.client.CookieTest;
import com.google.gwt.user.client.EventTest;
import com.google.gwt.user.client.HistoryDisabledTest;
@@ -117,7 +116,6 @@
suite.addTestSuite(CaptionPanelTest.class);
suite.addTestSuite(CheckBoxTest.class);
suite.addTestSuite(ClippedImagePrototypeTest.class);
- suite.addTestSuite(CommandExecutorTest.class);
suite.addTestSuite(CompositeTest.class);
suite.addTestSuite(CookieTest.class);
suite.addTestSuite(CustomButtonTest.class);
diff --git a/user/test/com/google/gwt/user/client/CommandExecutorTest.java b/user/test/com/google/gwt/user/client/CommandExecutorTest.java
deleted file mode 100644
index 1e970d9..0000000
--- a/user/test/com/google/gwt/user/client/CommandExecutorTest.java
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * Copyright 2007 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.user.client;
-
-import com.google.gwt.core.client.Duration;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.GWT.UncaughtExceptionHandler;
-import com.google.gwt.junit.client.GWTTestCase;
-
-/**
- * Test cases for {@link CommandExecutor}.
- */
-public class CommandExecutorTest extends GWTTestCase {
-
- private static class NonRestartingCommandExecutor extends CommandExecutor {
- protected void maybeStartExecutionTimer() {
- // keeps the executing timer for interfering with the test
- }
- }
-
- private static class TestCommand implements Command {
- private boolean executed;
-
- public boolean didExecute() {
- return executed;
- }
-
- public void execute() {
- executed = true;
- }
- }
-
- private static class TestIncrementalCommand implements IncrementalCommand {
- private boolean done = false;
- private int executeCount;
-
- public boolean execute() {
- ++executeCount;
-
- return !isDone();
- }
-
- public int getExecuteCount() {
- return executeCount;
- }
-
- public boolean isDone() {
- return done;
- }
-
- public void setDone(boolean done) {
- this.done = done;
- }
- }
-
- /**
- * A sufficiently large delay to let the SSW triggers.
- */
- private static final int TEST_FINISH_DELAY_MILLIS = 40000;
-
- public String getModuleName() {
- return "com.google.gwt.user.User";
- }
-
- /**
- * Test method for
- * {@link com.google.gwt.user.client.CommandExecutor#doExecuteCommands(int)}.
- *
- * Checks that we can recover after a cancellation
- */
- public void testDoExecuteCommands_CancellationRecovery() {
- final CommandExecutor ce = new NonRestartingCommandExecutor();
-
- final Command c1 = new Command() {
- public void execute() {
- }
- };
-
- ce.setExecuting(true);
- ce.submit(c1);
- ce.setLast(0);
-
- final UncaughtExceptionHandler originalUEH = GWT.getUncaughtExceptionHandler();
-
- UncaughtExceptionHandler ueh1 = new UncaughtExceptionHandler() {
- public void onUncaughtException(Throwable e) {
- if (!(e instanceof CommandCanceledException)) {
- originalUEH.onUncaughtException(e);
- return;
- }
-
- CommandCanceledException cce = (CommandCanceledException) e;
- if (cce.getCommand() != c1) {
- fail("CommandCanceledException did not contain the correct failed command");
- }
-
- // Submit some more work and do another dispatch
- ce.submit(new IncrementalCommand() {
- public boolean execute() {
- return false;
- }
- });
-
- delayTestFinish(TEST_FINISH_DELAY_MILLIS);
- ce.submit(new Command() {
- public void execute() {
- finishTest();
- }
- });
-
- ce.doExecuteCommands(Duration.currentTimeMillis());
- }
- };
-
- GWT.setUncaughtExceptionHandler(ueh1);
- ce.doCommandCanceled();
- }
-
- /**
- * Test method for
- * {@link com.google.gwt.user.client.CommandExecutor#doExecuteCommands(int)}.
- *
- * Checks Command cancellation detection
- */
- public void testDoExecuteCommands_CommandCancellation() {
- final CommandExecutor ce = new NonRestartingCommandExecutor();
-
- final Command c1 = new Command() {
- public void execute() {
- }
- };
-
- // Setup the cancellation state
- ce.setExecuting(true);
- ce.submit(c1);
- ce.setLast(0);
-
- final UncaughtExceptionHandler originalUEH = GWT.getUncaughtExceptionHandler();
-
- UncaughtExceptionHandler ueh1 = new UncaughtExceptionHandler() {
- public void onUncaughtException(Throwable e) {
- if (!(e instanceof CommandCanceledException)) {
- originalUEH.onUncaughtException(e);
- return;
- }
-
- CommandCanceledException cce = (CommandCanceledException) e;
- if (cce.getCommand() != c1) {
- fail("CommandCanceledException did not contain the correct failed command");
- }
- }
- };
-
- GWT.setUncaughtExceptionHandler(ueh1);
- ce.doCommandCanceled();
- }
-
- /**
- * Test method for
- * {@link com.google.gwt.user.client.CommandExecutor#doExecuteCommands(int)}.
- *
- * Checks that calling {@link CommandExecutor#doExecuteCommands(double)} with no
- * items in the queue is safe
- */
- public void testDoExecuteCommands_emptyQueue() {
- final CommandExecutor ce = new NonRestartingCommandExecutor();
-
- ce.doExecuteCommands(Duration.currentTimeMillis());
- }
-
- /**
- * Test method for
- * {@link com.google.gwt.user.client.CommandExecutor#doExecuteCommands(int)}.
- *
- * Checks IncrementalCommand cancellation detection
- */
- public void testDoExecuteCommands_IncrementalCommandCancellation() {
- final CommandExecutor ce = new NonRestartingCommandExecutor();
-
- final IncrementalCommand ic = new IncrementalCommand() {
- public boolean execute() {
- return false;
- }
- };
-
- // setup the cancellation state
- ce.setExecuting(true);
- ce.submit(ic);
- ce.setLast(0);
-
- final UncaughtExceptionHandler originalUEH = GWT.getUncaughtExceptionHandler();
-
- UncaughtExceptionHandler ueh1 = new UncaughtExceptionHandler() {
- public void onUncaughtException(Throwable e) {
- if (!(e instanceof IncrementalCommandCanceledException)) {
- originalUEH.onUncaughtException(e);
- return;
- }
-
- IncrementalCommandCanceledException icce = (IncrementalCommandCanceledException) e;
- if (icce.getCommand() != ic) {
- fail("IncrementalCommandCanceledException did not contain the correct failed command");
- }
- }
- };
-
- GWT.setUncaughtExceptionHandler(ueh1);
- ce.doCommandCanceled();
- }
-
- /**
- * Test method for
- * {@link com.google.gwt.user.client.CommandExecutor#doExecuteCommands(int)}.
- *
- * Checks that an incremental command executes and is removed from the queue
- * when it is done
- */
- public void testDoExecuteCommands_IncrementalCommands() {
- TestIncrementalCommand tic = new TestIncrementalCommand();
- final CommandExecutor ce = new NonRestartingCommandExecutor();
-
- tic.setDone(true);
- ce.submit(tic);
- ce.doExecuteCommands(Duration.currentTimeMillis());
- assertTrue(tic.getExecuteCount() > 0);
- assertTrue(ce.getPendingCommands().isEmpty());
- }
-
- /**
- * Test method for
- * {@link com.google.gwt.user.client.CommandExecutor#doExecuteCommands(int)}.
- *
- * Checks that null does in fact cause a pause.
- */
- public void testDoExecuteCommands_pause() {
- final CommandExecutor ce = new NonRestartingCommandExecutor();
-
- TestCommand tc1 = new TestCommand();
- TestCommand tc2 = new TestCommand();
-
- ce.submit(tc1);
- ce.submit((Command) null);
- ce.submit(tc2);
-
- ce.doExecuteCommands(Duration.currentTimeMillis());
-
- assertTrue(tc1.didExecute() && !tc2.didExecute());
- assertEquals(1, ce.getPendingCommands().size());
- assertTrue(ce.getPendingCommands().contains(tc2));
- }
-
- /**
- * Test method for
- * {@link com.google.gwt.user.client.CommandExecutor#doExecuteCommands(int)}.
- *
- * Checks that after one pass dispatch pass, we still have the incremental
- * command in the queue
- */
- public void testDoExecuteCommands_timeSliceUsage() {
- final CommandExecutor ce = new NonRestartingCommandExecutor();
-
- Command tc = new TestCommand();
- ce.submit(tc);
-
- TestIncrementalCommand tic = new TestIncrementalCommand();
- ce.submit(tic);
- ce.doExecuteCommands(Duration.currentTimeMillis());
-
- assertEquals(1, ce.getPendingCommands().size());
- assertTrue(ce.getPendingCommands().contains(tic));
- assertTrue(tic.getExecuteCount() > 0);
- }
-
- /**
- * Test method for
- * {@link com.google.gwt.user.client.CommandExecutor#submit(com.google.gwt.user.client.Command)}.
- *
- * <p/> Cases:
- * <ul>
- * <li>Submit <code>null</code></li>
- * <li>Submit {@link Command} and make sure that it fires</li>
- * </ul>
- */
- public void testSubmitCommand() {
- CommandExecutor ce = new CommandExecutor();
- ce.submit((Command) null);
-
- delayTestFinish(TEST_FINISH_DELAY_MILLIS);
-
- ce.submit(new Command() {
- public void execute() {
- finishTest();
- }
- });
- }
-
- /**
- * Test method for
- * {@link com.google.gwt.user.client.CommandExecutor#submit(com.google.gwt.user.client.IncrementalCommand)}.
- *
- * <p/> Cases:
- * <ul>
- * <li>Submit <code>null</code></li>
- * <li>Submit {@link IncrementalCommand} and make sure that it fires as many
- * times as we want it to</li>
- * </ul>
- */
- public void testSubmitIncrementalCommand() {
- CommandExecutor ce = new CommandExecutor();
- ce.submit((Command) null);
-
- delayTestFinish(TEST_FINISH_DELAY_MILLIS);
-
- ce.submit(new IncrementalCommand() {
- private int executionCount = 0;
-
- public boolean execute() {
- if (++executionCount > 10) {
- fail("IncrementalCommand was fired more than 10 times");
- }
-
- if (executionCount == 10) {
- finishTest();
- }
-
- return executionCount < 10;
- }
- });
- }
-}
diff --git a/user/test/com/google/gwt/user/client/WindowTest.java b/user/test/com/google/gwt/user/client/WindowTest.java
index 82e04da..3361ba9 100644
--- a/user/test/com/google/gwt/user/client/WindowTest.java
+++ b/user/test/com/google/gwt/user/client/WindowTest.java
@@ -16,6 +16,7 @@
package com.google.gwt.user.client;
import com.google.gwt.core.client.JavaScriptException;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.event.shared.HandlerRegistration;
@@ -219,7 +220,7 @@
largeDOM.setPixelSize(oldClientWidth + 100, oldClientHeight + 100);
RootPanel.get().add(largeDOM);
delayTestFinish(200);
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
int newClientHeight = Window.getClientHeight();
int newClientWidth = Window.getClientWidth();
@@ -359,7 +360,7 @@
final HandlerRegistration handlerRegistration = Window.addResizeHandler(resizeHandler);
delayTestFinish(2000);
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
// Sizes must be appropriate, otherwise browsers may not resize as
// requested. See comments in ResizeHelper.
diff --git a/user/test/com/google/gwt/user/client/ui/CompositeTest.java b/user/test/com/google/gwt/user/client/ui/CompositeTest.java
index 37abcf8..9e414f5 100644
--- a/user/test/com/google/gwt/user/client/ui/CompositeTest.java
+++ b/user/test/com/google/gwt/user/client/ui/CompositeTest.java
@@ -15,6 +15,7 @@
*/
package com.google.gwt.user.client.ui;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.event.dom.client.BlurEvent;
import com.google.gwt.event.dom.client.BlurHandler;
import com.google.gwt.event.dom.client.FocusEvent;
@@ -22,7 +23,6 @@
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Event;
/**
@@ -100,9 +100,9 @@
// Focus, then blur, the composite's text box. This has to be done in
// deferred commands, because focus events usually require the event loop
// to be pumped in order to fire.
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
// Ensure all events fired as expected.
assertTrue(c.domFocusFired);
diff --git a/user/test/com/google/gwt/user/client/ui/DOMTest.java b/user/test/com/google/gwt/user/client/ui/DOMTest.java
index 17e09b9..24b9e89 100644
--- a/user/test/com/google/gwt/user/client/ui/DOMTest.java
+++ b/user/test/com/google/gwt/user/client/ui/DOMTest.java
@@ -16,6 +16,7 @@
package com.google.gwt.user.client.ui;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.GWT.UncaughtExceptionHandler;
import com.google.gwt.dom.client.BodyElement;
import com.google.gwt.dom.client.Document;
@@ -27,7 +28,6 @@
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Timer;
@@ -141,7 +141,7 @@
DOM.setStyleAttribute(elem, "left", (left - doc.getBodyOffsetTop()) + "px");
delayTestFinish(1000);
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
assertEquals(top + margin, DOM.getAbsoluteTop(elem));
assertEquals(left + margin, DOM.getAbsoluteLeft(elem));
diff --git a/user/test/com/google/gwt/user/client/ui/DialogBoxTest.java b/user/test/com/google/gwt/user/client/ui/DialogBoxTest.java
index d6603ae..4ecc0e4 100644
--- a/user/test/com/google/gwt/user/client/ui/DialogBoxTest.java
+++ b/user/test/com/google/gwt/user/client/ui/DialogBoxTest.java
@@ -15,13 +15,13 @@
*/
package com.google.gwt.user.client.ui;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.junit.DoNotRunWith;
import com.google.gwt.junit.Platform;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.DeferredCommand;
/**
* Unit test for {@link DialogBox}.
@@ -103,7 +103,7 @@
delayTestFinish(250);
// Check the header IDs
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
UIObjectTest.assertDebugIdContents("myDialogBox-caption",
"test caption");
diff --git a/user/test/com/google/gwt/user/client/ui/LayoutPanelTest.java b/user/test/com/google/gwt/user/client/ui/LayoutPanelTest.java
index 6ac4e96..7e48183 100644
--- a/user/test/com/google/gwt/user/client/ui/LayoutPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/LayoutPanelTest.java
@@ -15,12 +15,12 @@
*/
package com.google.gwt.user.client.ui;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.layout.client.Layout.AnimationCallback;
import com.google.gwt.layout.client.Layout.Layer;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
/**
* Tests for {@link LayoutPanel}. Note that this only tests LayoutPanel-specific
@@ -42,7 +42,7 @@
p.forceLayout();
delayTestFinish(5000);
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
p.animate(100, new AnimationCallback() {
public void onLayout(Layer layer, double progress) {
@@ -73,7 +73,7 @@
popup.center();
delayTestFinish(2000);
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
int offsetWidth = lp.getOffsetWidth();
int offsetHeight = lp.getOffsetHeight();
diff --git a/user/test/com/google/gwt/user/client/ui/ListBoxTest.java b/user/test/com/google/gwt/user/client/ui/ListBoxTest.java
index eb06f9e..e9c6f44 100644
--- a/user/test/com/google/gwt/user/client/ui/ListBoxTest.java
+++ b/user/test/com/google/gwt/user/client/ui/ListBoxTest.java
@@ -15,9 +15,9 @@
*/
package com.google.gwt.user.client.ui;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
/**
* Tests {@link ListBox}. Needs many, many more tests.
@@ -50,7 +50,7 @@
UIObjectTest.assertDebugId("myList", list.getElement());
delayTestFinish(5000);
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
UIObjectTest.assertDebugIdContents("myList-item0", "option0");
UIObjectTest.assertDebugIdContents("myList-item1", "option1");
diff --git a/user/test/com/google/gwt/user/client/ui/MenuBarTest.java b/user/test/com/google/gwt/user/client/ui/MenuBarTest.java
index f08931f..bf4dccb 100644
--- a/user/test/com/google/gwt/user/client/ui/MenuBarTest.java
+++ b/user/test/com/google/gwt/user/client/ui/MenuBarTest.java
@@ -15,13 +15,13 @@
*/
package com.google.gwt.user.client.ui;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.junit.DoNotRunWith;
import com.google.gwt.junit.Platform;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
import java.util.List;
@@ -297,7 +297,7 @@
UIObjectTest.assertDebugId("myMenu", bar.getElement());
delayTestFinish(250);
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
UIObjectTest.assertDebugIdContents("myMenu-item0", "top0");
UIObjectTest.assertDebugIdContents("myMenu-item1", "top1");
diff --git a/user/test/com/google/gwt/user/client/ui/StackPanelTest.java b/user/test/com/google/gwt/user/client/ui/StackPanelTest.java
index 4bf82e6..ee4576d 100644
--- a/user/test/com/google/gwt/user/client/ui/StackPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/StackPanelTest.java
@@ -15,9 +15,9 @@
*/
package com.google.gwt.user.client.ui;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Element;
/**
@@ -78,7 +78,7 @@
delayTestFinish(5000);
// Check the header IDs
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
UIObjectTest.assertDebugIdContents("myStack-text0", "header a");
UIObjectTest.assertDebugIdContents("myStack-text1", "header b");
diff --git a/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java b/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java
index 5e062b2..dcace37 100644
--- a/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java
@@ -15,6 +15,7 @@
*/
package com.google.gwt.user.client.ui;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.logical.shared.BeforeSelectionEvent;
import com.google.gwt.event.logical.shared.BeforeSelectionHandler;
@@ -24,7 +25,6 @@
import com.google.gwt.junit.Platform;
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
import java.util.ArrayList;
import java.util.Iterator;
@@ -90,13 +90,13 @@
p.add(bar, new Label("bar"));
delayTestFinish(2000);
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
assertEquals(128, foo.getOffsetWidth());
assertEquals(128 - 32, foo.getOffsetHeight());
p.selectTab(1);
- DeferredCommand.addCommand(new Command() {
+ Scheduler.get().scheduleDeferred(new Command() {
public void execute() {
assertEquals(128, bar.getOffsetWidth());
assertEquals(128 - 32, bar.getOffsetHeight());