15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)package org.chromium.base; 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.os.Handler; 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.os.Message; 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.os.SystemClock; 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import java.util.concurrent.atomic.AtomicBoolean; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SystemMessageHandler extends Handler { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private static final int TIMER_MESSAGE = 1; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private static final int DELAYED_TIMER_MESSAGE = 2; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Native class pointer set by the constructor of the SharedClient native class. 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private int mMessagePumpDelegateNative = 0; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private SystemMessageHandler(int messagePumpDelegateNative) { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mMessagePumpDelegateNative = messagePumpDelegateNative; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void handleMessage(Message msg) { 277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch nativeDoRunLoopOnce(mMessagePumpDelegateNative); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch @SuppressWarnings("unused") 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @CalledByNative 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private void setTimer() { 337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch sendEmptyMessage(TIMER_MESSAGE); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @SuppressWarnings("unused") 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @CalledByNative 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private void setDelayedTimer(long millis) { 397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch removeMessages(DELAYED_TIMER_MESSAGE); 407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch sendEmptyMessageDelayed(DELAYED_TIMER_MESSAGE, millis); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @SuppressWarnings("unused") 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @CalledByNative 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private void removeTimer() { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) removeMessages(TIMER_MESSAGE); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @CalledByNative 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private static SystemMessageHandler create(int messagePumpDelegateNative) { 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new SystemMessageHandler(messagePumpDelegateNative); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch private native void nativeDoRunLoopOnce(int messagePumpDelegateNative); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 56