Changeset 192702 in webkit
- Timestamp:
- Nov 20, 2015 3:10:02 PM (8 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r192701 r192702 1 2015-11-20 Geoffrey Garen <ggaren@apple.com> 2 3 A hung webpage pretends to be responsive if you scroll 4 https://bugs.webkit.org/show_bug.cgi?id=151518 5 6 Reviewed by Sam Weinig. 7 8 * UIProcess/WebPageProxy.cpp: 9 (WebKit::WebPageProxy::sendWheelEvent): 10 (WebKit::WebPageProxy::didReceiveEvent): Don't treat wheel events as 11 starting or stopping the responsiveness timer. Wheel events usually 12 process on the event dispatch thread, which responds even if the main 13 thread is hung. 14 15 Instead, send an out-of-band ping to the main thread to verify that 16 it is still responsive and we'll be able to paint and respond to clicks 17 after scrolling. 18 19 * UIProcess/WebProcessProxy.cpp: 20 (WebKit::WebProcessProxy::sendMainThreadPing): 21 (WebKit::WebProcessProxy::didReceiveMainThreadPing): 22 * UIProcess/WebProcessProxy.h: 23 * UIProcess/WebProcessProxy.messages.in: UI process support for pinging 24 the main thread in the web process. 25 26 * WebProcess/WebProcess.cpp: 27 (WebKit::WebProcess::mainThreadPing): 28 * WebProcess/WebProcess.h: 29 * WebProcess/WebProcess.messages.in: Web process support for responding 30 to pings. 31 1 32 2015-11-20 Simon Fraser <simon.fraser@apple.com> 2 33 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r192697 r192702 1798 1798 void WebPageProxy::sendWheelEvent(const WebWheelEvent& event) 1799 1799 { 1800 m_process->responsivenessTimer().start();1801 1802 1800 m_process->send( 1803 1801 Messages::EventDispatcher::WheelEvent( … … 1809 1807 rubberBandsAtBottom() 1810 1808 ), 0); 1809 1810 m_process->sendMainThreadPing(); 1811 1811 } 1812 1812 … … 4501 4501 case WebEvent::NoType: 4502 4502 case WebEvent::MouseMove: 4503 case WebEvent::Wheel: 4503 4504 break; 4504 4505 … … 4508 4509 case WebEvent::MouseForceDown: 4509 4510 case WebEvent::MouseForceUp: 4510 case WebEvent::Wheel:4511 4511 case WebEvent::KeyDown: 4512 4512 case WebEvent::KeyUp: -
trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp
r192697 r192702 1003 1003 } 1004 1004 1005 void WebProcessProxy::sendMainThreadPing() 1006 { 1007 responsivenessTimer().start(); 1008 send(Messages::WebProcess::MainThreadPing(), 0); 1009 } 1010 1011 void WebProcessProxy::didReceiveMainThreadPing() 1012 { 1013 responsivenessTimer().stop(); 1014 } 1015 1005 1016 } // namespace WebKit -
trunk/Source/WebKit2/UIProcess/WebProcessProxy.h
r192697 r192702 155 155 void reinstateNetworkProcessAssertionState(NetworkProcessProxy&); 156 156 157 void sendMainThreadPing(); 158 void didReceiveMainThreadPing(); 159 157 160 private: 158 161 explicit WebProcessProxy(WebProcessPool&); -
trunk/Source/WebKit2/UIProcess/WebProcessProxy.messages.in
r192697 r192702 50 50 RetainIconForPageURL(String pageURL) 51 51 ReleaseIconForPageURL(String pageURL) 52 53 DidReceiveMainThreadPing() 52 54 } -
trunk/Source/WebKit2/WebProcess/WebProcess.cpp
r192697 r192702 981 981 } 982 982 983 void WebProcess::mainThreadPing() 984 { 985 parentProcessConnection()->send(Messages::WebProcessProxy::DidReceiveMainThreadPing(), 0); 986 } 987 983 988 void WebProcess::setJavaScriptGarbageCollectorTimerEnabled(bool flag) 984 989 { -
trunk/Source/WebKit2/WebProcess/WebProcess.h
r192697 r192702 269 269 void setJavaScriptGarbageCollectorTimerEnabled(bool flag); 270 270 271 void mainThreadPing(); 272 271 273 void releasePageCache(); 272 274 -
trunk/Source/WebKit2/WebProcess/WebProcess.messages.in
r192673 r192702 106 106 CancelPrepareToSuspend() 107 107 ProcessDidResume() 108 109 MainThreadPing() 108 110 }
Note: See TracChangeset
for help on using the changeset viewer.