Page MenuHomePhabricator

Visual diff crashes on a page with <s> tags spanning multiple list items (weird nesting)
Closed, ResolvedPublic

Description

If you click on

https://en.wikipedia.org/w/index.php?title=Wikipedia:Requests_for_comment/Desysop_Policy_(2021)&diff=1009235999&oldid=1009235431&diffmode=visual

it'll just keep thinking about it, until you give up. Can it be made to give an error message after some generously long time?

First reported by @isaacl at https://www.mediawiki.org/wiki/Topic:W4bct11t0fsx2if1

Event Timeline

Note although I did not keep track of other instances, I have seen other cases where mis-nested markup, similar to that in the example, have resulted in hanging. After identifying this commonality, I started the thread linked above.

There's an error message:

TypeError: Cannot read property 'type' of undefined
    at Object.ve.dm.Model.static.isDiffComparable (https://en.wikipedia.org/w/load.php?lang=en&modules=ext.visualEditor.core&skin=vector&version=19p28:28:514)
    at VeDmParagraphNode.ve.dm.Model.isDiffComparable (https://en.wikipedia.org/w/load.php?lang=en&modules=ext.visualEditor.core&skin=vector&version=19p28:29:844)
    at VeDmVisualDiff.ve.dm.VisualDiff.diffNodes (<anonymous>:805:875)
    at VeDmVisualDiff.ve.dm.VisualDiff.findModifiedNodes (<anonymous>:805:390)
    at VeDmVisualDiff.ve.dm.VisualDiff.diffList (<anonymous>:802:839)
    at VeDmVisualDiff.ve.dm.VisualDiff.diffListNodes (<anonymous>:807:191)
    at VeDmVisualDiff.ve.dm.VisualDiff.diffNodes (<anonymous>:806:37)
    at VeDmVisualDiff.ve.dm.VisualDiff.findModifiedNodes (<anonymous>:805:390)
    at VeDmVisualDiff.ve.dm.VisualDiff.diffList (<anonymous>:802:839)
    at new VeDmVisualDiff (<anonymous>:801:25)

I created some test cases to try to isolate the problem.

The following diff causes a hang. It adds an <s> element that spans across three list items:
https://en.wikipedia.org/w/index.php?title=User:Isaacl/Visual_diff_test&diff=1014399931&oldid=1014399772&diffmode=source

The resulting HTML markup for the list is as follows. The second list item has <s> open/close tags around it:
<ul><li><b>Mis-nested markup</b>: when an HTML inline element incorrectly spans across multiple block elements, VisualDiff hangs<s> and doesn't produce any output.</s></li><s>
<li>This page is attempting to isolate cases where the diff is displayed correctly and cases when a hang occurs.</li>
</s><li><s><b>Unnecessary changes in list styles</b>: </s>unfortunately, it is common for editors to unnecessary change a leading prefix of asterisks and colons to some other combination, which results in lists being closed and opened. VisualDiff treats this as changed text, and so a lot of content which actually hasn't been changed will get flagged as altered.</li></ul>

The following diff produces correct output. It adds an <s> element that spans across three <p> elements:
https://en.wikipedia.org/w/index.php?title=User:Isaacl/Visual_diff_test&diff=1014400674&oldid=1014400538&diffmode=visual

The resulting HTML markup is as follows. The second paragraph has <s> open/close tags within it, and not surrounding it:

<p>VisualDiff is a tool that displays diffs in a more WYSIWYG manner, rather than just a Unix diff-like comparison of the source text. It is particularly good for browsing through a large number of diffs<s>, providing context around each.
</s></p><p><s>Because of the greater use of horizontal screen space, VisualDiff can use vertical space more efficiently.
</s></p><p><s>There are situations where it</s> hangs or produces difficult-to-read output:
</p>

Thanks for testing that. I think the <s> tags are not supposed to wrap the <li> tags, they should be inside.

Visual diffs use the Parsoid HTML, but it has the same problem: https://en.wikipedia.org/api/rest_v1/page/html/User%3AIsaacl%2FVisual_diff_test/1014399931?redirect=false&stash=true

This is probably causing the exception.

matmarex renamed this task from VisualDiff fails on this diff; can it give an error message? to Visual diff crashes on a page with <s> tags spanning multiple list items (weird nesting).Mar 27 2021, 4:24 PM

Parsoid relies on the HTML5 tree builder to fix up bad HTML which is what does that wrapping.

Try this in a browser and inspect the HTML

<ul>
<li><s>a</li>
<li>b</li>
<li>c</s></li>
</ul>

You will find that the browser fixes it up to "<ul>\n<li><s>a</s></li><s>\n<li>b</li>\n</s><li><s>c</s></li>\n</ul>\n". So, the HTML5 tree builder transforms malformed HTML to a DOM tree that will not serialize (via outerHTML) to HTML5-compliant output.

So, the TLDR is that Parsoid doesn't always produce HTML5-compilant output. It is a known issue and https://www.mediawiki.org/wiki/Parsing/Notes/HTML5_Compliance is a wiki page where we started gathering thoughts back in the day and it is unresolved. Generating HTML5 compliant output will require a focused effort to address many of those on that page.

As an interim step, can the exception be caught and some recovery action be taken?

Here's a slightly different example, where an editor added an {{anchor}} template within a description list and the visual diff output hangs:

https://en.wikipedia.org/w/index.php?title=Wikipedia_talk:Talk_page_guidelines&diff=1017114182&oldid=1016428291&diffmode=visual

I don't see any errors in the console.

Here is another example of a diff that hangs, also with a error message in the console:
jQuery.Deferred exception: Cannot read property 'type' of undefined TypeError: Cannot read property 'type' of undefined

https://en.wikipedia.org/w/index.php?title=Wikipedia:Village_pump_(policy)&diff=1020188684&oldid=1020106563&diffmode=visual

The messages in the console are as follows:

Error with Permissions-Policy header: Unrecognized feature: 'interest-cohort'.
load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:144 JQMIGRATE: Migrate is installed with logging active, version 3.1.0
load.php?lang=en&modules=jquery.ui&skin=vector&version=1ujtn:1 This page is using the deprecated ResourceLoader module "jquery.ui".
Please use OOUI instead.
mw.loader.implement.css @ load.php?lang=en&modules=jquery.ui&skin=vector&version=1ujtn:1
runScript @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:13
(anonymous) @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:14
flushCssBuffer @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
requestAnimationFrame (async)
addEmbeddedCSS @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
execute @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:15
doPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:7
requestIdleCallback (async)
requestPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
setAndPropagate @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
markModuleReady @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:13
runScript @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:14
(anonymous) @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:14
flushCssBuffer @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
requestAnimationFrame (async)
addEmbeddedCSS @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
execute @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:15
doPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:7
requestIdleCallback (async)
requestPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
setAndPropagate @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
markModuleReady @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:13
runScript @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:14
(anonymous) @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:14
flushCssBuffer @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
requestAnimationFrame (async)
addEmbeddedCSS @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
execute @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:15
doPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:7
requestIdleCallback (async)
requestPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
setAndPropagate @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
implement @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:20
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:1
load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:144 JQMIGRATE: jQuery.fn.delegate() is deprecated
migrateWarn @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:144
delegate @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:153
bindHover @ load.php?lang=en&modules=jquery.ui&skin=vector&version=1ujtn:196
Datepicker @ load.php?lang=en&modules=jquery.ui&skin=vector&version=1ujtn:151
(anonymous) @ load.php?lang=en&modules=jquery.ui&skin=vector&version=1ujtn:198
mw.loader.implement.css @ load.php?lang=en&modules=jquery.ui&skin=vector&version=1ujtn:198
runScript @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:13
(anonymous) @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:14
flushCssBuffer @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
requestAnimationFrame (async)
addEmbeddedCSS @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
execute @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:15
doPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:7
requestIdleCallback (async)
requestPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
setAndPropagate @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
markModuleReady @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:13
runScript @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:14
(anonymous) @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:14
flushCssBuffer @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
requestAnimationFrame (async)
addEmbeddedCSS @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
execute @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:15
doPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:7
requestIdleCallback (async)
requestPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
setAndPropagate @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
markModuleReady @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:13
runScript @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:14
(anonymous) @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:14
flushCssBuffer @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
requestAnimationFrame (async)
addEmbeddedCSS @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
execute @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:15
doPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:7
requestIdleCallback (async)
requestPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
setAndPropagate @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
implement @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:20
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:1
VM610:58 This page is using the deprecated ResourceLoader module "mediawiki.ui".
Please use OOUI instead.
mw.loader.implement.css @ VM610:58
runScript @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:13
(anonymous) @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:14
flushCssBuffer @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
requestAnimationFrame (async)
addEmbeddedCSS @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
execute @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:15
doPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:7
requestIdleCallback (async)
requestPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
setAndPropagate @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
implement @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:20
(anonymous) @ load.php?lang=en&modules=ext.visualEditor.core&skin=vector&version=xrjgn:1
load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:51 jQuery.Deferred exception: Cannot read property 'type' of undefined TypeError: Cannot read property 'type' of undefined

at Object.ve.dm.Model.static.isDiffComparable (https://en.wikipedia.org/w/load.php?lang=en&modules=ext.visualEditor.core&skin=vector&version=xrjgn:28:501)
at VeDmTextNode.ve.dm.Model.isDiffComparable (https://en.wikipedia.org/w/load.php?lang=en&modules=ext.visualEditor.core&skin=vector&version=xrjgn:29:844)
at VeDmVisualDiff.ve.dm.VisualDiff.compareNodes (<anonymous>:905:629)
at VeDmVisualDiff.ve.dm.VisualDiff.diffList (<anonymous>:903:401)
at VeDmVisualDiff.ve.dm.VisualDiff.diffListNodes (<anonymous>:908:155)
at VeDmVisualDiff.ve.dm.VisualDiff.diffNodes (<anonymous>:907:6)
at VeDmVisualDiff.ve.dm.VisualDiff.findModifiedNodes (<anonymous>:906:358)
at VeDmVisualDiff.ve.dm.VisualDiff.diffList (<anonymous>:903:818)
at new VeDmVisualDiff (<anonymous>:902:6)
at <anonymous>:273:28 undefined

jQuery.Deferred.exceptionHook @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:51
process @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
setTimeout (async)
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:50
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
mightThrow @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
process @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
setTimeout (async)
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:50
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:51
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
mightThrow @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
process @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:50
mightThrow @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
process @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
setTimeout (async)
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:50
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
mightThrow @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
process @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
setTimeout (async)
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:50
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
add @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:50
jQuery.Deferred @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:155
then @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:50
revCache.<computed> @ VM603:272
mightThrow @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
process @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
setTimeout (async)
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:50
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
mightThrow @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
process @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
setTimeout (async)
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:50
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
mightThrow @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
process @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
setTimeout (async)
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:50
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:51
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
mightThrow @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
process @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:49
setTimeout (async)
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:50
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
fireWith @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:47
done @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:129
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:132
load (async)
send @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:132
ajax @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:127
jQuery.ajax @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:147
requestParsoidData @ VM603:283
fetchRevision @ VM603:271
getVisualDiffGeneratorPromise @ VM603:272
onReviewModeButtonSelectSelect @ VM603:188
OO.EventEmitter.emit @ VM603:263
OO.ui.SelectWidget.selectItem @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:251
OO.ui.SelectWidget.selectItemByData @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:250
(anonymous) @ VM603:189
fire @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
add @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:46
(anonymous) @ VM603:188
mw.loader.implement.visualeditor-savedialog-review-visual @ VM603:189
runScript @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:13
execute @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:15
doPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:7
requestIdleCallback (async)
requestPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
setAndPropagate @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
markModuleReady @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:13
runScript @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:14
(anonymous) @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:14
flushCssBuffer @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
requestAnimationFrame (async)
addEmbeddedCSS @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
execute @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:15
doPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:7
requestIdleCallback (async)
requestPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
setAndPropagate @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
markModuleReady @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:13
runScript @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:14
(anonymous) @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:14
flushCssBuffer @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
requestAnimationFrame (async)
addEmbeddedCSS @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:6
execute @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:15
doPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:7
requestIdleCallback (async)
requestPropagation @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
setAndPropagate @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:8
implement @ load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector:20
(anonymous) @ load.php?lang=en&modules=jquery%2Coojs-ui-core%2Coojs-ui-widgets&skin=vector&version=8kb6n:1

Change 754091 had a related patch set uploaded (by Esanders; author: Esanders):

[VisualEditor/VisualEditor@master] DiffElement: Handle AlienBlockNode in list

https://gerrit.wikimedia.org/r/754091

Change 754091 merged by jenkins-bot:

[VisualEditor/VisualEditor@master] DiffElement: Handle AlienBlockNode in list

https://gerrit.wikimedia.org/r/754091

Change 755058 had a related patch set uploaded (by Bartosz Dziewoński; author: Bartosz Dziewoński):

[mediawiki/extensions/VisualEditor@master] Update VE core submodule to master (20902e538)

https://gerrit.wikimedia.org/r/755058

Change 755058 merged by jenkins-bot:

[mediawiki/extensions/VisualEditor@master] Update VE core submodule to master (20902e538)

https://gerrit.wikimedia.org/r/755058

matmarex moved this task from Incoming to QA on the Editing-team (Kanban Board) board.
matmarex added a project: Editing QA.
matmarex moved this task from Inbox to Low Priority on the Editing QA board.
ppelberg claimed this task.