PluginTimer.h revision 7e336d32d9c3465ff9792faa8ccc8613b7849e4c
18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright 2009, The Android Open Source Project 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 Google Inc. All rights reserved. 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 83298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * * Redistributions of source code must retain the above copyright 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 103298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * * Redistributions in binary form must reproduce the above copyright 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 143298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 173298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 243298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef PluginTimer_H 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define PluginTimer_H 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 307e336d32d9c3465ff9792faa8ccc8613b7849e4cDerek Sollenberger#include "RefCounted.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Timer.h" 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "npapi.h" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class PluginTimerList; 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 387e336d32d9c3465ff9792faa8ccc8613b7849e4cDerek Sollenberger class PluginTimer : public TimerBase, public RefCounted<PluginTimer> { 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PluginTimer(PluginTimer** list, NPP instance, bool repeat, 41c02eba192362e2ea83fdfbe0be51a08429ec4123Ben Murdoch void (*proc)(NPP npp, uint32_t timerID)); 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ~PluginTimer(); 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 44c02eba192362e2ea83fdfbe0be51a08429ec4123Ben Murdoch uint32_t timerID() const { return m_timerID; } 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4681b3dad72dd3fbc96e1128fc3d011272c4c27b91Nicolas Roard void unschedule() { m_unscheduled = true; } 4781b3dad72dd3fbc96e1128fc3d011272c4c27b91Nicolas Roard 48c02eba192362e2ea83fdfbe0be51a08429ec4123Ben Murdoch static PluginTimer* Find(PluginTimer* list, uint32_t timerID); 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project private: 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // override from TimerBase 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void fired(); 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PluginTimer* next() const { return m_next; } 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project friend class PluginTimerList; 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PluginTimer** m_list; 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PluginTimer* m_prev; 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PluginTimer* m_next; 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NPP m_instance; 61c02eba192362e2ea83fdfbe0be51a08429ec4123Ben Murdoch void (*m_timerFunc)(NPP, uint32_t); 62c02eba192362e2ea83fdfbe0be51a08429ec4123Ben Murdoch uint32_t m_timerID; 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_repeat; 6481b3dad72dd3fbc96e1128fc3d011272c4c27b91Nicolas Roard bool m_unscheduled; 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class PluginTimerList { 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PluginTimerList() : m_list(0) {} 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ~PluginTimerList(); 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 72c02eba192362e2ea83fdfbe0be51a08429ec4123Ben Murdoch uint32_t schedule(NPP instance, uint32_t interval, bool repeat, 73c02eba192362e2ea83fdfbe0be51a08429ec4123Ben Murdoch void (*proc)(NPP npp, uint32_t timerID)); 74c02eba192362e2ea83fdfbe0be51a08429ec4123Ben Murdoch void unschedule(NPP instance, uint32_t timerID); 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project private: 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PluginTimer* m_list; 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 83