summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/web_contents_adapter.cpp16
-rw-r--r--src/core/web_contents_adapter.h1
-rw-r--r--src/webenginewidgets/api/qwebenginepage.cpp12
-rw-r--r--src/webenginewidgets/api/qwebengineview.cpp10
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();