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 "modules/device_orientation/DeviceOrientationData.h"
30
31namespace blink {
32
33DeviceOrientationEvent::~DeviceOrientationEvent()
34{
35}
36
37DeviceOrientationEvent::DeviceOrientationEvent()
38    : m_orientation(DeviceOrientationData::create())
39{
40}
41
42DeviceOrientationEvent::DeviceOrientationEvent(const AtomicString& eventType, DeviceOrientationData* orientation)
43    : Event(eventType, false, false) // Can't bubble, not cancelable
44    , m_orientation(orientation)
45{
46}
47
48void DeviceOrientationEvent::initDeviceOrientationEvent(const AtomicString& type, bool bubbles, bool cancelable, DeviceOrientationData* orientation)
49{
50    if (dispatched())
51        return;
52
53    initEvent(type, bubbles, cancelable);
54    m_orientation = orientation;
55}
56
57double DeviceOrientationEvent::alpha(bool& isNull) const
58{
59    if (m_orientation->canProvideAlpha())
60        return m_orientation->alpha();
61
62    isNull = true;
63    return 0;
64}
65
66double DeviceOrientationEvent::beta(bool& isNull) const
67{
68    if (m_orientation->canProvideBeta())
69        return m_orientation->beta();
70
71    isNull = true;
72    return 0;
73}
74
75double DeviceOrientationEvent::gamma(bool& isNull) const
76{
77    if (m_orientation->canProvideGamma())
78        return m_orientation->gamma();
79
80    isNull = true;
81    return 0;
82}
83
84bool DeviceOrientationEvent::absolute(bool& isNull) const
85{
86    if (m_orientation->canProvideAbsolute())
87        return m_orientation->absolute();
88
89    isNull = true;
90    return 0;
91}
92
93const AtomicString& DeviceOrientationEvent::interfaceName() const
94{
95    return EventNames::DeviceOrientationEvent;
96}
97
98void DeviceOrientationEvent::trace(Visitor* visitor)
99{
100    visitor->trace(m_orientation);
101    Event::trace(visitor);
102}
103
104} // namespace blink
105