1/*
2 * Copyright (C) 2008 Apple 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 * 1. Redistributions of source code must retain the above copyright
8 *    notice, this list of conditions and the following disclaimer.
9 * 2. 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 APPLE INC. ``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 APPLE INC. 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#ifndef PositionOptions_h
27#define PositionOptions_h
28
29#include <wtf/PassRefPtr.h>
30#include <wtf/RefCounted.h>
31
32namespace WebCore {
33
34class PositionOptions : public RefCounted<PositionOptions> {
35public:
36    static PassRefPtr<PositionOptions> create() { return adoptRef(new PositionOptions()); }
37
38    bool enableHighAccuracy() const { return m_highAccuracy; }
39    void setEnableHighAccuracy(bool enable) { m_highAccuracy = enable; }
40    bool hasTimeout() const { return m_hasTimeout; }
41    int timeout() const
42    {
43        ASSERT(hasTimeout());
44        return m_timeout;
45    }
46    void setTimeout(int timeout)
47    {
48        ASSERT(timeout >= 0);
49        m_hasTimeout = true;
50        m_timeout = timeout;
51    }
52    bool hasMaximumAge() const { return m_hasMaximumAge; }
53    int maximumAge() const
54    {
55        ASSERT(hasMaximumAge());
56        return m_maximumAge;
57    }
58    void clearMaximumAge() { m_hasMaximumAge = false; }
59    void setMaximumAge(int age)
60    {
61        ASSERT(age >= 0);
62        m_hasMaximumAge = true;
63        m_maximumAge = age;
64    }
65
66private:
67    PositionOptions()
68        : m_highAccuracy(false)
69        , m_hasTimeout(false)
70    {
71        setMaximumAge(0);
72    }
73
74    bool m_highAccuracy;
75    bool m_hasTimeout;
76    int m_timeout;
77    bool m_hasMaximumAge;
78    int m_maximumAge;
79};
80
81} // namespace WebCore
82
83#endif // PositionOptions_h
84