1// Copyright 2014 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 PlatformEventController_h 6#define PlatformEventController_h 7 8#include "core/page/PageLifecycleObserver.h" 9#include "platform/Timer.h" 10#include "platform/heap/Handle.h" 11 12namespace blink { 13 14// Base controller class for registering controllers with a dispatcher. 15// It watches page visibility and calls stopUpdating when page is not visible. 16// It provides a didUpdateData() callback method which is called when new data 17// it available. 18class PlatformEventController : public PageLifecycleObserver { 19public: 20 void startUpdating(); 21 void stopUpdating(); 22 23 // This is called when new data becomes available. 24 virtual void didUpdateData() = 0; 25 26protected: 27 explicit PlatformEventController(Page*); 28 virtual ~PlatformEventController(); 29 30 virtual void registerWithDispatcher() = 0; 31 virtual void unregisterWithDispatcher() = 0; 32 33 // When true initiates a one-shot didUpdateData() when startUpdating() is called. 34 virtual bool hasLastData() = 0; 35 36 bool m_hasEventListener; 37 38private: 39 // Inherited from PageLifecycleObserver. 40 virtual void pageVisibilityChanged() OVERRIDE; 41 42 void oneShotCallback(Timer<PlatformEventController>*); 43 44 bool m_isActive; 45 Timer<PlatformEventController> m_timer; 46}; 47 48} // namespace blink 49 50#endif // PlatformEventController_h 51