1// Copyright (c) 2011 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#ifndef CONTENT_TEST_PLUGIN_PLUGIN_SCHEDULE_TIMER_TEST_H 6#define CONTENT_TEST_PLUGIN_PLUGIN_SCHEDULE_TIMER_TEST_H 7 8#include "base/compiler_specific.h" 9#include "base/time/time.h" 10#include "content/test/plugin/plugin_test.h" 11 12namespace NPAPIClient { 13 14// This class tests scheduling and unscheduling of timers using 15// NPN_ScheduleTimer and NPN_UnscheduleTimer. 16class ScheduleTimerTest : public PluginTest { 17 public: 18 ScheduleTimerTest(NPP id, NPNetscapeFuncs *host_functions); 19 20 virtual NPError New(uint16 mode, int16 argc, const char* argn[], 21 const char* argv[], NPSavedData* saved) OVERRIDE; 22 23 void OnTimer(uint32 timer_id); 24 25 private: 26 // Table mapping timer index (as used in event schedule) to timer id. 27 static const int kNumTimers = 3; 28 uint32 timer_ids_[kNumTimers]; 29 30 // Schedule of events for test. 31 static const int kNumEvents = 11; 32 struct Event { 33 int time; 34 35 // The index of the timer that triggered the event or -1 for the first 36 // event. 37 int received_index; 38 39 // The index of the timer to schedule on this event or -1. 40 int scheduled_index; 41 42 // Info about the timer to be scheduled (if any). 43 uint32 scheduled_interval; 44 bool schedule_repeated; 45 46 // The index of the timer to unschedule on this event or -1. 47 int unscheduled_index; 48 }; 49 static Event schedule_[kNumEvents]; 50 int num_received_events_; 51 52 // Set of events that have been received (by index). 53 bool received_events_[kNumEvents]; 54 55 // Time of initial event. 56 base::Time start_time_; 57 58 // Returns index of matching unreceived event or -1 if not found. 59 int FindUnreceivedEvent(int time, uint32 timer_id); 60 void HandleEventIndex(int event_index); 61}; 62 63} // namespace NPAPIClient 64 65#endif // CONTENT_TEST_PLUGIN_PLUGIN_SCHEDULE_TIMER_TEST_H 66