Home | History | Annotate | Download | only in frame
      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 
     12 namespace 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.
     18 class PlatformEventController : public PageLifecycleObserver {
     19 public:
     20     void startUpdating();
     21     void stopUpdating();
     22 
     23     // This is called when new data becomes available.
     24     virtual void didUpdateData() = 0;
     25 
     26 protected:
     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 
     38 private:
     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