Bug 209408 - Move TextIterator::rangeFromLocationAndLength off of live ranges
Summary: Move TextIterator::rangeFromLocationAndLength off of live ranges
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: HTML Editing (show other bugs)
Version: WebKit Nightly Build
Hardware: All All
: P2 Normal
Assignee: Darin Adler
URL:
Keywords: InRadar
Depends on: 209207
Blocks:
  Show dependency treegraph
 
Reported: 2020-03-22 18:02 PDT by Darin Adler
Modified: 2020-03-30 10:55 PDT (History)
33 users (show)

See Also:


Attachments
Patch for EWS (includes all of the patch from bug 209207 too) (200.88 KB, patch)
2020-03-22 18:36 PDT, Darin Adler
no flags Details | Formatted Diff | Diff
Patch (133.21 KB, patch)
2020-03-23 15:55 PDT, Darin Adler
no flags Details | Formatted Diff | Diff
Patch (156.74 KB, patch)
2020-03-27 14:05 PDT, Darin Adler
no flags Details | Formatted Diff | Diff
Patch (159.12 KB, patch)
2020-03-27 16:05 PDT, Darin Adler
no flags Details | Formatted Diff | Diff
Patch (162.85 KB, patch)
2020-03-27 19:27 PDT, Darin Adler
no flags Details | Formatted Diff | Diff
Patch (162.35 KB, patch)
2020-03-28 09:24 PDT, Darin Adler
no flags Details | Formatted Diff | Diff
Patch (173.36 KB, patch)
2020-03-28 15:55 PDT, Darin Adler
no flags Details | Formatted Diff | Diff
Patch (188.72 KB, patch)
2020-03-28 17:38 PDT, Darin Adler
no flags Details | Formatted Diff | Diff
Patch (159.05 KB, patch)
2020-03-28 19:26 PDT, Darin Adler
no flags Details | Formatted Diff | Diff
Patch (161.94 KB, patch)
2020-03-28 19:51 PDT, Darin Adler
no flags Details | Formatted Diff | Diff
Patch (254.85 KB, patch)
2020-03-28 23:15 PDT, Darin Adler
no flags Details | Formatted Diff | Diff
Patch (257.93 KB, patch)
2020-03-28 23:23 PDT, Darin Adler
no flags Details | Formatted Diff | Diff
Patch (257.33 KB, patch)
2020-03-29 10:19 PDT, Darin Adler
no flags Details | Formatted Diff | Diff
Patch (265.77 KB, patch)
2020-03-29 16:42 PDT, Darin Adler
no flags Details | Formatted Diff | Diff
Patch (265.62 KB, patch)
2020-03-29 17:18 PDT, Darin Adler
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Darin Adler 2020-03-22 18:02:24 PDT
Move TextIterator::rangeFromLocationAndLength off of live ranges
Comment 1 Darin Adler 2020-03-22 18:36:16 PDT Comment hidden (obsolete)
Comment 2 Darin Adler 2020-03-23 15:55:34 PDT Comment hidden (obsolete)
Comment 3 Darin Adler 2020-03-27 14:05:09 PDT Comment hidden (obsolete)
Comment 4 Darin Adler 2020-03-27 16:05:30 PDT Comment hidden (obsolete)
Comment 5 Darin Adler 2020-03-27 19:27:19 PDT Comment hidden (obsolete)
Comment 6 Darin Adler 2020-03-28 09:24:23 PDT Comment hidden (obsolete)
Comment 7 Darin Adler 2020-03-28 15:55:34 PDT Comment hidden (obsolete)
Comment 8 Darin Adler 2020-03-28 17:38:10 PDT Comment hidden (obsolete)
Comment 9 Darin Adler 2020-03-28 19:26:19 PDT Comment hidden (obsolete)
Comment 10 Darin Adler 2020-03-28 19:51:39 PDT Comment hidden (obsolete)
Comment 11 Darin Adler 2020-03-28 23:15:24 PDT Comment hidden (obsolete)
Comment 12 Darin Adler 2020-03-28 23:23:26 PDT Comment hidden (obsolete)
Comment 13 Darin Adler 2020-03-28 23:23:47 PDT
OK, should be ready for review now.
Comment 14 Darin Adler 2020-03-28 23:27:22 PDT Comment hidden (obsolete)
Comment 15 Darin Adler 2020-03-29 09:00:31 PDT Comment hidden (obsolete)
Comment 16 Darin Adler 2020-03-29 10:19:44 PDT
Created attachment 394869 [details]
Patch
Comment 17 Antti Koivisto 2020-03-29 12:05:22 PDT
Comment on attachment 394869 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=394869&action=review

