[kdelibs] backport: Load/Update filter lists only when AdBlock is enabled

Than Ngo than at fedoraproject.org
Thu Apr 12 08:30:40 UTC 2012


commit 1d67fe36683e0ffb8d4e404d3db9ac4cc8d1fb82
Author: Than Ngo <than at redhat.com>
Date:   Thu Apr 12 10:30:26 2012 +0200

    backport: Load/Update filter lists only when AdBlock is enabled

 kdelibs-4.8.2-filter.patch |  123 ++++++++++++++++++++++++++++++++++++++++++++
 kdelibs.spec               |    8 +++-
 2 files changed, 130 insertions(+), 1 deletions(-)
---
diff --git a/kdelibs-4.8.2-filter.patch b/kdelibs-4.8.2-filter.patch
new file mode 100644
index 0000000..1312092
--- /dev/null
+++ b/kdelibs-4.8.2-filter.patch
@@ -0,0 +1,123 @@
+commit abc933ccee0af644bc642dc7551651d1ce0ca29a
+Author: Andrea Iacovitti <aiacovitti at libero.it>
+Date:   Wed Apr 11 22:38:35 2012 +0200
+
+    Load/Update filter lists only when AdBlock is enabled.
+    
+    FIXED-IN: 4.8.3
+
+diff --git a/khtml/khtml_settings.cpp b/khtml/khtml_settings.cpp
+index 118f388..bbe1bb4 100644
+--- a/khtml/khtml_settings.cpp
++++ b/khtml/khtml_settings.cpp
+@@ -410,59 +410,63 @@ void KHTMLSettings::init( KConfig * config, bool reset )
+       d->adBlackList.clear();
+       d->adWhiteList.clear();
+ 
+-      /** read maximum age for filter list files, minimum is one day */
+-      int htmlFilterListMaxAgeDays = cgFilter.readEntry(QString("HTMLFilterListMaxAgeDays")).toInt();
+-      if (htmlFilterListMaxAgeDays < 1)
+-          htmlFilterListMaxAgeDays = 1;
+-
+-      QMap<QString,QString> entryMap = cgFilter.entryMap();
+-      QMap<QString,QString>::ConstIterator it;
+-      for( it = entryMap.constBegin(); it != entryMap.constEnd(); ++it )
+-      {
+-          int id = -1;
+-          QString name = it.key();
+-          QString url = it.value();
++      if (d->m_adFilterEnabled) {
+ 
+-          if (name.startsWith("Filter"))
+-          {
+-              if (url.startsWith(QLatin1String("@@")))
+-                  d->adWhiteList.addFilter(url);
+-              else
+-                  d->adBlackList.addFilter(url);
+-          } else if (name.startsWith("HTMLFilterListName-") && (id = name.mid(19).toInt()) > 0)
++          /** read maximum age for filter list files, minimum is one day */
++          int htmlFilterListMaxAgeDays = cgFilter.readEntry(QString("HTMLFilterListMaxAgeDays")).toInt();
++          if (htmlFilterListMaxAgeDays < 1)
++              htmlFilterListMaxAgeDays = 1;
++
++          QMap<QString,QString> entryMap = cgFilter.entryMap();
++          QMap<QString,QString>::ConstIterator it;
++          for( it = entryMap.constBegin(); it != entryMap.constEnd(); ++it )
+           {
+-              /** check if entry is enabled */
+-              bool filterEnabled = cgFilter.readEntry(QString("HTMLFilterListEnabled-").append(QString::number(id))) != QLatin1String("false");
+-
+-              /** get url for HTMLFilterList */
+-              KUrl url(cgFilter.readEntry(QString("HTMLFilterListURL-").append(QString::number(id))));
+-
+-              if (filterEnabled && url.isValid()) {
+-                  /** determine where to cache HTMLFilterList file */
+-                  QString localFile = cgFilter.readEntry(QString("HTMLFilterListLocalFilename-").append(QString::number(id)));
+-                  localFile = KStandardDirs::locateLocal("data", "khtml/" + localFile);
+-
+-                  /** determine existence and age of cache file */
+-                  QFileInfo fileInfo(localFile);
+-
+-                  /** load cached file if it exists, irrespective of age */
+-                  if (fileInfo.exists())
+-                      d->adblockFilterLoadList( localFile );
+-
+-                  /** if no cache list file exists or if it is too old ... */
+-                  if (!fileInfo.exists() || fileInfo.lastModified().daysTo(QDateTime::currentDateTime()) > htmlFilterListMaxAgeDays)
+-                  {
+-                      /** ... in this case, refetch list asynchronously */
+-                      kDebug(6000) << "Asynchronously fetching filter list from" << url << "to" << localFile;
+-
+-                      KIO::StoredTransferJob *job = KIO::storedGet( url, KIO::Reload, KIO::HideProgressInfo );
+-                      QObject::connect( job, SIGNAL(result(KJob*)), d, SLOT(adblockFilterResult(KJob*)) );
+-                      /** for later reference, store name of cache file */
+-                      job->setProperty("khtmlsettings_adBlock_filename", localFile);
++              int id = -1;
++              QString name = it.key();
++              QString url = it.value();
++
++              if (name.startsWith("Filter"))
++              {
++                  if (url.startsWith(QLatin1String("@@")))
++                      d->adWhiteList.addFilter(url);
++                  else
++                      d->adBlackList.addFilter(url);
++              } else if (name.startsWith("HTMLFilterListName-") && (id = name.mid(19).toInt()) > 0)
++              {
++                  /** check if entry is enabled */
++                  bool filterEnabled = cgFilter.readEntry(QString("HTMLFilterListEnabled-").append(QString::number(id))) != QLatin1String("false");
++
++                  /** get url for HTMLFilterList */
++                  KUrl url(cgFilter.readEntry(QString("HTMLFilterListURL-").append(QString::number(id))));
++
++                  if (filterEnabled && url.isValid()) {
++                      /** determine where to cache HTMLFilterList file */
++                      QString localFile = cgFilter.readEntry(QString("HTMLFilterListLocalFilename-").append(QString::number(id)));
++                      localFile = KStandardDirs::locateLocal("data", "khtml/" + localFile);
++
++                      /** determine existence and age of cache file */
++                      QFileInfo fileInfo(localFile);
++
++                      /** load cached file if it exists, irrespective of age */
++                      if (fileInfo.exists())
++                          d->adblockFilterLoadList( localFile );
++
++                      /** if no cache list file exists or if it is too old ... */
++                      if (!fileInfo.exists() || fileInfo.lastModified().daysTo(QDateTime::currentDateTime()) > htmlFilterListMaxAgeDays)
++                      {
++                          /** ... in this case, refetch list asynchronously */
++                          kDebug(6000) << "Asynchronously fetching filter list from" << url << "to" << localFile;
++
++                          KIO::StoredTransferJob *job = KIO::storedGet( url, KIO::Reload, KIO::HideProgressInfo );
++                          QObject::connect( job, SIGNAL(result(KJob*)), d, SLOT(adblockFilterResult(KJob*)) );
++                          /** for later reference, store name of cache file */
++                          job->setProperty("khtmlsettings_adBlock_filename", localFile);
++                      }
+                   }
+               }
+           }
+       }
++
+   }
+ 
+   KConfigGroup cgHtml( config, "HTML Settings" );
diff --git a/kdelibs.spec b/kdelibs.spec
index ea7f852..b8afa32 100644
--- a/kdelibs.spec
+++ b/kdelibs.spec
@@ -20,7 +20,7 @@
 
 Summary: KDE Libraries
 Version: 4.8.2
-Release: 1%{?dist}
+Release: 2%{?dist}
 
 Name: kdelibs
 Epoch: 6
@@ -132,6 +132,8 @@ Patch53: kdelibs-4.7.2-kjs-s390.patch
 ## upstream 
 # don't set rpath on multiarch dirs,  https://git.reviewboard.kde.org/r/103422
 Patch101: kdelibs-4.8.0-cmake_cxx_implicit_link_directories.patch
+# Load/Update filter lists only when AdBlock is enabled
+Patch102: kdelibs-4.8.2-filter.patch
 
 ## security fix
 # Not Upstreamed? why not ? -- Rex
@@ -322,6 +324,7 @@ sed -i -e "s|@@VERSION_RELEASE@@|%{version}-%{release}|" kio/kio/kprotocolmanage
 
 # upstream patches
 %patch101 -p1 -b .cmake_cxx_implicit_link_directories
+%patch102 -p1 -b .filter
 
 # security fixes
 %patch200 -p1 -b .CVE-2009-2702
@@ -575,6 +578,9 @@ rm -rf %{buildroot}
 
 
 %changelog
+* Thu Apr 12 2012 Than Ngo <than at redhat.com> - 6:4.8.2-2
+- Load/Update filter lists only when AdBlock is enabled
+
 * Fri Mar 30 2012 Jaroslav Reznik <jreznik at redhat.com> - 6:4.8.2-1
 - 4.8.2
 


More information about the scm-commits mailing list