From 6ff8554ae70bf9a191e03557a71c9257457a9ae6 Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Thu, 24 Oct 2013 12:47:17 +0200 Subject: [PATCH] manage plasmapackage:/ with the interceptor not with the networkaccessmanager --- src/plasmaquick/packageurlinterceptor.cpp | 7 +++++++ src/scriptengines/qml/plasmoid/appletinterface.cpp | 5 ----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/plasmaquick/packageurlinterceptor.cpp b/src/plasmaquick/packageurlinterceptor.cpp index 211e983a2..360898f0d 100644 --- a/src/plasmaquick/packageurlinterceptor.cpp +++ b/src/plasmaquick/packageurlinterceptor.cpp @@ -41,6 +41,13 @@ QUrl PackageUrlInterceptor::intercept(const QUrl &path, QQmlAbstractUrlIntercept { //qDebug() << "Intercepted URL:" << path; + if (path.scheme() == QStringLiteral("plasmapackage")) { + QUrl pkgUrl; + pkgUrl.setScheme(QStringLiteral("file")); + pkgUrl.setPath(m_package.filePath(0, path.path())); + return pkgUrl; + } + //TODO: security: permission for remote urls if (!path.isLocalFile() ) { return path; diff --git a/src/scriptengines/qml/plasmoid/appletinterface.cpp b/src/scriptengines/qml/plasmoid/appletinterface.cpp index 32889bb01..438fa7637 100644 --- a/src/scriptengines/qml/plasmoid/appletinterface.cpp +++ b/src/scriptengines/qml/plasmoid/appletinterface.cpp @@ -107,11 +107,6 @@ void AppletInterface::init() //use our own custom network access manager that will access Plasma packages and to manage security (i.e. deny access to remote stuff when the proper extension isn't enabled QQmlEngine *engine = m_qmlObject->engine(); - QQmlNetworkAccessManagerFactory *factory = engine->networkAccessManagerFactory(); - engine->setNetworkAccessManagerFactory(0); - delete factory; - //engine->setNetworkAccessManagerFactory(new PackageAccessManagerFactory(m_appletScriptEngine->package())); - engine->setNetworkAccessManagerFactory(PackageUrlInterceptor::createPackageAccessManagerFactory(m_appletScriptEngine->package())); //Hook generic url resolution to the applet package as well //TODO: same thing will have to be done for every qqmlengine: PackageUrlInterceptor is material for plasmaquick?