1/*
2 * Copyright (C) 2012 Google Inc. All rights reserved.
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 <public/WebDeviceMotionData.h>
28
29#include "DeviceMotionData.h"
30#include <wtf/PassRefPtr.h>
31
32using namespace WebCore;
33
34namespace WebKit {
35
36void WebDeviceMotionData::reset()
37{
38 m_private.reset();
39}
40
41void WebDeviceMotionData::assign(const WebDeviceMotionData& other)
42{
43 m_private = other.m_private;
44}
45
46void WebDeviceMotionData::initializeAcceleration(bool canProvideAccelerationX, double accelerationX, bool canProvideAccelerationY, double accelerationY, bool canProvideAccelerationZ, double accelerationZ)
47{
48 if (m_private.isNull())
49 m_private = DeviceMotionData::create();
50 RefPtr<DeviceMotionData::Acceleration> acceleration = DeviceMotionData::Acceleration::create(canProvideAccelerationX, accelerationX, canProvideAccelerationY, accelerationY, canProvideAccelerationZ, accelerationZ);
51 m_private->initializeAcceleration(acceleration.release());
52}
53
54void WebDeviceMotionData::initializeAccelerationIncludingGravity(bool canProvideAccelerationIncludingGravityX, double accelerationIncludingGravityX, bool canProvideAccelerationIncludingGravityY, double accelerationIncludingGravityY, bool canProvideAccelerationIncludingGravityZ, double accelerationIncludingGravityZ)
55{
56 if (m_private.isNull())
57 m_private = DeviceMotionData::create();
58 RefPtr<DeviceMotionData::Acceleration> accelerationIncludingGravity = DeviceMotionData::Acceleration::create(canProvideAccelerationIncludingGravityX, accelerationIncludingGravityX, canProvideAccelerationIncludingGravityY, accelerationIncludingGravityY, canProvideAccelerationIncludingGravityZ, accelerationIncludingGravityZ);
59 m_private->initializeAccelerationIncludingGravity(accelerationIncludingGravity.release());
60}
61
62void WebDeviceMotionData::initializeRotationRate(bool canProvideRotationRateAlpha, double rotationRateAlpha, bool canProvideRotationRateBeta, double rotationRateBeta, bool canProvideRotationRateGamma, double rotationRateGamma)
63{
64 if (m_private.isNull())
65 m_private = DeviceMotionData::create();
66 RefPtr<DeviceMotionData::RotationRate> rotationRate = DeviceMotionData::RotationRate::create(canProvideRotationRateAlpha, rotationRateAlpha, canProvideRotationRateBeta, rotationRateBeta, canProvideRotationRateGamma, rotationRateGamma);
67 m_private->initializeRotationRate(rotationRate.release());
68}
69
70void WebDeviceMotionData::initializeInterval(double interval)
71{
72 if (m_private.isNull())
73 m_private = DeviceMotionData::create();
74 m_private->initializeInterval(interval);
75}
76
77WebDeviceMotionData::operator PassRefPtr<WebCore::DeviceMotionData>() const
78{
79 if (!m_private.get())
80 return DeviceMotionData::create();
81 return m_private.get();
82}
83
84} // namespace WebKit