2
* Copyright (C) 2009 Google Inc. All rights reserved.
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are
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
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.
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.
32
#include "WebHistoryItem.h"
34
#include "FormController.h"
36
#include "HistoryItem.h"
38
#include "SerializedScriptValue.h"
39
#include "platform/WebSerializedScriptValue.h"
40
#include <public/WebHTTPBody.h>
41
#include <public/WebPoint.h>
42
#include <public/WebString.h>
43
#include <public/WebVector.h>
45
using namespace WebCore;
49
void WebHistoryItem::initialize()
51
m_private = HistoryItem::create();
54
void WebHistoryItem::reset()
59
void WebHistoryItem::assign(const WebHistoryItem& other)
61
m_private = other.m_private;
64
WebString WebHistoryItem::urlString() const
66
return m_private->urlString();
69
void WebHistoryItem::setURLString(const WebString& url)
72
m_private->setURLString(KURL(ParsedURLString, url).string());
75
WebString WebHistoryItem::originalURLString() const
77
return m_private->originalURLString();
80
void WebHistoryItem::setOriginalURLString(const WebString& originalURLString)
83
m_private->setOriginalURLString(originalURLString);
86
WebString WebHistoryItem::referrer() const
88
return m_private->referrer();
91
void WebHistoryItem::setReferrer(const WebString& referrer)
94
m_private->setReferrer(referrer);
97
WebString WebHistoryItem::target() const
99
return m_private->target();
102
void WebHistoryItem::setTarget(const WebString& target)
105
m_private->setTarget(target);
108
WebString WebHistoryItem::parent() const
110
return m_private->parent();
113
void WebHistoryItem::setParent(const WebString& parent)
116
m_private->setParent(parent);
119
WebString WebHistoryItem::title() const
121
return m_private->title();
124
void WebHistoryItem::setTitle(const WebString& title)
127
m_private->setTitle(title);
130
WebString WebHistoryItem::alternateTitle() const
132
return m_private->alternateTitle();
135
void WebHistoryItem::setAlternateTitle(const WebString& alternateTitle)
138
m_private->setAlternateTitle(alternateTitle);
141
double WebHistoryItem::lastVisitedTime() const
143
return m_private->lastVisitedTime();
146
void WebHistoryItem::setLastVisitedTime(double lastVisitedTime)
149
// FIXME: setLastVisitedTime increments the visit count, so we have to
150
// correct for that. Instead, we should have a back-door to just mutate
151
// the last visited time directly.
152
int count = m_private->visitCount();
153
m_private->setLastVisitedTime(lastVisitedTime);
154
m_private->setVisitCount(count);
157
WebPoint WebHistoryItem::scrollOffset() const
159
return m_private->scrollPoint();
162
void WebHistoryItem::setScrollOffset(const WebPoint& scrollOffset)
165
m_private->setScrollPoint(scrollOffset);
168
float WebHistoryItem::pageScaleFactor() const
170
return m_private->pageScaleFactor();
173
void WebHistoryItem::setPageScaleFactor(float scale)
176
m_private->setPageScaleFactor(scale);
179
bool WebHistoryItem::isTargetItem() const
181
return m_private->isTargetItem();
184
void WebHistoryItem::setIsTargetItem(bool isTargetItem)
187
m_private->setIsTargetItem(isTargetItem);
190
int WebHistoryItem::visitCount() const
192
return m_private->visitCount();
195
void WebHistoryItem::setVisitCount(int count)
198
m_private->setVisitCount(count);
201
WebVector<WebString> WebHistoryItem::documentState() const
203
return m_private->documentState();
206
void WebHistoryItem::setDocumentState(const WebVector<WebString>& state)
209
// FIXME: would be nice to avoid the intermediate copy
211
for (size_t i = 0; i < state.size(); ++i)
213
m_private->setDocumentState(ds);
216
long long WebHistoryItem::itemSequenceNumber() const
218
return m_private->itemSequenceNumber();
221
void WebHistoryItem::setItemSequenceNumber(long long itemSequenceNumber)
224
m_private->setItemSequenceNumber(itemSequenceNumber);
227
long long WebHistoryItem::documentSequenceNumber() const
229
return m_private->documentSequenceNumber();
232
void WebHistoryItem::setDocumentSequenceNumber(long long documentSequenceNumber)
235
m_private->setDocumentSequenceNumber(documentSequenceNumber);
238
WebSerializedScriptValue WebHistoryItem::stateObject() const
240
return WebSerializedScriptValue(m_private->stateObject());
243
void WebHistoryItem::setStateObject(const WebSerializedScriptValue& object)
246
m_private->setStateObject(object);
249
WebString WebHistoryItem::httpContentType() const
251
return m_private->formContentType();
254
void WebHistoryItem::setHTTPContentType(const WebString& httpContentType)
257
m_private->setFormContentType(httpContentType);
260
WebHTTPBody WebHistoryItem::httpBody() const
262
return WebHTTPBody(m_private->formData());
265
void WebHistoryItem::setHTTPBody(const WebHTTPBody& httpBody)
268
m_private->setFormData(httpBody);
271
WebVector<WebHistoryItem> WebHistoryItem::children() const
273
return m_private->children();
276
void WebHistoryItem::setChildren(const WebVector<WebHistoryItem>& items)
279
m_private->clearChildren();
280
for (size_t i = 0; i < items.size(); ++i)
281
m_private->addChildItem(items[i]);
284
void WebHistoryItem::appendToChildren(const WebHistoryItem& item)
287
m_private->addChildItem(item);
290
WebVector<WebString> WebHistoryItem::getReferencedFilePaths() const
292
Vector<WebString> filePaths;
293
const FormData* formData = m_private->formData();
295
for (size_t i = 0; i < formData->elements().size(); ++i) {
296
const FormDataElement& element = formData->elements()[i];
297
if (element.m_type == FormDataElement::encodedFile)
298
filePaths.append(element.m_filename);
301
const Vector<String>& selectedFilePaths = WebCore::FormController::getReferencedFilePaths(m_private->documentState());
302
for (size_t i = 0; i < selectedFilePaths.size(); ++i)
303
filePaths.append(selectedFilePaths[i]);
307
WebHistoryItem::WebHistoryItem(const PassRefPtr<HistoryItem>& item)
312
WebHistoryItem& WebHistoryItem::operator=(const PassRefPtr<HistoryItem>& item)
318
WebHistoryItem::operator PassRefPtr<HistoryItem>() const
320
return m_private.get();
323
void WebHistoryItem::ensureMutable()
325
if (!m_private->hasOneRef())
326
m_private = m_private->copy();
329
} // namespace WebKit