1643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/* 2643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Copyright (C) 2009 Google Inc. All rights reserved. 3643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 4643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Redistribution and use in source and binary forms, with or without 5643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * modification, are permitted provided that the following conditions are 6643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * met: 7643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 8643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions of source code must retain the above copyright 9643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer. 10643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions in binary form must reproduce the above 11643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * copyright notice, this list of conditions and the following disclaimer 12643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * in the documentation and/or other materials provided with the 13643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * distribution. 14643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Neither the name of Google Inc. nor the names of its 15643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * contributors may be used to endorse or promote products derived from 16643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * this software without specific prior written permission. 17643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 18643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */ 30643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 31643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "config.h" 32643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebHistoryItem.h" 33643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 34643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "FormData.h" 35643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "HistoryItem.h" 36643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "KURL.h" 37643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 38643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebHTTPBody.h" 39643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebPoint.h" 40dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "WebSerializedScriptValue.h" 41643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebString.h" 42643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebVector.h" 43643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 44643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockusing namespace WebCore; 45643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 46643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebKit { 47643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 48643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::initialize() 49643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 50dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block m_private = HistoryItem::create(); 51643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 52643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 53643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::reset() 54643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 55dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block m_private.reset(); 56643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 57643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 58643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::assign(const WebHistoryItem& other) 59643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 60dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block m_private = other.m_private; 61643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 62643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 63643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebHistoryItem::urlString() const 64643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 65643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->urlString(); 66643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 67643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 68643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::setURLString(const WebString& url) 69643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 70643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 71643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->setURLString(KURL(ParsedURLString, url).string()); 72643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 73643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 74643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebHistoryItem::originalURLString() const 75643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 76643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->originalURLString(); 77643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 78643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 79643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::setOriginalURLString(const WebString& originalURLString) 80643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 81643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 82643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->setOriginalURLString(originalURLString); 83643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 84643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 85643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebHistoryItem::referrer() const 86643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 87643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->referrer(); 88643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 89643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 90643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::setReferrer(const WebString& referrer) 91643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 92643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 93643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->setReferrer(referrer); 94643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 95643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 96643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebHistoryItem::target() const 97643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 98643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->target(); 99643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 100643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 101643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::setTarget(const WebString& target) 102643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 103643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 104643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->setTarget(target); 105643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 106643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 107643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebHistoryItem::parent() const 108643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 109643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->parent(); 110643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 111643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 112643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::setParent(const WebString& parent) 113643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 114643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 115643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->setParent(parent); 116643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 117643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 118643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebHistoryItem::title() const 119643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 120643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->title(); 121643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 122643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 123643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::setTitle(const WebString& title) 124643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 125643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 126643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->setTitle(title); 127643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 128643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 129643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebHistoryItem::alternateTitle() const 130643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 131643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->alternateTitle(); 132643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 133643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 134643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::setAlternateTitle(const WebString& alternateTitle) 135643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 136643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 137643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->setAlternateTitle(alternateTitle); 138643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 139643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 140643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockdouble WebHistoryItem::lastVisitedTime() const 141643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 142643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->lastVisitedTime(); 143643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 144643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 145643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::setLastVisitedTime(double lastVisitedTime) 146643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 147643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 148643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // FIXME: setLastVisitedTime increments the visit count, so we have to 149643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // correct for that. Instead, we should have a back-door to just mutate 150643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // the last visited time directly. 151643ca7872b450ea4efacab6188849e5aac2ba161Steve Block int count = m_private->visitCount(); 152643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->setLastVisitedTime(lastVisitedTime); 153643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->setVisitCount(count); 154643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 155643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 156643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebPoint WebHistoryItem::scrollOffset() const 157643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 158643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->scrollPoint(); 159643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 160643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 161643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::setScrollOffset(const WebPoint& scrollOffset) 162643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 163643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 164643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->setScrollPoint(scrollOffset); 165643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 166643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 167643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebHistoryItem::isTargetItem() const 168643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 169643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->isTargetItem(); 170643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 171643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 172643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::setIsTargetItem(bool isTargetItem) 173643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 174643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 175643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->setIsTargetItem(isTargetItem); 176643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 177643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 178643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockint WebHistoryItem::visitCount() const 179643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 180643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->visitCount(); 181643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 182643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 183643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::setVisitCount(int count) 184643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 185643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 186643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->setVisitCount(count); 187643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 188643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 189643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebVector<WebString> WebHistoryItem::documentState() const 190643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 191643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->documentState(); 192643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 193643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 194643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::setDocumentState(const WebVector<WebString>& state) 195643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 196643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 197643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // FIXME: would be nice to avoid the intermediate copy 198643ca7872b450ea4efacab6188849e5aac2ba161Steve Block Vector<String> ds; 199643ca7872b450ea4efacab6188849e5aac2ba161Steve Block for (size_t i = 0; i < state.size(); ++i) 200643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ds.append(state[i]); 201643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->setDocumentState(ds); 202643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 203643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 20406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenlong long WebHistoryItem::itemSequenceNumber() const 20506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{ 20606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return m_private->itemSequenceNumber(); 20706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} 20806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 20906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid WebHistoryItem::setItemSequenceNumber(long long itemSequenceNumber) 21006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{ 21106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen ensureMutable(); 21206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen m_private->setItemSequenceNumber(itemSequenceNumber); 21306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} 21406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 215d0825bca7fe65beaee391d30da42e937db621564Steve Blocklong long WebHistoryItem::documentSequenceNumber() const 216d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 217d0825bca7fe65beaee391d30da42e937db621564Steve Block return m_private->documentSequenceNumber(); 218d0825bca7fe65beaee391d30da42e937db621564Steve Block} 219d0825bca7fe65beaee391d30da42e937db621564Steve Block 220d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid WebHistoryItem::setDocumentSequenceNumber(long long documentSequenceNumber) 221d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 222d0825bca7fe65beaee391d30da42e937db621564Steve Block ensureMutable(); 223d0825bca7fe65beaee391d30da42e937db621564Steve Block m_private->setDocumentSequenceNumber(documentSequenceNumber); 224d0825bca7fe65beaee391d30da42e937db621564Steve Block} 225d0825bca7fe65beaee391d30da42e937db621564Steve Block 226dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockWebSerializedScriptValue WebHistoryItem::stateObject() const 227dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 228dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return WebSerializedScriptValue(m_private->stateObject()); 229dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 230dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 231dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid WebHistoryItem::setStateObject(const WebSerializedScriptValue& object) 232dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 233dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block ensureMutable(); 234dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block m_private->setStateObject(object); 235dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 236dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 237643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebHistoryItem::httpContentType() const 238643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 239643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->formContentType(); 240643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 241643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 242643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::setHTTPContentType(const WebString& httpContentType) 243643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 244643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 245643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->setFormContentType(httpContentType); 246643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 247643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 248643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebHTTPBody WebHistoryItem::httpBody() const 249643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 250643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebHTTPBody(m_private->formData()); 251643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 252643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 253643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::setHTTPBody(const WebHTTPBody& httpBody) 254643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 255643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 256643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->setFormData(httpBody); 257643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 258643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 259643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebVector<WebHistoryItem> WebHistoryItem::children() const 260643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 261643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->children(); 262643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 263643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 264643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::setChildren(const WebVector<WebHistoryItem>& items) 265643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 266643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 267643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->clearChildren(); 268643ca7872b450ea4efacab6188849e5aac2ba161Steve Block for (size_t i = 0; i < items.size(); ++i) 269643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->addChildItem(items[i]); 270643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 271643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 272643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::appendToChildren(const WebHistoryItem& item) 273643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 274643ca7872b450ea4efacab6188849e5aac2ba161Steve Block ensureMutable(); 275643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->addChildItem(item); 276643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 277643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 278643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebHistoryItem::WebHistoryItem(const PassRefPtr<HistoryItem>& item) 279dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block : m_private(item) 280643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 281643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 282643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 283643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebHistoryItem& WebHistoryItem::operator=(const PassRefPtr<HistoryItem>& item) 284643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 285dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block m_private = item; 286643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return *this; 287643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 288643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 289643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebHistoryItem::operator PassRefPtr<HistoryItem>() const 290643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 291dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return m_private.get(); 292643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 293643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 294643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebHistoryItem::ensureMutable() 295643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 296643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private->hasOneRef()) 297dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block m_private = m_private->copy(); 298643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 299643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 300643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} // namespace WebKit 301