[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/libs/webkitkde
From: Tom Albers <tomalbers () kde ! nl>
Date: 2009-04-15 21:19:05
Message-ID: 1239830345.932188.14414.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 954536 by toma:
Add the possibility to kdewebkit to block external content.
M +17 -1 kdenetwork/knetworkaccessmanager.cpp
M +2 -0 kdenetwork/knetworkaccessmanager.h
M +18 -2 kdewebkit/kwebpage.cpp
M +10 -0 kdewebkit/kwebpage.h
--- trunk/playground/libs/webkitkde/kdenetwork/knetworkaccessmanager.cpp \
#954535:954536 @@ -34,7 +34,8 @@
class KNetworkAccessManager::KNetworkAccessManagerPrivate
{
public:
- KNetworkAccessManagerPrivate() {}
+ KNetworkAccessManagerPrivate():externalContentAllowed(true) {}
+ bool externalContentAllowed;
static KIO::MetaData metaDataForRequest(QNetworkRequest request);
};
@@ -49,10 +50,25 @@
delete d;
}
+void KNetworkAccessManager::setExternalContentAllowed(bool allowed)
+{
+ d->externalContentAllowed = allowed;
+}
+
+bool KNetworkAccessManager::externalContentAllowed()
+{
+ return d->externalContentAllowed;
+}
+
QNetworkReply *KNetworkAccessManager::createRequest(Operation op, const \
QNetworkRequest &req, QIODevice *outgoingData) {
KIO::Job *kioJob = 0;
+ if ( !d->externalContentAllowed ) {
+ kDebug() << "Blocked: " << req.url();
+ return new KNetworkReply(op, req, kioJob, this);
+ }
+
switch (op) {
case HeadOperation: {
kDebug() << "HeadOperation:" << req.url();
--- trunk/playground/libs/webkitkde/kdenetwork/knetworkaccessmanager.h #954535:954536
@@ -40,6 +40,8 @@
public:
KNetworkAccessManager(QObject *parent);
virtual ~KNetworkAccessManager();
+ void setExternalContentAllowed(bool allowed);
+ bool externalContentAllowed();
protected:
virtual QNetworkReply *createRequest(Operation op, const QNetworkRequest &req, \
QIODevice *outgoingData = 0);
--- trunk/playground/libs/webkitkde/kdewebkit/kwebpage.cpp #954535:954536
@@ -95,16 +95,22 @@
{
public:
KWebPagePrivate() {}
+#if KDE_IS_VERSION(4, 2, 70)
+ KIO::AccessManager* accessManager;
+#else
+ KNetworkAccessManager* accessManager;
+#endif
};
KWebPage::KWebPage(QObject *parent)
: QWebPage(parent), d(new KWebPage::KWebPagePrivate())
{
#if KDE_IS_VERSION(4, 2, 70)
- setNetworkAccessManager(new KIO::AccessManager(this));
+ d->accessManager = new KIO::AccessManager(this);
#else
- setNetworkAccessManager(new KNetworkAccessManager(this));
+ d->accessManager = new KNetworkAccessManager(this);
#endif
+ setNetworkAccessManager(d->accessManager);
setPluginFactory(new KWebPluginFactory(pluginFactory(), this));
action(Back)->setIcon(KIcon("go-previous"));
@@ -164,6 +170,16 @@
delete d;
}
+void KWebPage::setAllowExternalContent(bool allow)
+{
+ d->accessManager->setExternalContentAllowed(allow);
+}
+
+bool KWebPage::allowExternalContent()
+{
+ return d->accessManager->externalContentAllowed();
+}
+
QString KWebPage::chooseFile(QWebFrame *frame, const QString &suggestedFile)
{
return KFileDialog::getOpenFileName(suggestedFile, QString(), \
frame->page()->view());
--- trunk/playground/libs/webkitkde/kdewebkit/kwebpage.h #954535:954536
@@ -37,7 +37,17 @@
public:
KWebPage(QObject *parent);
~KWebPage();
+ /**
+ * Set @p allow to false if you don't want to allow showing external content,
+ * so no external images for example. By default external content is fetched.
+ */
+ void setAllowExternalContent(bool allow);
+ /**
+ * returns if external content is fetched, see setAllowExternalContent().
+ */
+ bool allowExternalContent();
+
protected:
virtual KWebPage *createWindow(WebWindowType type);
virtual KWebPage *newWindow(WebWindowType type);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic