Diff
Modified: trunk/Source/WebKit2/ChangeLog (114450 => 114451)
--- trunk/Source/WebKit2/ChangeLog 2012-04-17 22:42:11 UTC (rev 114450)
+++ trunk/Source/WebKit2/ChangeLog 2012-04-17 22:43:44 UTC (rev 114451)
@@ -1,5 +1,40 @@
2012-04-17 Anders Carlsson <[email protected]>
+ Need a client callback for when the user tires to interact with an already unresponsive page
+ https://bugs.webkit.org/show_bug.cgi?id=84201
+ <rdar://problem/11140862>
+
+ Reviewed by Andreas Kling.
+
+ Add a interactionOccurredWhileProcessUnresponsive callback that's called when the unresponsiveness timer
+ fires while it's already unresponsive.
+
+ * UIProcess/API/C/WKPage.h:
+ * UIProcess/ResponsivenessTimer.cpp:
+ (WebKit):
+ (WebKit::ResponsivenessTimer::timerFired):
+ (WebKit::ResponsivenessTimer::start):
+ * UIProcess/ResponsivenessTimer.h:
+ (Client):
+ * UIProcess/WebLoaderClient.cpp:
+ (WebKit::WebLoaderClient::processDidBecomeUnresponsive):
+ (WebKit):
+ (WebKit::WebLoaderClient::interactionOccurredWhileProcessUnresponsive):
+ * UIProcess/WebLoaderClient.h:
+ (WebLoaderClient):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::interactionOccurredWhileProcessUnresponsive):
+ (WebKit):
+ * UIProcess/WebPageProxy.h:
+ (WebPageProxy):
+ * UIProcess/WebProcessProxy.cpp:
+ (WebKit::WebProcessProxy::interactionOccurredWhileUnresponsive):
+ (WebKit):
+ * UIProcess/WebProcessProxy.h:
+ (WebProcessProxy):
+
+2012-04-17 Anders Carlsson <[email protected]>
+
Make sure that the layer hosting mode is kept up to date if it changes before the plug-in is initialized
https://bugs.webkit.org/show_bug.cgi?id=84180
<rdar://problem/11265113>
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.h (114450 => 114451)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.h 2012-04-17 22:42:11 UTC (rev 114450)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.h 2012-04-17 22:43:44 UTC (rev 114451)
@@ -113,6 +113,8 @@
WKPageDidNewFirstVisuallyNonEmptyLayoutCallback didNewFirstVisuallyNonEmptyLayout;
WKPageWillGoToBackForwardListItemCallback willGoToBackForwardListItem;
+
+ WKPageCallback interactionOccurredWhileProcessUnresponsive;
};
typedef struct WKPageLoaderClient WKPageLoaderClient;
Modified: trunk/Source/WebKit2/UIProcess/ResponsivenessTimer.cpp (114450 => 114451)
--- trunk/Source/WebKit2/UIProcess/ResponsivenessTimer.cpp 2012-04-17 22:42:11 UTC (rev 114450)
+++ trunk/Source/WebKit2/UIProcess/ResponsivenessTimer.cpp 2012-04-17 22:43:44 UTC (rev 114451)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2010, 2012 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -30,7 +30,7 @@
namespace WebKit {
-static const double kResponsivenessTimeout = 3;
+static const double responsivenessTimeout = 3;
ResponsivenessTimer::ResponsivenessTimer(ResponsivenessTimer::Client* client)
: m_client(client)
@@ -51,13 +51,13 @@
void ResponsivenessTimer::timerFired()
{
- // We'll never schedule the timer unless we're responsive.
- ASSERT(m_isResponsive);
-
- m_isResponsive = false;
- m_client->didBecomeUnresponsive(this);
-
- m_timer.stop();
+ if (m_isResponsive) {
+ m_isResponsive = false;
+ m_client->didBecomeUnresponsive(this);
+ } else {
+ // The timer fired while unresponsive.
+ m_client->interactionOccurredWhileUnresponsive(this);
+ }
}
void ResponsivenessTimer::start()
@@ -65,10 +65,7 @@
if (m_timer.isActive())
return;
- if (!m_isResponsive)
- return;
-
- m_timer.startOneShot(kResponsivenessTimeout);
+ m_timer.startOneShot(responsivenessTimeout);
}
void ResponsivenessTimer::stop()
Modified: trunk/Source/WebKit2/UIProcess/ResponsivenessTimer.h (114450 => 114451)
--- trunk/Source/WebKit2/UIProcess/ResponsivenessTimer.h 2012-04-17 22:42:11 UTC (rev 114450)
+++ trunk/Source/WebKit2/UIProcess/ResponsivenessTimer.h 2012-04-17 22:43:44 UTC (rev 114451)
@@ -36,6 +36,7 @@
public:
virtual ~Client() { }
virtual void didBecomeUnresponsive(ResponsivenessTimer*) = 0;
+ virtual void interactionOccurredWhileUnresponsive(ResponsivenessTimer*) = 0;
virtual void didBecomeResponsive(ResponsivenessTimer*) = 0;
};
Modified: trunk/Source/WebKit2/UIProcess/WebLoaderClient.cpp (114450 => 114451)
--- trunk/Source/WebKit2/UIProcess/WebLoaderClient.cpp 2012-04-17 22:42:11 UTC (rev 114450)
+++ trunk/Source/WebKit2/UIProcess/WebLoaderClient.cpp 2012-04-17 22:43:44 UTC (rev 114451)
@@ -211,6 +211,14 @@
m_client.processDidBecomeUnresponsive(toAPI(page), m_client.clientInfo);
}
+void WebLoaderClient::interactionOccurredWhileProcessUnresponsive(WebPageProxy* page)
+{
+ if (!m_client.interactionOccurredWhileProcessUnresponsive)
+ return;
+
+ m_client.interactionOccurredWhileProcessUnresponsive(toAPI(page), m_client.clientInfo);
+}
+
void WebLoaderClient::processDidBecomeResponsive(WebPageProxy* page)
{
if (!m_client.processDidBecomeResponsive)
Modified: trunk/Source/WebKit2/UIProcess/WebLoaderClient.h (114450 => 114451)
--- trunk/Source/WebKit2/UIProcess/WebLoaderClient.h 2012-04-17 22:42:11 UTC (rev 114450)
+++ trunk/Source/WebKit2/UIProcess/WebLoaderClient.h 2012-04-17 22:43:44 UTC (rev 114451)
@@ -78,6 +78,7 @@
// FIXME: These three functions should not be part of this client.
void processDidBecomeUnresponsive(WebPageProxy*);
+ void interactionOccurredWhileProcessUnresponsive(WebPageProxy*);
void processDidBecomeResponsive(WebPageProxy*);
void processDidCrash(WebPageProxy*);
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (114450 => 114451)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2012-04-17 22:42:11 UTC (rev 114450)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2012-04-17 22:43:44 UTC (rev 114451)
@@ -3285,6 +3285,14 @@
m_loaderClient.processDidBecomeUnresponsive(this);
}
+void WebPageProxy::interactionOccurredWhileProcessUnresponsive()
+{
+ if (!isValid())
+ return;
+
+ m_loaderClient.interactionOccurredWhileProcessUnresponsive(this);
+}
+
void WebPageProxy::processDidBecomeResponsive()
{
if (!isValid())
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (114450 => 114451)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2012-04-17 22:42:11 UTC (rev 114450)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2012-04-17 22:43:44 UTC (rev 114451)
@@ -536,6 +536,7 @@
void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, OwnPtr<CoreIPC::ArgumentEncoder>&);
void processDidBecomeUnresponsive();
+ void interactionOccurredWhileProcessUnresponsive();
void processDidBecomeResponsive();
void processDidCrash();
Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp (114450 => 114451)
--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp 2012-04-17 22:42:11 UTC (rev 114450)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp 2012-04-17 22:43:44 UTC (rev 114451)
@@ -395,6 +395,14 @@
pages[i]->processDidBecomeUnresponsive();
}
+void WebProcessProxy::interactionOccurredWhileUnresponsive(ResponsivenessTimer*)
+{
+ Vector<RefPtr<WebPageProxy> > pages;
+ copyValuesToVector(m_pageMap, pages);
+ for (size_t i = 0, size = pages.size(); i < size; ++i)
+ pages[i]->interactionOccurredWhileProcessUnresponsive();
+}
+
void WebProcessProxy::didBecomeResponsive(ResponsivenessTimer*)
{
Vector<RefPtr<WebPageProxy> > pages;
Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.h (114450 => 114451)
--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.h 2012-04-17 22:42:11 UTC (rev 114450)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.h 2012-04-17 22:43:44 UTC (rev 114451)
@@ -158,8 +158,9 @@
virtual void didReceiveMessageOnConnectionWorkQueue(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, bool& didHandleMessage);
// ResponsivenessTimer::Client
- void didBecomeUnresponsive(ResponsivenessTimer*);
- void didBecomeResponsive(ResponsivenessTimer*);
+ void didBecomeUnresponsive(ResponsivenessTimer*) OVERRIDE;
+ void interactionOccurredWhileUnresponsive(ResponsivenessTimer*) OVERRIDE;
+ void didBecomeResponsive(ResponsivenessTimer*) OVERRIDE;
// ProcessLauncher::Client
virtual void didFinishLaunching(ProcessLauncher*, CoreIPC::Connection::Identifier);
Modified: trunk/Tools/ChangeLog (114450 => 114451)
--- trunk/Tools/ChangeLog 2012-04-17 22:42:11 UTC (rev 114450)
+++ trunk/Tools/ChangeLog 2012-04-17 22:43:44 UTC (rev 114451)
@@ -1,3 +1,18 @@
+2012-04-17 Anders Carlsson <[email protected]>
+
+ Need a client callback for when the user tries to interact with an already unresponsive page
+ https://bugs.webkit.org/show_bug.cgi?id=84201
+ <rdar://problem/11140862>
+
+ Reviewed by Andreas Kling.
+
+ Add new client functions.
+
+ * MiniBrowser/mac/BrowserWindowController.m:
+ (-[BrowserWindowController awakeFromNib]):
+ * WebKitTestRunner/TestController.cpp:
+ (WTR::TestController::initialize):
+
2012-04-17 Dirk Pranke <[email protected]>
nrwt: handle stopping layout test helper after a ctrl-c cleanly on the chromium port
Modified: trunk/Tools/MiniBrowser/mac/BrowserWindowController.m (114450 => 114451)
--- trunk/Tools/MiniBrowser/mac/BrowserWindowController.m 2012-04-17 22:42:11 UTC (rev 114450)
+++ trunk/Tools/MiniBrowser/mac/BrowserWindowController.m 2012-04-17 22:43:44 UTC (rev 114451)
@@ -610,6 +610,7 @@
didDetectXSSForFrame,
0, // didNewFirstVisuallyNonEmptyLayout
0, // willGoToBackForwardListItem
+ 0, // interactionOccurredWhileProcessUnresponsive
};
WKPageSetPageLoaderClient(_webView.pageRef, &loadClient);
Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (114450 => 114451)
--- trunk/Tools/WebKitTestRunner/TestController.cpp 2012-04-17 22:42:11 UTC (rev 114450)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp 2012-04-17 22:43:44 UTC (rev 114451)
@@ -411,6 +411,7 @@
0, // didDetectXSSForFrame
0, // didNewFirstVisuallyNonEmptyLayout
0, // willGoToBackForwardListItem
+ 0, // interactionOccurredWhileProcessUnresponsive
};
WKPageSetPageLoaderClient(m_mainWebView->page(), &pageLoaderClient);
}