• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
11 namespace 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.
17 class DeviceEventControllerBase : public PageLifecycleObserver {
18 public:
19     void startUpdating();
20     void stopUpdating();
21 
22     // This is called when new data becomes available.
23     virtual void didUpdateData() = 0;
24 
25 protected:
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 
37 private:
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