|
1 /* |
|
2 * Copyright (C) 2009 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 are |
|
6 * met: |
|
7 * |
|
8 * * Redistributions of source code must retain the above copyright |
|
9 * notice, this list of conditions and the following disclaimer. |
|
10 * * Redistributions in binary form must reproduce the above |
|
11 * copyright notice, this list of conditions and the following disclaimer |
|
12 * in the documentation and/or other materials provided with the |
|
13 * distribution. |
|
14 * * Neither the name of Google Inc. nor the names of its |
|
15 * contributors may be used to endorse or promote products derived from |
|
16 * this software without specific prior written permission. |
|
17 * |
|
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
|
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
|
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
|
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
|
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
|
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
29 */ |
|
30 |
|
31 #include "config.h" |
|
32 #include "WebHistoryItem.h" |
|
33 |
|
34 #include "FormData.h" |
|
35 #include "HistoryItem.h" |
|
36 #include "KURL.h" |
|
37 |
|
38 #include "WebHTTPBody.h" |
|
39 #include "WebPoint.h" |
|
40 #include "WebSerializedScriptValue.h" |
|
41 #include "WebString.h" |
|
42 #include "WebVector.h" |
|
43 |
|
44 using namespace WebCore; |
|
45 |
|
46 namespace WebKit { |
|
47 |
|
48 void WebHistoryItem::initialize() |
|
49 { |
|
50 m_private = HistoryItem::create(); |
|
51 } |
|
52 |
|
53 void WebHistoryItem::reset() |
|
54 { |
|
55 m_private.reset(); |
|
56 } |
|
57 |
|
58 void WebHistoryItem::assign(const WebHistoryItem& other) |
|
59 { |
|
60 m_private = other.m_private; |
|
61 } |
|
62 |
|
63 WebString WebHistoryItem::urlString() const |
|
64 { |
|
65 return m_private->urlString(); |
|
66 } |
|
67 |
|
68 void WebHistoryItem::setURLString(const WebString& url) |
|
69 { |
|
70 ensureMutable(); |
|
71 m_private->setURLString(KURL(ParsedURLString, url).string()); |
|
72 } |
|
73 |
|
74 WebString WebHistoryItem::originalURLString() const |
|
75 { |
|
76 return m_private->originalURLString(); |
|
77 } |
|
78 |
|
79 void WebHistoryItem::setOriginalURLString(const WebString& originalURLString) |
|
80 { |
|
81 ensureMutable(); |
|
82 m_private->setOriginalURLString(originalURLString); |
|
83 } |
|
84 |
|
85 WebString WebHistoryItem::referrer() const |
|
86 { |
|
87 return m_private->referrer(); |
|
88 } |
|
89 |
|
90 void WebHistoryItem::setReferrer(const WebString& referrer) |
|
91 { |
|
92 ensureMutable(); |
|
93 m_private->setReferrer(referrer); |
|
94 } |
|
95 |
|
96 WebString WebHistoryItem::target() const |
|
97 { |
|
98 return m_private->target(); |
|
99 } |
|
100 |
|
101 void WebHistoryItem::setTarget(const WebString& target) |
|
102 { |
|
103 ensureMutable(); |
|
104 m_private->setTarget(target); |
|
105 } |
|
106 |
|
107 WebString WebHistoryItem::parent() const |
|
108 { |
|
109 return m_private->parent(); |
|
110 } |
|
111 |
|
112 void WebHistoryItem::setParent(const WebString& parent) |
|
113 { |
|
114 ensureMutable(); |
|
115 m_private->setParent(parent); |
|
116 } |
|
117 |
|
118 WebString WebHistoryItem::title() const |
|
119 { |
|
120 return m_private->title(); |
|
121 } |
|
122 |
|
123 void WebHistoryItem::setTitle(const WebString& title) |
|
124 { |
|
125 ensureMutable(); |
|
126 m_private->setTitle(title); |
|
127 } |
|
128 |
|
129 WebString WebHistoryItem::alternateTitle() const |
|
130 { |
|
131 return m_private->alternateTitle(); |
|
132 } |
|
133 |
|
134 void WebHistoryItem::setAlternateTitle(const WebString& alternateTitle) |
|
135 { |
|
136 ensureMutable(); |
|
137 m_private->setAlternateTitle(alternateTitle); |
|
138 } |
|
139 |
|
140 double WebHistoryItem::lastVisitedTime() const |
|
141 { |
|
142 return m_private->lastVisitedTime(); |
|
143 } |
|
144 |
|
145 void WebHistoryItem::setLastVisitedTime(double lastVisitedTime) |
|
146 { |
|
147 ensureMutable(); |
|
148 // FIXME: setLastVisitedTime increments the visit count, so we have to |
|
149 // correct for that. Instead, we should have a back-door to just mutate |
|
150 // the last visited time directly. |
|
151 int count = m_private->visitCount(); |
|
152 m_private->setLastVisitedTime(lastVisitedTime); |
|
153 m_private->setVisitCount(count); |
|
154 } |
|
155 |
|
156 WebPoint WebHistoryItem::scrollOffset() const |
|
157 { |
|
158 return m_private->scrollPoint(); |
|
159 } |
|
160 |
|
161 void WebHistoryItem::setScrollOffset(const WebPoint& scrollOffset) |
|
162 { |
|
163 ensureMutable(); |
|
164 m_private->setScrollPoint(scrollOffset); |
|
165 } |
|
166 |
|
167 bool WebHistoryItem::isTargetItem() const |
|
168 { |
|
169 return m_private->isTargetItem(); |
|
170 } |
|
171 |
|
172 void WebHistoryItem::setIsTargetItem(bool isTargetItem) |
|
173 { |
|
174 ensureMutable(); |
|
175 m_private->setIsTargetItem(isTargetItem); |
|
176 } |
|
177 |
|
178 int WebHistoryItem::visitCount() const |
|
179 { |
|
180 return m_private->visitCount(); |
|
181 } |
|
182 |
|
183 void WebHistoryItem::setVisitCount(int count) |
|
184 { |
|
185 ensureMutable(); |
|
186 m_private->setVisitCount(count); |
|
187 } |
|
188 |
|
189 WebVector<WebString> WebHistoryItem::documentState() const |
|
190 { |
|
191 return m_private->documentState(); |
|
192 } |
|
193 |
|
194 void WebHistoryItem::setDocumentState(const WebVector<WebString>& state) |
|
195 { |
|
196 ensureMutable(); |
|
197 // FIXME: would be nice to avoid the intermediate copy |
|
198 Vector<String> ds; |
|
199 for (size_t i = 0; i < state.size(); ++i) |
|
200 ds.append(state[i]); |
|
201 m_private->setDocumentState(ds); |
|
202 } |
|
203 |
|
204 long long WebHistoryItem::itemSequenceNumber() const |
|
205 { |
|
206 return m_private->itemSequenceNumber(); |
|
207 } |
|
208 |
|
209 void WebHistoryItem::setItemSequenceNumber(long long itemSequenceNumber) |
|
210 { |
|
211 ensureMutable(); |
|
212 m_private->setItemSequenceNumber(itemSequenceNumber); |
|
213 } |
|
214 |
|
215 long long WebHistoryItem::documentSequenceNumber() const |
|
216 { |
|
217 return m_private->documentSequenceNumber(); |
|
218 } |
|
219 |
|
220 void WebHistoryItem::setDocumentSequenceNumber(long long documentSequenceNumber) |
|
221 { |
|
222 ensureMutable(); |
|
223 m_private->setDocumentSequenceNumber(documentSequenceNumber); |
|
224 } |
|
225 |
|
226 WebSerializedScriptValue WebHistoryItem::stateObject() const |
|
227 { |
|
228 return WebSerializedScriptValue(m_private->stateObject()); |
|
229 } |
|
230 |
|
231 void WebHistoryItem::setStateObject(const WebSerializedScriptValue& object) |
|
232 { |
|
233 ensureMutable(); |
|
234 m_private->setStateObject(object); |
|
235 } |
|
236 |
|
237 WebString WebHistoryItem::httpContentType() const |
|
238 { |
|
239 return m_private->formContentType(); |
|
240 } |
|
241 |
|
242 void WebHistoryItem::setHTTPContentType(const WebString& httpContentType) |
|
243 { |
|
244 ensureMutable(); |
|
245 m_private->setFormContentType(httpContentType); |
|
246 } |
|
247 |
|
248 WebHTTPBody WebHistoryItem::httpBody() const |
|
249 { |
|
250 return WebHTTPBody(m_private->formData()); |
|
251 } |
|
252 |
|
253 void WebHistoryItem::setHTTPBody(const WebHTTPBody& httpBody) |
|
254 { |
|
255 ensureMutable(); |
|
256 m_private->setFormData(httpBody); |
|
257 } |
|
258 |
|
259 WebVector<WebHistoryItem> WebHistoryItem::children() const |
|
260 { |
|
261 return m_private->children(); |
|
262 } |
|
263 |
|
264 void WebHistoryItem::setChildren(const WebVector<WebHistoryItem>& items) |
|
265 { |
|
266 ensureMutable(); |
|
267 m_private->clearChildren(); |
|
268 for (size_t i = 0; i < items.size(); ++i) |
|
269 m_private->addChildItem(items[i]); |
|
270 } |
|
271 |
|
272 void WebHistoryItem::appendToChildren(const WebHistoryItem& item) |
|
273 { |
|
274 ensureMutable(); |
|
275 m_private->addChildItem(item); |
|
276 } |
|
277 |
|
278 WebHistoryItem::WebHistoryItem(const PassRefPtr<HistoryItem>& item) |
|
279 : m_private(item) |
|
280 { |
|
281 } |
|
282 |
|
283 WebHistoryItem& WebHistoryItem::operator=(const PassRefPtr<HistoryItem>& item) |
|
284 { |
|
285 m_private = item; |
|
286 return *this; |
|
287 } |
|
288 |
|
289 WebHistoryItem::operator PassRefPtr<HistoryItem>() const |
|
290 { |
|
291 return m_private.get(); |
|
292 } |
|
293 |
|
294 void WebHistoryItem::ensureMutable() |
|
295 { |
|
296 if (!m_private->hasOneRef()) |
|
297 m_private = m_private->copy(); |
|
298 } |
|
299 |
|
300 } // namespace WebKit |