1c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)// found in the LICENSE file. 4c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 5c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#ifndef PlatformEventDispatcher_h 6c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#define PlatformEventDispatcher_h 7c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 8c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#include "wtf/Vector.h" 9c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 10c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 11c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)class PlatformEventController; 12c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 13c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)class PlatformEventDispatcher { 14c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)public: 15c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) void addController(PlatformEventController*); 16c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) void removeController(PlatformEventController*); 17c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 18c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)protected: 19c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) PlatformEventDispatcher(); 20c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) virtual ~PlatformEventDispatcher(); 21c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 22c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) void notifyControllers(); 23c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 24c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) virtual void startListening() = 0; 25c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) virtual void stopListening() = 0; 26c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 27c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)private: 28c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) void purgeControllers(); 29c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 30c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) Vector<PlatformEventController*> m_controllers; 31c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) bool m_needsPurge; 32c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) bool m_isDispatching; 33c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)}; 34c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 35c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 36c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 37c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#endif // PlatformEventDispatcher_h 38