RESOLVED FIXED Bug 198989
[Win] Multiline mode of tooltip control does word-wrapping very slowly
https://bugs.webkit.org/show_bug.cgi?id=198989
Summary [Win] Multiline mode of tooltip control does word-wrapping very slowly
Fujii Hironori
Reported 2019-06-18 21:01:05 PDT
[WinCairo] SendMessage in WebKit::WebView::setToolTip often doen't return while using Web Inspector I'd know how to reproduce this issue, but it's easy to reproduce by using Web Inspector for a while. SendMessage is blocking. > [External Code] > WebKit2.dll!WebKit::WebView::setToolTip(const WTF::String & toolTip) Line 885 C++ > WebKit2.dll!WebKit::WebPageProxy::setToolTip(const WTF::String & toolTip) Line 6279 C++ > [Inline Frame] WebKit2.dll!IPC::callMemberFunctionImpl(WebKit::WebPageProxy *) C++ > [Inline Frame] WebKit2.dll!IPC::callMemberFunction(std::tuple<WTF::String> &&) C++ > [Inline Frame] WebKit2.dll!IPC::handleMessage(IPC::Decoder &) C++ > WebKit2.dll!WebKit::WebPageProxy::didReceiveMessage(IPC::Connection & connection, IPC::Decoder & decoder) Line 728 C++ > WebKit2.dll!IPC::MessageReceiverMap::dispatchMessage(IPC::Connection & connection, IPC::Decoder & decoder) Line 128 C++ > WebKit2.dll!WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection & connection, IPC::Decoder & decoder) Line 628 C++ > WebKit2.dll!IPC::Connection::dispatchMessage(IPC::Decoder & decoder) Line 983 C++ > WebKit2.dll!IPC::Connection::dispatchMessage(std::unique_ptr<IPC::Decoder,std::default_delete<IPC::Decoder> > message) Line 1012 C++ > WebKit2.dll!IPC::Connection::dispatchIncomingMessages() Line 1116 C++ > [Inline Frame] WTF.dll!WTF::Function<void __cdecl(void)>::operator()() C++ > WTF.dll!WTF::RunLoop::performWork() Line 107 C++ > [Inline Frame] WTF.dll!WTF::RunLoop::wndProc(HWND__ *) Line 57 C++ > WTF.dll!WTF::RunLoop::RunLoopWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 39 C++ > [External Code] > WebKit.dll!WebKitMessageLoop::run(HACCEL__ * hAccelTable) Line 89 C++ > MiniBrowserLib.dll!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 99 C++ > MiniBrowser.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 232 C++ > [External Code]
Attachments
test case with data: URL (14.48 KB, text/html)
2019-06-18 22:29 PDT, Fujii Hironori
no flags
test case with long title attribute links (9.17 KB, text/html)
2019-06-18 23:55 PDT, Fujii Hironori
no flags
Patch (4.68 KB, patch)
2019-06-25 22:07 PDT, Fujii Hironori
no flags
Fujii Hironori
Comment 1 2019-06-18 22:29:03 PDT
Created attachment 372435 [details] test case with data: URL
Fujii Hironori
Comment 2 2019-06-18 22:52:11 PDT
winforms - ToolTip works very slow for long text (2000+ chars) - Stack Overflow https://stackoverflow.com/q/17877009 Tooltip rendering extremely slow on Vista, due to word-wrap https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/a5a95763-9f10-4640-9d32-afd050a60bb3/tooltip-rendering-extremely-slow-on-vista-due-to-wordwrap
Fujii Hironori
Comment 3 2019-06-18 23:55:22 PDT
Created attachment 372440 [details] test case with long title attribute links
Fujii Hironori
Comment 4 2019-06-19 00:29:50 PDT
Both WK1 and WK2 have this issue.
Fujii Hironori
Comment 5 2019-06-25 22:07:59 PDT
Ross Kirsling
Comment 6 2019-06-26 09:58:29 PDT
Comment on attachment 372905 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=372905&action=review > Source/WebKit/UIProcess/win/WebView.cpp:875 > + auto maxLength = 1024; Seems that if we really wanted to avoid multiline text and the noticeable delay between tooltip display and tooltip *content* display, we would need to set this maximum to 41. That's really short though... :(
Fujii Hironori
Comment 7 2019-06-27 22:08:30 PDT
The problem is, the longer a line is, the unreasonably longer to process the line. 1000 chars length seems reasonable. See also comment 2.
Ross Kirsling
Comment 8 2019-06-28 10:19:38 PDT
(In reply to Fujii Hironori from comment #7) > The problem is, the longer a line is, the unreasonably longer to process the > line. > 1000 chars length seems reasonable. See also comment 2. Yeah, I saw your link, but a commenter in there mentions: > I ... saw the behavior you describe after the tooltip went beyond 16 lines. There was way less than 1024 characters. Anyway, I do agree that we ought to truncate to *some* value and I don't really have a specific countersuggestion, so r=me.
Fujii Hironori
Comment 9 2019-06-30 19:32:44 PDT
Comment on attachment 372905 [details] Patch Clearing flags on attachment: 372905 Committed r246960: <https://trac.webkit.org/changeset/246960>
Fujii Hironori
Comment 10 2019-06-30 19:32:47 PDT
All reviewed patches have been landed. Closing bug.
Radar WebKit Bug Importer
Comment 11 2019-06-30 19:33:57 PDT
Note You need to log in before you can comment on or make changes to this bug.