Index: base/android/java/src/org/chromium/base/SystemMessageHandler.java |
diff --git a/base/android/java/src/org/chromium/base/SystemMessageHandler.java b/base/android/java/src/org/chromium/base/SystemMessageHandler.java |
index ebcc0d908490c0491e7d3a348fe270d87dcbe4b5..a7831707aaa199f2e8ce0f605380515915a0a771 100644 |
--- a/base/android/java/src/org/chromium/base/SystemMessageHandler.java |
+++ b/base/android/java/src/org/chromium/base/SystemMessageHandler.java |
@@ -25,18 +25,32 @@ class SystemMessageHandler extends Handler { |
// Native class pointer set by the constructor of the SharedClient native class. |
private long mMessagePumpDelegateNative = 0; |
+ private long mMessagePumpNative = 0; |
private long mDelayedScheduledTimeTicks = 0; |
- private SystemMessageHandler(long messagePumpDelegateNative) { |
+ private SystemMessageHandler(long messagePumpDelegateNative, long messagePumpNative) { |
mMessagePumpDelegateNative = messagePumpDelegateNative; |
+ mMessagePumpNative = messagePumpNative; |
} |
@Override |
public void handleMessage(Message msg) { |
- if (msg.what == DELAYED_SCHEDULED_WORK) { |
- mDelayedScheduledTimeTicks = 0; |
+ try { |
+ if (msg.what == DELAYED_SCHEDULED_WORK) { |
+ mDelayedScheduledTimeTicks = 0; |
+ } |
+ nativeDoRunLoopOnce( |
+ mMessagePumpDelegateNative, mMessagePumpNative, mDelayedScheduledTimeTicks); |
+ } catch (TestException e) { |
+ nativeNotifyTestDone(mMessagePumpNative); |
+ return; |
+ } |
+ } |
+ |
+ private static class TestException extends RuntimeException { |
+ TestException(String message) { |
+ super(message); |
} |
- nativeDoRunLoopOnce(mMessagePumpDelegateNative, mDelayedScheduledTimeTicks); |
} |
@SuppressWarnings("unused") |
@@ -153,10 +167,13 @@ class SystemMessageHandler extends Handler { |
} |
@CalledByNative |
- private static SystemMessageHandler create(long messagePumpDelegateNative) { |
- return new SystemMessageHandler(messagePumpDelegateNative); |
+ private static SystemMessageHandler create( |
+ long messagePumpDelegateNative, long messagePumpNative) { |
+ return new SystemMessageHandler(messagePumpDelegateNative, messagePumpNative); |
} |
private native void nativeDoRunLoopOnce( |
- long messagePumpDelegateNative, long delayedScheduledTimeTicks); |
+ long messagePumpDelegateNative, long messagePumpNative, long delayedScheduledTimeTicks); |
+ |
+ private static native void nativeNotifyTestDone(long messagePumpNative); |
} |