| Index: Source/modules/device_orientation/DeviceOrientationController.cpp
|
| diff --git a/Source/modules/device_orientation/DeviceOrientationController.cpp b/Source/modules/device_orientation/DeviceOrientationController.cpp
|
| index 038c419c6dc7dccf2990f5bc9ccc518e850990a4..d78e016aa58d9308d3a7478178136142da5404cb 100644
|
| --- a/Source/modules/device_orientation/DeviceOrientationController.cpp
|
| +++ b/Source/modules/device_orientation/DeviceOrientationController.cpp
|
| @@ -49,6 +49,8 @@ DeviceOrientationController::~DeviceOrientationController()
|
|
|
| void DeviceOrientationController::didChangeDeviceOrientation(DeviceOrientationData* deviceOrientationData)
|
| {
|
| + if (m_overrideOrientationData)
|
| + return;
|
| dispatchDeviceEvent(DeviceOrientationEvent::create(EventTypeNames::deviceorientation, deviceOrientationData));
|
| }
|
|
|
| @@ -67,15 +69,19 @@ DeviceOrientationController& DeviceOrientationController::from(Document& documen
|
| return *controller;
|
| }
|
|
|
| +DeviceOrientationData* DeviceOrientationController::lastData()
|
| +{
|
| + return m_overrideOrientationData ? m_overrideOrientationData.get() : DeviceOrientationDispatcher::instance().latestDeviceOrientationData();
|
| +}
|
| +
|
| bool DeviceOrientationController::hasLastData()
|
| {
|
| - return DeviceOrientationDispatcher::instance().latestDeviceOrientationData();
|
| + return lastData();
|
| }
|
|
|
| PassRefPtr<Event> DeviceOrientationController::getLastEvent()
|
| {
|
| - return DeviceOrientationEvent::create(EventTypeNames::deviceorientation,
|
| - DeviceOrientationDispatcher::instance().latestDeviceOrientationData());
|
| + return DeviceOrientationEvent::create(EventTypeNames::deviceorientation, lastData());
|
| }
|
|
|
| void DeviceOrientationController::registerWithDispatcher()
|
| @@ -117,4 +123,21 @@ void DeviceOrientationController::didRemoveAllEventListeners(DOMWindow* window)
|
| m_hasEventListener = false;
|
| }
|
|
|
| +void DeviceOrientationController::setOverride(DeviceOrientationData* deviceOrientationData)
|
| +{
|
| + m_overrideOrientationData.clear();
|
| + didChangeDeviceOrientation(deviceOrientationData);
|
| + m_overrideOrientationData = deviceOrientationData;
|
| +}
|
| +
|
| +void DeviceOrientationController::clearOverride()
|
| +{
|
| + if (!m_overrideOrientationData)
|
| + return;
|
| + m_overrideOrientationData.clear();
|
| + DeviceOrientationData* orientation = lastData();
|
| + if (orientation)
|
| + didChangeDeviceOrientation(orientation);
|
| +}
|
| +
|
| } // namespace WebCore
|
|
|