diff options
-rw-r--r-- | src/core/web_contents_adapter.cpp | 16 | ||||
-rw-r--r-- | src/core/web_contents_adapter.h | 1 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.cpp | 12 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.cpp | 10 |
4 files changed, 39 insertions, 0 deletions
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index ce9dccd90..108506b06 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -271,6 +271,22 @@ void WebContentsAdapter::load(const QUrl &url) d->webContents->GetView()->Focus(); } +void WebContentsAdapter::setContent(const QByteArray &data, const QString &mimeType, const QUrl &baseUrl) +{ + Q_D(WebContentsAdapter); + QByteArray encodedData = data.toPercentEncoding(); + std::string urlString("data:"); + urlString.append(mimeType.toStdString()); + urlString.append(","); + urlString.append(encodedData.constData(), encodedData.length()); + + content::NavigationController::LoadURLParams params((GURL(urlString))); + params.load_type = content::NavigationController::LOAD_TYPE_DATA; + params.base_url_for_data_url = toGurl(baseUrl); + params.can_load_local_resources = true; + d->webContents->GetController().LoadURLWithParams(params); +} + QUrl WebContentsAdapter::activeUrl() const { Q_D(const WebContentsAdapter); diff --git a/src/core/web_contents_adapter.h b/src/core/web_contents_adapter.h index 1f00b4b12..c4c25c8a5 100644 --- a/src/core/web_contents_adapter.h +++ b/src/core/web_contents_adapter.h @@ -74,6 +74,7 @@ public: void stop(); void reload(); void load(const QUrl&); + void setContent(const QByteArray &data, const QString &mimeType, const QUrl &baseUrl); QUrl activeUrl() const; QString pageTitle() const; diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 74a1692b2..54abb4384 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -443,6 +443,18 @@ void QWebEnginePage::load(const QUrl& url) d->adapter->load(url); } +void QWebEnginePage::setHtml(const QString &html, const QUrl &baseUrl) +{ + Q_D(QWebEnginePage); + d->adapter->setContent(html.toUtf8(), QStringLiteral("text/html;charset=UTF-8"), baseUrl); +} + +void QWebEnginePage::setContent(const QByteArray &data, const QString &mimeType, const QUrl &baseUrl) +{ + Q_D(QWebEnginePage); + d->adapter->setContent(data, mimeType, baseUrl); +} + QString QWebEnginePage::title() const { Q_D(const QWebEnginePage); diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index 054925e83..fc72d1241 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -124,6 +124,16 @@ void QWebEngineView::load(const QUrl& url) page()->load(url); } +void QWebEngineView::setHtml(const QString& html, const QUrl& baseUrl) +{ + page()->setHtml(html, baseUrl); +} + +void QWebEngineView::setContent(const QByteArray& data, const QString& mimeType, const QUrl& baseUrl) +{ + page()->setContent(data, mimeType, baseUrl); +} + QWebEngineHistory* QWebEngineView::history() const { return page()->history(); |