SystemMessageHandler.java revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 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) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SystemMessageHandler extends Handler { 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private static final int SCHEDULED_WORK = 1; 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private static final int DELAYED_SCHEDULED_WORK = 2; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Native class pointer set by the constructor of the SharedClient native class. 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private long mMessagePumpDelegateNative = 0; 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private long mDelayedScheduledTimeTicks = 0; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private SystemMessageHandler(long messagePumpDelegateNative) { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mMessagePumpDelegateNative = messagePumpDelegateNative; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void handleMessage(Message msg) { 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (msg.what == DELAYED_SCHEDULED_WORK) { 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) mDelayedScheduledTimeTicks = 0; 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) nativeDoRunLoopOnce(mMessagePumpDelegateNative, mDelayedScheduledTimeTicks); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch @SuppressWarnings("unused") 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @CalledByNative 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private void scheduleWork() { 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) sendEmptyMessage(SCHEDULED_WORK); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @SuppressWarnings("unused") 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @CalledByNative 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private void scheduleDelayedWork(long delayedTimeTicks, long millis) { 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (mDelayedScheduledTimeTicks != 0) { 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) removeMessages(DELAYED_SCHEDULED_WORK); 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) mDelayedScheduledTimeTicks = delayedTimeTicks; 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) sendEmptyMessageDelayed(DELAYED_SCHEDULED_WORK, millis); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @SuppressWarnings("unused") 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @CalledByNative 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private void removeScheduledWork() { 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) removeMessages(SCHEDULED_WORK); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @CalledByNative 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private static SystemMessageHandler create(long messagePumpDelegateNative) { 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new SystemMessageHandler(messagePumpDelegateNative); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private native void nativeDoRunLoopOnce( 59a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) long messagePumpDelegateNative, long delayedScheduledTimeTicks); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 61