> Source/WebCore/editing/CharacterRange.h:40
> +using CharacterCount = std::size_t;

Why is this alias helpful? Why not just use size_t?

(I know it is not new in this patch)

> Source/WebCore/editing/CharacterRange.h:44
> +    CharacterCount location { 0 };
> +    CharacterCount length { 0 };

It is bit weird that a location type is called "count".

> Source/WebCore/editing/CharacterRange.h:79
> +inline Optional<CharacterRange> makeCharacterRange(CFRange range)
> +{
> +    ASSERT(range.location == kCFNotFound || range.location >= 0);
> +    ASSERT(range.length >= 0);
> +    if (range.location < 0 || range.length < 0)
> +        return WTF::nullopt;
> +    return CharacterRange { static_cast<CharacterCount>(range.location), static_cast<CharacterCount>(range.length) };
> +}

Most clients are just unwrapping the Optional without any checking. It might be better to add a separate function for the few cases where kCFNotFound is actually a valid input (makeCharacterRangeIfValid or something) and make the regular version assert and return a plain CharacterRange.

> Source/WebCore/editing/TextCheckingHelper.cpp:67
> +        badGrammar.range.location = checkLocation + badGrammarLocation;
> +        badGrammar.range.length = badGrammarLength;

badGrammar.range = { checkLocation + badGrammarLocation, badGrammarLength };

?

> Source/WebCore/editing/TextCheckingHelper.cpp:101
> +            misspelling.range.location = wordStart + misspellingLocation;
> +            misspelling.range.length = misspellingLength;

Similarly

> Source/WebCore/editing/TextCheckingHelper.cpp:279
> +            CharacterRange mispellingCharacterRange;
> +            mispellingCharacterRange.location = currentChunkOffset + misspellingLocation;
> +            mispellingCharacterRange.length = misspellingLength;

auto mispellingCharacterRange = CharacterRange { currentChunkOffset + misspellingLocation,  misspellingLength };

?

> Source/WebCore/editing/TextCheckingHelper.cpp:317
> +    outGrammarDetail.range.location = 0;
> +    outGrammarDetail.range.length = 0;

outGrammarDetail.range = { };

> Source/WebCore/editing/TextCheckingHelper.cpp:471
> +    outGrammarDetail.range.location = 0;
> +    outGrammarDetail.range.length = 0;

outGrammarDetail.range = { };

> Source/WebKit/UIProcess/WebGrammarDetail.cpp:48
> +    m_grammarDetail.range.location = location;
> +    m_grammarDetail.range.length = length;

m_grammarDetail.range = { location, length };

> Source/WebKit/UIProcess/gtk/TextCheckerGtk.cpp:273
> +        misspellingResult.range.location = offset + misspellingLocation;
> +        misspellingResult.range.length = misspellingLength;

etc

> Source/WebKit/WebProcess/WebPage/WebPage.cpp:5435
> +    CharacterRange characterRange;
> +    characterRange.location = WebCore::characterCount(*surroundingRange) + offset;
> +    characterRange.length = characterCount;

etc

> Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:4081
> +    CharacterRange newSelectionRange;
> +    newSelectionRange.location = newSelectionLocation.unsafeGet();
> +    newSelectionRange.length = newSelectionLength.unsafeGet();

etc

> Source/WebKitLegacy/win/WebCoreSupport/WebEditorClient.cpp:805
> +        detail.range.location = location;
> +        detail.range.length = length;

auto characterRange = CharacterRange { location, length }

> Source/WebKitLegacy/win/WebView.cpp:7771
> +    CharacterRange characterRange;
> +    characterRange.location = location;
> +    characterRange.length = length;

How about just

auto characterRange = CharacterRange { location, length }
Comment 18 Darin Adler 2020-03-29 12:06:02 PDT
I now think this breaks the Mac Catalyst build and I won’t land it before learning how to at least build that configuration locally. Also I think we need this configuration in EWS.
Comment 19 Darin Adler 2020-03-29 12:17:38 PDT
Comment on attachment 394869 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=394869&action=review

Thank you so much for the review! I really appreciate it. I could use a little help deciding what to do. A couple of your comments I can definitely do, the others open questions and I would like style advice.

