diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-04-13 17:20:35 +0200 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2018-04-17 11:57:01 +0000 |
commit | dbc8ba296698699db6dac40d1d58ef0b768034a0 (patch) | |
tree | f655e67d314ea9bb9e794afe6bed032ac1bda317 | |
parent | 0d4d677499a936e1e79604af39af15e098cb6eac (diff) | |
download | qtwebengine-dbc8ba296698699db6dac40d1d58ef0b768034a0.tar.gz |
Fix crash on launching and quitting nanobrowser with devtools open
Make sure it is opened after initialization of the inspected content,
and deleted when the inspected content is closed.
Task-number: QTBUG-67642
Change-Id: Ie7218bc437e8c529205ceb7744c4aa0c9ffe6c75
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
-rw-r--r-- | src/core/web_contents_adapter.cpp | 8 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 13 |
2 files changed, 12 insertions, 9 deletions
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index 95bdaba53..900abac44 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -408,6 +408,10 @@ WebContentsAdapter::WebContentsAdapter(content::WebContents *webContents) WebContentsAdapter::~WebContentsAdapter() { + Q_D(WebContentsAdapter); + if (d->devToolsFrontend) + closeDevToolsFrontend(); + Q_ASSERT(!d->devToolsFrontend); } void WebContentsAdapter::setClient(WebContentsAdapterClient *adapterClient) @@ -1168,7 +1172,7 @@ void WebContentsAdapter::openDevToolsFrontend(QSharedPointer<WebContentsAdapter> { Q_D(WebContentsAdapter); Q_ASSERT(isInitialized()); - if (d->devToolsFrontend && + if (d->devToolsFrontend && frontendAdapter->webContents() && d->devToolsFrontend->frontendDelegate() == frontendAdapter->webContents()->GetDelegate()) return; @@ -1183,7 +1187,6 @@ void WebContentsAdapter::openDevToolsFrontend(QSharedPointer<WebContentsAdapter> void WebContentsAdapter::closeDevToolsFrontend() { Q_D(WebContentsAdapter); - CHECK_INITIALIZED(); if (d->devToolsFrontend) { d->devToolsFrontend->DisconnectFromTarget(); d->devToolsFrontend->Close(); @@ -1193,7 +1196,6 @@ void WebContentsAdapter::closeDevToolsFrontend() void WebContentsAdapter::devToolsFrontendDestroyed(DevToolsFrontendQt *frontend) { Q_D(WebContentsAdapter); - Q_ASSERT(isInitialized()); Q_ASSERT(frontend == d->devToolsFrontend); Q_UNUSED(frontend); d->devToolsFrontend = nullptr; diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 8d5a30016..334def6c4 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -755,10 +755,9 @@ void QQuickWebEngineViewPrivate::initializationFinished() adapter->setWebChannel(m_webChannel, m_webChannelWorld); if (!qFuzzyCompare(adapter->currentZoomFactor(), m_defaultZoomFactor)) q->setZoomFactor(m_defaultZoomFactor); + if (devToolsView && devToolsView->d_ptr->adapter) adapter->openDevToolsFrontend(devToolsView->d_ptr->adapter); - else if (inspectedView && inspectedView->d_ptr->adapter) - inspectedView->d_ptr->adapter->openDevToolsFrontend(adapter); Q_FOREACH (QQuickWebEngineScript *script, m_userScripts) script->d_func()->bind(browserContextAdapter()->userResourceController(), adapter.data()); @@ -1270,10 +1269,12 @@ void QQuickWebEngineView::setDevToolsView(QQuickWebEngineView *devToolsView) d->devToolsView = devToolsView; if (devToolsView) devToolsView->setInspectedView(this); - if (devToolsView) - d->adapter->openDevToolsFrontend(devToolsView->d_ptr->adapter); - else - d->adapter->closeDevToolsFrontend(); + if (d->adapter->isInitialized()) { + if (devToolsView) + d->adapter->openDevToolsFrontend(devToolsView->d_ptr->adapter); + else + d->adapter->closeDevToolsFrontend(); + } Q_EMIT devToolsViewChanged(); } |