[WebKit2 API] Add properties to get textRects from a WKDOMRange or WKDOMNode
[WebKit-https.git] / Source / WebKit2 / WebProcess / InjectedBundle / API / mac / WKDOMRange.mm
1 /*
2  * Copyright (C) 2012 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 "config.h"
27
28 #if defined(__LP64__) && defined(__clang__)
29
30 #import "WKDOMRange.h"
31
32 #import "WKDOMInternals.h"
33 #import <WebCore/Document.h>
34
35 @implementation WKDOMRange
36
37 - (id)_initWithImpl:(WebCore::Range*)impl
38 {
39     self = [super init];
40     if (!self)
41         return nil;
42
43     _impl = impl;
44     WebKit::WKDOMRangeCache().add(impl, self);
45
46     return self;
47 }
48
49 - (id)initWithDocument:(WKDOMDocument *)document
50 {
51     RefPtr<WebCore::Range> range = WebCore::Range::create(WebKit::toWebCoreDocument(document));
52     self = [self _initWithImpl:range.get()];
53     if (!self)
54         return nil;
55
56     return self;
57 }
58
59 - (void)dealloc
60 {
61     WebKit::WKDOMRangeCache().remove(_impl.get());
62     [super dealloc];
63 }
64
65 - (void)setStart:(WKDOMNode *)node offset:(int)offset
66 {
67     // FIXME: Do something about the exception.
68     WebCore::ExceptionCode ec = 0;
69     _impl->setStart(WebKit::toWebCoreNode(node), offset, ec);
70 }
71
72 - (void)setEnd:(WKDOMNode *)node offset:(int)offset
73 {
74     // FIXME: Do something about the exception.
75     WebCore::ExceptionCode ec = 0;
76     _impl->setEnd(WebKit::toWebCoreNode(node), offset, ec);
77 }
78
79 - (void)collapse:(BOOL)toStart
80 {
81     // FIXME: Do something about the exception.
82     WebCore::ExceptionCode ec = 0;
83     _impl->collapse(toStart, ec);
84 }
85
86 - (void)selectNode:(WKDOMNode *)node
87 {
88     // FIXME: Do something about the exception.
89     WebCore::ExceptionCode ec = 0;
90     _impl->selectNode(WebKit::toWebCoreNode(node), ec);
91 }
92
93 - (void)selectNodeContents:(WKDOMNode *)node
94 {
95     // FIXME: Do something about the exception.
96     WebCore::ExceptionCode ec = 0;
97     _impl->selectNodeContents(WebKit::toWebCoreNode(node), ec);
98 }
99
100 - (WKDOMNode *)startContainer
101 {
102     // FIXME: Do something about the exception.
103     WebCore::ExceptionCode ec = 0;
104     return WebKit::toWKDOMNode(_impl->startContainer(ec));
105 }
106
107 - (NSInteger)startOffset
108 {
109     // FIXME: Do something about the exception.
110     WebCore::ExceptionCode ec = 0;
111     return _impl->startOffset(ec);
112 }
113
114 - (WKDOMNode *)endContainer
115 {
116     // FIXME: Do something about the exception.
117     WebCore::ExceptionCode ec = 0;
118     return WebKit::toWKDOMNode(_impl->endContainer(ec));
119 }
120
121 - (NSInteger)endOffset
122 {
123     // FIXME: Do something about the exception.
124     WebCore::ExceptionCode ec = 0;
125     return _impl->endOffset(ec);
126 }
127
128 - (NSString *)text
129 {
130     return _impl->text();
131 }
132
133 - (BOOL)isCollapsed
134 {
135     // FIXME: Do something about the exception.
136     WebCore::ExceptionCode ec = 0;
137     return _impl->collapsed(ec);
138 }
139
140 - (NSArray *)textRects
141 {
142     _impl->ownerDocument()->updateLayoutIgnorePendingStylesheets();
143     Vector<WebCore::IntRect> rects;
144     _impl->textRects(rects);
145     return WebKit::toNSArray(rects);
146 }
147
148 @end
149
150 #endif // defined(__LP64__) && defined(__clang__)