I'm working on a project using Qt 5.12.8 to embed the WebEngineView. If I embed the WebEngineView in a simple qml file and run only test part 1 things are working fine. However, if I run both test part 1 & test part 2 in sequence I get an access violation in QQuickWebEngineViewPrivate::initializeProfile().
Test case using gtest framework
TEST( QuickControlsLoadTest, DialogWebViewRaw )
{
QUrl dirOfControls( "qml/DialogWebViewRaw.qml" );
{
// Test part 1
QCoreApplication::setOrganizationName( "Example" );
QApplication::setAttribute( Qt::AA_ShareOpenGLContexts ); // For WebView needed
QCoreApplication::setAttribute( Qt::AA_EnableHighDpiScaling );
int m_argc( 1 );
char* m_argv[1];
m_argv[0] = "";
QApplication app( m_argc, m_argv );
QtWebEngine::initialize();
QQmlApplicationEngine appEngine;
appEngine.load( dirOfControls );
//app.exec();
}
{
// Test part 2
QCoreApplication::setOrganizationName( "Example" );
QApplication::setAttribute( Qt::AA_ShareOpenGLContexts ); // For WebView needed
QCoreApplication::setAttribute( Qt::AA_EnableHighDpiScaling );
int m_argc( 1 );
char* m_argv[1];
m_argv[0] = "";
QApplication app( m_argc, m_argv );
QtWebEngine::initialize();
QQmlApplicationEngine appEngine;
appEngine.load( dirOfControls );
//app.exec();
}
}
DialogWebViewRaw.qml contains the following code
import QtQuick 2.11
import QtQuick.Window 2.2
import QtQuick.Controls 2.4
import QtQuick.Layouts 1.11
import QtWebEngine 1.1
ApplicationWindow {
id: window
title: "Web View"
ColumnLayout {
WebEngineView {
id: webView
//url: 'https://www.google.com/'
Layout.fillHeight: true
Layout.fillWidth: true
}
}
}
Call stack of access violation
Qt5WebEngined.dll!QQuickWebEngineViewPrivate::initializeProfile() Line 181 C++
Qt5WebEngined.dll!QQuickWebEngineView::componentComplete() Line 2092 C++
Qt5Qmld.dll!QQmlObjectCreator::finalize(QQmlInstantiationInterrupt & interrupt) Line 1375 C++
Qt5Qmld.dll!QQmlComponentPrivate::complete(QQmlEnginePrivate * enginePriv, QQmlComponentPrivate::ConstructionState * state) Line 937 C++
Qt5Qmld.dll!QQmlComponentPrivate::completeCreate() Line 972 C++
Qt5Qmld.dll!QQmlComponent::completeCreate() Line 964 C++
Qt5Qmld.dll!QQmlComponent::create(QQmlContext * context) Line 798 C++
Qt5Qmld.dll!QQmlApplicationEnginePrivate::finishLoad(QQmlComponent * c) Line 136 C++
Qt5Qmld.dll!QQmlApplicationEnginePrivate::startLoad(const QUrl & url, const QByteArray & data, bool dataFlag) Line 121 C++
Qt5Qmld.dll!QQmlApplicationEngine::load(const QUrl & url) Line 266 C++
QuickTests.exe!QuickControlsLoadTest_DialogWebViewRaw_Test::TestBody() Line 98 C++
Why I get this access violation? Is the WebEngineProfile deleted after execution of part 1 of test case above?
I know the test doesn't makes much sense at all but I wonder why I get the error.
I appreciate any help.