<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/8687ca4f51af907e25c62b0f6e609b293152294f">https://github.com/macports/macports-ports/commit/8687ca4f51af907e25c62b0f6e609b293152294f</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 8687ca4f51a arora: update with upstream patches, revbump
</span>8687ca4f51a is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 8687ca4f51af907e25c62b0f6e609b293152294f
</span>Author: barracuda156 <vital.had@gmail.com>
AuthorDate: Sun Apr 21 23:40:37 2024 +0800
<span style='display:block; white-space:pre;color:#404040;'> arora: update with upstream patches, revbump
</span>---
www/arora/Portfile | 32 +-
...blem-in-the-downloadmanager-when-the-dele.patch | 25 ++
...mber-of-downloads-in-the-download-manager.patch | 133 +++++++
...AutoFillManager-to-not-use-hard-coded-off.patch | 47 +++
...ertificate-problem-with-sites-like-https-.patch | 37 ++
...ebforms-in-Preferences-was-always-checked.patch | 25 ++
...Autofill-manager-was-always-storing-forms.patch | 31 ++
...ersistent-data-storage-HTML5-localStorage.patch | 75 ++++
...age-not-being-valid-XML-but-claiming-to-b.patch | 33 ++
.../0009-Fix-for-fullscreen-on-Mac-issue931.patch | 32 ++
.../0010-Fix-xhtml-warning-in-the-startpage.patch | 25 ++
...nd-Qt-bug-in-QCompleter-found-in-Qt-4.8.2.patch | 29 ++
...12-Create-autotest-for-BookmarkNode-class.patch | 406 +++++++++++++++++++++
...t-error-when-checking-files-that-have-bee.patch | 58 +++
...se-HistoryManager-addHistoryEntry-QString.patch | 111 ++++++
...sts-for-functionality-that-wasn-t-unit-te.patch | 62 ++++
...e-FrecencyTimer-to-the-HistoryFilterModel.patch | 129 +++++++
...0017-Fix-segfaults-in-history-manual-test.patch | 55 +++
...ME-after-project-has-officially-moved-all.patch | 29 ++
19 files changed, 1368 insertions(+), 6 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/Portfile b/www/arora/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 869a1efa1fe..48fbc52e244 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/www/arora/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -4,14 +4,13 @@ PortSystem 1.0
</span> PortGroup github 1.0
PortGroup qmake 1.0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup arora arora 0.11.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision 3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup Arora arora 0.11.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 4
</span> categories www aqua
<span style='display:block; white-space:pre;background:#ffe0e0;'>-platforms darwin
</span> maintainers nomaintainer
license GPL-2
<span style='display:block; white-space:pre;background:#ffe0e0;'>-description cross-platform QtWebKit web browser
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description Cross-platform QtWebKit web browser
</span>
long_description Arora is a lightweight cross-platform web browser based \
on QtWebKit. It's free (as in free speech and free beer).
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -19,8 +18,29 @@ long_description Arora is a lightweight cross-platform web browser based \
</span> # Remove on next github release
master_sites macports_distfiles
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums sha1 480cfd7482cccbb7ece866fa10afe9acace29b31 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- rmd160 c8b010d5e540c8ee3a0604c4d24c19c8b8653798
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 c8b010d5e540c8ee3a0604c4d24c19c8b8653798 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 6f5fef191935ed740aaa61d5f081abb823997abc20a993cbcb74a4d8adcad3b9 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 1072898
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Upstream patches through 2015.06.24
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append 0001-fix-the-problem-in-the-downloadmanager-when-the-dele.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0002-Show-the-number-of-downloads-in-the-download-manager.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0003-Change-the-AutoFillManager-to-not-use-hard-coded-off.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0004-Fixed-ssl-certificate-problem-with-sites-like-https-.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0005-Autofill-webforms-in-Preferences-was-always-checked.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0006-Autofill-manager-was-always-storing-forms.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0007-Support-persistent-data-storage-HTML5-localStorage.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0008-Fix-start-page-not-being-valid-XML-but-claiming-to-b.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0009-Fix-for-fullscreen-on-Mac-issue931.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0010-Fix-xhtml-warning-in-the-startpage.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0011-Work-around-Qt-bug-in-QCompleter-found-in-Qt-4.8.2.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0012-Create-autotest-for-BookmarkNode-class.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0013-Don-t-output-error-when-checking-files-that-have-bee.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0014-Expose-HistoryManager-addHistoryEntry-QString.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0015-Add-unit-tests-for-functionality-that-wasn-t-unit-te.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0016-Move-FrecencyTimer-to-the-HistoryFilterModel.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0017-Fix-segfaults-in-history-manual-test.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0018-Update-README-after-project-has-officially-moved-all.patch
</span>
depends_lib-append path:lib/libssl.dylib:openssl
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0001-fix-the-problem-in-the-downloadmanager-when-the-dele.patch b/www/arora/files/0001-fix-the-problem-in-the-downloadmanager-when-the-dele.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..38c100bde31
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0001-fix-the-problem-in-the-downloadmanager-when-the-dele.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,25 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 6c2bc1a04cfe708615bcb9d77f69803bdf020324 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Zsombor Gegesy <gzsombor@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sat, 17 Oct 2009 23:33:28 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 01/23] fix the problem in the downloadmanager, when the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'delete' button is pressed, the downloaded item count is not updated
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/downloadmanager.cpp | 1 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/downloadmanager.cpp src/downloadmanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 84091f8..7be76fa 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/downloadmanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/downloadmanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -810,6 +810,7 @@ bool DownloadModel::removeRows(int row, int count, const QModelIndex &parent)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_downloadManager->m_autoSaver->changeOccurred();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ m_downloadManager->updateItemCount();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0002-Show-the-number-of-downloads-in-the-download-manager.patch b/www/arora/files/0002-Show-the-number-of-downloads-in-the-download-manager.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..eca51f2c6c6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0002-Show-the-number-of-downloads-in-the-download-manager.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,133 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 17818d33aaea8759439138da7a28efb2e5c95f26 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Zsombor Gegesy <gzsombor@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 18 Oct 2009 14:16:53 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 02/23] Show the number of downloads in the download manager
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dialog title, and blink it, after it's finished downloading.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/downloadmanager.cpp | 28 +++++++++++++++++++++++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/downloadmanager.h | 3 +++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 30 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/downloadmanager.cpp src/downloadmanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7be76fa..8196353 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/downloadmanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/downloadmanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -250,6 +250,7 @@ void DownloadItem::stop()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tryAgainButton->show();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ setUpdatesEnabled(true);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_reply->abort();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ emit downloadFinished();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void DownloadItem::open()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -317,6 +318,7 @@ void DownloadItem::error(QNetworkReply::NetworkError)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ downloadInfoLabel->setText(tr("Network Error: %1").arg(m_reply->errorString()));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tryAgainButton->setEnabled(true);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tryAgainButton->setVisible(true);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ emit downloadFinished();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void DownloadItem::metaDataChanged()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -448,6 +450,7 @@ void DownloadItem::finished()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_output.close();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ updateInfoLabel();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ emit statusChanged();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ emit downloadFinished();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*!
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -580,6 +583,7 @@ void DownloadManager::handleUnsupportedContent(QNetworkReply *reply, bool reques
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void DownloadManager::addItem(DownloadItem *item)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ connect(item, SIGNAL(statusChanged()), this, SLOT(updateRow()));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ connect(item, SIGNAL(downloadFinished()), this, SLOT(finished()));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int row = m_downloads.count();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_model->beginInsertRows(QModelIndex(), row, row);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_downloads.append(item);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -590,8 +594,28 @@ void DownloadManager::addItem(DownloadItem *item)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ item->fileIcon->setPixmap(icon.pixmap(48, 48));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ downloadsView->setRowHeight(row, item->sizeHint().height());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ updateRow(item); //incase download finishes before the constructor returns
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ updateActiveItemCount();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void DownloadManager::updateActiveItemCount()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int acCount = activeDownloads();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (acCount > 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ setWindowTitle(QApplication::translate("DownloadDialog", "Downloading %1", 0, QApplication::UnicodeUTF8).arg(acCount));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ setWindowTitle(QApplication::translate("DownloadDialog", "Downloads", 0, QApplication::UnicodeUTF8));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void DownloadManager::finished()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ updateActiveItemCount();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (isVisible()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QApplication::alert(this);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void DownloadManager::updateRow()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (DownloadItem *item = qobject_cast<DownloadItem*>(sender()))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -692,16 +716,17 @@ void DownloadManager::load()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ item->m_output.setFileName(fileName);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ item->fileNameLabel->setText(QFileInfo(item->m_output.fileName()).fileName());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ item->m_url = url;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- addItem(item);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ item->stopButton->setVisible(false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ item->stopButton->setEnabled(false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ item->tryAgainButton->setVisible(!done);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ item->tryAgainButton->setEnabled(!done);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ item->progressBar->setVisible(false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ addItem(item);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ key = QString(QLatin1String("download_%1_")).arg(++i);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cleanupButton->setEnabled(m_downloads.count() - activeDownloads() > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ updateActiveItemCount();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void DownloadManager::cleanup()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -710,6 +735,7 @@ void DownloadManager::cleanup()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_model->removeRows(0, m_downloads.count());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ updateItemCount();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ updateActiveItemCount();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (m_downloads.isEmpty() && m_iconProvider) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delete m_iconProvider;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_iconProvider = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/downloadmanager.h src/downloadmanager.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index fb45b59..f37f8e1 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/downloadmanager.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/downloadmanager.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -79,6 +79,7 @@ class DownloadItem : public QWidget, public Ui_DownloadItem
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ signals:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void statusChanged();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void progress(qint64 bytesReceived = 0, qint64 bytesTotal = 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void downloadFinished();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DownloadItem(QNetworkReply *reply = 0, bool requestFileName = false, QWidget *parent = 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -170,12 +171,14 @@ private slots:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void save() const;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void updateRow(DownloadItem *item);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void updateRow();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void finished();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ private:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void addItem(DownloadItem *item);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void updateItemCount();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void load();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool externalDownload(const QUrl &url);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void updateActiveItemCount();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AutoSaver *m_autoSaver;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DownloadModel *m_model;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0003-Change-the-AutoFillManager-to-not-use-hard-coded-off.patch b/www/arora/files/0003-Change-the-AutoFillManager-to-not-use-hard-coded-off.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..6fb3893d906
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0003-Change-the-AutoFillManager-to-not-use-hard-coded-off.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,47 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From ce46bb4dfe22263544e41e752208cdb6bd0b6ed5 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Benjamin C Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 6 Feb 2011 16:16:27 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 03/23] Change the AutoFillManager to not use hard coded
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ offsets for request attributes.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Rather than a offset from the QNetworkRequest::User utilize the static
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+WebPageProxy::pageAttributeId() to improve the code readability
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(it is now grepable what it is used for) and prevent accidents in the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+future if that number ever changed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/autofillmanager.cpp | 5 +++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 3 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/autofillmanager.cpp src/autofillmanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b39e747..8c4891d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/autofillmanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/autofillmanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -32,6 +32,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "browserapplication.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "browsermainwindow.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "networkaccessmanagerproxy.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "webpageproxy.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "webview.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <qdesktopservices.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -145,7 +146,7 @@ void AutoFillManager::post(const QNetworkRequest &request, const QByteArray &out
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Check the request type
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- QVariant typeVariant = request.attribute((QNetworkRequest::Attribute)(QNetworkRequest::User + 101));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QVariant typeVariant = request.attribute((QNetworkRequest::Attribute)(WebPageProxy::pageAttributeId() + 1));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QWebPage::NavigationType type = (QWebPage::NavigationType)typeVariant.toInt();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (typeVariant.isValid() && type != QWebPage::NavigationTypeFormSubmitted) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // XXX Does this occur normally?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -155,7 +156,7 @@ void AutoFillManager::post(const QNetworkRequest &request, const QByteArray &out
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Determine the QWebView
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- QVariant v = request.attribute((QNetworkRequest::Attribute)(QNetworkRequest::User + 100));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QVariant v = request.attribute((QNetworkRequest::Attribute)(WebPageProxy::pageAttributeId()));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QWebPage *webPage = (QWebPage*)(v.value<void*>());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!webPage) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ qWarning() << "AutoFillManager:" << "QWebPage is not set in QNetworkRequest.";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0004-Fixed-ssl-certificate-problem-with-sites-like-https-.patch b/www/arora/files/0004-Fixed-ssl-certificate-problem-with-sites-like-https-.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..25fd6bdbded
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0004-Fixed-ssl-certificate-problem-with-sites-like-https-.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,37 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 065d8d8fd0c5da52b1659d8a697af6d2d4af3871 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Jason Butler <jason_michael_butler@yahoo.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sat, 20 Nov 2010 14:26:30 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 04/23] Fixed ssl certificate problem with sites like
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ https://webmail.us.army.mil
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+By default QSSLConfiguration was only accepting SSLv3 while we want to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+accept all of them.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Issue: 915
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/network/networkaccessmanager.cpp | 2 ++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 2 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/network/networkaccessmanager.cpp src/network/networkaccessmanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7e99d46..56fb343 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/network/networkaccessmanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/network/networkaccessmanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -168,6 +168,7 @@ void NetworkAccessManager::loadSettings()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QList<QSslCertificate> ca_new = QSslCertificate::fromData(settings.value(QLatin1String("CaCertificates")).toByteArray());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ca_list += ca_new;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sslCfg.setCaCertificates(ca_list);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sslCfg.setProtocol(QSsl::AnyProtocol);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QSslConfiguration::setDefaultConfiguration(sslCfg);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -327,6 +328,7 @@ void NetworkAccessManager::sslErrors(QNetworkReply *reply, const QList<QSslError
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QList<QSslCertificate> ca_list = sslCfg.caCertificates();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ca_list += ca_new;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sslCfg.setCaCertificates(ca_list);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sslCfg.setProtocol(QSsl::AnyProtocol);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QSslConfiguration::setDefaultConfiguration(sslCfg);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reply->setSslConfiguration(sslCfg);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0005-Autofill-webforms-in-Preferences-was-always-checked.patch b/www/arora/files/0005-Autofill-webforms-in-Preferences-was-always-checked.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..91369de8ecb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0005-Autofill-webforms-in-Preferences-was-always-checked.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,25 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 10682f23beef6939bab4610552b4d33a36a02f9c Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Benjamin C Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 6 Feb 2011 16:40:59 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 05/23] "Autofill webforms" in Preferences was always checked.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Issue: 918
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/settings.cpp | 1 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/settings.cpp src/settings.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 22b9e06..c21cd09 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/settings.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/settings.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -282,6 +282,7 @@ void SettingsDialog::loadFromSettings()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if QT_VERSION >= 0x040600 || defined(WEBKIT_TRUNK)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ settings.beginGroup(QLatin1String("WebView"));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enableAccessKeys->setChecked(settings.value(QLatin1String("enableAccessKeys"), true).toBool());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ settings.endGroup();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enableAccessKeys->setEnabled(false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0006-Autofill-manager-was-always-storing-forms.patch b/www/arora/files/0006-Autofill-manager-was-always-storing-forms.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..a6a38c871ce
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0006-Autofill-manager-was-always-storing-forms.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,31 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From d8e83f65ee738a56ffc0703f065e8c74f08697e7 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Benjamin C Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 6 Feb 2011 16:52:01 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 06/23] Autofill manager was always storing forms.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+exec() only returns the correct value when the standard buttons are
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+used. Change to use the messagebox.buttonRole to determine what button
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+was pressed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Issue: 912
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/autofillmanager.cpp | 3 ++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 2 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/autofillmanager.cpp src/autofillmanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 8c4891d..b4c713e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/autofillmanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/autofillmanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -201,7 +201,8 @@ void AutoFillManager::post(const QNetworkRequest &request, const QByteArray &out
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ messageBox.addButton(tr("Not now"), QMessageBox::RejectRole);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ messageBox.addButton(QMessageBox::Yes);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ messageBox.setDefaultButton(QMessageBox::Yes);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- switch (messageBox.exec()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ messageBox.exec();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ switch (messageBox.buttonRole(messageBox.clickedButton())) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case QMessageBox::DestructiveRole:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_never.append(url);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0007-Support-persistent-data-storage-HTML5-localStorage.patch b/www/arora/files/0007-Support-persistent-data-storage-HTML5-localStorage.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..9df45bafcd8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0007-Support-persistent-data-storage-HTML5-localStorage.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,75 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 904cff6b6d19a401fa2d5194538302f8d7bf716c Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Bernhard Rosenkraenzer <bero@arklinux.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 10 May 2011 12:49:29 +0159
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 07/23] Support persistent data storage (HTML5 localStorage)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/browserapplication.cpp | 1 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/settings.cpp | 3 +++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/settings.ui | 10 ++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3 files changed, 14 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/browserapplication.cpp src/browserapplication.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c7c0d4b..4514a80 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/browserapplication.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/browserapplication.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -374,6 +374,7 @@ void BrowserApplication::loadSettings()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ defaultSettings->setAttribute(QWebSettings::JavascriptEnabled, settings.value(QLatin1String("enableJavascript"), true).toBool());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ defaultSettings->setAttribute(QWebSettings::PluginsEnabled, settings.value(QLatin1String("enablePlugins"), true).toBool());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ defaultSettings->setAttribute(QWebSettings::AutoLoadImages, settings.value(QLatin1String("enableImages"), true).toBool());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ defaultSettings->setAttribute(QWebSettings::LocalStorageEnabled, settings.value(QLatin1String("enableLocalStorage"), true).toBool());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ defaultSettings->setAttribute(QWebSettings::DeveloperExtrasEnabled, settings.value(QLatin1String("enableInspector"), false).toBool());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if QT_VERSION >= 0x040600 || defined(WEBKIT_TRUNK)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ defaultSettings->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/settings.cpp src/settings.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c21cd09..3cbe7e8 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/settings.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/settings.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -129,6 +129,7 @@ void SettingsDialog::loadDefaults()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enableJavascript->setChecked(defaultSettings->testAttribute(QWebSettings::JavascriptEnabled));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enablePlugins->setChecked(defaultSettings->testAttribute(QWebSettings::PluginsEnabled));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enableImages->setChecked(defaultSettings->testAttribute(QWebSettings::AutoLoadImages));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ enableLocalStorage->setChecked(defaultSettings->testAttribute(QWebSettings::LocalStorageEnabled));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ clickToFlash->setChecked(false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cookieSessionCombo->setCurrentIndex(0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filterTrackingCookiesCheckbox->setChecked(false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -194,6 +195,7 @@ void SettingsDialog::loadFromSettings()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enableJavascript->setChecked(settings.value(QLatin1String("enableJavascript"), enableJavascript->isChecked()).toBool());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enablePlugins->setChecked(settings.value(QLatin1String("enablePlugins"), enablePlugins->isChecked()).toBool());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enableImages->setChecked(settings.value(QLatin1String("enableImages"), enableImages->isChecked()).toBool());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ enableLocalStorage->setChecked(settings.value(QLatin1String("enableLocalStorage"), enableLocalStorage->isChecked()).toBool());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ userStyleSheet->setText(QString::fromUtf8(settings.value(QLatin1String("userStyleSheet")).toUrl().toEncoded()));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ clickToFlash->setChecked(settings.value(QLatin1String("enableClickToFlash"), clickToFlash->isChecked()).toBool());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int minimumFontSize = settings.value(QLatin1String("minimumFontSize"), 0).toInt();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -339,6 +341,7 @@ void SettingsDialog::saveToSettings()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ settings.setValue(QLatin1String("enableJavascript"), enableJavascript->isChecked());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ settings.setValue(QLatin1String("enablePlugins"), enablePlugins->isChecked());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ settings.setValue(QLatin1String("enableImages"), enableImages->isChecked());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ settings.setValue(QLatin1String("enableLocalStorage"), enableLocalStorage->isChecked());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QString userStyleSheetString = userStyleSheet->text();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (QFile::exists(userStyleSheetString))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ settings.setValue(QLatin1String("userStyleSheet"), QUrl::fromLocalFile(userStyleSheetString));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/settings.ui src/settings.ui
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7d4f66e..43275b5 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/settings.ui
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/settings.ui
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -452,6 +452,16 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </property>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </widget>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </item>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ <item row="5" column="0" colspan="2">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ <widget class="QCheckBox" name="enableLocalStorage">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ <property name="text">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ <string>Persistent Data Storage</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ </property>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ <property name="checked">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ <bool>true</bool>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ </property>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ </widget>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ </item>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </layout>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </widget>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </item>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0008-Fix-start-page-not-being-valid-XML-but-claiming-to-b.patch b/www/arora/files/0008-Fix-start-page-not-being-valid-XML-but-claiming-to-b.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..15ddc56753c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0008-Fix-start-page-not-being-valid-XML-but-claiming-to-b.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,33 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 95fe2712df38769037cafce2e7fc9647e6cee068 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Bernhard Rosenkraenzer <bero@arklinux.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 24 May 2011 15:35:58 +0159
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 08/23] Fix start page not being valid XML (but claiming to be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ XHTML) Broke displaying the start page in current WebKit snapshots
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/htmls/startpage.html | 2 ++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 2 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/htmls/startpage.html src/htmls/startpage.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 94d53a0..d5f6731 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/htmls/startpage.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/htmls/startpage.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6,6 +6,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <title></title>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <link rel="stylesheet" href="qrc:/startpage.css" type="text/css" />
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <script type="text/javascript">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ //<![CDATA[
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ function update()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ var searchEngine = window.arora.currentEngine;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -40,6 +41,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ var url = window.arora.searchUrl(string);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ window.location.href = url;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ //]]>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </script>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </head>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <body onload="document.forms[0].lineEdit.select(); update();">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0009-Fix-for-fullscreen-on-Mac-issue931.patch b/www/arora/files/0009-Fix-for-fullscreen-on-Mac-issue931.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..018b29080a9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0009-Fix-for-fullscreen-on-Mac-issue931.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,32 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 158b00c3fe7fafe1bcf21471fbe53bc36ea322c5 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: David Martinez <kendersec@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 19 Jul 2011 19:28:43 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 09/23] Fix for fullscreen on Mac issue931
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/browsermainwindow.cpp | 2 ++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 2 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/browsermainwindow.cpp src/browsermainwindow.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ffcb8b8..05f23b1 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/browsermainwindow.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/browsermainwindow.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1379,6 +1379,7 @@ void BrowserMainWindow::zoomOut()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void BrowserMainWindow::viewFullScreen(bool makeFullScreen)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (makeFullScreen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ setUnifiedTitleAndToolBarOnMac(false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ setWindowState(windowState() | Qt::WindowFullScreen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ menuBar()->hide();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1386,6 +1387,7 @@ void BrowserMainWindow::viewFullScreen(bool makeFullScreen)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ setWindowState(windowState() & ~Qt::WindowFullScreen);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ setUnifiedTitleAndToolBarOnMac(true);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ menuBar()->setVisible(m_menuBarVisible);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ statusBar()->setVisible(m_statusBarVisible);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0010-Fix-xhtml-warning-in-the-startpage.patch b/www/arora/files/0010-Fix-xhtml-warning-in-the-startpage.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..4248dfa18cf
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0010-Fix-xhtml-warning-in-the-startpage.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,25 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From ea6e93afa963ad02ac1fbaa150c1701cc5c2a621 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Benjamin C Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 12 Jun 2012 22:51:43 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 10/23] Fix xhtml warning in the startpage.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/htmls/startpage.html | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/htmls/startpage.html src/htmls/startpage.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d5f6731..c6cdd85 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/htmls/startpage.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/htmls/startpage.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -47,7 +47,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <body onload="document.forms[0].lineEdit.select(); update();">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <div id="header">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <h1 id="headerTitle"></h1>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- <img src="qrc:/arora.svg" />
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ <img src="qrc:/arora.svg" alt="Arora"/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ </div>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <div id="search">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <form action="javascript:formSubmitted();">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0011-Work-around-Qt-bug-in-QCompleter-found-in-Qt-4.8.2.patch b/www/arora/files/0011-Work-around-Qt-bug-in-QCompleter-found-in-Qt-4.8.2.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..531996e5c99
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0011-Work-around-Qt-bug-in-QCompleter-found-in-Qt-4.8.2.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,29 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From b14441dd83c080c1dae3a34f4c825c68b2299c2c Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Benjamin C Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 12 Jun 2012 22:49:22 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 11/23] Work around Qt bug in QCompleter found in Qt 4.8.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A model needs to be passed to the completer otherwise it crashes.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Issue: 957
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/toolbarsearch.cpp | 3 +--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/toolbarsearch.cpp src/toolbarsearch.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5f14206..5907920 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/toolbarsearch.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/toolbarsearch.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -104,8 +104,7 @@ ToolbarSearch::ToolbarSearch(QWidget *parent)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ connect(openSearchManager(), SIGNAL(currentEngineChanged()),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ this, SLOT(currentEngineChanged()));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- m_completer = new QCompleter(this);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- m_completer->setModel(m_model);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ m_completer = new QCompleter(m_model, this);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ setCompleter(m_completer);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0012-Create-autotest-for-BookmarkNode-class.patch b/www/arora/files/0012-Create-autotest-for-BookmarkNode-class.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..747ac132566
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0012-Create-autotest-for-BookmarkNode-class.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,406 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 89a5b9dbe8aa56452dfa1a9241c194eeb9c06a28 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Benjamin C Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Mon, 24 Feb 2014 19:31:06 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 12/23] Create autotest for BookmarkNode class
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+BookmarkNode was causing Arora to crash on exit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+because of the way it was deleting its children.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ autotests/autotests.pro | 1 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ autotests/bookmarknode/.gitignore | 1 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ autotests/bookmarknode/bookmarknode.pro | 14 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ autotests/bookmarknode/tst_bookmarknode.cpp | 272 ++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/bookmarks/bookmarknode.cpp | 13 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/bookmarks/bookmarknode.h | 4 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 6 files changed, 300 insertions(+), 5 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ create mode 100644 autotests/bookmarknode/.gitignore
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ create mode 100644 autotests/bookmarknode/bookmarknode.pro
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ create mode 100644 autotests/bookmarknode/tst_bookmarknode.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git autotests/autotests.pro autotests/autotests.pro
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5e31e94..fdd3290 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- autotests/autotests.pro
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ autotests/autotests.pro
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3,6 +3,7 @@ SUBDIRS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ adblock \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ addbookmarkdialog \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ autosaver \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bookmarknode \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cookiejar \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ historyfiltermodel \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ historymanager \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git autotests/bookmarknode/.gitignore autotests/bookmarknode/.gitignore
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+new file mode 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0000000..e2f5b4a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ autotests/bookmarknode/.gitignore
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++bookmarknode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git autotests/bookmarknode/bookmarknode.pro autotests/bookmarknode/bookmarknode.pro
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+new file mode 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0000000..b796c01
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ autotests/bookmarknode/bookmarknode.pro
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,14 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++TEMPLATE = app
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++TARGET =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++DEPENDPATH += .
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++INCLUDEPATH += . ../
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++include(../autotests.pri)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++QT = core
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# Input
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++SOURCES = bookmarknode.cpp tst_bookmarknode.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++HEADERS = bookmarknode.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++FORMS =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++RESOURCE =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git autotests/bookmarknode/tst_bookmarknode.cpp autotests/bookmarknode/tst_bookmarknode.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+new file mode 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0000000..a8307e7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ autotests/bookmarknode/tst_bookmarknode.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,272 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Copyright (c) 2014 Benjamin C. Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Redistribution and use in source and binary forms, with or without
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * modification, are permitted provided that the following conditions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * are met:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * 1. Redistributions of source code must retain the above copyright
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * notice, this list of conditions and the following disclaimer.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * 2. Redistributions in binary form must reproduce the above copyright
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * notice, this list of conditions and the following disclaimer in the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * documentation and/or other materials provided with the distribution.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * 3. Neither the name of the Benjamin Meyer nor the names of its contributors
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * may be used to endorse or promote products derived from this software
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * without specific prior written permission.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * SUCH DAMAGE.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <QtTest/QtTest>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <bookmarknode.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++class tst_BookmarkNode : public QObject
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Q_OBJECT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++public slots:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void initTestCase();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void cleanupTestCase();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void init();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void cleanup();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++private slots:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void bookmarknode_data();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void bookmarknode();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void add_duplicate();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void add_to_bookmark();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void add_move();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void add_data();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void add();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void equal();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void remove();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void deleteNode();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void deleteChildren();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void type_data();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void type();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// This will be called before the first test function is executed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// It is only called once.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::initTestCase()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// This will be called after the last test function is executed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// It is only called once.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::cleanupTestCase()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// This will be called before each test function is executed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::init()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// This will be called after every test function.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::cleanup()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::bookmarknode_data()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::bookmarknode()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode node;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(node.children(), QList<BookmarkNode*>());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(node.parent(), (BookmarkNode*)0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(node.type(), BookmarkNode::Root);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ node.add((BookmarkNode*)0, -1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ node.remove((BookmarkNode*)0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::add_to_bookmark()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode node(BookmarkNode::Bookmark);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode *child = new BookmarkNode(BookmarkNode::Bookmark);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ node.add(child);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // qWarning()?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(node.children().count(), 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(child->parent(), (BookmarkNode*)0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ delete child;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::add_duplicate()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode node;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode *child = new BookmarkNode(BookmarkNode::Bookmark);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ node.add(child);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ node.add(child);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(node.children().count(), 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::add_move()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode node1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode *child = new BookmarkNode(BookmarkNode::Bookmark);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ node1.add(child);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode node2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ node2.add(child);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(child->parent(), &node2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QVERIFY(node2.children().contains(child));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QVERIFY(!node1.children().contains(child));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::add_data()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QTest::addColumn<int>("startcount");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QTest::addColumn<int>("insertoffset");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QTest::addColumn<int>("resultingoffset");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QTest::newRow("0,-1,0") << 0 << -1 << 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QTest::newRow("0,0,0") << 0 << 0 << 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QTest::newRow("0,1,0") << 0 << 1 << 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QTest::newRow("1,-1,1") << 1 << -1 << 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QTest::newRow("1,0,0") << 1 << 0 << 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QTest::newRow("1,1,0") << 1 << 1 << 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// public void add(BookmarkNode *child, int offset = -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::add()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QFETCH(int, startcount);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QFETCH(int, insertoffset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QFETCH(int, resultingoffset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode node;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for (int i = 0; i < startcount; ++i) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode *child = new BookmarkNode(BookmarkNode::Bookmark);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ node.add(child, -1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode *child = new BookmarkNode(BookmarkNode::Bookmark);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ node.add(child, insertoffset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(child->parent(), &node);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QList<BookmarkNode*> children = node.children();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QVERIFY(children.contains(child));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(children.at(resultingoffset), child);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Q_DECLARE_METATYPE(BookmarkNode)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// public bool equal(BookmarkNode const &other)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::equal()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode null1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode null2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(null1, null2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode b1(BookmarkNode::Bookmark);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode b2(BookmarkNode::Bookmark);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(b1, b2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ b1.title = "title";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QVERIFY(!(b1 == b2));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ b2.title = "title";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(b1, b2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ b1.url = "url";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QVERIFY(!(b1 == b2));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ b2.url = "url";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(b1, b2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ b1.desc = "description";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QVERIFY(!(b1 == b2));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ b2.desc = "description";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(b1, b2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode f1(BookmarkNode::Folder);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode f2(BookmarkNode::Folder);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(f1, f2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ f1.expanded = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QVERIFY(!(f1 == f2));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ f2.expanded = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(f1, f2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode *child1 = new BookmarkNode(BookmarkNode::Bookmark);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ child1->title = "title";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ f1.add(child1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QVERIFY(!(f1 == f2));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode *child2 = new BookmarkNode(BookmarkNode::Bookmark);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ child2->title = "title";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ f2.add(child2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(f1, f2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// public void remove(BookmarkNode *child)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::remove()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode node;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode *child = new BookmarkNode(BookmarkNode::Bookmark);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ node.add(child);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ node.remove(child);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(node.children().count(), 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(child->parent(), (BookmarkNode*)0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ delete child;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::deleteNode()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode node;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode *child = new BookmarkNode(BookmarkNode::Bookmark);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ node.add(child);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ delete child;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(node.children().count(), 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(child->parent(), (BookmarkNode*)0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::deleteChildren()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode *node = new BookmarkNode();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for (int i = 0; i < 10; ++i) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode *child = new BookmarkNode(BookmarkNode::Bookmark);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ node->add(child, -1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ delete node;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // This shouldn't segfualt :)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Q_DECLARE_METATYPE(BookmarkNode::Type)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::type_data()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QTest::addColumn<BookmarkNode::Type>("type");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QTest::newRow("root") << BookmarkNode::Root;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QTest::newRow("folder") << BookmarkNode::Folder;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QTest::newRow("sep") << BookmarkNode::Separator;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QTest::newRow("bookmark") << BookmarkNode::Bookmark;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// public BookmarkNode::Type type() const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_BookmarkNode::type()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QFETCH(BookmarkNode::Type, type);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ BookmarkNode node(type);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(node.type(), type);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (node.type() == BookmarkNode::Root)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QVERIFY(!node.parent());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (node.type() == BookmarkNode::Bookmark)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QVERIFY(node.children().isEmpty());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++QTEST_MAIN(tst_BookmarkNode)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "tst_bookmarknode.moc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/bookmarks/bookmarknode.cpp src/bookmarks/bookmarknode.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ce6d742..a05e239 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/bookmarks/bookmarknode.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/bookmarks/bookmarknode.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,5 +1,5 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * Copyright 2008-2009 Benjamin C. Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Copyright 2008-2014 Benjamin C. Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This program is free software; you can redistribute it and/or modify
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * it under the terms of the GNU General Public License as published by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -75,12 +75,13 @@ BookmarkNode::~BookmarkNode()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (m_parent)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_parent->remove(this);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- qDeleteAll(m_children);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ for (int i = m_children.count() -1; i >= 0; --i)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ delete m_children[i];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_parent = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_type = BookmarkNode::Root;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-bool BookmarkNode::operator==(const BookmarkNode &other)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++bool BookmarkNode::operator==(const BookmarkNode &other) const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (url != other.url
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ || title != other.title
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -118,6 +119,10 @@ BookmarkNode *BookmarkNode::parent() const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void BookmarkNode::add(BookmarkNode *child, int offset)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!child)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (m_type == BookmarkNode::Bookmark)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Q_ASSERT(child->m_type != Root);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (child->m_parent)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ child->m_parent->remove(child);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -129,6 +134,8 @@ void BookmarkNode::add(BookmarkNode *child, int offset)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void BookmarkNode::remove(BookmarkNode *child)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!child)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ child->m_parent = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_children.removeAll(child);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/bookmarks/bookmarknode.h src/bookmarks/bookmarknode.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b817c28..69c05d2 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/bookmarks/bookmarknode.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/bookmarks/bookmarknode.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,5 +1,5 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * Copyright 2008-2009 Benjamin C. Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Copyright 2008-2014 Benjamin C. Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This program is free software; you can redistribute it and/or modify
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * it under the terms of the GNU General Public License as published by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -78,7 +78,7 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ BookmarkNode(Type type = Root, BookmarkNode *parent = 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ~BookmarkNode();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- bool operator==(const BookmarkNode &other);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bool operator==(const BookmarkNode &other) const;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Type type() const;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void setType(Type type);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0013-Don-t-output-error-when-checking-files-that-have-bee.patch b/www/arora/files/0013-Don-t-output-error-when-checking-files-that-have-bee.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..6782d9a1f13
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0013-Don-t-output-error-when-checking-files-that-have-bee.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,58 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 64def776ff1d0d47b64a400c27cb8e5ca9093b9d Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Benjamin C Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Mon, 17 Feb 2014 22:59:05 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 13/23] Don't output error when checking files that have been
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ removed and don't exists.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ git_hooks/pre-commit/copyrightyear | 5 ++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ git_hooks/pre-commit/stylecheck_bash | 5 ++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 8 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git git_hooks/pre-commit/copyrightyear git_hooks/pre-commit/copyrightyear
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index a5d14e3..ce5fe21 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- git_hooks/pre-commit/copyrightyear
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ git_hooks/pre-commit/copyrightyear
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,6 +1,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #!/bin/bash
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# Copyright (c) 2010, Benjamin C. Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# Copyright (c) 2010-2014, Benjamin C. Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # All rights reserved.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Redistribution and use in source and binary forms, with or without
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -27,6 +27,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ function test_file {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if [ ! -f $file ] ; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ year=`date +%Y`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "--checking copyright year: $file"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ grep $year $file >> /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git git_hooks/pre-commit/stylecheck_bash git_hooks/pre-commit/stylecheck_bash
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 57ecb30..fe582f2 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- git_hooks/pre-commit/stylecheck_bash
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ git_hooks/pre-commit/stylecheck_bash
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,6 +1,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #!/bin/bash
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# Copyright (c) 2010, Benjamin C. Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# Copyright (c) 2010-2014, Benjamin C. Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # All rights reserved.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Redistribution and use in source and binary forms, with or without
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -30,6 +30,9 @@ dir=`dirname $0`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ function test_file {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file="${1}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if [ ! -f "${file}" ] ; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "--checking style via bash hack: $file"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ GITDIR=`git rev-parse --git-dir`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cd $GITDIR/../
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0014-Expose-HistoryManager-addHistoryEntry-QString.patch b/www/arora/files/0014-Expose-HistoryManager-addHistoryEntry-QString.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..519d7616e59
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0014-Expose-HistoryManager-addHistoryEntry-QString.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,111 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From dce971df1dfc419545ad77e3dc30e6fd69ab7d43 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Benjamin C Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 9 Mar 2014 14:39:19 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 14/23] Expose HistoryManager::addHistoryEntry(QString)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+addHistoryEntry(QString) could only be called by first getting
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+a pointer to the QWebHistoryInterface due to the existence of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+the protected addHistoryEntry(HistoryEntry) which was renamed to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+rependHistoryEntry() to make it more clear what it is doing.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ autotests/historymanager/tst_historymanager.cpp | 14 +++++++-------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/history/historymanager.cpp | 4 ++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/history/historymanager.h | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3 files changed, 10 insertions(+), 10 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git autotests/historymanager/tst_historymanager.cpp autotests/historymanager/tst_historymanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 2ff7104..2dc5461 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- autotests/historymanager/tst_historymanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ autotests/historymanager/tst_historymanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,5 +1,5 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- * Copyright 2008 Benjamin C. Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Copyright 2008-2014 Benjamin C. Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This program is free software; you can redistribute it and/or modify
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * it under the terms of the GNU General Public License as published by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -78,8 +78,8 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ setDaysToExpire(30);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- void addHistoryEntry(const HistoryEntry &item)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- { HistoryManager::addHistoryEntry(item); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void prependHistoryEntry(const HistoryEntry &item)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ { HistoryManager::prependHistoryEntry(item); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // This will be called before the first test function is executed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -132,7 +132,7 @@ void tst_HistoryManager::history_data()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void tst_HistoryManager::history()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SubHistory history;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- history.addHistoryEntry(HistoryEntry());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ history.prependHistoryEntry(HistoryEntry());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ history.clear();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QCOMPARE(history.daysToExpire(), 30);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ history.setDaysToExpire(-1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -200,7 +200,7 @@ void tst_HistoryManager::addHistoryEntry()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SubHistory history;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ history.setHistory(initial);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for (int i = 0; i < items.count(); ++i)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- history.addHistoryEntry(items[i]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ history.prependHistoryEntry(items[i]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QCOMPARE(history.history().count(), expected.count());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QCOMPARE(history.history(), expected);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -278,7 +278,7 @@ void tst_HistoryManager::daysToExpire()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for (int i = 0; i < list.count(); ++i) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ HistoryEntry item = list.at(i);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ item.dateTime = QDateTime::currentDateTime();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- history.addHistoryEntry(item);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ history.prependHistoryEntry(item);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -387,7 +387,7 @@ void tst_HistoryManager::saveload()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // add url
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ HistoryEntry foo("http://new.com", QDateTime::currentDateTime().addDays(1));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post.prepend(foo);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- history.addHistoryEntry(foo);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ history.prependHistoryEntry(foo);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/history/historymanager.cpp src/history/historymanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 6d247ce..c342294 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/history/historymanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/history/historymanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -144,7 +144,7 @@ void HistoryManager::addHistoryEntry(const QString &url)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cleanUrl.setPassword(QString());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cleanUrl.setHost(cleanUrl.host().toLower());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ HistoryEntry item(atomicString(cleanUrl.toString()), QDateTime::currentDateTime());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- addHistoryEntry(item);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ prependHistoryEntry(item);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void HistoryManager::setHistory(const QList<HistoryEntry> &history, bool loadedAndSorted)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -210,7 +210,7 @@ void HistoryManager::checkForExpired()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_expiredTimer.start(nextTimeout * 1000);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-void HistoryManager::addHistoryEntry(const HistoryEntry &item)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void HistoryManager::prependHistoryEntry(const HistoryEntry &item)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QWebSettings *globalSettings = QWebSettings::globalSettings();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (globalSettings->testAttribute(QWebSettings::PrivateBrowsingEnabled))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/history/historymanager.h src/history/historymanager.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f5275e2..771b76e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/history/historymanager.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/history/historymanager.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -139,7 +139,7 @@ private slots:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void refreshFrecencies();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ protected:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- void addHistoryEntry(const HistoryEntry &item);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void prependHistoryEntry(const HistoryEntry &item);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void removeHistoryEntry(const HistoryEntry &item);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ private:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0015-Add-unit-tests-for-functionality-that-wasn-t-unit-te.patch b/www/arora/files/0015-Add-unit-tests-for-functionality-that-wasn-t-unit-te.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..8db2ce9954c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0015-Add-unit-tests-for-functionality-that-wasn-t-unit-te.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,62 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 5101fa2595c234ee17426be84d3db2c8d38e7d1a Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Benjamin C Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 9 Mar 2014 14:42:07 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 15/23] Add unit tests for functionality that wasn't unit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tested.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .../historymanager/tst_historymanager.cpp | 24 +++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 24 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git autotests/historymanager/tst_historymanager.cpp autotests/historymanager/tst_historymanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 2dc5461..c1173f9 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- autotests/historymanager/tst_historymanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ autotests/historymanager/tst_historymanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -25,6 +25,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <historycompleter.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <modeltest.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <qwebsettings.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class tst_HistoryManager : public QObject
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Q_OBJECT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -40,6 +42,8 @@ private slots:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void history();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void addHistoryEntry_data();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void addHistoryEntry();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void addHistoryEntry_private();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void addHistoryEntry_url();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void updateHistoryEntry_data();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void updateHistoryEntry();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void daysToExpire_data();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -205,6 +209,26 @@ void tst_HistoryManager::addHistoryEntry()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QCOMPARE(history.history(), expected);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_HistoryManager::addHistoryEntry_private()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ SubHistory history;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ history.setHistory(HistoryList());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QWebSettings *globalSettings = QWebSettings::globalSettings();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ globalSettings->setAttribute(QWebSettings::PrivateBrowsingEnabled, true);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ history.prependHistoryEntry(HistoryEntry());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ globalSettings->setAttribute(QWebSettings::PrivateBrowsingEnabled, false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QVERIFY(history.history().isEmpty());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void tst_HistoryManager::addHistoryEntry_url()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ SubHistory history;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QString urlWithPassword("http://username:password@example.com");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ history.addHistoryEntry(urlWithPassword);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QString cleanedUrl = "http://username@example.com";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QCOMPARE(history.history()[0].url, cleanedUrl);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void tst_HistoryManager::updateHistoryEntry_data()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QTest::addColumn<HistoryList>("list");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0016-Move-FrecencyTimer-to-the-HistoryFilterModel.patch b/www/arora/files/0016-Move-FrecencyTimer-to-the-HistoryFilterModel.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..fcb51872879
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0016-Move-FrecencyTimer-to-the-HistoryFilterModel.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,129 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From cd99503803552cc82ee059017a85d3058a677232 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Benjamin C Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 9 Mar 2014 18:01:06 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 16/23] Move FrecencyTimer to the HistoryFilterModel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This timer has nothing to do with the HistoryModel and it only
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+calls a function in the HistoryFilterModel so the fact that it is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+in this class is confusing.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/history/history.cpp | 18 ++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/history/history.h | 5 +++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/history/historymanager.cpp | 19 +------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/history/historymanager.h | 2 --
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4 files changed, 24 insertions(+), 20 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/history/history.cpp src/history/history.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 23e4119..77fc0e9 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/history/history.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/history/history.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -470,7 +470,25 @@ HistoryFilterModel::HistoryFilterModel(QAbstractItemModel *sourceModel, QObject
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ : QAbstractProxyModel(parent)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ , m_loaded(false)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ m_frecencyTimer.setSingleShot(true);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ connect(&m_frecencyTimer, SIGNAL(timeout()),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ this, SLOT(refreshFrecencies()));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ setSourceModel(sourceModel);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ startFrecencyTimer();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void HistoryFilterModel::refreshFrecencies()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ recalculateFrecencies();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ startFrecencyTimer();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void HistoryFilterModel::startFrecencyTimer()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // schedule us to recalculate the frecencies once per day, at 3:00 am (aka 03h00)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QDateTime tomorrow(QDate::currentDate().addDays(1), QTime(3, 00));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ m_frecencyTimer.start(QDateTime::currentDateTime().secsTo(tomorrow)*1000);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int HistoryFilterModel::historyLocation(const QString &url) const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/history/history.h src/history/history.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4cef818..5c980ff 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/history/history.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/history/history.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -144,9 +144,14 @@ private slots:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void sourceDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void sourceRowsInserted(const QModelIndex &parent, int start, int end);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void sourceRowsRemoved(const QModelIndex &, int, int);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void refreshFrecencies();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ private:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void load() const;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void startFrecencyTimer();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QTimer m_frecencyTimer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QString m_lastSavedUrl;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct HistoryData {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int tailOffset;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/history/historymanager.cpp src/history/historymanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c342294..87c0cf5 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/history/historymanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/history/historymanager.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -102,9 +102,6 @@ HistoryManager::HistoryManager(QObject *parent)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_expiredTimer.setSingleShot(true);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ connect(&m_expiredTimer, SIGNAL(timeout()),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ this, SLOT(checkForExpired()));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- m_frecencyTimer.setSingleShot(true);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- connect(&m_frecencyTimer, SIGNAL(timeout()),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- this, SLOT(refreshFrecencies()));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ connect(this, SIGNAL(entryAdded(const HistoryEntry &)),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_saveTimer, SLOT(changeOccurred()));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ connect(this, SIGNAL(entryRemoved(const HistoryEntry &)),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -117,7 +114,6 @@ HistoryManager::HistoryManager(QObject *parent)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // QWebHistoryInterface will delete the history manager
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QWebHistoryInterface::setDefaultInterface(this);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- startFrecencyTimer();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ HistoryManager::~HistoryManager()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -417,17 +413,4 @@ void HistoryManager::save()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ qWarning() << "History: error moving new history over old." << tempFile.errorString() << historyFile.fileName();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_lastSavedUrl = m_history.value(0).url;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-void HistoryManager::refreshFrecencies()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- m_historyFilterModel->recalculateFrecencies();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- startFrecencyTimer();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-void HistoryManager::startFrecencyTimer()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- // schedule us to recalculate the frecencies once per day, at 3:00 am (aka 03h00)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- QDateTime tomorrow(QDate::currentDate().addDays(1), QTime(3, 00));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- m_frecencyTimer.start(QDateTime::currentDateTime().secsTo(tomorrow)*1000);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\ No newline at end of file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/history/historymanager.h src/history/historymanager.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 771b76e..13c0854 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/history/historymanager.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/history/historymanager.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -136,7 +136,6 @@ public slots:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ private slots:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void save();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void checkForExpired();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- void refreshFrecencies();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ protected:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void prependHistoryEntry(const HistoryEntry &item);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -150,7 +149,6 @@ private:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AutoSaver *m_saveTimer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int m_daysToExpire;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QTimer m_expiredTimer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- QTimer m_frecencyTimer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QHash<QString, int> m_atomicStringHash;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QList<HistoryEntry> m_history;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QString m_lastSavedUrl;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0017-Fix-segfaults-in-history-manual-test.patch b/www/arora/files/0017-Fix-segfaults-in-history-manual-test.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..9a9fa54f58d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0017-Fix-segfaults-in-history-manual-test.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,55 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From c5421dcf7d68ba61c3a5bed580e8fd65395643e1 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Benjamin C Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Wed, 12 Mar 2014 21:02:46 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 17/23] Fix segfaults in history manual test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ manualtests/history/main_history.cpp | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/history/history.cpp | 5 +++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/history/history.h | 1 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3 files changed, 7 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git manualtests/history/main_history.cpp manualtests/history/main_history.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index dadaa2e..6b8669c 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- manualtests/history/main_history.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ manualtests/history/main_history.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -67,7 +67,7 @@ int main(int argc, char **argv)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ historyCompletionModelView->setModel(completionModel);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tabWidget.addTab(historyCompletionModelView, "HistoryCompletionModel");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- HistoryDialog dialog;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ HistoryDialog dialog(0, &history);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tabWidget.addTab(dialog.tree, "DialogModel");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tabWidget.setCurrentIndex(3);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/history/history.cpp src/history/history.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 77fc0e9..7419cf0 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/history/history.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/history/history.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -243,6 +243,11 @@ int HistoryMenuModel::rowCount(const QModelIndex &parent) const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return defaultCount;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++QModelIndex HistoryMenuModel::buddy(const QModelIndex &index) const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return index;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QModelIndex HistoryMenuModel::mapFromSource(const QModelIndex &sourceIndex) const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // currently not used or autotested
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/history/history.h src/history/history.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5c980ff..84e596f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/history/history.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/history/history.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -201,6 +201,7 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QModelIndex index(int, int, const QModelIndex &parent = QModelIndex()) const;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QModelIndex parent(const QModelIndex &index = QModelIndex()) const;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QMimeData *mimeData(const QModelIndexList &indexes) const;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QModelIndex buddy(const QModelIndex &index) const;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int bumpedRows() const;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/www/arora/files/0018-Update-README-after-project-has-officially-moved-all.patch b/www/arora/files/0018-Update-README-after-project-has-officially-moved-all.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..f464d7a25c3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/www/arora/files/0018-Update-README-after-project-has-officially-moved-all.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,29 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 7c7514d85a22b570fc85b47c010d0615f39e270d Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Benjamin C Meyer <ben@meyerhome.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 23 Jun 2015 23:05:05 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 18/23] Update README after project has officially moved all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ aspects to GitHub
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ README | 5 +----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+), 4 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git README README
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d98baac..1f2bd21 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- README
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ README
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,10 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Arora web browser
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-http://www.arora-browser.org
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Arora is a cross platform web browser built using Qt and WebKit.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Building:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Arora uses the qmake build system. If you already have Qt 4.5 or newer on your system building is as easy as running the command 'qmake' and then 'make' or 'nmake' on Windows.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-For more detailed information see http://code.google.com/p/arora/wiki/source?tm=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++For more detailed information see https://github.com/Arora/arora/wiki/BeginnerStepByStepInstructions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.44.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span></pre><pre style='margin:0'>
</pre>