15d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)// found in the LICENSE file. 45d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 5c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#ifndef PlatformEventController_h 6c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#define PlatformEventController_h 75d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 85d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#include "core/page/PageLifecycleObserver.h" 95d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#include "platform/Timer.h" 10c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#include "platform/heap/Handle.h" 115d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 12c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 135d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 145d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)// Base controller class for registering controllers with a dispatcher. 155d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)// It watches page visibility and calls stopUpdating when page is not visible. 165d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)// It provides a didUpdateData() callback method which is called when new data 175d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)// it available. 18c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)class PlatformEventController : public PageLifecycleObserver { 195d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)public: 205d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) void startUpdating(); 215d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) void stopUpdating(); 225d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 235d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) // This is called when new data becomes available. 245d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) virtual void didUpdateData() = 0; 255d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 265d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)protected: 27c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) explicit PlatformEventController(Page*); 28c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) virtual ~PlatformEventController(); 295d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 305d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) virtual void registerWithDispatcher() = 0; 315d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) virtual void unregisterWithDispatcher() = 0; 325d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 335d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) // When true initiates a one-shot didUpdateData() when startUpdating() is called. 345d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) virtual bool hasLastData() = 0; 355d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 365d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) bool m_hasEventListener; 375d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 385d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)private: 395d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) // Inherited from PageLifecycleObserver. 40197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch virtual void pageVisibilityChanged() OVERRIDE; 415d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 42c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) void oneShotCallback(Timer<PlatformEventController>*); 435d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 445d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) bool m_isActive; 45c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) Timer<PlatformEventController> m_timer; 465d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)}; 475d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 48c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 495d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 50c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#endif // PlatformEventController_h 51