>> Source/WebCore/editing/CharacterRange.h:40
>> +using CharacterCount = std::size_t;
> 
> Why is this alias helpful? Why not just use size_t?
> 
> (I know it is not new in this patch)

I think it’s helpful to make the semantics clearer. It’s like a variable name. Otherwise it just seems random what is int and what is size_t. But not 100% sure. I could definitely retire this type with a global replace.

Separate thought: maybe this should be std::uint64_t instead of std::size_t?

>> Source/WebCore/editing/CharacterRange.h:44
>> +    CharacterCount length { 0 };
> 
> It is bit weird that a location type is called "count".

It’s the count of the number of characters before that location. I am open to other ideas about the names. Sometimes people call this an index or an offset.

>> Source/WebCore/editing/CharacterRange.h:79
>> +}
> 
> Most clients are just unwrapping the Optional without any checking. It might be better to add a separate function for the few cases where kCFNotFound is actually a valid input (makeCharacterRangeIfValid or something) and make the regular version assert and return a plain CharacterRange.

Thanks for the suggestion!

Seems OK, that’s how I started, and I’d be willing to go back to that approach.

If I was willing to just assert I could make this a constructor of CharacterRange instead of a named function. Not sure how you feel about that? Makes the code more elegant, but also elegantly hides the fact that we might need to check for not found.

I don’t really need to provide a helper function; can just check for "not found" in all the places that need it. But I was thinking this Optional might help people remember the check in future code they write?

>> Source/WebCore/editing/TextCheckingHelper.cpp:67
>> +        badGrammar.range.length = badGrammarLength;
> 
> badGrammar.range = { checkLocation + badGrammarLocation, badGrammarLength };
> 
> ?

Can’t do exactly that because checkLocation is unsigned, badGrammarLocation is int, badGrammarLength is int, and ranges want CharacterCount/std::size_t. We could write:

    badGrammar.range = CharacterRange(checkLocation + badGrammarLocation, badGrammarLength);

If you like that better I’d be willing to go with it.

>> Source/WebCore/editing/TextCheckingHelper.cpp:101
>> +            misspelling.range.length = misspellingLength;
> 
> Similarly

Same issue/choice.

>> Source/WebCore/editing/TextCheckingHelper.cpp:279
>> +            mispellingCharacterRange.length = misspellingLength;
> 
> auto mispellingCharacterRange = CharacterRange { currentChunkOffset + misspellingLocation,  misspellingLength };
> 
> ?

Same thing again, the mix of types.

>> Source/WebCore/editing/TextCheckingHelper.cpp:317
>> +    outGrammarDetail.range.length = 0;
> 
> outGrammarDetail.range = { };

Will do. But really, out parameters stink and that’s the real fix. If we created a new GrammarDetail everything would be initialized.

>> Source/WebCore/editing/TextCheckingHelper.cpp:471
>> +    outGrammarDetail.range.length = 0;
> 
> outGrammarDetail.range = { };

OK.

>> Source/WebKit/UIProcess/WebGrammarDetail.cpp:48
>> +    m_grammarDetail.range.length = length;
> 
> m_grammarDetail.range = { location, length };

Same problem with types here. Could use the CharacterRange(location, length) syntax.

>> Source/WebKit/UIProcess/gtk/TextCheckerGtk.cpp:273
>> +        misspellingResult.range.length = misspellingLength;
> 
> etc

Yup, same thing again.

>> Source/WebKit/WebProcess/WebPage/WebPage.cpp:5435
>> +    characterRange.length = characterCount;
> 
> etc

Same problem with types here. std::size_t + std::int64_t might not yield a std::size_t.

>> Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:4081
>> +    newSelectionRange.length = newSelectionLength.unsafeGet();
> 
> etc

Here it’s int64_t, not std::size_t.

>> Source/WebKitLegacy/win/WebCoreSupport/WebEditorClient.cpp:805
>> +        detail.range.length = length;
> 
> auto characterRange = CharacterRange { location, length }

Here it’s int.

>> Source/WebKitLegacy/win/WebView.cpp:7771
>> +    characterRange.length = length;
> 
> How about just
> 
> auto characterRange = CharacterRange { location, length }

Here it’s unsigned.
Comment 20 Darin Adler 2020-03-29 12:23:59 PDT
Comment on attachment 394869 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=394869&action=review

