initial import
[vuplus_webkit] / Source / WebKit / mac / WebView / WebGeolocationPosition.mm
1 /*
2  * Copyright (C) 2009 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. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #import "WebGeolocationPosition.h"
27
28 #import "WebGeolocationPositionInternal.h"
29 #import <wtf/PassRefPtr.h>
30 #import <wtf/RefPtr.h>
31
32 #if ENABLE(CLIENT_BASED_GEOLOCATION)
33 #import <WebCore/GeolocationPosition.h>
34
35 using namespace WebCore;
36 #endif
37
38 @interface WebGeolocationPositionInternal : NSObject
39 #if ENABLE(CLIENT_BASED_GEOLOCATION)
40 {
41 @public
42     RefPtr<GeolocationPosition> _position;
43 }
44
45 - (id)initWithCoreGeolocationPosition:(PassRefPtr<GeolocationPosition>)coreGeolocationPosition;
46 #endif
47 @end
48
49 @implementation WebGeolocationPositionInternal
50
51 #if ENABLE(CLIENT_BASED_GEOLOCATION)
52 - (id)initWithCoreGeolocationPosition:(PassRefPtr<GeolocationPosition>)coreGeolocationPosition
53 {
54     self = [super init];
55     if (!self)
56         return nil;
57     _position = coreGeolocationPosition;
58     return self;
59 }
60 #endif
61
62 @end
63
64 @implementation WebGeolocationPosition
65
66 #if ENABLE(CLIENT_BASED_GEOLOCATION)
67 GeolocationPosition* core(WebGeolocationPosition *position)
68 {
69     return position ? position->_internal->_position.get() : 0;
70 }
71 #endif
72
73 - (id)initWithTimestamp:(double)timestamp latitude:(double)latitude longitude:(double)longitude accuracy:(double)accuracy
74 {
75     self = [super init];
76     if (!self)
77         return nil;
78 #if ENABLE(CLIENT_BASED_GEOLOCATION)
79     _internal = [[WebGeolocationPositionInternal alloc] initWithCoreGeolocationPosition:GeolocationPosition::create(timestamp, latitude, longitude, accuracy)];
80 #else
81     _internal = [[WebGeolocationPositionInternal alloc] init];
82 #endif
83     return self;
84 }
85
86 - (void)dealloc
87 {
88     [_internal release];
89     [super dealloc];
90 }
91
92 @end