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 /src/webenginewidgets | |
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 'src/webenginewidgets')
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.cpp | 8 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.h | 10 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage_p.h | 2 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.cpp | 1 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.h | 2 |
5 files changed, 23 insertions, 0 deletions
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index b6880b086..80baf1c74 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -921,6 +921,14 @@ void QWebEnginePagePrivate::moveValidationMessage(const QRect &anchor) #endif } +void QWebEnginePagePrivate::renderProcessTerminated(RenderProcessTerminationStatus terminationStatus, + int exitCode) +{ + Q_Q(QWebEnginePage); + Q_EMIT q->renderProcessTerminated(static_cast<QWebEnginePage::RenderProcessTerminationStatus>( + terminationStatus), exitCode); +} + QMenu *QWebEnginePage::createStandardContextMenu() { Q_D(QWebEnginePage); diff --git a/src/webenginewidgets/api/qwebenginepage.h b/src/webenginewidgets/api/qwebenginepage.h index d027998ee..90fa62f97 100644 --- a/src/webenginewidgets/api/qwebenginepage.h +++ b/src/webenginewidgets/api/qwebenginepage.h @@ -165,6 +165,14 @@ public: ErrorMessageLevel }; + // must match WebContentsAdapterClient::RenderProcessTerminationStatus + enum RenderProcessTerminationStatus { + NormalTerminationStatus = 0, + AbnormalTerminationStatus, + CrashedTerminationStatus, + KilledTerminationStatus + }; + explicit QWebEnginePage(QObject *parent = 0); QWebEnginePage(QWebEngineProfile *profile, QObject *parent = 0); ~QWebEnginePage(); @@ -247,6 +255,8 @@ Q_SIGNALS: void authenticationRequired(const QUrl &requestUrl, QAuthenticator *authenticator); void proxyAuthenticationRequired(const QUrl &requestUrl, QAuthenticator *authenticator, const QString &proxyHost); + void renderProcessTerminated(RenderProcessTerminationStatus terminationStatus, int exitCode); + // Ex-QWebFrame signals void titleChanged(const QString &title); void urlChanged(const QUrl &url); diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h index a72debee2..8d9bc2517 100644 --- a/src/webenginewidgets/api/qwebenginepage_p.h +++ b/src/webenginewidgets/api/qwebenginepage_p.h @@ -119,6 +119,8 @@ public: virtual void showValidationMessage(const QRect &anchor, const QString &mainText, const QString &subText) Q_DECL_OVERRIDE; virtual void hideValidationMessage() Q_DECL_OVERRIDE; virtual void moveValidationMessage(const QRect &anchor) Q_DECL_OVERRIDE; + virtual void renderProcessTerminated(RenderProcessTerminationStatus terminationStatus, + int exitCode) Q_DECL_OVERRIDE; virtual QtWebEngineCore::BrowserContextAdapter *browserContextAdapter() Q_DECL_OVERRIDE; diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index a4a8dd760..ddd1e4cbf 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -86,6 +86,7 @@ void QWebEngineViewPrivate::bind(QWebEngineView *view, QWebEnginePage *page) QObject::connect(page, &QWebEnginePage::loadProgress, view, &QWebEngineView::loadProgress); QObject::connect(page, &QWebEnginePage::loadFinished, view, &QWebEngineView::loadFinished); QObject::connect(page, &QWebEnginePage::selectionChanged, view, &QWebEngineView::selectionChanged); + QObject::connect(page, &QWebEnginePage::renderProcessTerminated, view, &QWebEngineView::renderProcessTerminated); } } diff --git a/src/webenginewidgets/api/qwebengineview.h b/src/webenginewidgets/api/qwebengineview.h index 0d8f9fc17..ae38e6c5c 100644 --- a/src/webenginewidgets/api/qwebengineview.h +++ b/src/webenginewidgets/api/qwebengineview.h @@ -113,6 +113,8 @@ Q_SIGNALS: void selectionChanged(); void urlChanged(const QUrl&); void iconUrlChanged(const QUrl&); + void renderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, + int exitCode); protected: virtual QWebEngineView *createWindow(QWebEnginePage::WebWindowType type); |