summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorteza Jamshidi <morteza.jamshidi@qt.io>2025-06-11 10:51:30 +0200
committerMichal Klocek <michal.klocek@qt.io>2025-06-26 11:37:58 +0200
commit05b6733e48867bf1664558d17e29465de4c282be (patch)
tree32bdbae1f514b15dbd67f7147725436c79436d41
parent154e87e5c898927c2c0099af6c8254f3cf7ae0fe (diff)
Fix webview2 async api call issues
Qt webview tests expect the api calls to be synchronous, but some of webview2 api calls are async. This changes their behavior to be synchronous. other fixes: fixed stopEnabledAfterLoadStarted test to rely on webview being async. fixed some null pointer issues changed m_initData to class member Pick-to: 6.10 Task-number: QTBUG-75747 Change-Id: I979f1635cf049a90be3c8b134f61f5d6f594d971 Reviewed-by: Christian StrΓΈmme <christian.stromme@qt.io> Reviewed-by: Michal Klocek <michal.klocek@qt.io>
-rw-r--r--src/plugins/windows/qwebview2webview.cpp149
-rw-r--r--src/plugins/windows/qwebview2webview_p.h4
-rw-r--r--tests/auto/qml/qquickwebview/CMakeLists.txt2
-rw-r--r--tests/auto/qml/qquickwebview/tst_qquickwebview.cpp15
-rw-r--r--tests/auto/webview/qwebview/CMakeLists.txt2
-rw-r--r--tests/auto/webview/qwebview/tst_qwebview.cpp30
6 files changed, 104 insertions, 98 deletions
diff --git a/src/plugins/windows/qwebview2webview.cpp b/src/plugins/windows/qwebview2webview.cpp
index 255c5ab..027df95 100644
--- a/src/plugins/windows/qwebview2webview.cpp
+++ b/src/plugins/windows/qwebview2webview.cpp
@@ -61,15 +61,7 @@ bool QWebview2WebViewSettingsPrivate::localStorageEnabled() const
bool QWebview2WebViewSettingsPrivate::javaScriptEnabled() const
{
- if (!m_webview)
- return false;
- ComPtr<ICoreWebView2Settings> settings;
- HRESULT hr = m_webview->get_Settings(&settings);
- Q_ASSERT_SUCCEEDED(hr);
- BOOL isEnabled;
- hr = settings->get_IsScriptEnabled(&isEnabled);
- Q_ASSERT_SUCCEEDED(hr);
- return isEnabled;
+ return m_javaScriptEnabled;
}
bool QWebview2WebViewSettingsPrivate::localContentCanAccessFileUrls() const
@@ -90,6 +82,7 @@ void QWebview2WebViewSettingsPrivate::setLocalContentCanAccessFileUrls(bool enab
void QWebview2WebViewSettingsPrivate::setJavaScriptEnabled(bool enabled)
{
+ m_javaScriptEnabled = enabled;
if (!m_webview)
return;
@@ -142,24 +135,28 @@ QWebView2WebViewPrivate::QWebView2WebViewPrivate(QObject *parent)
connect(m_window, &QWindow::screenChanged, this,
&QWebView2WebViewPrivate::updateWindowGeometry, Qt::QueuedConnection);
+ QPointer<QWebView2WebViewPrivate> thisPtr = this;
CreateCoreWebView2EnvironmentWithOptions(nullptr, nullptr, nullptr,
Microsoft::WRL::Callback<ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler>(
- [hWnd, this](HRESULT result, ICoreWebView2Environment* env) -> HRESULT {
+ [hWnd, thisPtr, this](HRESULT result, ICoreWebView2Environment* env) -> HRESULT {
env->CreateCoreWebView2Controller(hWnd,
Microsoft::WRL::Callback<ICoreWebView2CreateCoreWebView2ControllerCompletedHandler>(
- [this](HRESULT result, ICoreWebView2Controller* controller) -> HRESULT {
+ [thisPtr, this](HRESULT result, ICoreWebView2Controller* controller) -> HRESULT {
+ if (thisPtr.isNull())
+ return S_FALSE;
+
+ if (!controller)
+ return S_FALSE;
HRESULT hr;
- if (controller != nullptr) {
- m_webviewController = controller;
- hr = m_webviewController->get_CoreWebView2(&m_webview);
- Q_ASSERT_SUCCEEDED(hr);
+ m_webviewController = controller;
+ hr = m_webviewController->get_CoreWebView2(&m_webview);
+ Q_ASSERT_SUCCEEDED(hr);
- ComPtr<ICoreWebView2_2> webview2;
- HRESULT hr = m_webview->QueryInterface(IID_PPV_ARGS(&webview2));
- Q_ASSERT_SUCCEEDED(hr);
- hr = webview2->get_CookieManager(&m_cookieManager);
- Q_ASSERT_SUCCEEDED(hr);
- }
+ ComPtr<ICoreWebView2_2> webview2;
+ hr = m_webview->QueryInterface(IID_PPV_ARGS(&webview2));
+ Q_ASSERT_SUCCEEDED(hr);
+ hr = webview2->get_CookieManager(&m_cookieManager);
+ Q_ASSERT_SUCCEEDED(hr);
m_settings->init(m_webviewController.Get());
@@ -167,7 +164,7 @@ QWebView2WebViewPrivate::QWebView2WebViewPrivate(QObject *parent)
ComPtr<ICoreWebView2Settings> settings;
hr = m_webview->get_Settings(&settings);
Q_ASSERT_SUCCEEDED(hr);
- hr = settings->put_IsScriptEnabled(TRUE);
+ hr = settings->put_IsScriptEnabled(m_settings->javaScriptEnabled());
Q_ASSERT_SUCCEEDED(hr);
hr = settings->put_AreDefaultScriptDialogsEnabled(TRUE);
Q_ASSERT_SUCCEEDED(hr);
@@ -181,16 +178,27 @@ QWebView2WebViewPrivate::QWebView2WebViewPrivate(QObject *parent)
if (!m_url.isEmpty() && m_url.isValid() && !m_url.scheme().isEmpty()) {
hr = m_webview->Navigate((wchar_t*)m_url.toString().utf16());
Q_ASSERT_SUCCEEDED(hr);
- } else if (m_initData != nullptr && !m_initData->m_html.isEmpty()) {
- hr = m_webview->NavigateToString((wchar_t*)m_initData->m_html.utf16());
+ } else if (!m_initData.m_html.isEmpty()) {
+ hr = m_webview->NavigateToString((wchar_t*)m_initData.m_html.utf16());
Q_ASSERT_SUCCEEDED(hr);
}
- if (m_initData != nullptr && m_initData->m_cookies.size() > 0) {
- for (auto it = m_initData->m_cookies.constBegin();
- it != m_initData->m_cookies.constEnd(); ++it)
+ if (m_initData.m_cookies.size() > 0) {
+ for (auto it = m_initData.m_cookies.constBegin();
+ it != m_initData.m_cookies.constEnd(); ++it)
setCookie(it->domain, it->name, it.value().value);
}
- m_initData.release();
+ if (!m_initData.m_httpUserAgent.isEmpty()) {
+ ComPtr<ICoreWebView2Settings2> settings2;
+ hr = settings->QueryInterface(IID_PPV_ARGS(&settings2));
+ if (settings2) {
+ hr = settings2->put_UserAgent((wchar_t*)m_initData.m_httpUserAgent.utf16());
+ if (SUCCEEDED(hr))
+ QTimer::singleShot(0, thisPtr, [thisPtr]{
+ if (!thisPtr.isNull())
+ emit thisPtr->httpUserAgentChanged(thisPtr->m_initData.m_httpUserAgent);
+ });
+ }
+ }
EventRegistrationToken token;
hr = m_webview->add_NavigationStarting(
@@ -224,10 +232,10 @@ QWebView2WebViewPrivate::QWebView2WebViewPrivate(QObject *parent)
}).Get(), &token);
Q_ASSERT_SUCCEEDED(hr);
- ComPtr<ICoreWebView2_22> webview2;
- hr = m_webview->QueryInterface(IID_PPV_ARGS(&webview2));
+ ComPtr<ICoreWebView2_22> webview22;
+ hr = m_webview->QueryInterface(IID_PPV_ARGS(&webview22));
Q_ASSERT_SUCCEEDED(hr);
- hr = webview2->AddWebResourceRequestedFilterWithRequestSourceKinds(
+ hr = webview22->AddWebResourceRequestedFilterWithRequestSourceKinds(
L"file://*", COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL,
COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_ALL);
Q_ASSERT_SUCCEEDED(hr);
@@ -241,8 +249,8 @@ QWebView2WebViewPrivate::~QWebView2WebViewPrivate()
{
m_webViewWindow->destroy();
m_window->destroy();
- m_webviewController = nullptr;
m_webViewWindow = nullptr;
+ m_webviewController = nullptr;
m_webview = nullptr;
}
@@ -263,9 +271,10 @@ QString QWebView2WebViewPrivate::httpUserAgent() const
CoTaskMemFree(userAgent);
return userAgentString;
}
+ qWarning() << "No http user agent available.";
+ return "";
}
- qWarning() << "No http user agent available.";
- return "";
+ return m_initData.m_httpUserAgent;
}
void QWebView2WebViewPrivate::setHttpUserAgent(const QString &userAgent)
@@ -279,12 +288,15 @@ void QWebView2WebViewPrivate::setHttpUserAgent(const QString &userAgent)
hr = settings->QueryInterface(IID_PPV_ARGS(&settings2));
if (settings2) {
hr = settings2->put_UserAgent((wchar_t*)userAgent.utf16());
- Q_ASSERT_SUCCEEDED(hr);
- emit httpUserAgentChanged(userAgent);
+ if (SUCCEEDED(hr))
+ emit httpUserAgentChanged(userAgent);
return;
+ } else {
+ qWarning() << "No http user agent setting available.";
}
+ } else {
+ m_initData.m_httpUserAgent = userAgent;
}
- qWarning() << "No http user agent setting available.";
}
void QWebView2WebViewPrivate::setUrl(const QUrl &url)
@@ -293,10 +305,10 @@ void QWebView2WebViewPrivate::setUrl(const QUrl &url)
if (m_webview) {
HRESULT hr = m_webview->Navigate((wchar_t*)url.toString().utf16());
if (FAILED(hr)) {
+ emit loadProgressChanged(100);
emit loadingChanged(QWebViewLoadRequestPrivate(url,
QWebView::LoadFailedStatus,
QString()));
- emit loadProgressChanged(100);
}
}
}
@@ -386,9 +398,7 @@ void QWebView2WebViewPrivate::loadHtml(const QString &html, const QUrl &baseUrl)
if (m_webview) {
Q_ASSERT_SUCCEEDED(m_webview->NavigateToString((wchar_t*)html.utf16()));
} else {
- if (m_initData == nullptr)
- m_initData = std::make_unique<QWebViewInitData>();
- m_initData->m_html = html;
+ m_initData.m_html = html;
}
}
@@ -410,56 +420,54 @@ void QWebView2WebViewPrivate::setCookie(const QString &domain,
emit cookieAdded(domain, name);
}
} else {
- if (m_initData == nullptr)
- m_initData = std::make_unique<QWebViewInitData>();
- m_initData->m_cookies.insert(domain + "/" + name, {domain, name, value});
+ m_initData.m_cookies.insert(domain + "/" + name, {domain, name, value});
}
}
-void QWebView2WebViewPrivate::deleteCookie(const QString &domain, const QString &cookieName)
+void QWebView2WebViewPrivate::deleteCookie(const QString &domainName, const QString &cookieName)
{
if (m_webview) {
if (m_cookieManager) {
- QString uri = domain;
+ QString uri = domainName;
if (!uri.startsWith("http"))
uri = "https://" + uri;
HRESULT hr = m_cookieManager->GetCookies((wchar_t*)uri.utf16(),
Microsoft::WRL::Callback<ICoreWebView2GetCookiesCompletedHandler>(
- [cookieName, domain, this](HRESULT result, ICoreWebView2CookieList* cookieList)->HRESULT
+ [cookieName, domainName, this]
+ (HRESULT result, ICoreWebView2CookieList* cookieList)->HRESULT
{
UINT count = 0;
cookieList->get_Count(&count);
- bool cookieFound = false;
-
for (UINT i = 0; i < count; ++i) {
ComPtr<ICoreWebView2Cookie> cookie;
if (SUCCEEDED(cookieList->GetValueAtIndex(i, &cookie))) {
+ wchar_t *domainPtr;
wchar_t *namePtr;
- if (SUCCEEDED(cookie->get_Name(&namePtr))) {
+ if (SUCCEEDED(cookie->get_Domain(&domainPtr)) &&
+ SUCCEEDED(cookie->get_Name(&namePtr))) {
+ QString domain(domainPtr);
QString name(namePtr);
CoTaskMemFree(namePtr);
- if (cookieName == name) {
- cookieFound = true;
- break;
+ CoTaskMemFree(domainPtr);
+ if (domainName == domain && cookieName == name) {
+ emit cookieRemoved(domain, cookieName);
+ return S_OK;
}
}
}
}
-
- if (cookieFound) {
- HRESULT hr = m_cookieManager->DeleteCookiesWithDomainAndPath((wchar_t*)cookieName.utf16(),
- (wchar_t*)domain.utf16(),
- L"");
- Q_ASSERT_SUCCEEDED(hr);
- emit cookieRemoved(domain, cookieName);
- }
-
return S_OK;
}).Get());
Q_ASSERT_SUCCEEDED(hr);
+ hr = m_cookieManager->DeleteCookiesWithDomainAndPath((wchar_t*)cookieName.utf16(),
+ (wchar_t*)domainName.utf16(),
+ L"");
+ Q_ASSERT_SUCCEEDED(hr);
+
+
}
- } else if (m_initData != nullptr) {
- m_initData->m_cookies.remove(domain + "/" + cookieName);
+ } else {
+ m_initData.m_cookies.remove(domainName + "/" + cookieName);
}
}
@@ -493,8 +501,8 @@ void QWebView2WebViewPrivate::deleteAllCookies()
hr = m_cookieManager->DeleteAllCookies();
Q_ASSERT_SUCCEEDED(hr);
}
- } else if (m_initData != nullptr) {
- m_initData->m_cookies.clear();
+ } else {
+ m_initData.m_cookies.clear();
}
}
@@ -527,11 +535,11 @@ HRESULT QWebView2WebViewPrivate::onNavigationCompleted(ICoreWebView2* webview, I
Q_ASSERT_SUCCEEDED(hr);
if (errorStatus != COREWEBVIEW2_WEB_ERROR_STATUS_OPERATION_CANCELED) {
const QString errorStr = isSuccess ? "" : WebErrorStatusToString(errorStatus);
+ emit titleChanged(title());
+ emit loadProgressChanged(100);
emit loadingChanged(QWebViewLoadRequestPrivate(m_url,
status,
errorStr));
- emit titleChanged(title());
- emit loadProgressChanged(100);
} else {
emit loadingChanged(QWebViewLoadRequestPrivate(m_url,
QWebView::LoadStoppedStatus,
@@ -592,11 +600,10 @@ void QWebView2WebViewPrivate::updateWindowGeometry()
void QWebView2WebViewPrivate::runJavaScriptPrivate(const QString &script, int callbackId)
{
- QEventLoop loop;
if (m_webview)
Q_ASSERT_SUCCEEDED(m_webview->ExecuteScript((wchar_t*)script.utf16(),
Microsoft::WRL::Callback<ICoreWebView2ExecuteScriptCompletedHandler>(
- [&loop, this, &callbackId](HRESULT errorCode, LPCWSTR resultObjectAsJson) -> HRESULT {
+ [this, callbackId](HRESULT errorCode, LPCWSTR resultObjectAsJson) -> HRESULT {
QString resultStr = QString::fromWCharArray(resultObjectAsJson);
QJsonParseError parseError;
@@ -619,10 +626,8 @@ void QWebView2WebViewPrivate::runJavaScriptPrivate(const QString &script, int ca
emit javaScriptResult(callbackId, qt_error_string(errorCode));
else
emit javaScriptResult(callbackId, resultVariant);
- loop.quit();
return errorCode;
}).Get()));
- loop.exec();
}
QAbstractWebViewSettings *QWebView2WebViewPrivate::getSettings() const
diff --git a/src/plugins/windows/qwebview2webview_p.h b/src/plugins/windows/qwebview2webview_p.h
index 89442b3..653526d 100644
--- a/src/plugins/windows/qwebview2webview_p.h
+++ b/src/plugins/windows/qwebview2webview_p.h
@@ -40,6 +40,7 @@ private:
ComPtr<ICoreWebView2> m_webview;
bool m_allowFileAccess = false;
bool m_localContentCanAccessFileUrls = false;
+ bool m_javaScriptEnabled = true;
};
// This is used to store informations before webview2 is initialized
@@ -52,6 +53,7 @@ struct QWebViewInitData{
QString value;
};
QMap<QString, CookieData > m_cookies;
+ QString m_httpUserAgent;
};
class QWebView2WebViewPrivate : public QAbstractWebView
@@ -102,7 +104,7 @@ private:
QPointer<QWindow> m_webViewWindow;
bool m_isLoading;
QUrl m_url;
- std::unique_ptr<QWebViewInitData> m_initData = nullptr;
+ QWebViewInitData m_initData;
};
QT_END_NAMESPACE
diff --git a/tests/auto/qml/qquickwebview/CMakeLists.txt b/tests/auto/qml/qquickwebview/CMakeLists.txt
index 6b4ace5..06565d7 100644
--- a/tests/auto/qml/qquickwebview/CMakeLists.txt
+++ b/tests/auto/qml/qquickwebview/CMakeLists.txt
@@ -48,5 +48,5 @@ qt_internal_add_resource(tst_qquickwebview "testdata1"
qt_internal_extend_target(tst_qquickwebview CONDITION TARGET Qt::WebEngineQuick AND NOT APPLE
DEFINES
- QT_WEBVIEW_WEBENGINE_BACKEND
+ QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED
)
diff --git a/tests/auto/qml/qquickwebview/tst_qquickwebview.cpp b/tests/auto/qml/qquickwebview/tst_qquickwebview.cpp
index 20e0f4b..51dc736 100644
--- a/tests/auto/qml/qquickwebview/tst_qquickwebview.cpp
+++ b/tests/auto/qml/qquickwebview/tst_qquickwebview.cpp
@@ -129,13 +129,12 @@ void tst_QQuickWebView::stopEnabledAfterLoadStarted()
{
QCOMPARE(webView()->isLoading(), false);
- LoadStartedCatcher catcher(webView());
+ LoadStartedCatcher loadStartedCatcher(webView());
+ LoadSpy loadSpy(webView());
webView()->setUrl(getTestFilePath("basic_page.html"));
- waitForSignal(&catcher, SIGNAL(finished()));
- QCOMPARE(webView()->isLoading(), true);
-
- QVERIFY(waitForLoadSucceeded(webView()));
+ waitForSignal(&loadStartedCatcher, SIGNAL(finished()));
+ waitForSignal(&loadSpy, SIGNAL(loadSucceeded()));
}
void tst_QQuickWebView::baseUrl()
@@ -322,7 +321,7 @@ void tst_QQuickWebView::titleUpdate()
// Load page with no title
webView()->setUrl(getTestFilePath("basic_page2.html"));
QVERIFY(waitForLoadSucceeded(webView()));
-#if defined(QT_WEBVIEW_WEBENGINE_BACKEND) || defined(Q_OS_ANDROID)
+#if defined(QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED) || defined(Q_OS_ANDROID) || defined(Q_OS_WIN)
// on some platforms if the page has no <title> element, then the URL is used instead
QCOMPARE(titleSpy.size(), 1);
#else
@@ -333,7 +332,7 @@ void tst_QQuickWebView::titleUpdate()
// No titleChanged signal for failed load
webView()->setUrl(getTestFilePath("file_that_does_not_exist.html"));
QVERIFY(waitForLoadFailed(webView()));
-#if defined(Q_OS_ANDROID)
+#if defined(Q_OS_ANDROID) || (!defined(QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED) && defined(Q_OS_WIN))
// error page with "Webpage not available"
QTRY_COMPARE(titleSpy.size(), 1);
#else
@@ -360,7 +359,7 @@ void tst_QQuickWebView::setAndDeleteCookies()
QSignalSpy cookieAddedSpy(webView(), SIGNAL(cookieAdded(const QString &, const QString &)));
QSignalSpy cookieRemovedSpy(webView(), SIGNAL(cookieRemoved(const QString &, const QString &)));
-#ifdef QT_WEBVIEW_WEBENGINE_BACKEND
+#ifdef QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED
webView()->setUrl(QUrl("qrc:///cookies.html"));
QVERIFY(waitForLoadSucceeded(webView()));
diff --git a/tests/auto/webview/qwebview/CMakeLists.txt b/tests/auto/webview/qwebview/CMakeLists.txt
index 253cee6..ca5f626 100644
--- a/tests/auto/webview/qwebview/CMakeLists.txt
+++ b/tests/auto/webview/qwebview/CMakeLists.txt
@@ -23,7 +23,7 @@ qt_internal_extend_target(tst_qwebview CONDITION TARGET Qt::WebViewQuick
qt_internal_extend_target(tst_qwebview CONDITION TARGET Qt::WebEngineQuick AND NOT APPLE
DEFINES
- QT_WEBVIEW_WEBENGINE_BACKEND
+ QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED
LIBRARIES
Qt::WebEngineQuickPrivate
Qt::Qml
diff --git a/tests/auto/webview/qwebview/tst_qwebview.cpp b/tests/auto/webview/qwebview/tst_qwebview.cpp
index 5b447ca..5db32de 100644
--- a/tests/auto/webview/qwebview/tst_qwebview.cpp
+++ b/tests/auto/webview/qwebview/tst_qwebview.cpp
@@ -14,9 +14,9 @@
#include <QtWebViewQuick/private/qquickwebview_p.h>
#endif // QT_NO_QQUICKWEBVIEW_TESTS
-#ifdef QT_WEBVIEW_WEBENGINE_BACKEND
+#ifdef QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED
#include <QtWebEngineQuick>
-#endif // QT_WEBVIEW_WEBENGINE_BACKEND
+#endif // QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED
#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK)
#include <QtCore/private/qjnihelpers_p.h>
@@ -49,9 +49,9 @@ void tst_QWebView::initTestCase()
{
if (!qEnvironmentVariableIsEmpty("QEMU_LD_PREFIX"))
QSKIP("This test is unstable on QEMU, so it will be skipped.");
-#ifdef QT_WEBVIEW_WEBENGINE_BACKEND
+#ifdef QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED
QtWebEngineQuick::initialize();
-#endif // QT_WEBVIEW_WEBENGINE_BACKEND
+#endif // QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED
if (!QFileInfo(m_cacheLocation).isDir()) {
QDir dir;
QVERIFY(dir.mkpath(m_cacheLocation));
@@ -68,7 +68,7 @@ void tst_QWebView::load()
const QString fileName = file.fileName();
file.close();
-#ifdef QT_WEBVIEW_WEBENGINE_BACKEND
+#ifdef QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED
QQmlEngine engine;
QQmlContext *rootContext = engine.rootContext();
QQuickWebView qview;
@@ -76,9 +76,9 @@ void tst_QWebView::load()
QWebView &view = qview.webView();
#else
QWebView view;
+#endif
view.getSettings()->setAllowFileAccess(true);
view.getSettings()->setLocalContentCanAccessFileUrls(true);
-#endif
QCOMPARE(view.loadProgress(), 0);
const QUrl url = QUrl::fromLocalFile(fileName);
view.setUrl(url);
@@ -93,7 +93,7 @@ void tst_QWebView::load()
void tst_QWebView::runJavaScript()
{
#ifdef QT_QQUICKWEBVIEW_TESTS
-#ifndef QT_WEBVIEW_WEBENGINE_BACKEND
+#ifndef QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED
ANDROID_REQUIRES_API_LEVEL(19)
#endif
const QString tstProperty = QString(QLatin1String("Qt.tst_data"));
@@ -120,7 +120,7 @@ void tst_QWebView::runJavaScript()
void tst_QWebView::loadHtml()
{
-#ifdef QT_WEBVIEW_WEBENGINE_BACKEND
+#ifdef QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED
QQmlEngine engine;
QQmlContext *rootContext = engine.rootContext();
QQuickWebView qview;
@@ -164,7 +164,7 @@ void tst_QWebView::loadRequest()
file.write("<html><head><title>FooBar</title></head><body/></html>");
const QString fileName = file.fileName();
file.close();
-#ifdef QT_WEBVIEW_WEBENGINE_BACKEND
+#ifdef QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED
QQmlEngine engine;
QQmlContext *rootContext = engine.rootContext();
QQuickWebView qview;
@@ -172,9 +172,9 @@ void tst_QWebView::loadRequest()
QWebView &view = qview.webView();
#else
QWebView view;
+#endif
view.getSettings()->setAllowFileAccess(true);
view.getSettings()->setLocalContentCanAccessFileUrls(true);
-#endif
QCOMPARE(view.loadProgress(), 0);
const QUrl url = QUrl::fromLocalFile(fileName);
QSignalSpy loadChangedSingalSpy(&view, SIGNAL(loadingChanged(const QWebViewLoadRequestPrivate &)));
@@ -198,7 +198,7 @@ void tst_QWebView::loadRequest()
// LoadFailed
{
-#ifdef QT_WEBVIEW_WEBENGINE_BACKEND
+#ifdef QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED
QQmlEngine engine;
QQmlContext *rootContext = engine.rootContext();
QQuickWebView qview;
@@ -206,9 +206,9 @@ void tst_QWebView::loadRequest()
QWebView &view = qview.webView();
#else
QWebView view;
+#endif
view.getSettings()->setAllowFileAccess(true);
view.getSettings()->setLocalContentCanAccessFileUrls(true);
-#endif
QCOMPARE(view.loadProgress(), 0);
QSignalSpy loadChangedSingalSpy(&view, SIGNAL(loadingChanged(const QWebViewLoadRequestPrivate &)));
view.setUrl(QUrl(QStringLiteral("file:///file_that_does_not_exist.html")));
@@ -224,7 +224,7 @@ void tst_QWebView::loadRequest()
const QWebViewLoadRequestPrivate &lr = loadStartedArgs.at(0).value<QWebViewLoadRequestPrivate>();
QCOMPARE(lr.m_status, QWebView::LoadFailedStatus);
}
-#ifdef QT_WEBVIEW_WEBENGINE_BACKEND
+#ifdef QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED
QCOMPARE(view.loadProgress(), 0); // darwin plugin returns 100
#endif
}
@@ -232,7 +232,7 @@ void tst_QWebView::loadRequest()
void tst_QWebView::setAndDeleteCookie()
{
-#ifdef QT_WEBVIEW_WEBENGINE_BACKEND
+#ifdef QT_WEBVIEW_WEBENGINE_BACKEND_IS_COMPILED
QQmlEngine engine;
QQmlContext * rootContext = engine.rootContext();
QQuickWebView qview;
@@ -240,10 +240,10 @@ void tst_QWebView::setAndDeleteCookie()
QWebView & view = qview.webView();
#else
QWebView view;
+#endif
view.getSettings()->setLocalStorageEnabled(true);
view.getSettings()->setAllowFileAccess(true);
view.getSettings()->setLocalContentCanAccessFileUrls(true);
-#endif
QSignalSpy cookieAddedSpy(&view, SIGNAL(cookieAdded(const QString &, const QString &)));
QSignalSpy cookieRemovedSpy(&view, SIGNAL(cookieRemoved(const QString &, const QString &)));