1 /* 2 * Copyright 2010, The Android Open Source Project 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * * Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * * Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26 #include "config.h" 27 #include "modules/device_orientation/DeviceOrientationEvent.h" 28 29 #include "core/dom/EventNames.h" 30 #include "modules/device_orientation/DeviceOrientationData.h" 31 32 namespace WebCore { 33 34 DeviceOrientationEvent::~DeviceOrientationEvent() 35 { 36 } 37 38 DeviceOrientationEvent::DeviceOrientationEvent() 39 : m_orientation(DeviceOrientationData::create()) 40 { 41 ScriptWrappable::init(this); 42 } 43 44 DeviceOrientationEvent::DeviceOrientationEvent(const AtomicString& eventType, DeviceOrientationData* orientation) 45 : Event(eventType, false, false) // Can't bubble, not cancelable 46 , m_orientation(orientation) 47 { 48 ScriptWrappable::init(this); 49 } 50 51 void DeviceOrientationEvent::initDeviceOrientationEvent(const AtomicString& type, bool bubbles, bool cancelable, DeviceOrientationData* orientation) 52 { 53 if (dispatched()) 54 return; 55 56 initEvent(type, bubbles, cancelable); 57 m_orientation = orientation; 58 } 59 60 double DeviceOrientationEvent::alpha(bool& isNull) const 61 { 62 if (m_orientation->canProvideAlpha()) 63 return m_orientation->alpha(); 64 65 isNull = true; 66 return 0; 67 } 68 69 double DeviceOrientationEvent::beta(bool& isNull) const 70 { 71 if (m_orientation->canProvideBeta()) 72 return m_orientation->beta(); 73 74 isNull = true; 75 return 0; 76 } 77 78 double DeviceOrientationEvent::gamma(bool& isNull) const 79 { 80 if (m_orientation->canProvideGamma()) 81 return m_orientation->gamma(); 82 83 isNull = true; 84 return 0; 85 } 86 87 bool DeviceOrientationEvent::absolute(bool& isNull) const 88 { 89 if (m_orientation->canProvideAbsolute()) 90 return m_orientation->absolute(); 91 92 isNull = true; 93 return 0; 94 } 95 96 const AtomicString& DeviceOrientationEvent::interfaceName() const 97 { 98 return eventNames().interfaceForDeviceOrientationEvent; 99 } 100 101 } // namespace WebCore 102