Bug 145336

Summary: [iOS] Arabic ligatures are broken in Google Maps
Product: WebKit Reporter: Myles C. Maxfield <mmaxfield>
Component: TextAssignee: Myles C. Maxfield <mmaxfield>
Status: RESOLVED FIXED    
Severity: Normal CC: ap, bdakin, buildbot, darin, dbates, dino, enrica, jonlee, rniwa, simon.fraser, thorton, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Archive of layout-test-results from ews105 for mac-mavericks-wk2
none
Archive of layout-test-results from ews101 for mac-mavericks
none
Patch darin: review+

Description Myles C. Maxfield 2015-05-22 21:01:09 PDT
[iOS] Arabic ligatures are broken in Google Maps
Comment 1 Myles C. Maxfield 2015-05-22 21:20:56 PDT
Created attachment 253632 [details]
Patch
Comment 2 Myles C. Maxfield 2015-05-22 21:22:26 PDT
<rdar://problem/20689607>
Comment 3 Build Bot 2015-05-22 22:04:02 PDT
Comment on attachment 253632 [details]
Patch

Attachment 253632 [details] did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/6029572776656896

Number of test failures exceeded the failure limit.
Comment 4 Build Bot 2015-05-22 22:04:06 PDT
Created attachment 253635 [details]
Archive of layout-test-results from ews105 for mac-mavericks-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews105  Port: mac-mavericks-wk2  Platform: Mac OS X 10.9.5
Comment 5 Build Bot 2015-05-22 22:20:11 PDT
Comment on attachment 253632 [details]
Patch

Attachment 253632 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/5574587563638784

Number of test failures exceeded the failure limit.
Comment 6 Build Bot 2015-05-22 22:20:15 PDT
Created attachment 253637 [details]
Archive of layout-test-results from ews101 for mac-mavericks

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews101  Port: mac-mavericks  Platform: Mac OS X 10.9.5
Comment 7 Ryosuke Niwa 2015-05-23 02:31:30 PDT
Comment on attachment 253632 [details]
Patch

Looks like it fails to build on Mac?
Comment 8 Darin Adler 2015-05-26 13:35:19 PDT
Comment on attachment 253632 [details]
Patch

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

Lots of tests failing, so I am not comfortable saying review+, but otherwise I would have.

> Source/WebCore/platform/graphics/mac/FontCustomPlatformData.cpp:36
> +    return FontPlatformData(CTFontCreateWithFontDescriptor(m_fontDescriptor.get(), size, nullptr), size, bold, italic, orientation, widthVariant);

Needs to say adoptCF(xxx).get() to avoid leaking the CTFont.

> Source/WebCore/platform/graphics/mac/FontCustomPlatformData.h:40
> +    explicit FontCustomPlatformData(CTFontDescriptorRef fontDescriptor)

Not sure this really needs to be explicit.
Comment 9 Myles C. Maxfield 2015-05-26 14:48:28 PDT
Comment on attachment 253632 [details]
Patch

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

>> Source/WebCore/platform/graphics/mac/FontCustomPlatformData.cpp:36
>> +    return FontPlatformData(CTFontCreateWithFontDescriptor(m_fontDescriptor.get(), size, nullptr), size, bold, italic, orientation, widthVariant);
> 
> Needs to say adoptCF(xxx).get() to avoid leaking the CTFont.

Man, I get this wrong every time :(((((
Comment 10 Myles C. Maxfield 2015-05-26 19:02:07 PDT
Crashes on Mavericks caused by <rdar://problem/16980736>. There's no workaround, so I'll need to gate this change on the version of the OS.
Comment 11 Myles C. Maxfield 2015-05-26 19:20:14 PDT
Created attachment 253771 [details]
Patch
Comment 12 Darin Adler 2015-05-26 19:49:49 PDT
Comment on attachment 253771 [details]
Patch

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

> Source/WebCore/platform/graphics/mac/FontCustomPlatformData.h:34
> +#if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED <= 80000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED <= 101000)

Reminder of something we talked about in person:

This could either be < instead of <= or list an older version, because the bug we are working around does *not* exist in iOS 8 and OS X 10.10, but only in older ones. Something you were planning to verify.
Comment 13 Myles C. Maxfield 2015-05-27 00:14:43 PDT
Committed r184899: <http://trac.webkit.org/changeset/184899>
Comment 14 Alexey Proskuryakov 2015-05-27 10:12:03 PDT
This broke platform/mac/fast/ruby/ruby-expansion-cjk-2.html on Yosemite.
Comment 15 Darin Adler 2015-05-27 10:48:17 PDT
(In reply to comment #14)
> This broke platform/mac/fast/ruby/ruby-expansion-cjk-2.html on Yosemite.

Best resolution for that is likely to not use the new code path on Yosemite, only on even newer OS X.
Comment 16 Myles C. Maxfield 2015-05-27 12:11:51 PDT
(In reply to comment #14)
> This broke platform/mac/fast/ruby/ruby-expansion-cjk-2.html on Yosemite.

Yes, I saw. The troubling thing is that the test shouldn't be sensitive to WK1 vs WK2, which means that I don't understand something. I think it's valuable for me to figure out what's going on rather than just take the old code path on yosemite.
Comment 17 Daniel Bates 2015-05-27 12:22:13 PDT
After talking with Myles Maxfield on IRC today (05/27), we chose to mark the test platform/mac/fast/ruby/ruby-expansion-cjk-2.html as failing on Yosemite.

I also removed references to tests fast/ruby/ruby-expansion-cjk*.html from the TestExpectation files of other ports since these files were moved to platform/mac in <http://trac.webkit.org/changeset/184899> and hence are considered Mac-specific.

Committed these changes in <https://trac.webkit.org/changeset/184914>.
Comment 18 Alexey Proskuryakov 2015-05-27 12:56:38 PDT
As discussed in bug 143378, I think that moving tests to platform/mac is not the best thing to do. Keeping track of expectations and expected results becomes very difficult, as we get paths like platform/mac/platform/mac-wk2/...
Comment 19 Darin Adler 2015-05-27 13:10:16 PDT
(In reply to comment #18)
> As discussed in bug 143378, I think that moving tests to platform/mac is not
> the best thing to do. Keeping track of expectations and expected results
> becomes very difficult, as we get paths like
> platform/mac/platform/mac-wk2/...

Is that going to be true for the long term? What’s the best way to handle Mac-specific tests?
Comment 20 Daniel Bates 2015-05-27 13:16:15 PDT
Committed updated test expectations in <http://trac.webkit.org/changeset/184915> per IRC discussion with Alexey Proskuryakov.
Comment 21 Alexey Proskuryakov 2015-05-27 13:33:19 PDT
> Is that going to be true for the long term? What’s the best way to handle Mac-specific tests?

I think that the best way is to have subdirectories named after specific technologies (e.g. LayoutTests/fast/text/coretext), and to skip those directories on other platforms. When that doesn't work well, we could have directories like LayoutTests/fast/text/mac, although that would always beg the question of whether the tests run on iOS.

I want to move all tests from LayoutTests/platform/ and make run-webkit-tests not look for tests there, but I don't know when that would materialize.