<!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>[247100] trunk</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/247100">247100</a></dd>
<dt>Author</dt> <dd>wenson_hsieh@apple.com</dd>
<dt>Date</dt> <dd>2019-07-03 12:59:02 -0700 (Wed, 03 Jul 2019)</dd>
</dl>

<h3>Log Message</h3>
<pre>REGRESSION (iOS 13): Tapping an element with a click event handler no longer clears the selection
https://bugs.webkit.org/show_bug.cgi?id=199430

Reviewed by Tim Horton.

Source/WebCore:

After <trac.webkit.org/<a href="http://trac.webkit.org/projects/webkit/changeset/245067">r245067</a>>, we no longer immediately clear the text selection when recognizing a single tap
in WKContentView, and instead only clear it out in the case where the single tap didn't result in a click event
in the web process. This fixed an issue wherein the text selection would be prematurely cleared when tapping,
but also made it such that tapping on an element with a click event handler would not cause the selection to
change, even if preventDefault() is not called on mousedown. On web pages that add a click event listener to
`document.body`, it's nearly impossible to dismiss text selections by tapping elsewhere in the body.

On macOS, this works because EventHandler::handleMousePressEventSingleClick contains logic to modify the
selection when handling a mousedown, as a part of default behavior. However, there is platform-specific logic
added in <trac.webkit.org/<a href="http://trac.webkit.org/projects/webkit/changeset/233311">r233311</a>> that avoids changing the selection when handling a synthetic mousedown on
iOS; this is because we defer to the single tap text interaction gesture on iOS, which (among other things)
provides additional support for moving the selection to word boundaries, instead of the editing position
directly under the click.

However, no such platform-specific text interaction single tap gesture exists for non-editable text, so there's
no reason we need to bail in the case where the root editable element is null. We can fix this bug without
breaking the fix in <a href="http://trac.webkit.org/projects/webkit/changeset/233311">r233311</a> by matching macOS behavior and not bailing via early return in the case where the
single tap would move selection into non-editable text.

Tests: editing/selection/ios/clear-selection-after-tapping-on-element-with-click-handler.html
       editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler.html

* page/EventHandler.cpp:
(WebCore::EventHandler::handleMousePressEventSingleClick):

LayoutTests:

Add and adjust layout tests to verify that calling preventDefault() on mousedown on iOS causes an existing
selection to not be cleared, and that tapping in an element with a click handler clears out the selection.

* editing/selection/ios/clear-selection-after-tapping-on-element-with-click-handler-expected.txt: Added.
* editing/selection/ios/clear-selection-after-tapping-on-element-with-click-handler.html: Added.
* editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler-expected.txt: Renamed.
* editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler.html:

