1 | // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 | // Use of this source code is governed by a BSD-style license that can be |
3 | // found in the LICENSE file. |
4 | |
5 | package org.chromium.base; |
6 | |
7 | import android.os.Handler; |
8 | import android.os.Message; |
9 | import android.os.SystemClock; |
10 | |
11 | import java.util.concurrent.atomic.AtomicBoolean; |
12 | |
13 | class SystemMessageHandler extends Handler { |
14 | |
15 | private static final int TIMER_MESSAGE = 1; |
16 | private static final int DELAYED_TIMER_MESSAGE = 2; |
17 | |
18 | // Native class pointer set by the constructor of the SharedClient native class. |
19 | private int mMessagePumpDelegateNative = 0; |
20 | |
21 | private SystemMessageHandler(int messagePumpDelegateNative) { |
22 | mMessagePumpDelegateNative = messagePumpDelegateNative; |
23 | } |
24 | |
25 | @Override |
26 | public void handleMessage(Message msg) { |
27 | nativeDoRunLoopOnce(mMessagePumpDelegateNative); |
28 | } |
29 | |
30 | @SuppressWarnings("unused") |
31 | @CalledByNative |
32 | private void setTimer() { |
33 | sendEmptyMessage(TIMER_MESSAGE); |
34 | } |
35 | |
36 | @SuppressWarnings("unused") |
37 | @CalledByNative |
38 | private void setDelayedTimer(long millis) { |
39 | removeMessages(DELAYED_TIMER_MESSAGE); |
40 | sendEmptyMessageDelayed(DELAYED_TIMER_MESSAGE, millis); |
41 | } |
42 | |
43 | @SuppressWarnings("unused") |
44 | @CalledByNative |
45 | private void removeTimer() { |
46 | removeMessages(TIMER_MESSAGE); |
47 | } |
48 | |
49 | @CalledByNative |
50 | private static SystemMessageHandler create(int messagePumpDelegateNative) { |
51 | return new SystemMessageHandler(messagePumpDelegateNative); |
52 | } |
53 | |
54 | private native void nativeDoRunLoopOnce(int messagePumpDelegateNative); |
55 | } |