1/*
2 * Copyright (C) 2010 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 *
8 * 1.  Redistributions of source code must retain the above copyright
9 *     notice, this list of conditions and the following disclaimer.
10 * 2.  Redistributions in binary form must reproduce the above copyright
11 *     notice, this list of conditions and the following disclaimer in the
12 *     documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#include "config.h"
27#include "WebDeviceOrientation.h"
28
29#include "DeviceOrientation.h"
30#include <wtf/PassRefPtr.h>
31
32namespace WebKit {
33
34WebDeviceOrientation::WebDeviceOrientation(const PassRefPtr<WebCore::DeviceOrientation>& orientation)
35{
36    if (!orientation) {
37        m_isNull = true;
38        m_canProvideAlpha = false;
39        m_alpha = 0;
40        m_canProvideBeta = false;
41        m_beta = 0;
42        m_canProvideGamma = false;
43        m_gamma = 0;
44        return;
45    }
46
47    m_isNull = false;
48    m_canProvideAlpha = orientation->canProvideAlpha();
49    m_alpha = orientation->alpha();
50    m_canProvideBeta = orientation->canProvideBeta();
51    m_beta = orientation->beta();
52    m_canProvideGamma = orientation->canProvideGamma();
53    m_gamma = orientation->gamma();
54}
55
56WebDeviceOrientation& WebDeviceOrientation::operator=(const PassRefPtr<WebCore::DeviceOrientation>& orientation)
57{
58    if (!orientation) {
59        m_isNull = true;
60        m_canProvideAlpha = false;
61        m_alpha = 0;
62        m_canProvideBeta = false;
63        m_beta = 0;
64        m_canProvideGamma = false;
65        m_gamma = 0;
66        return *this;
67    }
68
69    m_isNull = false;
70    m_canProvideAlpha = orientation->canProvideAlpha();
71    m_alpha = orientation->alpha();
72    m_canProvideBeta = orientation->canProvideBeta();
73    m_beta = orientation->beta();
74    m_canProvideGamma = orientation->canProvideGamma();
75    m_gamma = orientation->gamma();
76    return *this;
77}
78
79WebDeviceOrientation::operator PassRefPtr<WebCore::DeviceOrientation>() const
80{
81    if (m_isNull)
82        return 0;
83    return WebCore::DeviceOrientation::create(m_canProvideAlpha, m_alpha, m_canProvideBeta, m_beta, m_canProvideGamma, m_gamma);
84}
85
86} // namespace WebKit
87