| Index: editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/TaskProcessorTest.java
|
| diff --git a/editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/TaskProcessorTest.java b/editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/TaskProcessorTest.java
|
| index 2d75d6e37a77f9e2a22a0b151918cd9433453dd0..27349740762e833c488ba08c0e9187adc20307f9 100644
|
| --- a/editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/TaskProcessorTest.java
|
| +++ b/editor/tools/plugins/com.google.dart.tools.core_test/src/com/google/dart/tools/core/analysis/TaskProcessorTest.java
|
| @@ -47,7 +47,7 @@ public class TaskProcessorTest extends AbstractDartCoreTest {
|
| }
|
| }
|
|
|
| - private static class BlockingIdleListener implements IdleListener {
|
| + private static class BlockingIdleListener implements TaskListener {
|
| private final Object lock = new Object();
|
| private boolean blocked = false;
|
|
|
| @@ -66,6 +66,11 @@ public class TaskProcessorTest extends AbstractDartCoreTest {
|
| }
|
| }
|
|
|
| + @Override
|
| + public void processing(int toBeProcessed) {
|
| + // ignored
|
| + }
|
| +
|
| void unblock() {
|
| synchronized (lock) {
|
| blocked = false;
|
| @@ -137,6 +142,44 @@ public class TaskProcessorTest extends AbstractDartCoreTest {
|
| }
|
|
|
| /**
|
| + * Assert that the idle operation gets executed after all tasks and after listeners have been
|
| + * notified that the processor is idle.
|
| + */
|
| + public void test_idleOperation() throws Exception {
|
| + BlockingTask blockingTask = new BlockingTask();
|
| + queue.addNewTask(blockingTask);
|
| +
|
| + final boolean[] complete = {false};
|
| + processor.setIdleOperation(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + synchronized (complete) {
|
| + complete[0] = true;
|
| + complete.notifyAll();
|
| + }
|
| + }
|
| + });
|
| +
|
| + assertFalse(complete[0]);
|
| + assertTrue(blockingTask.waitUntilStarted(FIVE_MINUTES_MS));
|
| + assertFalse(complete[0]);
|
| + final BlockingIdleListener blockingListener = new BlockingIdleListener();
|
| + processor.addIdleListener(blockingListener);
|
| + blockingTask.unblock();
|
| + assertTrue(blockingListener.waitUntilBlocked(FIVE_MINUTES_MS));
|
| + assertFalse(complete[0]);
|
| + processor.removeIdleListener(blockingListener);
|
| + blockingListener.unblock();
|
| +
|
| + synchronized (complete) {
|
| + if (!complete[0]) {
|
| + complete.wait(100);
|
| + }
|
| + }
|
| + assertTrue(complete[0]);
|
| + }
|
| +
|
| + /**
|
| * Assert single idle -> run -> idle sequence
|
| */
|
| public void test_perform() throws Exception {
|
|
|