summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/API/qt/qquickurlschemedelegate.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/UIProcess/API/qt/qquickurlschemedelegate.cpp')
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qquickurlschemedelegate.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/Source/WebKit2/UIProcess/API/qt/qquickurlschemedelegate.cpp b/Source/WebKit2/UIProcess/API/qt/qquickurlschemedelegate.cpp
index e5d63043b..19f14d5c4 100644
--- a/Source/WebKit2/UIProcess/API/qt/qquickurlschemedelegate.cpp
+++ b/Source/WebKit2/UIProcess/API/qt/qquickurlschemedelegate.cpp
@@ -24,6 +24,10 @@
#include "qquicknetworkreply_p.h"
#include "qquicknetworkrequest_p.h"
+#include <QtCore/QFile>
+#include <QtCore/QFileInfo>
+#include <QtCore/QMimeDatabase>
+
QQuickUrlSchemeDelegate::QQuickUrlSchemeDelegate(QObject* parent)
: QObject(parent)
, m_request(new QQuickNetworkRequest(this))
@@ -51,4 +55,27 @@ QQuickNetworkReply* QQuickUrlSchemeDelegate::reply() const
return m_reply;
}
+QQuickQrcSchemeDelegate::QQuickQrcSchemeDelegate(const QUrl& url)
+ : QQuickUrlSchemeDelegate()
+ , m_fileName(QLatin1Char(':') + url.path())
+{
+}
+
+void QQuickQrcSchemeDelegate::readResourceAndSend()
+{
+ QFile file(m_fileName);
+ QFileInfo fileInfo(file);
+ if (fileInfo.isDir() || !file.open(QIODevice::ReadOnly | QIODevice::Unbuffered))
+ return;
+
+ QByteArray fileData(file.readAll());
+ QMimeDatabase mimeDb;
+ QMimeType mimeType = mimeDb.mimeTypeForFileNameAndData(m_fileName, fileData);
+ file.close();
+
+ reply()->setData(fileData);
+ reply()->setContentType(mimeType.name());
+ reply()->send();
+}
+
#include "moc_qquickurlschemedelegate_p.cpp"