diff options
author | Milian Wolff <milian.wolff@kdab.com> | 2013-08-27 17:14:18 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-02 18:09:27 +0200 |
commit | 46eeccf7be809532af652cb57a7cb6f909644404 (patch) | |
tree | cd4423dcbfd9c2009dcc93befade29d6a12e50bf /Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp | |
parent | e99cdcf1369fd54ea15079766b8a5b3d589fddc0 (diff) | |
download | qtwebkit-46eeccf7be809532af652cb57a7cb6f909644404.tar.gz |
[Qt] Restore URL Scheme Delegates after QtWebProcess crash
https://bugs.webkit.org/show_bug.cgi?id=108808
When the QtWebProcess crashes, the registered URL Scheme
Delegates are not properly restored over IPC in the newly
launched process instance.
Reviewed by Simon Hausmann.
* UIProcess/API/qt/qquickwebview.cpp:
(QQuickWebViewPrivate::didRelaunchProcess):
(QQuickWebViewPrivate::updateSchemeDelegates):
* UIProcess/API/qt/qquickwebview_p_p.h:
(QQuickWebViewPrivate):
Change-Id: I14493ea1190053e5a523d2cf8a99cc8d526b4fd2
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@142997 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Diffstat (limited to 'Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp')
-rw-r--r-- | Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp index c3e372b54..85ad6ea2c 100644 --- a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp +++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp @@ -494,6 +494,7 @@ void QQuickWebViewPrivate::didRelaunchProcess() updateViewportSize(); updateUserScripts(); + updateSchemeDelegates(); } PassOwnPtr<DrawingAreaProxy> QQuickWebViewPrivate::createDrawingAreaProxy() @@ -772,6 +773,17 @@ void QQuickWebViewPrivate::updateUserScripts() webPageProxy->setUserScripts(scripts); } +void QQuickWebViewPrivate::updateSchemeDelegates() +{ + webPageProxy->registerApplicationScheme(ASCIILiteral("qrc")); + + QQmlListProperty<QQuickUrlSchemeDelegate> schemes = experimental->schemeDelegates(); + for (int i = 0, numSchemes = experimental->schemeDelegates_Count(&schemes); i < numSchemes; ++i) { + QQuickUrlSchemeDelegate* scheme = experimental->schemeDelegates_At(&schemes, i); + webPageProxy->registerApplicationScheme(scheme->scheme()); + } +} + QPointF QQuickWebViewPrivate::contentPos() const { Q_Q(const QQuickWebView); |