>>> Source/WebCore/editing/TextCheckingHelper.cpp:67
>>> +        badGrammar.range.length = badGrammarLength;
>> 
>> badGrammar.range = { checkLocation + badGrammarLocation, badGrammarLength };
>> 
>> ?
> 
> Can’t do exactly that because checkLocation is unsigned, badGrammarLocation is int, badGrammarLength is int, and ranges want CharacterCount/std::size_t. We could write:
> 
>     badGrammar.range = CharacterRange(checkLocation + badGrammarLocation, badGrammarLength);
> 
> If you like that better I’d be willing to go with it.

Or:

    badGrammar.range = { static_cast<CharacterCount>(checkLocation + badGrammarLocation), static_cast<CharacterCount>(badGrammarLength) };
Comment 21 Antti Koivisto 2020-03-29 12:45:22 PDT
> If I was willing to just assert I could make this a constructor of
> CharacterRange instead of a named function. Not sure how you feel about
> that? Makes the code more elegant, but also elegantly hides the fact that we
> might need to check for not found.

I think for simple structs it is cleaner to use standalone construction functions that complex constructors
Comment 22 Antti Koivisto 2020-03-29 12:53:50 PDT
Comment on attachment 394869 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=394869&action=review

> Source/WebCore/editing/Editor.cpp:2776
> +static void correctSpellcheckingPreservingTextCheckingParagraph(TextCheckingParagraph& paragraph, Range& rangeToReplace, const String& replacement, CharacterCount resultLocation, CharacterCount resultLength)

This could take CharacterRange

> Source/WebCore/editing/Editor.cpp:3781
> +        CharacterCount subrangeOffset = scannerPosition + relativeStartPosition;
> +        CharacterCount subrangeLength = relativeEndPosition - relativeStartPosition + 1;

Could be CharacterRange
Comment 23 Darin Adler 2020-03-29 16:42:39 PDT Comment hidden (obsolete)
Comment 24 Darin Adler 2020-03-29 16:43:10 PDT
Comment on attachment 394878 [details]
Patch

