Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- commit 0caebdb0ef59de01d3aaab633a965399f090c0c8
- Author: Andreas Kling <kling@webkit.org>
- Date: Thu Jan 27 11:41:56 2011 +0100
- Immediately relaunch web processes upon crash.
- This is configurable via QWKContext::setShouldRelaunchProcessesOnCrash
- and enabled by default.
- diff --git a/WebKit2/UIProcess/API/qt/qwkcontext.cpp b/WebKit2/UIProcess/API/qt/qwkcontext.cpp
- index d73f81c..8f1c7c8 100644
- --- a/WebKit2/UIProcess/API/qt/qwkcontext.cpp
- +++ b/WebKit2/UIProcess/API/qt/qwkcontext.cpp
- @@ -128,6 +128,7 @@ QWKContext::QWKContext(QObject* parent)
- RefPtr<WebContext> newContext = WebContext::create(String());
- d->pageNamespace = adoptRef(newContext->createPageNamespace());
- d->ownsContextProcesses = true;
- + d->relaunchProcessesOnCrash = true;
- d->init();
- }
- @@ -137,6 +138,7 @@ QWKContext::QWKContext(WKPageNamespaceRef pageNamespaceRef, QObject* parent)
- {
- d->pageNamespace = toImpl(pageNamespaceRef);
- d->ownsContextProcesses = false;
- + d->relaunchProcessesOnCrash = true;
- d->init();
- }
- @@ -175,3 +177,13 @@ void QWKContext::terminateAllWebProcesses()
- if (d->context()->process())
- d->context()->process()->terminate();
- }
- +
- +void QWKContext::setShouldRelaunchProcessesOnCrash(bool shouldRelaunch)
- +{
- + d->relaunchProcessesOnCrash = shouldRelaunch;
- +}
- +
- +bool QWKContext::shouldRelaunchProcessesOnCrash() const
- +{
- + return d->relaunchProcessesOnCrash;
- +}
- diff --git a/WebKit2/UIProcess/API/qt/qwkcontext.h b/WebKit2/UIProcess/API/qt/qwkcontext.h
- index 2d40b85..c89108c 100644
- --- a/WebKit2/UIProcess/API/qt/qwkcontext.h
- +++ b/WebKit2/UIProcess/API/qt/qwkcontext.h
- @@ -43,6 +43,9 @@ public:
- QString cacheDirPath() const;
- void setCacheDirPath(const QString& cacheDirPath);
- + bool shouldRelaunchProcessesOnCrash() const;
- + void setShouldRelaunchProcessesOnCrash(bool shouldRelaunch);
- +
- public:
- Q_SIGNAL void downloadRequested(QWKDownload* download);
- diff --git a/WebKit2/UIProcess/API/qt/qwkcontext_p.h b/WebKit2/UIProcess/API/qt/qwkcontext_p.h
- index 8d9e6c4..38b9590 100644
- --- a/WebKit2/UIProcess/API/qt/qwkcontext_p.h
- +++ b/WebKit2/UIProcess/API/qt/qwkcontext_p.h
- @@ -57,6 +57,7 @@ public:
- QMap<uint64_t, QWKDownload*> m_downloads;
- bool ownsContextProcesses;
- + bool relaunchProcessesOnCrash;
- };
- #endif /* qkcontext_p_h */
- diff --git a/WebKit2/UIProcess/API/qt/qwkpage.cpp b/WebKit2/UIProcess/API/qt/qwkpage.cpp
- index fab9da0..da16c8d 100644
- --- a/WebKit2/UIProcess/API/qt/qwkpage.cpp
- +++ b/WebKit2/UIProcess/API/qt/qwkpage.cpp
- @@ -627,6 +627,14 @@ void QWKPagePrivate::tapAndHoldTimout()
- }
- #endif
- +void QWKPagePrivate::processDidCrash()
- +{
- + if (context->shouldRelaunchProcessesOnCrash())
- + context->d->context()->relaunchProcessIfNecessary();
- +
- + emit q->processCrashed();
- +}
- +
- QWKPage::QWKPage(QWKContext* context)
- : d(new QWKPagePrivate(this, context))
- {
- diff --git a/WebKit2/UIProcess/API/qt/qwkpage.h b/WebKit2/UIProcess/API/qt/qwkpage.h
- index ad8b65f..def3cba 100644
- --- a/WebKit2/UIProcess/API/qt/qwkpage.h
- +++ b/WebKit2/UIProcess/API/qt/qwkpage.h
- @@ -171,6 +171,7 @@ public:
- Q_SIGNAL void snapshotTaken(const QImage&);
- Q_SIGNAL void showContextMenu(QMenu*);
- Q_SIGNAL void authenticationRequired(const QString& host, const QString& realm, const QString& oldUsername, QString* username, QString* password);
- + Q_SIGNAL void processCrashed();
- // Gesture signals
- Q_SIGNAL void panRequested(const QPointF&, bool isFinished);
- diff --git a/WebKit2/UIProcess/API/qt/qwkpage_p.h b/WebKit2/UIProcess/API/qt/qwkpage_p.h
- index ee7e650..084a2ba 100644
- --- a/WebKit2/UIProcess/API/qt/qwkpage_p.h
- +++ b/WebKit2/UIProcess/API/qt/qwkpage_p.h
- @@ -53,7 +53,7 @@ public:
- void pageDidLeaveAcceleratedCompositing();
- #endif // USE(ACCELERATED_COMPOSITING)
- virtual void pageDidRequestScroll(const WebCore::IntSize&);
- - virtual void processDidCrash() { }
- + virtual void processDidCrash();
- virtual void didRelaunchProcess();
- virtual void didChangeContentsSize(const WebCore::IntSize&);
- virtual void didFindZoomableArea(const WebCore::IntPoint&, const WebCore::IntRect&);
Add Comment
Please, Sign In to add comment