Consider merging https://chromium.googlesource.com/chromium/blink/+/50ffb9fad31542e86de85e3305894d99b1d81d34 or come up with a better fix if the regression exists in WebKit. r133214 caused a regression by making us mark elements for style recalc when adding new classes that don't match any rules due to a logic error in checkSelectorForClassChange. This patch corrects the logic error so that now adding and removing class names that don't match rules will not trigger a style recalc. To facilitate testing this patch I added a new Internals API: updateStyleAndReturnAffectedElementCount(). It updates the style of the document and returns the number of elements that had a style computed for them. This will also allow writing future tests when we make things smarter to avoid recalcs.
Created attachment 222328 [details] patch
https://trac.webkit.org/r162843