Already reviewed. Just need EWS to check various platforms before I land.
Comment 25 Darin Adler 2020-03-29 16:45:24 PDT
(In reply to Antti Koivisto from comment #21)
> > If I was willing to just assert I could make this a constructor of
> > CharacterRange instead of a named function. Not sure how you feel about
> > that? Makes the code more elegant, but also elegantly hides the fact that we
> > might need to check for not found.
> 
> I think for simple structs it is cleaner to use standalone construction
> functions that complex constructors

Oh, I didn't see this comment. I ended up making CharacterRange allow construction with CFRange and NSRange. It seems to have turned out well enough that I won’t change it to makeCharacterRange right now. Could come back and do that later if we have regrets.
Comment 26 Darin Adler 2020-03-29 16:48:01 PDT
Comment on attachment 394869 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=394869&action=review

>> Source/WebCore/editing/Editor.cpp:3781
>> +        CharacterCount subrangeLength = relativeEndPosition - relativeStartPosition + 1;
> 
> Could be CharacterRange

Did all the other changes in the patch I just posed. Did this change, too, locally and will include it in the patch I land.
Comment 27 Darin Adler 2020-03-29 17:18:39 PDT
Created attachment 394879 [details]
Patch
Comment 28 Darin Adler 2020-03-29 18:06:34 PDT
Committed r259184: <https://trac.webkit.org/changeset/259184>
Comment 29 Radar WebKit Bug Importer 2020-03-29 18:07:15 PDT
<rdar://problem/61036152>
Comment 30 Alexey Proskuryakov 2020-03-30 10:38:15 PDT
Comment on attachment 394879 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=394879&action=review

> LayoutTests/platform/mac-wk1/TestExpectations:241
> +# FIXME: Should be fixed in Catalina; need to re-enable.

Asked someone to look into this.

> LayoutTests/platform/mac-wk1/TestExpectations:723
> +fast/images/animated-gif-paint-after-animation.html [ Skip ]
> +fast/images/async-image-background-image-repeated.html [ Skip ]
> +fast/images/async-image-background-image.html [ Skip ]
> +fast/images/async-image-multiple-clients-repaint.html [ Skip ]
> +fast/images/composited-animated-gif-outside-viewport.html [ Skip ]
> +fast/images/decode-render-animated-image.html [ Skip ]
> +fast/images/decode-render-static-image.html [ Skip ]
> +fast/images/decoding-attribute-async-small-image.html [ Skip ]
> +fast/images/decoding-attribute-dynamic-async-small-image.html [ Skip ]
> +fast/images/sprite-sheet-image-draw.html [ Skip ]

We've got a lot of unfortunate test expectations...

> LayoutTests/platform/mac-wk2/TestExpectations:514
>  # RTL Scrollbars are enabled on Sierra WebKit2.

This comment is obsolete.

> LayoutTests/platform/mac-wk2/TestExpectations:544
>  # <rdar://problem/25063128>

This is closed as unreproducible. But still happening on some (internal) bots.

> LayoutTests/platform/mac-wk2/TestExpectations:-585
> -webkit.org/b/162524 [ Sierra Release ] http/tests/cache/disk-cache/disk-cache-redirect.html [ Pass Timeout ]

We need to update the bug.

> LayoutTests/platform/mac-wk2/TestExpectations:-602
> -webkit.org/b/163453 [ Sierra Release ] http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/basic-upgrade-cors.https.html [ Pass Timeout ]

We need to update the bug.

> LayoutTests/platform/mac-wk2/TestExpectations:-614
> -webkit.org/b/167206 [ Sierra Release ] mathml/opentype/large-operators-displaystyle-dynamic.html [ Pass ImageOnlyFailure ]

We need to update the bug.

> LayoutTests/platform/mac-wk2/TestExpectations:-643
> -webkit.org/b/171939 [ Sierra Release ] media/track/track-cue-rendering-on-resize.html [ Pass Timeout ]
> -
> -webkit.org/b/171947 [ Sierra Release ] transitions/extra-transition.html [ Pass Failure ]

We need to update the bugs.

> LayoutTests/platform/mac-wk2/TestExpectations:-649
> -webkit.org/b/172054 [ Sierra Debug ] loader/stateobjects/replacestate-size-iframe.html [ Pass Timeout ]

We need to update the bug.

> LayoutTests/platform/mac-wk2/TestExpectations:642
> +http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access-database.html [ Pass Timeout ]
> +http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture.html [ Skip ]
> +http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-database.html [ Skip ]

Something wrong about these, they are skipped everywhere with a confusing comment saying "only tested on Mac".

> LayoutTests/platform/mac-wk2/TestExpectations:-696
> -webkit.org/b/172829 [ Sierra Debug ] loader/stateobjects/replacestate-size.html [ Pass Timeout ]

We need to update the bug.

> LayoutTests/platform/mac-wk2/TestExpectations:700
> +http/tests/ssl/applepay/ApplePayError.html [ Pass ]
> +http/tests/ssl/applepay/ApplePaySessionV3.html [ Pass ]
> +http/tests/ssl/applepay/ApplePaySessionV4.html [ Pass ]
> +http/tests/ssl/applepay/ApplePaySessionV5.html [ Pass ]
> +http/tests/ssl/applepay/ApplePayRequestShippingContactV3.https.html [ Pass ]
> +http/tests/ssl/applepay/ApplePayShippingAddressChangeEventErrorsV3.https.html [ Pass ]
> +accessibility/mac/apple-pay-labels.html [ Pass ]
> +accessibility/mac/apple-pay-session-v4.html [ Pass ]

None of this seems to be necessary, there are no other expectations that would skip these tests.

> LayoutTests/platform/mac-wk2/TestExpectations:712
> +http/tests/resourceLoadStatistics/cookies-with-and-without-user-interaction.html [ Pass ]
> +http/tests/resourceLoadStatistics/cookie-deletion.html [ Pass ]
> +http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context.html [ Pass ]
> +http/tests/resourceLoadStatistics/add-blocking-to-redirect.html [ Pass ]
> +http/tests/resourceLoadStatistics/do-not-remove-blocking-in-redirect.html [ Pass ]
> +http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store.html [ Pass ]
> +http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour.html [ Pass ]
> +http/tests/resourceLoadStatistics/grandfathering.html [ Pass ]
> +http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-third-party-redirects.html [ Pass ]
> +http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-third-party-requests.html [ Pass ]
> +http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource.html [ Pass ]

Not sure why we are doing this one by one, not enabling the whole http/tests/resourceLoadStatistics directory.

> LayoutTests/platform/mac-wk2/TestExpectations:-759
> -webkit.org/b/178553 [ HighSierra Release ] imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/011.html [ Skip ]
> -
> -webkit.org/b/165620 [ Sierra ] http/tests/cache/disk-cache/disk-cache-request-headers.html [ Pass Failure ]

We need to update the bugs.

> LayoutTests/platform/mac-wk2/TestExpectations:-797
> -webkit.org/b/183860 [ Sierra Release ] http/wpt/service-workers/third-party-registration.html [ Pass Failure ]

We need to update the bug.

> LayoutTests/platform/mac-wk2/TestExpectations:-857
> -webkit.org/b/191658 [ Sierra Release ] fast/layers/no-clipping-overflow-hidden-added-after-transform.html [ Pass ImageOnlyFailure ]

We need to update the bug.

> LayoutTests/platform/mac/TestExpectations:1169
>  # rdar://problem/27475162

We need to update the bug.

> LayoutTests/platform/mac/TestExpectations:1188
> +webkit.org/b/159755 fast/text/emoji-num-glyphs.html [ Pass ]
> +webkit.org/b/159755 fast/text/emoji-gender-2-3.html [ Pass ]
> +webkit.org/b/159755 fast/text/emoji-gender-2-4.html [ Pass ]
> +webkit.org/b/159755 fast/text/emoji-gender-2-5.html [ Pass ]
> +webkit.org/b/159755 fast/text/emoji-gender-2-6.html [ Pass ]
> +webkit.org/b/159755 fast/text/emoji-gender-2-7.html [ Pass ]
> +webkit.org/b/159755 fast/text/emoji-gender-2-8.html [ Pass ]
> +webkit.org/b/159755 fast/text/emoji-gender-2-9.html [ Pass ]
> +
> +webkit.org/b/159755 fast/text/emoji-gender-fe0f-3.html [ Pass ]
> +webkit.org/b/159755 fast/text/emoji-gender-fe0f-4.html [ Pass ]
> +webkit.org/b/159755 fast/text/emoji-gender-fe0f-5.html [ Pass ]
> +webkit.org/b/159755 fast/text/emoji-gender-fe0f-6.html [ Pass ]
> +webkit.org/b/159755 fast/text/emoji-gender-fe0f-7.html [ Pass ]
> +webkit.org/b/159755 fast/text/emoji-gender-fe0f-8.html [ Pass ]
> +webkit.org/b/159755 fast/text/emoji-gender-fe0f-9.html [ Pass ]
> +webkit.org/b/159755 fast/text/emoji-gender.html [ Pass ]

Hmm, why are we not running these on iOS.

> LayoutTests/platform/mac/TestExpectations:-1304
> -webkit.org/b/171272 [ Sierra ] fast/text/kaithi.html [ ImageOnlyFailure ]

We need to update the bug.

> LayoutTests/platform/mac/TestExpectations:-1341
> -webkit.org/b/173328 [ Sierra ] fast/text/system-font-fallback-emoji.html [ Failure ]
> -webkit.org/b/173328 [ Sierra ] fast/text/system-font-fallback.html [ ImageOnlyFailure ]

We need to update the bugs.

> LayoutTests/platform/mac/TestExpectations:1389
>  # <rdar://problem/29031509> REGRESSION? (FontParser-195): svg/W3C-SVG-1.1/fonts-elem-* and svg/W3C-SVG-1.1/text-intro-* tests failing
> -[ HighSierra+ ] svg/W3C-SVG-1.1/fonts-elem-01-t.svg [ Failure ]
> -[ HighSierra+ ] svg/W3C-SVG-1.1/fonts-elem-02-t.svg [ Failure ]
> -[ HighSierra+ ] svg/W3C-SVG-1.1/fonts-elem-03-b.svg [ Failure ]
> -[ HighSierra+ ] svg/W3C-SVG-1.1/fonts-elem-07-b.svg [ Failure ]
> -[ HighSierra+ ] svg/W3C-SVG-1.1/text-intro-01-t.svg [ Failure ]
> -[ HighSierra+ ] svg/W3C-SVG-1.1/text-intro-02-b.svg [ Failure ]
> -[ HighSierra+ ] svg/W3C-SVG-1.1/text-intro-03-b.svg [ Failure ]
> -[ HighSierra+ ] svg/W3C-SVG-1.1/text-intro-04-t.svg [ Failure ]
> -[ HighSierra+ ] svg/batik/text/textEffect3.svg [ Failure ]
> -[ HighSierra+ ] svg/batik/text/textPosition2.svg [ Failure ]
> -[ HighSierra+ ] svg/custom/acid3-test-77.html [ Failure ]
> -[ HighSierra+ ] svg/custom/svg-fonts-fallback.xhtml [ Failure ]
> -[ HighSierra+ ] svg/wicd/test-rightsizing-b.xhtml [ Failure ]
> -[ HighSierra+ ] fast/css-generated-content/initial-letter-first-line-wrapping.html [ ImageOnlyFailure  ]
> +svg/W3C-SVG-1.1/fonts-elem-01-t.svg [ Failure ]
> +svg/W3C-SVG-1.1/fonts-elem-02-t.svg [ Failure ]
> +svg/W3C-SVG-1.1/fonts-elem-03-b.svg [ Failure ]
> +svg/W3C-SVG-1.1/fonts-elem-07-b.svg [ Failure ]
> +svg/W3C-SVG-1.1/text-intro-01-t.svg [ Failure ]
> +svg/W3C-SVG-1.1/text-intro-02-b.svg [ Failure ]
> +svg/W3C-SVG-1.1/text-intro-03-b.svg [ Failure ]
> +svg/W3C-SVG-1.1/text-intro-04-t.svg [ Failure ]
> +svg/batik/text/textEffect3.svg [ Failure ]
> +svg/batik/text/textPosition2.svg [ Failure ]
> +svg/custom/acid3-test-77.html [ Failure ]
> +svg/custom/svg-fonts-fallback.xhtml [ Failure ]
> +svg/wicd/test-rightsizing-b.xhtml [ Failure ]
> +fast/css-generated-content/initial-letter-first-line-wrapping.html [ ImageOnlyFailure  ]

This bug is marked as fixed in High Sierra.

> LayoutTests/platform/mac/TestExpectations:1391
>  # <rdar://problem/30493910> REGRESSION: LayoutTest fast/writing-mode/broken-ideograph-small-caps.html failing

This is marked as no longer happening in High Sierra.

> LayoutTests/platform/mac/TestExpectations:1394
>  # <rdar://problem/30182401> REGRESSION: LayoutTest media/media-source/media-source-abort-resets-parser.html failing

This is marked as a duplicate of a fixed bug.

> LayoutTests/platform/mac/TestExpectations:1397
>  # <rdar://problem/30517283> REGRESSION: LayoutTests security/block-test.html and security/block-test-no-port.html failing

This too. There are probably quite a few more, I stopped checking.

> LayoutTests/platform/mac/TestExpectations:1425
>  # WebCryptoAPI features that enabled only for High Sierra/iOS 11

Surprising that we have to enable these one by one.

> LayoutTests/platform/mac/TestExpectations:1635
> +css-dark-mode/older-systems [ Skip ]

This directory should be deleted instead.

It is surprising that so much unrelated TestExpectations cleanup was done in this patch, without expert review.

> LayoutTests/platform/mac/TestExpectations:-1703
> -webkit.org/b/199275 [ HighSierra ] webgpu [ Skip ]
> -webkit.org/b/199275 [ HighSierra ] inspector/canvas/create-context-webgpu.html [ Skip ]
> -webkit.org/b/199275 [ HighSierra ] inspector/canvas/requestClientNodes-webgpu.html [ Skip ]
> -webkit.org/b/199275 [ HighSierra ] inspector/canvas/requestShaderSource-webgpu.html [ Skip ]
> -webkit.org/b/199275 [ HighSierra ] inspector/canvas/resolveContext-webgpu.html [ Skip ]
> -webkit.org/b/199275 [ HighSierra ] inspector/canvas/shaderProgram-add-remove-webgpu.html [ Skip ]
> -webkit.org/b/199275 [ HighSierra ] inspector/canvas/updateShader-webgpu.html [ Skip ]

I updated this bug.
Comment 31 Darin Adler 2020-03-30 10:54:26 PDT
What I did in the TestExpectations was expand Sierra and HighSierra to be "false", convert Sierra+, HighSierra+, and Mojave+ to be "true".

And make a small number of changes specifically about this patch.

No other cleanup or rationalization. That can be done by someone else in another bug.
Comment 32 Darin Adler 2020-03-30 10:55:30 PDT
(In reply to Darin Adler from comment #31)
> No other cleanup or rationalization. That can be done by someone else in
> another bug.

Sorry, that’s wrong. I did a tiny bit more. Adding Pass to tests that are passing.