Index: Source/modules/device_orientation/DeviceMotionController.h |
diff --git a/Source/modules/device_orientation/DeviceMotionController.h b/Source/modules/device_orientation/DeviceMotionController.h |
index f215c4805249b6020d5b56b5776fde95532a1e92..685e39a2b16d9ff548f7779a1d795f72c597e446 100644 |
--- a/Source/modules/device_orientation/DeviceMotionController.h |
+++ b/Source/modules/device_orientation/DeviceMotionController.h |
@@ -27,33 +27,58 @@ |
#ifndef DeviceMotionController_h |
#define DeviceMotionController_h |
-#include "core/page/DeviceController.h" |
+#include "core/dom/Event.h" |
+#include "core/page/DOMWindow.h" |
+#include "core/platform/RefCountedSupplement.h" |
+#include "core/platform/Timer.h" |
+#include <wtf/HashCountedSet.h> |
namespace WebCore { |
-class DeviceMotionClient; |
class DeviceMotionData; |
-class DeviceMotionController : public DeviceController { |
+// This class doesn't inherit from DeviceController anymore, which is a temporary solution. |
+// Once the device orientation switches to the client-less design, move some of the |
+// methods in this class to the DeviceController. |
+class DeviceMotionController : public RefCountedSupplement<Page, DeviceMotionController> { |
+ |
public: |
- ~DeviceMotionController() { }; |
+ virtual ~DeviceMotionController(); |
- static PassOwnPtr<DeviceMotionController> create(DeviceMotionClient*); |
+ static PassRefPtr<DeviceMotionController> create(); |
void didChangeDeviceMotion(DeviceMotionData*); |
- DeviceMotionClient* deviceMotionClient(); |
- virtual bool hasLastData() OVERRIDE; |
- virtual PassRefPtr<Event> getLastEvent() OVERRIDE; |
+ virtual bool hasLastData(); |
+ virtual PassRefPtr<Event> getLastEvent(); |
static const char* supplementName(); |
static DeviceMotionController* from(Page*); |
static bool isActiveAt(Page*); |
+ // FIXME move these methods to DeviceController |
abarth-chromium
2013/05/06 17:04:17
FIXME -> FIXME:
timvolodine
2013/05/07 15:40:53
Done.
|
+ void dispatchDeviceEvent(const PassRefPtr<Event>); |
+ bool isActive() { return !m_listeners.isEmpty(); } |
+ |
+ void addDeviceEventListener(DOMWindow*); |
+ void removeDeviceEventListener(DOMWindow*); |
+ void removeAllDeviceEventListeners(DOMWindow*); |
+ |
private: |
- explicit DeviceMotionController(DeviceMotionClient*); |
+ DeviceMotionController() : m_timer(this, &DeviceMotionController::fireDeviceEvent) { } |
+ |
+ void startUpdating(); |
+ void stopUpdating(); |
+ void fireDeviceEvent(Timer<DeviceMotionController>*); |
+ void dispatchEventToActiveDocuments(Vector<RefPtr<DOMWindow> >&, const PassRefPtr<Event>); |
+ |
+ HashCountedSet<RefPtr<DOMWindow> > m_listeners; |
+ HashCountedSet<RefPtr<DOMWindow> > m_lastEventListeners; |
+ Timer<DeviceMotionController> m_timer; |
}; |
+void provideDeviceMotionTo(Page*); |
+ |
} // namespace WebCore |
#endif // DeviceMotionController_h |