diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2020-03-21 03:03:49 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2020-03-21 03:03:49 +0100 |
commit | c6d4bb78fe59a55ffce526ff951e5c5270dd92cf (patch) | |
tree | 909eba4dc53bfed04b5e8db0f8a126ad61bb8bed | |
parent | 04b529214db0f20cce4d229a6035825390048217 (diff) | |
parent | df93624cc31e9da29532eed1d86c9f172575355a (diff) |
Merge remote-tracking branch 'origin/5.14' into 5.15v5.15.0-beta4v5.15.0-beta3
Change-Id: Idd780566c6614f1aa0ac22e39379d0384e04f2d3
-rw-r--r-- | src/plugins/webengine/qwebenginewebview.cpp | 14 | ||||
-rw-r--r-- | tests/auto/qml/qquickwebview/tst_qquickwebview.cpp | 18 |
2 files changed, 28 insertions, 4 deletions
diff --git a/src/plugins/webengine/qwebenginewebview.cpp b/src/plugins/webengine/qwebenginewebview.cpp index f16371d..7870b3a 100644 --- a/src/plugins/webengine/qwebenginewebview.cpp +++ b/src/plugins/webengine/qwebenginewebview.cpp @@ -81,8 +81,11 @@ QString QWebEngineWebViewPrivate::httpUserAgent() const void QWebEngineWebViewPrivate::setHttpUserAgent(const QString &userAgent) { - m_profile->setHttpUserAgent(userAgent); - Q_EMIT httpUserAgentChanged(userAgent); + m_httpUserAgent = userAgent; + if (m_profile) { + m_profile->setHttpUserAgent(userAgent); + Q_EMIT httpUserAgentChanged(userAgent); + } } QUrl QWebEngineWebViewPrivate::url() const @@ -255,7 +258,12 @@ void QWebEngineWebViewPrivate::QQuickWebEngineViewPtr::init() const Q_ASSERT(webEngineView); QQuickWebEngineProfile *profile = webEngineView->profile(); m_parent->m_profile = profile; - m_parent->m_httpUserAgent = profile->httpUserAgent(); + // When the httpUserAgent is set as a property then it will be set before + // init() is called + if (m_parent->m_httpUserAgent.isEmpty()) + m_parent->m_httpUserAgent = profile->httpUserAgent(); + else + profile->setHttpUserAgent(m_parent->m_httpUserAgent); QObject::connect(webEngineView, &QQuickWebEngineView::urlChanged, m_parent, &QWebEngineWebViewPrivate::q_urlChanged); QObject::connect(webEngineView, &QQuickWebEngineView::loadProgressChanged, m_parent, &QWebEngineWebViewPrivate::q_loadProgressChanged); QObject::connect(webEngineView, &QQuickWebEngineView::loadingChanged, m_parent, &QWebEngineWebViewPrivate::q_loadingChanged); diff --git a/tests/auto/qml/qquickwebview/tst_qquickwebview.cpp b/tests/auto/qml/qquickwebview/tst_qquickwebview.cpp index e3162bc..b1a1364 100644 --- a/tests/auto/qml/qquickwebview/tst_qquickwebview.cpp +++ b/tests/auto/qml/qquickwebview/tst_qquickwebview.cpp @@ -68,6 +68,7 @@ private Q_SLOTS: void multipleWebViewWindows(); void multipleWebViews(); void titleUpdate(); + void changeUserAgent(); private: inline QQuickWebView *newWebView(); @@ -75,11 +76,12 @@ private: void runJavaScript(const QString &script); QScopedPointer<TestWindow> m_window; QScopedPointer<QQmlComponent> m_component; + QQmlEngine *engine = nullptr; }; tst_QQuickWebView::tst_QQuickWebView() { - static QQmlEngine *engine = new QQmlEngine(this); + engine = new QQmlEngine(this); m_component.reset(new QQmlComponent(engine, this)); m_component->setData(QByteArrayLiteral("import QtQuick 2.0\n" "import QtWebView 1.1\n" @@ -332,5 +334,19 @@ void tst_QQuickWebView::titleUpdate() } +void tst_QQuickWebView::changeUserAgent() +{ + QQmlComponent userAgentWebView(engine, this); + userAgentWebView.setData(QByteArrayLiteral("import QtQuick 2.0\n" + "import QtWebView 1.14\n" + "WebView {\n" + "httpUserAgent: \"dummy\"\n" + "}"), + QUrl()); + QObject *viewInstance = userAgentWebView.create(); + QQuickWebView *webView = qobject_cast<QQuickWebView *>(viewInstance); + QCOMPARE(webView->httpUserAgent(), "dummy"); +} + QTEST_MAIN(tst_QQuickWebView) #include "tst_qquickwebview.moc" |