| 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);
|
| }
|
|
|