diff options
Diffstat (limited to 'Source/WebKit2/UIProcess/API/qt/qquickurlschemedelegate.cpp')
| -rw-r--r-- | Source/WebKit2/UIProcess/API/qt/qquickurlschemedelegate.cpp | 27 |
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" |
