From 5555afd6ce01bc9891ee33b075cc53f4fa48665e Mon Sep 17 00:00:00 2001 From: Jake Petroules Date: Sat, 5 Sep 2015 19:14:17 -0700 Subject: 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 --- .../webengine/quicknanobrowser/BrowserWindow.qml | 29 ++++++++++++++++++++++ .../webenginewidgets/demobrowser/demobrowser.pro | 1 + examples/webenginewidgets/demobrowser/webview.cpp | 22 ++++++++++++++++ 3 files changed, 52 insertions(+) (limited to 'examples') 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 #include +#include 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) -- cgit v1.2.3