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