diff options
Diffstat (limited to 'Source/WebKit/qt/tests/qwebhistory/tst_qwebhistory.cpp')
-rw-r--r-- | Source/WebKit/qt/tests/qwebhistory/tst_qwebhistory.cpp | 528 |
1 files changed, 0 insertions, 528 deletions
diff --git a/Source/WebKit/qt/tests/qwebhistory/tst_qwebhistory.cpp b/Source/WebKit/qt/tests/qwebhistory/tst_qwebhistory.cpp deleted file mode 100644 index 8df3d26d6..000000000 --- a/Source/WebKit/qt/tests/qwebhistory/tst_qwebhistory.cpp +++ /dev/null @@ -1,528 +0,0 @@ -/* - Copyright (C) 2008 Holger Hans Peter Freyther - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include <QtTest/QtTest> -#include <QAction> - -#include "../util.h" -#include "qwebpage.h" -#include "qwebview.h" -#include "qwebframe.h" -#include "qwebhistory.h" -#include "qdebug.h" - -class tst_QWebHistory : public QObject -{ - Q_OBJECT - -public: - tst_QWebHistory(); - virtual ~tst_QWebHistory(); - -protected : - void loadPage(int nr) - { - frame->load(QUrl("qrc:/resources/page" + QString::number(nr) + ".html")); - loadFinishedBarrier->ensureSignalEmitted(); - } - -public Q_SLOTS: - void init(); - void cleanup(); - -private Q_SLOTS: - void title(); - void count(); - void back(); - void forward(); - void itemAt(); - void goToItem(); - void items(); - void serialize_1(); //QWebHistory countity - void serialize_2(); //QWebHistory index - void serialize_3(); //QWebHistoryItem - // Those tests shouldn't crash - void saveAndRestore_crash_1(); - void saveAndRestore_crash_2(); - void saveAndRestore_crash_3(); - void saveAndRestore_crash_4(); - - void popPushState_data(); - void popPushState(); - void clear(); - void restoreIncompatibleVersion1(); - - -private: - QWebPage* page { nullptr }; - QWebFrame* frame { nullptr }; - QWebHistory* hist { nullptr }; - QScopedPointer<SignalBarrier> loadFinishedBarrier; - int histsize {0}; -}; - -tst_QWebHistory::tst_QWebHistory() -{ -} - -tst_QWebHistory::~tst_QWebHistory() -{ -} - -void tst_QWebHistory::init() -{ - page = new QWebPage(this); - frame = page->mainFrame(); - loadFinishedBarrier.reset(new SignalBarrier(frame, SIGNAL(loadFinished(bool)))); - - for (int i = 1;i < 6;i++) { - loadPage(i); - } - hist = page->history(); - histsize = 5; -} - -void tst_QWebHistory::cleanup() -{ - loadFinishedBarrier.reset(); - delete page; -} - -/** - * Check QWebHistoryItem::title() method - */ -void tst_QWebHistory::title() -{ - QCOMPARE(hist->currentItem().title(), QString("page5")); -} - -/** - * Check QWebHistory::count() method - */ -void tst_QWebHistory::count() -{ - QCOMPARE(hist->count(), histsize); -} - -/** - * Check QWebHistory::back() method - */ -void tst_QWebHistory::back() -{ - for (int i = histsize;i > 1;i--) { - QCOMPARE(page->mainFrame()->toPlainText(), QStringLiteral("page%1").arg(i)); - hist->back(); - loadFinishedBarrier->ensureSignalEmitted(); - } - //try one more time (too many). crash test - hist->back(); - QCOMPARE(page->mainFrame()->toPlainText(), QString("page1")); -} - -/** - * Check QWebHistory::forward() method - */ -void tst_QWebHistory::forward() -{ - //rewind history :-) - while (hist->canGoBack()) { - hist->back(); - loadFinishedBarrier->ensureSignalEmitted(); - } - - for (int i = 1;i < histsize;i++) { - QCOMPARE(page->mainFrame()->toPlainText(), QStringLiteral("page%1").arg(i)); - hist->forward(); - loadFinishedBarrier->ensureSignalEmitted(); - } - //try one more time (too many). crash test - hist->forward(); - QCOMPARE(page->mainFrame()->toPlainText(), QStringLiteral("page%1").arg(histsize)); -} - -/** - * Check QWebHistory::itemAt() method - */ -void tst_QWebHistory::itemAt() -{ - for (int i = 1;i < histsize;i++) { - QCOMPARE(hist->itemAt(i - 1).title(), QStringLiteral("page%1").arg(i)); - QVERIFY(hist->itemAt(i - 1).isValid()); - } - //check out of range values - QVERIFY(!hist->itemAt(-1).isValid()); - QVERIFY(!hist->itemAt(histsize).isValid()); -} - -/** - * Check QWebHistory::goToItem() method - */ -void tst_QWebHistory::goToItem() -{ - QWebHistoryItem current = hist->currentItem(); - hist->back(); - loadFinishedBarrier->ensureSignalEmitted(); - hist->back(); - loadFinishedBarrier->ensureSignalEmitted(); - QVERIFY(hist->currentItem().title() != current.title()); - hist->goToItem(current); - loadFinishedBarrier->ensureSignalEmitted(); - QCOMPARE(hist->currentItem().title(), current.title()); -} - -/** - * Check QWebHistory::items() method - */ -void tst_QWebHistory::items() -{ - QList<QWebHistoryItem> items = hist->items(); - //check count - QCOMPARE(histsize, items.count()); - - //check order - for (int i = 1;i <= histsize;i++) { - QCOMPARE(items.at(i - 1).title(), QStringLiteral("page%1").arg(i)); - } -} - -/** - * Check history state after serialization (pickle, persistent..) method - * Checks history size, history order - */ -void tst_QWebHistory::serialize_1() -{ - QByteArray tmp; //buffer - QDataStream save(&tmp, QIODevice::WriteOnly); //here data will be saved - QDataStream load(&tmp, QIODevice::ReadOnly); //from here data will be loaded - - save << *hist; - QVERIFY(save.status() == QDataStream::Ok); - QCOMPARE(hist->count(), histsize); - - //check size of history - //load next page to find differences - loadPage(6); - QCOMPARE(hist->count(), histsize + 1); - load >> *hist; - QVERIFY(load.status() == QDataStream::Ok); - QCOMPARE(hist->count(), histsize); - - //check order of historyItems - QList<QWebHistoryItem> items = hist->items(); - for (int i = 1;i <= histsize;i++) { - QCOMPARE(items.at(i - 1).title(), QStringLiteral("page%1").arg(i)); - } -} - -/** - * Check history state after serialization (pickle, persistent..) method - * Checks history currentIndex value - */ -void tst_QWebHistory::serialize_2() -{ - QByteArray tmp; //buffer - QDataStream save(&tmp, QIODevice::WriteOnly); //here data will be saved - QDataStream load(&tmp, QIODevice::ReadOnly); //from here data will be loaded - - // Force a "same document" navigation. - frame->load(QUrl(frame->url().toString() + QLatin1String("#dummyAnchor"))); - - int initialCurrentIndex = hist->currentItemIndex(); - - hist->back(); - loadFinishedBarrier->ensureSignalEmitted(); - hist->back(); - loadFinishedBarrier->ensureSignalEmitted(); - hist->back(); - loadFinishedBarrier->ensureSignalEmitted(); - //check if current index was changed (make sure that it is not last item) - QVERIFY(hist->currentItemIndex() != initialCurrentIndex); - //save current index - int oldCurrentIndex = hist->currentItemIndex(); - - save << *hist; - QVERIFY(save.status() == QDataStream::Ok); - load >> *hist; - QVERIFY(load.status() == QDataStream::Ok); - - //check current index - QCOMPARE(hist->currentItemIndex(), oldCurrentIndex); - - hist->forward(); - loadFinishedBarrier->ensureSignalEmitted(); - hist->forward(); - loadFinishedBarrier->ensureSignalEmitted(); - hist->forward(); - loadFinishedBarrier->ensureSignalEmitted(); - QCOMPARE(hist->currentItemIndex(), initialCurrentIndex); -} - -/** - * Check history state after serialization (pickle, persistent..) method - * Checks QWebHistoryItem public property after serialization - */ -void tst_QWebHistory::serialize_3() -{ - QByteArray tmp; //buffer - QDataStream save(&tmp, QIODevice::WriteOnly); //here data will be saved - QDataStream load(&tmp, QIODevice::ReadOnly); //from here data will be loaded - - //prepare two different history items - QWebHistoryItem a = hist->currentItem(); - a.setUserData("A - user data"); - - //check properties BEFORE serialization - QString title(a.title()); - QDateTime lastVisited(a.lastVisited()); - QUrl originalUrl(a.originalUrl()); - QUrl url(a.url()); - QVariant userData(a.userData()); - - save << *hist; - QVERIFY(save.status() == QDataStream::Ok); - QVERIFY(!load.atEnd()); - hist->clear(); - QVERIFY(hist->count() == 1); - load >> *hist; - QVERIFY(load.status() == QDataStream::Ok); - QWebHistoryItem b = hist->currentItem(); - - //check properties AFTER serialization - QCOMPARE(b.title(), title); - QCOMPARE(b.lastVisited(), lastVisited); - QCOMPARE(b.originalUrl(), originalUrl); - QCOMPARE(b.url(), url); - QCOMPARE(b.userData(), userData); - - //Check if all data was read - QVERIFY(load.atEnd()); -} - -static void saveHistory(QWebHistory* history, QByteArray* in) -{ - in->clear(); - QDataStream save(in, QIODevice::WriteOnly); - save << *history; -} - -static void restoreHistory(QWebHistory* history, QByteArray* out) -{ - QDataStream load(out, QIODevice::ReadOnly); - load >> *history; -} - -void tst_QWebHistory::saveAndRestore_crash_1() -{ - QByteArray buffer; - saveHistory(hist, &buffer); - for (unsigned i = 0; i < 5; i++) { - restoreHistory(hist, &buffer); - saveHistory(hist, &buffer); - } -} - -void tst_QWebHistory::saveAndRestore_crash_2() -{ - QByteArray buffer; - saveHistory(hist, &buffer); - QWebPage* page2 = new QWebPage(this); - QWebHistory* hist2 = page2->history(); - for (unsigned i = 0; i < 5; i++) { - restoreHistory(hist2, &buffer); - saveHistory(hist2, &buffer); - } - delete page2; -} - -void tst_QWebHistory::saveAndRestore_crash_3() -{ - QByteArray buffer; - saveHistory(hist, &buffer); - QWebPage* page2 = new QWebPage(this); - QWebHistory* hist1 = hist; - QWebHistory* hist2 = page2->history(); - for (unsigned i = 0; i < 5; i++) { - restoreHistory(hist1, &buffer); - restoreHistory(hist2, &buffer); - QVERIFY(hist1->count() == hist2->count()); - QVERIFY(hist1->count() == histsize); - hist2->back(); - saveHistory(hist2, &buffer); - hist2->clear(); - } - delete page2; -} - -void tst_QWebHistory::saveAndRestore_crash_4() -{ - QByteArray buffer; - saveHistory(hist, &buffer); - - QWebPage* page2 = new QWebPage(this); - // The initial crash was in PageCache. - page2->settings()->setMaximumPagesInCache(3); - - // Load the history in a new page, waiting for the load to finish. - QEventLoop waitForLoadFinished; - QObject::connect(page2, SIGNAL(loadFinished(bool)), &waitForLoadFinished, SLOT(quit()), Qt::QueuedConnection); - QDataStream load(&buffer, QIODevice::ReadOnly); - load >> *page2->history(); - waitForLoadFinished.exec(); - - delete page2; - // Give some time for the PageCache cleanup 0-timer to fire. - QTest::qWait(50); -} - -void tst_QWebHistory::popPushState_data() -{ - QTest::addColumn<QString>("script"); - QTest::newRow("pushState") << "history.pushState(123, \"foo\");"; - QTest::newRow("replaceState") << "history.replaceState(\"a\", \"b\");"; - QTest::newRow("back") << "history.back();"; - QTest::newRow("forward") << "history.forward();"; - QTest::newRow("clearState") << "history.clearState();"; -} - -/** Crash test, WebKit bug 38840 (https://bugs.webkit.org/show_bug.cgi?id=38840) */ -void tst_QWebHistory::popPushState() -{ - QFETCH(QString, script); - QWebPage page; - page.mainFrame()->setHtml("<html><body>long live Qt!</body></html>"); - page.mainFrame()->evaluateJavaScript(script); -} - -/** ::clear */ -void tst_QWebHistory::clear() -{ - QByteArray buffer; - - QAction* actionBack = page->action(QWebPage::Back); - QVERIFY(actionBack->isEnabled()); - saveHistory(hist, &buffer); - QVERIFY(hist->count() > 1); - hist->clear(); - QVERIFY(hist->count() == 1); // Leave current item. - QVERIFY(!actionBack->isEnabled()); - - QWebPage* page2 = new QWebPage(this); - QWebHistory* hist2 = page2->history(); - QVERIFY(hist2->count() == 0); - hist2->clear(); - QVERIFY(hist2->count() == 0); // Do not change anything. - delete page2; -} - -// static void dumpCurrentVersion(QWebHistory* history) -// { -// QByteArray buffer; -// saveHistory(history, &buffer); -// printf(" static const char version1Dump[] = {"); -// for (int i = 0; i < buffer.size(); ++i) { -// bool newLine = !(i % 15); -// bool last = i == buffer.size() - 1; -// printf("%s0x%.2x%s", newLine ? "\n " : "", (unsigned char)buffer[i], last ? "" : ", "); -// } -// printf("};\n"); -// } - -void tst_QWebHistory::restoreIncompatibleVersion1() -{ - // Uncomment this code to generate a dump similar to the one below with the current stream version. - // dumpCurrentVersion(hist); - static const unsigned char version1Dump[] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x32, 0x00, 0x71, 0x00, 0x72, 0x00, 0x63, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x72, 0x00, 0x65, - 0x00, 0x73, 0x00, 0x6f, 0x00, 0x75, 0x00, 0x72, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, - 0x2f, 0x00, 0x70, 0x00, 0x61, 0x00, 0x67, 0x00, 0x65, 0x00, 0x31, 0x00, 0x2e, 0x00, 0x68, - 0x00, 0x74, 0x00, 0x6d, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x61, 0x00, - 0x67, 0x00, 0x65, 0x00, 0x31, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x71, 0x00, 0x72, 0x00, 0x63, 0x00, 0x3a, 0x00, - 0x2f, 0x00, 0x72, 0x00, 0x65, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x75, 0x00, 0x72, 0x00, 0x63, - 0x00, 0x65, 0x00, 0x73, 0x00, 0x2f, 0x00, 0x70, 0x00, 0x61, 0x00, 0x67, 0x00, 0x65, 0x00, - 0x31, 0x00, 0x2e, 0x00, 0x68, 0x00, 0x74, 0x00, 0x6d, 0x00, 0x6c, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, - 0x00, 0x71, 0x00, 0x72, 0x00, 0x63, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x72, 0x00, 0x65, 0x00, - 0x73, 0x00, 0x6f, 0x00, 0x75, 0x00, 0x72, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x2f, - 0x00, 0x70, 0x00, 0x61, 0x00, 0x67, 0x00, 0x65, 0x00, 0x32, 0x00, 0x2e, 0x00, 0x68, 0x00, - 0x74, 0x00, 0x6d, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x61, 0x00, 0x67, - 0x00, 0x65, 0x00, 0x32, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x71, 0x00, 0x72, 0x00, 0x63, 0x00, 0x3a, 0x00, 0x2f, - 0x00, 0x72, 0x00, 0x65, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x75, 0x00, 0x72, 0x00, 0x63, 0x00, - 0x65, 0x00, 0x73, 0x00, 0x2f, 0x00, 0x70, 0x00, 0x61, 0x00, 0x67, 0x00, 0x65, 0x00, 0x32, - 0x00, 0x2e, 0x00, 0x68, 0x00, 0x74, 0x00, 0x6d, 0x00, 0x6c, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, - 0x71, 0x00, 0x72, 0x00, 0x63, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x72, 0x00, 0x65, 0x00, 0x73, - 0x00, 0x6f, 0x00, 0x75, 0x00, 0x72, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x2f, 0x00, - 0x70, 0x00, 0x61, 0x00, 0x67, 0x00, 0x65, 0x00, 0x33, 0x00, 0x2e, 0x00, 0x68, 0x00, 0x74, - 0x00, 0x6d, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x61, 0x00, 0x67, 0x00, - 0x65, 0x00, 0x33, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x32, 0x00, 0x71, 0x00, 0x72, 0x00, 0x63, 0x00, 0x3a, 0x00, 0x2f, 0x00, - 0x72, 0x00, 0x65, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x75, 0x00, 0x72, 0x00, 0x63, 0x00, 0x65, - 0x00, 0x73, 0x00, 0x2f, 0x00, 0x70, 0x00, 0x61, 0x00, 0x67, 0x00, 0x65, 0x00, 0x33, 0x00, - 0x2e, 0x00, 0x68, 0x00, 0x74, 0x00, 0x6d, 0x00, 0x6c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x71, - 0x00, 0x72, 0x00, 0x63, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x72, 0x00, 0x65, 0x00, 0x73, 0x00, - 0x6f, 0x00, 0x75, 0x00, 0x72, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x2f, 0x00, 0x70, - 0x00, 0x61, 0x00, 0x67, 0x00, 0x65, 0x00, 0x34, 0x00, 0x2e, 0x00, 0x68, 0x00, 0x74, 0x00, - 0x6d, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x61, 0x00, 0x67, 0x00, 0x65, - 0x00, 0x34, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x32, 0x00, 0x71, 0x00, 0x72, 0x00, 0x63, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x72, - 0x00, 0x65, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x75, 0x00, 0x72, 0x00, 0x63, 0x00, 0x65, 0x00, - 0x73, 0x00, 0x2f, 0x00, 0x70, 0x00, 0x61, 0x00, 0x67, 0x00, 0x65, 0x00, 0x34, 0x00, 0x2e, - 0x00, 0x68, 0x00, 0x74, 0x00, 0x6d, 0x00, 0x6c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x71, 0x00, - 0x72, 0x00, 0x63, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x72, 0x00, 0x65, 0x00, 0x73, 0x00, 0x6f, - 0x00, 0x75, 0x00, 0x72, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x2f, 0x00, 0x70, 0x00, - 0x61, 0x00, 0x67, 0x00, 0x65, 0x00, 0x35, 0x00, 0x2e, 0x00, 0x68, 0x00, 0x74, 0x00, 0x6d, - 0x00, 0x6c, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x61, 0x00, 0x67, 0x00, 0x65, 0x00, - 0x35, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x32, 0x00, 0x71, 0x00, 0x72, 0x00, 0x63, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x72, 0x00, - 0x65, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x75, 0x00, 0x72, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, - 0x00, 0x2f, 0x00, 0x70, 0x00, 0x61, 0x00, 0x67, 0x00, 0x65, 0x00, 0x35, 0x00, 0x2e, 0x00, - 0x68, 0x00, 0x74, 0x00, 0x6d, 0x00, 0x6c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - QByteArray version1(reinterpret_cast<const char*>(version1Dump), sizeof(version1Dump)); - QDataStream stream(&version1, QIODevice::ReadOnly); - - // This should fail to load, the history should be cleared and the stream should be broken. - stream >> *hist; - QVERIFY(!hist->canGoBack()); - QVERIFY(!hist->canGoForward()); - QVERIFY(stream.status() == QDataStream::ReadCorruptData); -} - -QTEST_MAIN(tst_QWebHistory) -#include "tst_qwebhistory.moc" |