diff options
author | Jake Petroules <jake.petroules@theqtcompany.com> | 2015-09-05 19:14:17 -0700 |
---|---|---|
committer | Jake Petroules <jake.petroules@theqtcompany.com> | 2015-09-10 21:09:14 +0000 |
commit | 5555afd6ce01bc9891ee33b075cc53f4fa48665e (patch) | |
tree | a0fc64b10090e9c7c4574c57c17c92cccc5e3adb /examples | |
parent | ffddac06d3b98be9a477a5ecedc2acd255715453 (diff) |
Emit a signal when the rendering process exits.
This allows users to implement a "sad tab" feature and/or track
rendering process crashes using a crash reporting service.
Task-number: QTBUG-48227
Change-Id: I97ef934fe5d0912cd0f41967a39052316b3c66b0
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/webengine/quicknanobrowser/BrowserWindow.qml | 29 | ||||
-rw-r--r-- | examples/webenginewidgets/demobrowser/demobrowser.pro | 1 | ||||
-rw-r--r-- | examples/webenginewidgets/demobrowser/webview.cpp | 22 |
3 files changed, 52 insertions, 0 deletions
diff --git a/examples/webengine/quicknanobrowser/BrowserWindow.qml b/examples/webengine/quicknanobrowser/BrowserWindow.qml index bdee68d17..4d7513fae 100644 --- a/examples/webengine/quicknanobrowser/BrowserWindow.qml +++ b/examples/webengine/quicknanobrowser/BrowserWindow.qml @@ -393,6 +393,35 @@ ApplicationWindow { } request.accept() } + + onRenderProcessTerminated: { + var status = "" + switch (terminationStatus) { + case WebEngineView.NormalTerminationStatus: + status = "(normal exit)" + break; + case WebEngineView.AbnormalTerminationStatus: + status = "(abnormal exit)" + break; + case WebEngineView.CrashedTerminationStatus: + status = "(crashed)" + break; + case WebEngineView.KilledTerminationStatus: + status = "(killed)" + break; + } + + print("Render process exited with code " + exitCode + " " + status) + reloadTimer.running = true + } + + Timer { + id: reloadTimer + interval: 0 + running: false + repeat: false + onTriggered: currentWebView.reload() + } } } } diff --git a/examples/webenginewidgets/demobrowser/demobrowser.pro b/examples/webenginewidgets/demobrowser/demobrowser.pro index 310aea59c..0893fe649 100644 --- a/examples/webenginewidgets/demobrowser/demobrowser.pro +++ b/examples/webenginewidgets/demobrowser/demobrowser.pro @@ -1,6 +1,7 @@ TEMPLATE = app TARGET = demobrowser QT += webenginewidgets network widgets printsupport +CONFIG += c++11 qtHaveModule(uitools):!embedded: QT += uitools else: DEFINES += QT_NO_UITOOLS diff --git a/examples/webenginewidgets/demobrowser/webview.cpp b/examples/webenginewidgets/demobrowser/webview.cpp index e454f06c4..c12f3db36 100644 --- a/examples/webenginewidgets/demobrowser/webview.cpp +++ b/examples/webenginewidgets/demobrowser/webview.cpp @@ -66,6 +66,7 @@ #include <QtCore/QDebug> #include <QtCore/QBuffer> +#include <QtCore/QTimer> WebPage::WebPage(QWebEngineProfile *profile, QObject *parent) : QWebEnginePage(profile, parent) @@ -341,6 +342,27 @@ WebView::WebView(QWidget* parent) this, SLOT(setProgress(int))); connect(this, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished(bool))); + connect(this, &QWebEngineView::renderProcessTerminated, + [=](QWebEnginePage::RenderProcessTerminationStatus termStatus, int statusCode) { + const char *status = ""; + switch (termStatus) { + case QWebEnginePage::NormalTerminationStatus: + status = "(normal exit)"; + break; + case QWebEnginePage::AbnormalTerminationStatus: + status = "(abnormal exit)"; + break; + case QWebEnginePage::CrashedTerminationStatus: + status = "(crashed)"; + break; + case QWebEnginePage::KilledTerminationStatus: + status = "(killed)"; + break; + } + + qInfo() << "Render process exited with code" << statusCode << status; + QTimer::singleShot(0, [this] { reload(); }); + }); } void WebView::setPage(WebPage *_page) |