18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This library is free software; you can redistribute it and/or 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project modify it under the terms of the GNU Library General Public 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project License as published by the Free Software Foundation; either 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project version 2 of the License, or (at your option) any later version. 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project This library is distributed in the hope that it will be useful, 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project but WITHOUT ANY WARRANTY; without even the implied warranty of 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Library General Public License for more details. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project You should have received a copy of the GNU Library General Public License 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project along with this library; see the file COPYING.LIB. If not, write to 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Boston, MA 02110-1301, USA. 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "qwebhistory.h" 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "qwebhistory_p.h" 23231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "qwebframe_p.h" 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 25e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke#include "BackForwardListImpl.h" 262bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "IconDatabaseBase.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Image.h" 282bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "IntSize.h" 29635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "KURL.h" 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Page.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PageGroup.h" 322bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "PlatformString.h" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <QSharedData> 350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <QDebug> 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 37cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockenum { 38cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block InitialHistoryVersion = 1, 39cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block DefaultHistoryVersion = InitialHistoryVersion 40cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block}; 41cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \class QWebHistoryItem 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.4 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief The QWebHistoryItem class represents one item in the history of a QWebPage 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 47231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block \inmodule QtWebKit 48231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Each QWebHistoryItem instance represents an entry in the history stack of a Web page, 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project containing information about the page, its location, and when it was last visited. 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The following table shows the properties of the page held by the history item, and 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project the functions used to access them. 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \table 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \header \o Function \o Description 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \row \o title() \o The page title. 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \row \o url() \o The location of the page. 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \row \o originalUrl() \o The URL used to access the page. 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \row \o lastVisited() \o The date and time of the user's last visit to the page. 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \row \o icon() \o The icon associated with the page that was provided by the server. 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \row \o userData() \o The user specific data that was stored with the history item. 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \endtable 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \note QWebHistoryItem objects are value based, but \e{explicitly shared}. Changing 660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch a QWebHistoryItem instance by calling setUserData() will change all copies of that 670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch instance. 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa QWebHistory, QWebPage::history(), QWebHistoryInterface 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Constructs a history item from \a other. The new item and \a other 740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch will share their data, and modifying either this item or \a other will 750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch modify both instances. 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHistoryItem::QWebHistoryItem(const QWebHistoryItem &other) 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : d(other.d) 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Assigns the \a other history item to this. This item and \a other 840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch will share their data, and modifying either this item or \a other will 850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch modify both instances. 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHistoryItem &QWebHistoryItem::operator=(const QWebHistoryItem &other) 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d = other.d; 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return *this; 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Destroys the history item. 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHistoryItem::~QWebHistoryItem() 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the original URL associated with the history item. 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa url() 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQUrl QWebHistoryItem::originalUrl() const 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->item) 108a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return d->item->originalURL(); 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QUrl(); 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the URL associated with the history item. 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa originalUrl(), title(), lastVisited() 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQUrl QWebHistoryItem::url() const 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->item) 121a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return d->item->url(); 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QUrl(); 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the title of the page associated with the history item. 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa icon(), url(), lastVisited() 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQString QWebHistoryItem::title() const 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->item) 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->item->title(); 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QString(); 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the date and time that the page associated with the item was last visited. 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa title(), icon(), url() 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQDateTime QWebHistoryItem::lastVisited() const 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project //FIXME : this will be wrong unless we correctly set lastVisitedTime ourselves 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->item) 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QDateTime::fromTime_t((uint)d->item->lastVisitedTime()); 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QDateTime(); 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the icon associated with the history item. 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa title(), url(), lastVisited() 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQIcon QWebHistoryItem::icon() const 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->item) 1612bde8e466a4451c7319e3a072d118917957d6554Steve Block return *WebCore::iconDatabase().synchronousIconForPageURL(d->item->url(), WebCore::IntSize(16, 16))->nativeImageForCurrentFrame(); 1622bde8e466a4451c7319e3a072d118917957d6554Steve Block 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QIcon(); 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.5 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the user specific data that was stored with the history item. 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa setUserData() 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQVariant QWebHistoryItem::userData() const 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->item) 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->item->userData(); 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QVariant(); 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.5 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 182635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Stores user specific data \a userData with the history item. 1830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \note All copies of this item will be modified. 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa userData() 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebHistoryItem::setUserData(const QVariant& userData) 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (d->item) 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->item->setUserData(userData); 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!* 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \internal 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHistoryItem::QWebHistoryItem(QWebHistoryItemPrivate *priv) 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d = priv; 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.5 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns whether this is a valid history item. 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool QWebHistoryItem::isValid() const 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->item; 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \class QWebHistory 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.4 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \brief The QWebHistory class represents the history of a QWebPage 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 216231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block \inmodule QtWebKit 217231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Each QWebPage instance contains a history of visited pages that can be accessed 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project by QWebPage::history(). QWebHistory represents this history and makes it possible 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project to navigate it. 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The history uses the concept of a \e{current item}, dividing the pages visited 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project into those that can be visited by navigating \e back and \e forward using the 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project back() and forward() functions. The current item can be obtained by calling 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project currentItem(), and an arbitrary item in the history can be made the current 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project item by passing it to goToItem(). 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project A list of items describing the pages that can be visited by going back can be 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project obtained by calling the backItems() function; similarly, items describing the 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pages ahead of the current page can be obtained with the forwardItems() function. 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project The total list of items is obtained with the items() function. 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Just as with containers, functions are available to examine the history in terms 2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project of a list. Arbitrary items in the history can be obtained with itemAt(), the total 2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project number of items is given by count(), and the history can be cleared with the 2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project clear() function. 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 238cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebHistory's state can be saved to a QDataStream using the >> operator and loaded 239cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block by using the << operator. 2400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa QWebHistoryItem, QWebHistoryInterface, QWebPage 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHistory::QWebHistory() 2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : d(0) 2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHistory::~QWebHistory() 2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete d; 2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Clears the history. 2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa count(), items() 2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebHistory::clear() 2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 262e14391e94c850b8bd03680c23b38978db68687a8John Reck //shortcut to private BackForwardListImpl 263e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* lst = d->lst; 2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 265231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block //clear visited links 266e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke WebCore::Page* page = static_cast<WebCore::BackForwardListImpl*>(lst)->page(); 2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (page && page->groupPtr()) 2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project page->groupPtr()->removeVisitedLinks(); 2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 270231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block //if count() == 0 then just return 271231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (!lst->entries().size()) 272231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return; 273231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 274231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block RefPtr<WebCore::HistoryItem> current = lst->currentItem(); 275231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block int capacity = lst->capacity(); 276231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block lst->setCapacity(0); 277231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 278231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block lst->setCapacity(capacity); //revert capacity 279231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block lst->addItem(current.get()); //insert old current item 280231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block lst->goToItem(current.get()); //and set it as current again 281231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 282231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block d->page()->updateNavigationActions(); 2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns a list of all items currently in the history. 2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa count(), clear() 2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQList<QWebHistoryItem> QWebHistory::items() const 2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const WebCore::HistoryItemVector &items = d->lst->entries(); 2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QList<QWebHistoryItem> ret; 295231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block for (unsigned i = 0; i < items.size(); ++i) { 2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebHistoryItemPrivate *priv = new QWebHistoryItemPrivate(items[i].get()); 2978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ret.append(QWebHistoryItem(priv)); 2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return ret; 3008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the list of items in the backwards history list. 3048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project At most \a maxItems entries are returned. 3058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa forwardItems() 3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 3088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQList<QWebHistoryItem> QWebHistory::backItems(int maxItems) const 3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::HistoryItemVector items(maxItems); 3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->lst->backListWithLimit(maxItems, items); 3128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QList<QWebHistoryItem> ret; 314231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block for (unsigned i = 0; i < items.size(); ++i) { 3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebHistoryItemPrivate *priv = new QWebHistoryItemPrivate(items[i].get()); 3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ret.append(QWebHistoryItem(priv)); 3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return ret; 3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 3228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the list of items in the forward history list. 3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project At most \a maxItems entries are returned. 3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa backItems() 3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQList<QWebHistoryItem> QWebHistory::forwardItems(int maxItems) const 3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::HistoryItemVector items(maxItems); 3308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->lst->forwardListWithLimit(maxItems, items); 3318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QList<QWebHistoryItem> ret; 333231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block for (unsigned i = 0; i < items.size(); ++i) { 3348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebHistoryItemPrivate *priv = new QWebHistoryItemPrivate(items[i].get()); 3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ret.append(QWebHistoryItem(priv)); 3368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return ret; 3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns true if there is an item preceding the current item in the history; 3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project otherwise returns false. 3438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa canGoForward() 3458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 3468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool QWebHistory::canGoBack() const 3478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->lst->backListCount() > 0; 3498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns true if we have an item to go forward to; otherwise returns false. 3538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa canGoBack() 3558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool QWebHistory::canGoForward() const 3578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->lst->forwardListCount() > 0; 3598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 3628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Set the current item to be the previous item in the history and goes to the 3638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project corresponding page; i.e., goes back one history item. 3648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa forward(), goToItem() 3668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 3678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebHistory::back() 3688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 369231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (canGoBack()) { 370e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke WebCore::Page* page = static_cast<WebCore::BackForwardListImpl*>(d->lst)->page(); 37106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen page->goToItem(d->lst->backItem(), WebCore::FrameLoadTypeIndexedBackForward); 372231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 3738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 3768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Sets the current item to be the next item in the history and goes to the 3778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project corresponding page; i.e., goes forward one history item. 3788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa back(), goToItem() 3808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 3818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebHistory::forward() 3828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 383231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (canGoForward()) { 384e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke WebCore::Page* page = static_cast<WebCore::BackForwardListImpl*>(d->lst)->page(); 38506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen page->goToItem(d->lst->forwardItem(), WebCore::FrameLoadTypeIndexedBackForward); 386231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 3878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 3908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Sets the current item to be the specified \a item in the history and goes to the page. 3918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa back(), forward() 3938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 3948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebHistory::goToItem(const QWebHistoryItem &item) 3958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 396e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke WebCore::Page* page = static_cast<WebCore::BackForwardListImpl*>(d->lst)->page(); 39706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen page->goToItem(item.d->item, WebCore::FrameLoadTypeIndexedBackForward); 3988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 4018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the item before the current item in the history. 4028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 4038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHistoryItem QWebHistory::backItem() const 4048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::HistoryItem *i = d->lst->backItem(); 4068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebHistoryItemPrivate *priv = new QWebHistoryItemPrivate(i); 4078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QWebHistoryItem(priv); 4088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 4118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the current item in the history. 4128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 4138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHistoryItem QWebHistory::currentItem() const 4148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::HistoryItem *i = d->lst->currentItem(); 4168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebHistoryItemPrivate *priv = new QWebHistoryItemPrivate(i); 4178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QWebHistoryItem(priv); 4188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 4218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the item after the current item in the history. 4228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 4238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHistoryItem QWebHistory::forwardItem() const 4248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::HistoryItem *i = d->lst->forwardItem(); 4268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QWebHistoryItemPrivate *priv = new QWebHistoryItemPrivate(i); 4278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QWebHistoryItem(priv); 4288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 4318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.5 4328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the index of the current item in history. 4338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 4348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint QWebHistory::currentItemIndex() const 4358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->lst->backListCount(); 4378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 4408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the item at index \a i in the history. 4418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 4428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectQWebHistoryItem QWebHistory::itemAt(int i) const 4438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebHistoryItemPrivate *priv; 4450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (i < 0 || i >= count()) 4460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch priv = new QWebHistoryItemPrivate(0); 4470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else { 4480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebCore::HistoryItem *item = d->lst->entries()[i].get(); 4490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch priv = new QWebHistoryItemPrivate(item); 4500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 4518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return QWebHistoryItem(priv); 4528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 4558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the total number of items in the history. 4568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 4578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint QWebHistory::count() const 4588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->lst->entries().size(); 4608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 4638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.5 4648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Returns the maximum number of items in the history. 4658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa setMaximumItemCount() 4678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 4688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint QWebHistory::maximumItemCount() const 4698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d->lst->capacity(); 4718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*! 4748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \since 4.5 475635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project Sets the maximum number of items in the history to \a count. 4768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project \sa maximumItemCount() 4788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 4798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid QWebHistory::setMaximumItemCount(int count) 4808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->lst->setCapacity(count); 4828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 485cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block \since 4.6 486cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block \fn QDataStream& operator<<(QDataStream& stream, const QWebHistory& history) 487cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block \relates QWebHistory 4880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 489cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block \brief The operator<< function streams a history into a data stream. 4900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 491cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block It saves the \a history into the specified \a stream. 4920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 4930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 494cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve BlockQDataStream& operator<<(QDataStream& target, const QWebHistory& history) 495cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block{ 496cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebHistoryPrivate* d = history.d; 497cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 498cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block int version = DefaultHistoryVersion; 499cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 500643ca7872b450ea4efacab6188849e5aac2ba161Steve Block target << version; 501643ca7872b450ea4efacab6188849e5aac2ba161Steve Block target << history.count() << history.currentItemIndex(); 502cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 503cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block const WebCore::HistoryItemVector &items = d->lst->entries(); 504cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block for (unsigned i = 0; i < items.size(); i++) 505643ca7872b450ea4efacab6188849e5aac2ba161Steve Block items[i].get()->saveState(target, version); 506cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 507643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return target; 508cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block} 509cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 5100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/*! 511cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block \fn QDataStream& operator>>(QDataStream& stream, QWebHistory& history) 512cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block \relates QWebHistory 5130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch \since 4.6 5140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 515cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block \brief The operator>> function loads a history from a data stream. 5160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 517cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block Loads a QWebHistory from the specified \a stream into the given \a history. 5180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 519cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 520cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve BlockQDataStream& operator>>(QDataStream& source, QWebHistory& history) 5210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 522cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block QWebHistoryPrivate* d = history.d; 523cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 5240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch int version; 525cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block 526643ca7872b450ea4efacab6188849e5aac2ba161Steve Block source >> version; 5270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 528cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if (version == 1) { 5290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch int count; 5300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch int currentIndex; 531643ca7872b450ea4efacab6188849e5aac2ba161Steve Block source >> count >> currentIndex; 5320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 533cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block history.clear(); 5340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // only if there are elements 5350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (count) { 5360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // after clear() is new clear HistoryItem (at the end we had to remove it) 537cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block WebCore::HistoryItem* nullItem = d->lst->currentItem(); 538cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block for (int i = 0; i < count; i++) { 5390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WTF::PassRefPtr<WebCore::HistoryItem> item = WebCore::HistoryItem::create(); 540643ca7872b450ea4efacab6188849e5aac2ba161Steve Block item->restoreState(source, version); 5410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch d->lst->addItem(item); 5420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 5430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch d->lst->removeItem(nullItem); 544e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block // Update the HistoryController. 545e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke static_cast<WebCore::BackForwardListImpl*>(history.d->lst)->page()->mainFrame()->loader()->history()->setCurrentItem(history.d->lst->entries()[currentIndex].get()); 546cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block history.goToItem(history.itemAt(currentIndex)); 5470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 5480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 5490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 550231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block d->page()->updateNavigationActions(); 551231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 552cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block return source; 5530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 5540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 555231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve BlockQWebPagePrivate* QWebHistoryPrivate::page() 556231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 557e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke return QWebFramePrivate::kit(static_cast<WebCore::BackForwardListImpl*>(lst)->page()->mainFrame())->page()->handle(); 558231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 559545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 560e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockWebCore::HistoryItem* QWebHistoryItemPrivate::core(const QWebHistoryItem* q) 561545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 562545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch return q->d->item; 563545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 564