<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[179087] trunk/Source/WebKit2</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/179087">179087</a></dd>
<dt>Author</dt> <dd>timothy_horton@apple.com</dd>
<dt>Date</dt> <dd>2015-01-25 00:20:02 -0800 (Sun, 25 Jan 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Unresponsive Web processes sometimes throw ObjC exceptions under didPerformActionMenuHitTest:
https://bugs.webkit.org/show_bug.cgi?id=140859
&lt;rdar://problem/19571057&gt;

Reviewed by Darin Adler.

* UIProcess/mac/WKImmediateActionController.mm:
(-[WKImmediateActionController didPerformActionMenuHitTest:userData:]):
If we've already given up on this gesture (either because it was canceled or the
willBeginAnimation timeout expired), we shouldn't build a new animationController for it.
This is true both because it wouldn't look good to swap animationControllers out
from under the gesture, but also because AppKit throws an exception when you do this
and that breaks a lot of things.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacWKImmediateActionControllermm">trunk/Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (179086 => 179087)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-01-25 08:17:39 UTC (rev 179086)
+++ trunk/Source/WebKit2/ChangeLog        2015-01-25 08:20:02 UTC (rev 179087)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2015-01-25  Timothy Horton  &lt;timothy_horton@apple.com&gt;
+
+        Unresponsive Web processes sometimes throw ObjC exceptions under didPerformActionMenuHitTest:
+        https://bugs.webkit.org/show_bug.cgi?id=140859
+        &lt;rdar://problem/19571057&gt;
+
+        Reviewed by Darin Adler.
+
+        * UIProcess/mac/WKImmediateActionController.mm:
+        (-[WKImmediateActionController didPerformActionMenuHitTest:userData:]):
+        If we've already given up on this gesture (either because it was canceled or the
+        willBeginAnimation timeout expired), we shouldn't build a new animationController for it.
+        This is true both because it wouldn't look good to swap animationControllers out
+        from under the gesture, but also because AppKit throws an exception when you do this
+        and that breaks a lot of things.
+
</ins><span class="cx"> 2015-01-24  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [WK2][Cocoa] Drop WKDiagnosticLoggingResultType defines
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacWKImmediateActionControllermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm (179086 => 179087)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm        2015-01-25 08:17:39 UTC (rev 179086)
+++ trunk/Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm        2015-01-25 08:20:02 UTC (rev 179087)
</span><span class="lines">@@ -131,6 +131,11 @@
</span><span class="cx"> 
</span><span class="cx"> - (void)didPerformActionMenuHitTest:(const ActionMenuHitTestResult&amp;)hitTestResult userData:(API::Object*)userData
</span><span class="cx"> {
</span><ins>+    // If we've already given up on this gesture (either because it was canceled or the
+    // willBeginAnimation timeout expired), we shouldn't build a new animationController for it.
+    if (_state != ImmediateActionState::Pending)
+        return;
+
</ins><span class="cx">     // FIXME: This needs to use the WebKit2 callback mechanism to avoid out-of-order replies.
</span><span class="cx">     _state = ImmediateActionState::Ready;
</span><span class="cx">     _hitTestResult = hitTestResult;
</span></span></pre>
</div>
</div>

</body>
</html>