10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/* 20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) 30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch This library is free software; you can redistribute it and/or 50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch modify it under the terms of the GNU Library General Public 60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch License as published by the Free Software Foundation; either 70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch version 2 of the License, or (at your option) any later version. 80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch This library is distributed in the hope that it will be useful, 100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch but WITHOUT ANY WARRANTY; without even the implied warranty of 110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Library General Public License for more details. 130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch You should have received a copy of the GNU Library General Public License 150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch along with this library; see the file COPYING.LIB. If not, write to 160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Boston, MA 02110-1301, USA. 180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "config.h" 210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "HistoryItem.h" 220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "FormData.h" 24dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include <wtf/text/CString.h> 250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 26cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockbool WebCore::HistoryItem::restoreState(QDataStream& in, int version) 270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 28cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // we only support version 1 for now 29cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 30cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if (version != 1) 31cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block return false; 32cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 33dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WTF::String url; 34dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WTF::String title; 35dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WTF::String altTitle; 36dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WTF::String orginalUrl; 37dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WTF::String referrer; 38dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WTF::String target; 39dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WTF::String parrent; 400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch double lastVisitedTime; 410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool validUserData; 42dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WTF::String parent; 430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool lastVisitWasHTTPNonGet; 440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool lastVisitWasFailure; 450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool isTargetItem; 460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch int visitCount; 47dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WTF::Vector<WTF::String> documentState; 480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebCore::IntPoint scrollPoint; 490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WTF::Vector<int> weeklyVisitCounts; 500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WTF::Vector<int> dailyVisitCounts; 51231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // bool loadFormdata; 52dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch // WTF::String formContentType; 530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // WTF::Vector<char> formData; 540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch in >> url >> title >> altTitle >> lastVisitedTime >> orginalUrl >> referrer >> target >> parent; 560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch in >> lastVisitWasHTTPNonGet >> lastVisitWasFailure >> isTargetItem >> visitCount >> documentState; 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch in >> scrollPoint >> dailyVisitCounts >> weeklyVisitCounts; 580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /*in >> loadFormdata; 590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (loadFormdata) { 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch in >> formContentType >> formData; 610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // direct assigned (!) 620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_formContentType = formContentType; 630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_formData = FormData::create(CString(formData)); 640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }*/ 650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // use setters 660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch adoptVisitCounts(dailyVisitCounts, weeklyVisitCounts); 670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setScrollPoint(scrollPoint); 680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setDocumentState(documentState); 690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setVisitCount(visitCount); 700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setIsTargetItem(isTargetItem); 710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setLastVisitWasFailure(lastVisitWasFailure); 720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setLastVisitWasHTTPNonGet(lastVisitWasHTTPNonGet); 730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setParent(parent); 740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setTarget(target); 750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setReferrer(referrer); 760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setOriginalURLString(orginalUrl); 770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setURLString(url); 780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setLastVisitedTime(lastVisitedTime); 790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setTitle(title); 800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setAlternateTitle(altTitle); 810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // at the end load userData 830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch in >> validUserData; 840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (validUserData) { 850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QVariant tmp; 860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch in >> tmp; 870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch setUserData(tmp); 880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return in.status() == QDataStream::Ok; 910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 93cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve BlockQDataStream& WebCore::HistoryItem::saveState(QDataStream& out, int version) const 940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 95cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // we only support version 1 for now. 96cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if (version != 1) 97cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block return out; 98cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch out << urlString() << title() << alternateTitle() << lastVisitedTime(); 1000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch out << originalURLString() << referrer() << target() << parent(); 1010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch out << lastVisitWasHTTPNonGet() << lastVisitWasFailure() << isTargetItem(); 1020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch out << visitCount() << documentState() << scrollPoint(); 1030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch out << dailyVisitCounts() << weeklyVisitCounts(); 1040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /*if (m_formData) { 1050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch out << true; 1060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch out << formContentType(); 1070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch out << m_formData->flatten(); 1080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } else { 1090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch out << false; 1100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }*/ 1110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // save user data 1120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (userData().isValid()) 1130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch out << true << userData(); 1140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else 1150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch out << false; 1160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return out; 1180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 120