Renamed from LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-click-handler.html,
and adjusted to call preventDefault() on mousedown events instead of click events. Also, remove a bit of
trailing whitespace.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorepageEventHandlercpp">trunk/Source/WebCore/page/EventHandler.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestseditingselectioniosclearselectionaftertappingonelementwithclickhandlerexpectedtxt">trunk/LayoutTests/editing/selection/ios/clear-selection-after-tapping-on-element-with-click-handler-expected.txt</a></li>
<li><a href="#trunkLayoutTestseditingselectioniosclearselectionaftertappingonelementwithclickhandlerhtml">trunk/LayoutTests/editing/selection/ios/clear-selection-after-tapping-on-element-with-click-handler.html</a></li>
<li><a href="#trunkLayoutTestseditingselectioniospersistselectionaftertappingonelementwithmousedownhandlerexpectedtxt">trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler-expected.txt</a></li>
<li><a href="#trunkLayoutTestseditingselectioniospersistselectionaftertappingonelementwithmousedownhandlerhtml">trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler.html</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestseditingselectioniospersistselectionaftertappingonelementwithclickhandlerexpectedtxt">trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-click-handler-expected.txt</a></li>
<li><a href="#trunkLayoutTestseditingselectioniospersistselectionaftertappingonelementwithclickhandlerhtml">trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-click-handler.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (247099 => 247100)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog      2019-07-03 19:53:30 UTC (rev 247099)
+++ trunk/LayoutTests/ChangeLog 2019-07-03 19:59:02 UTC (rev 247100)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2019-07-03  Wenson Hsieh  <wenson_hsieh@apple.com>
+
+        REGRESSION (iOS 13): Tapping an element with a click event handler no longer clears the selection
+        https://bugs.webkit.org/show_bug.cgi?id=199430
+
+        Reviewed by Tim Horton.
+
+        Add and adjust layout tests to verify that calling preventDefault() on mousedown on iOS causes an existing
+        selection to not be cleared, and that tapping in an element with a click handler clears out the selection.
+
+        * editing/selection/ios/clear-selection-after-tapping-on-element-with-click-handler-expected.txt: Added.
+        * editing/selection/ios/clear-selection-after-tapping-on-element-with-click-handler.html: Added.
+        * editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler-expected.txt: Renamed.
+        * editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler.html:
+
+        Renamed from LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-click-handler.html,
+        and adjusted to call preventDefault() on mousedown events instead of click events. Also, remove a bit of
+        trailing whitespace.
+
</ins><span class="cx"> 2019-07-03  Russell Epstein  <russell_e@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Rebaseline fast/events/ios/keydown-keyup-special-keys-in-non-editable-element.html
</span></span></pre></div>
<a id="trunkLayoutTestseditingselectioniosclearselectionaftertappingonelementwithclickhandlerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/editing/selection/ios/clear-selection-after-tapping-on-element-with-click-handler-expected.txt (0 => 247100)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/editing/selection/ios/clear-selection-after-tapping-on-element-with-click-handler-expected.txt                         (rev 0)
+++ trunk/LayoutTests/editing/selection/ios/clear-selection-after-tapping-on-element-with-click-handler-expected.txt    2019-07-03 19:59:02 UTC (rev 247100)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+This test verifies that the DOM selection is dismissed when tapping on an element that listens to click events. To manually test, select 'WebKit' and tap on the red square. The selection should be dismissed, and the output area should indicate that no text is selected.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS getSelection().toString() is ""
+PASS getSelection().type is "Caret"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+WebKit
+The selected text is: ""
</ins></span></pre></div>
<a id="trunkLayoutTestseditingselectioniosclearselectionaftertappingonelementwithclickhandlerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/editing/selection/ios/clear-selection-after-tapping-on-element-with-click-handler.html (0 => 247100)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/editing/selection/ios/clear-selection-after-tapping-on-element-with-click-handler.html                         (rev 0)
+++ trunk/LayoutTests/editing/selection/ios/clear-selection-after-tapping-on-element-with-click-handler.html    2019-07-03 19:59:02 UTC (rev 247100)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
+<html>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+<head>
+    <script src="../../../resources/ui-helper.js"></script>
+    <script src="../../../resources/js-test.js"></script>
+    <style>
+    body {
+        margin: 0;
+    }
+
+    #target {
+        font-size: 100px;
+    }
+
+    #clickTarget {
+        width: 100px;
+        height: 100px;
+        background-color: tomato;
+    }
+    </style>
+    <script>
+    jsTestIsAsync = true;
+    progress = 0;
+
+    function checkProgress() {
+        if (++progress != 2)
+            return;
+
+        shouldBeEqualToString("getSelection().toString()", "");
+        shouldBeEqualToString("getSelection().type", "Caret");
+        finishJSTest();
+    }
+
+    function run() {
+        description("This test verifies that the DOM selection is dismissed when tapping on an element that listens to click events. To manually test, select 'WebKit' and tap on the red square. The selection should be dismissed, and the output area should indicate that no text is selected.");
+
+        document.addEventListener("selectionchange", () => document.getElementById("result").textContent = getSelection().toString());
+        const clickTarget = document.getElementById("clickTarget");
+        clickTarget.addEventListener("click", checkProgress);
+        getSelection().selectAllChildren(document.getElementById("selectionTarget"));
+
+        if (window.testRunner)
+            UIHelper.activateElement(clickTarget).then(checkProgress);
+    }
+    </script>
+</head>
+<body onload="run()">
+    <div id="selectionTarget">WebKit</div>
+    <div id="clickTarget"></div>
+    <pre>The selected text is: "<span id="result"></span>"</pre>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestseditingselectioniospersistselectionaftertappingonelementwithclickhandlerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-click-handler-expected.txt (247099 => 247100)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-click-handler-expected.txt       2019-07-03 19:53:30 UTC (rev 247099)
+++ trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-click-handler-expected.txt  2019-07-03 19:59:02 UTC (rev 247100)
</span><span class="lines">@@ -1,3 +0,0 @@
</span><del>-WebKit
-The selected text is: "WebKit"
-This test verifies that the DOM selection is not dismissed when tapping on an element that preventDefault()s the click event.
</del></span></pre></div>
<a id="trunkLayoutTestseditingselectioniospersistselectionaftertappingonelementwithclickhandlerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-click-handler.html (247099 => 247100)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-click-handler.html       2019-07-03 19:53:30 UTC (rev 247099)
+++ trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-click-handler.html  2019-07-03 19:59:02 UTC (rev 247100)
</span><span class="lines">@@ -1,60 +0,0 @@
</span><del>-<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
-<html>
-<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
-<head>
-    <script src="../../../resources/basic-gestures.js"></script>
-    <script src="../../../resources/ui-helper.js"></script>
-    <style>
-    body {
-        margin: 0;
-    }
-
-    #target {
-        font-size: 100px;
-    }
-
-    #clickTarget {
-        width: 100px;
-        height: 100px;
-        background-color: green;
-    }
-    </style>
-    <script>
-    if (window.testRunner) {
-        testRunner.dumpAsText();
-        testRunner.waitUntilDone();
-    }
-
-    async function run()
-    {
-        if (!window.testRunner)
-            return;
-
-        function didChangeSelection()
-        {
-            result.textContent = window.getSelection().toString()
-        }
-
-        document.addEventListener("selectionchange", didChangeSelection);
-
-        var clickTarget = document.getElementById("clickTarget");
-
-        clickTarget.addEventListener("click", event => {
-            event.preventDefault();
-            setTimeout(() => testRunner.notifyDone(), 0);
-        });
-
-        var target = document.getElementById("target");        
-        window.getSelection().setBaseAndExtent(target, 0, target, 6);
-
-        await UIHelper.activateElement(clickTarget);
-    }
-    </script>
-</head>
-<body onload="run()">
-    <div id="target">WebKit</div>
-    <div id="clickTarget"></div>
-    <pre>The selected text is: "<span id="result"></span>"</pre>
-    <p>This test verifies that the DOM selection is not dismissed when tapping on an element that preventDefault()s the click event.</p>
-</body>
-</html>
</del></span></pre></div>
<a id="trunkLayoutTestseditingselectioniospersistselectionaftertappingonelementwithmousedownhandlerexpectedtxtfromrev247099trunkLayoutTestseditingselectioniospersistselectionaftertappingonelementwithclickhandlerexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler-expected.txt (from rev 247099, trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-click-handler-expected.txt) (0 => 247100)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler-expected.txt                           (rev 0)
+++ trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler-expected.txt      2019-07-03 19:59:02 UTC (rev 247100)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+WebKit
+The selected text is: "WebKit"
+This test verifies that the DOM selection is not dismissed when tapping on an element that preventDefault()s the mousedown event.
</ins></span></pre></div>
<a id="trunkLayoutTestseditingselectioniospersistselectionaftertappingonelementwithmousedownhandlerhtmlfromrev247099trunkLayoutTestseditingselectioniospersistselectionaftertappingonelementwithclickhandlerhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler.html (from rev 247099, trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-click-handler.html) (0 => 247100)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler.html                           (rev 0)
+++ trunk/LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler.html      2019-07-03 19:59:02 UTC (rev 247100)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
+<html>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+<head>
+    <script src="../../../resources/basic-gestures.js"></script>
+    <script src="../../../resources/ui-helper.js"></script>
+    <style>
+    body {
+        margin: 0;
+    }
+
+    #target {
+        font-size: 100px;
+    }
+
+    #clickTarget {
+        width: 100px;
+        height: 100px;
+        background-color: green;
+    }
+    </style>
+    <script>
+    if (window.testRunner) {
+        testRunner.dumpAsText();
+        testRunner.waitUntilDone();
+    }
+
+    async function run()
+    {
+        if (!window.testRunner)
+            return;
+
+        function didChangeSelection()
+        {
+            result.textContent = window.getSelection().toString()
+        }
+
+        document.addEventListener("selectionchange", didChangeSelection);
+
+        var clickTarget = document.getElementById("clickTarget");
+
+        clickTarget.addEventListener("mousedown", event => {
+            event.preventDefault();
+            setTimeout(() => testRunner.notifyDone(), 0);
+        });
+
+        var target = document.getElementById("target");
+        window.getSelection().setBaseAndExtent(target, 0, target, 6);
+
+        await UIHelper.activateElement(clickTarget);
+    }
+    </script>
+</head>
+<body onload="run()">
+    <div id="target">WebKit</div>
+    <div id="clickTarget"></div>
+    <pre>The selected text is: "<span id="result"></span>"</pre>
+    <p>This test verifies that the DOM selection is not dismissed when tapping on an element that preventDefault()s the mousedown event.</p>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (247099 => 247100)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog   2019-07-03 19:53:30 UTC (rev 247099)
+++ trunk/Source/WebCore/ChangeLog      2019-07-03 19:59:02 UTC (rev 247100)
</span><span class="lines">@@ -1,3 +1,35 @@
</span><ins>+2019-07-03  Wenson Hsieh  <wenson_hsieh@apple.com>
+
+        REGRESSION (iOS 13): Tapping an element with a click event handler no longer clears the selection
+        https://bugs.webkit.org/show_bug.cgi?id=199430
+
+        Reviewed by Tim Horton.
+
+        After <trac.webkit.org/r245067>, we no longer immediately clear the text selection when recognizing a single tap
+        in WKContentView, and instead only clear it out in the case where the single tap didn't result in a click event
+        in the web process. This fixed an issue wherein the text selection would be prematurely cleared when tapping,
+        but also made it such that tapping on an element with a click event handler would not cause the selection to
+        change, even if preventDefault() is not called on mousedown. On web pages that add a click event listener to
+        `document.body`, it's nearly impossible to dismiss text selections by tapping elsewhere in the body.
+
+        On macOS, this works because EventHandler::handleMousePressEventSingleClick contains logic to modify the
+        selection when handling a mousedown, as a part of default behavior. However, there is platform-specific logic
+        added in <trac.webkit.org/r233311> that avoids changing the selection when handling a synthetic mousedown on
+        iOS; this is because we defer to the single tap text interaction gesture on iOS, which (among other things)
+        provides additional support for moving the selection to word boundaries, instead of the editing position
+        directly under the click.
+
+        However, no such platform-specific text interaction single tap gesture exists for non-editable text, so there's
+        no reason we need to bail in the case where the root editable element is null. We can fix this bug without
+        breaking the fix in r233311 by matching macOS behavior and not bailing via early return in the case where the
+        single tap would move selection into non-editable text.
+
+        Tests: editing/selection/ios/clear-selection-after-tapping-on-element-with-click-handler.html
+               editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler.html
+
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::handleMousePressEventSingleClick):
+
</ins><span class="cx"> 2019-07-03  Ryan Haddad  <ryanhaddad@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r246616.
</span></span></pre></div>
<a id="trunkSourceWebCorepageEventHandlercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/EventHandler.cpp (247099 => 247100)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/EventHandler.cpp       2019-07-03 19:53:30 UTC (rev 247099)
+++ trunk/Source/WebCore/page/EventHandler.cpp  2019-07-03 19:59:02 UTC (rev 247100)
</span><span class="lines">@@ -692,7 +692,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS_FAMILY)
</span><span class="cx">     // The text selection assistant will handle selection in the case where we are already editing the node
</span><del>-    if (newSelection.rootEditableElement() == targetNode->rootEditableElement())
</del><ins>+    auto* editableRoot = newSelection.rootEditableElement();
+    if (editableRoot && editableRoot == targetNode->rootEditableElement())
</ins><span class="cx">         return true;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>