[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/runtime/plasma/scriptengines/javascript/declarative
From: Marco Martin <notmart () gmail ! com>
Date: 2010-10-21 19:02:29
Message-ID: 20101021190229.86B59AC897 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1188241 by mart:
check with the authorization manager whether to allow the import of a certain url \
(unfortunatel doesn't seem to be any way to block local absolute paths :/)
M +34 -3 packageaccessmanager.cpp
M +6 -2 packageaccessmanager.h
M +5 -3 packageaccessmanagerfactory.cpp
M +5 -1 packageaccessmanagerfactory.h
--- trunk/KDE/kdebase/runtime/plasma/scriptengines/javascript/declarative/packageaccessmanager.cpp \
#1188240:1188241 @@ -19,11 +19,38 @@
#include "packageaccessmanager.h"
+#include <QNetworkReply>
+
#include <Plasma/Package>
-PackageAccessManager::PackageAccessManager(const Plasma::Package *package, QObject \
*parent) +#include "plasmoid/appletauthorization.h"
+
+class ErrorReply : public QNetworkReply
+{
+public:
+ ErrorReply(QNetworkAccessManager::Operation op, const QNetworkRequest &req)
+ : QNetworkReply()
+ {
+ setError(QNetworkReply::ContentOperationNotPermittedError, "The plasmoid has \
not been authorized to load remote content"); + setOperation(op);
+ setRequest(req);
+ setUrl(req.url());
+ }
+
+ qint64 readData(char *data, qint64 maxSize)
+ {
+ return 0;
+ }
+
+ void abort()
+ {
+ }
+};
+
+PackageAccessManager::PackageAccessManager(const Plasma::Package *package, \
AppletAuthorization *auth, QObject *parent) : KIO::AccessManager(parent),
- m_package(package)
+ m_package(package),
+ m_auth(auth)
{
}
@@ -32,7 +59,7 @@
}
-QNetworkReply *PackageAccessManager::createRequest(Operation op, const \
QNetworkRequest &req, QIODevice *outgoingData) +QNetworkReply \
*PackageAccessManager::createRequest(QNetworkAccessManager::Operation op, const \
QNetworkRequest &req, QIODevice *outgoingData) {
QUrl reqUrl(req.url());
@@ -42,6 +69,10 @@
reqUrl.setPath(m_package->path()+"/contents/"+reqUrl.path());
request.setUrl(reqUrl);
return KIO::AccessManager::createRequest(op, request, outgoingData);
+ } else if ((reqUrl.scheme() == "http" && \
!m_auth->authorizeRequiredExtension("http")) || + ((reqUrl.scheme() == \
"file" || reqUrl.scheme() == "desktop") && \
!m_auth->authorizeRequiredExtension("localio")) || + \
(!m_auth->authorizeRequiredExtension("networkio"))) { + return new \
ErrorReply(op, req); } else {
return KIO::AccessManager::createRequest(op, req, outgoingData);
}
--- trunk/KDE/kdebase/runtime/plasma/scriptengines/javascript/declarative/packageaccessmanager.h \
#1188240:1188241 @@ -22,22 +22,26 @@
#include <kio/accessmanager.h>
+
namespace Plasma
{
class Package;
}
+class AppletAuthorization;
+
class PackageAccessManager : public KIO::AccessManager
{
public:
- PackageAccessManager(const Plasma::Package *package, QObject *parent = 0);
+ PackageAccessManager(const Plasma::Package *package, AppletAuthorization *auth, \
QObject *parent = 0); ~PackageAccessManager();
protected:
- QNetworkReply *createRequest(Operation op, const QNetworkRequest &req, QIODevice \
*outgoingData = 0); + QNetworkReply \
*createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &req, \
QIODevice *outgoingData = 0);
private:
const Plasma::Package *m_package;
+ AppletAuthorization *m_auth;
};
#endif
--- trunk/KDE/kdebase/runtime/plasma/scriptengines/javascript/declarative/packageaccessmanagerfactory.cpp \
#1188240:1188241 @@ -22,10 +22,12 @@
#include <Plasma/Package>
#include "packageaccessmanager.h"
+#include "plasmoid/appletauthorization.h"
-PackageAccessManagerFactory::PackageAccessManagerFactory(const Plasma::Package \
*package) +PackageAccessManagerFactory::PackageAccessManagerFactory(const \
Plasma::Package *package, AppletAuthorization *auth) : \
QDeclarativeNetworkAccessManagerFactory(),
- m_package(package)
+ m_package(package),
+ m_auth(auth)
{
}
@@ -35,7 +37,7 @@
QNetworkAccessManager *PackageAccessManagerFactory::create(QObject *parent)
{
- return new PackageAccessManager(m_package, parent);
+ return new PackageAccessManager(m_package, m_auth, parent);
}
--- trunk/KDE/kdebase/runtime/plasma/scriptengines/javascript/declarative/packageaccessmanagerfactory.h \
#1188240:1188241 @@ -22,20 +22,24 @@
#include <QDeclarativeNetworkAccessManagerFactory>
+
namespace Plasma
{
class Package;
}
+class AppletAuthorization;
+
class PackageAccessManagerFactory : public QDeclarativeNetworkAccessManagerFactory
{
public:
- PackageAccessManagerFactory(const Plasma::Package *package);
+ PackageAccessManagerFactory(const Plasma::Package *package, AppletAuthorization \
*auth); ~PackageAccessManagerFactory();
QNetworkAccessManager *create(QObject *parent);
private:
const Plasma::Package *m_package;
+ AppletAuthorization *m_auth;
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic