summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/ResponsivenessTimer.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebKit2/UIProcess/ResponsivenessTimer.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebKit2/UIProcess/ResponsivenessTimer.cpp')
-rw-r--r--Source/WebKit2/UIProcess/ResponsivenessTimer.cpp33
1 files changed, 24 insertions, 9 deletions
diff --git a/Source/WebKit2/UIProcess/ResponsivenessTimer.cpp b/Source/WebKit2/UIProcess/ResponsivenessTimer.cpp
index 9739fa3a1..feb469f08 100644
--- a/Source/WebKit2/UIProcess/ResponsivenessTimer.cpp
+++ b/Source/WebKit2/UIProcess/ResponsivenessTimer.cpp
@@ -30,7 +30,7 @@ namespace WebKit {
static const double responsivenessTimeout = 3;
-ResponsivenessTimer::ResponsivenessTimer(ResponsivenessTimer::Client* client)
+ResponsivenessTimer::ResponsivenessTimer(ResponsivenessTimer::Client& client)
: m_client(client)
, m_isResponsive(true)
, m_timer(RunLoop::main(), this, &ResponsivenessTimer::timerFired)
@@ -49,13 +49,19 @@ void ResponsivenessTimer::invalidate()
void ResponsivenessTimer::timerFired()
{
- if (m_isResponsive) {
- m_isResponsive = false;
- m_client->didBecomeUnresponsive(this);
- } else {
- // The timer fired while unresponsive.
- m_client->interactionOccurredWhileUnresponsive(this);
+ if (!m_isResponsive)
+ return;
+
+ if (!m_client.mayBecomeUnresponsive()) {
+ m_timer.startOneShot(responsivenessTimeout);
+ return;
}
+
+ m_client.willChangeIsResponsive();
+ m_isResponsive = false;
+ m_client.didChangeIsResponsive();
+
+ m_client.didBecomeUnresponsive();
}
void ResponsivenessTimer::start()
@@ -69,12 +75,21 @@ void ResponsivenessTimer::start()
void ResponsivenessTimer::stop()
{
if (!m_isResponsive) {
- // We got a life sign from the web process!
- m_client->didBecomeResponsive(this);
+ // We got a life sign from the web process.
+ m_client.willChangeIsResponsive();
m_isResponsive = true;
+ m_client.didChangeIsResponsive();
+
+ m_client.didBecomeResponsive();
}
m_timer.stop();
}
+void ResponsivenessTimer::processTerminated()
+{
+ // Since there is no web process, we must not be waiting for it anymore.
+ stop();
+}
+
} // namespace WebKit