WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
NEW
213277
[WinCairo][WK2] The entire content area is unnecessarily repainted just by clicking a text
https://bugs.webkit.org/show_bug.cgi?id=213277
Summary
[WinCairo][WK2] The entire content area is unnecessarily repainted just by c...
Fujii Hironori
Reported
2020-06-16 17:32:13 PDT
[WinCairo] The entire content area is repainted unnecessarily just by clicking a text I observe this issue with WinCairo WebKit2, but not with WinCairo WebKit1. You need to use your debugger to obverse this issue. 1. Put a break point at DrawingAreaCoordinatedGraphics::setNeedsDisplay in web process 2. Open a simple non-AC mode page. For example,
http://example.com/
3. Click a text in the page 4. The break point is hit Callstack:
> WebKit2.dll!WebKit::DrawingAreaCoordinatedGraphics::setNeedsDisplay() Line 91 C++ > WebKit2.dll!WebKit::DrawingAreaCoordinatedGraphics::scheduleRenderingUpdate() Line 355 C++ > WebKit2.dll!WebKit::WebPage::scheduleFullEditorStateUpdate() Line 6309 C++ > WebKit2.dll!WebKit::WebPage::didChangeSelectionOrOverflowScrollPosition() Line 5592 C++ > WebKit2.dll!WebKit::WebPage::didChangeSelection() Line 5544 C++ > WebKit2.dll!WebKit::WebEditorClient::respondToChangedSelection(WebCore::Frame * frame=0x00000159996a9d10) Line 247 C++ > WebKit2.dll!WebCore::Editor::respondToChangedSelection(const WebCore::VisibleSelection & __formal={...}, WTF::OptionSet<enum WebCore::FrameSelection::SetSelectionOption> options={...}) Line 3669 C++ > WebKit2.dll!WebCore::FrameSelection::setSelectionWithoutUpdatingAppearance(const WebCore::VisibleSelection & newSelectionPossiblyWithoutDirection={...}, WTF::OptionSet<enum WebCore::FrameSelection::SetSelectionOption> options={...}, WebCore::FrameSelection::CursorAlignOnScroll align=AlignCursorOnScrollIfNeeded, WebCore::TextGranularity granularity=CharacterGranularity) Line 402 C++ > WebKit2.dll!WebCore::FrameSelection::setSelection(const WebCore::VisibleSelection & selection={...}, WTF::OptionSet<enum WebCore::FrameSelection::SetSelectionOption> options={...}, WebCore::AXTextStateChangeIntent intent={...}, WebCore::FrameSelection::CursorAlignOnScroll align=AlignCursorOnScrollIfNeeded, WebCore::TextGranularity granularity=CharacterGranularity) Line 412 C++ > WebKit2.dll!WebCore::FrameSelection::setSelectionByMouseIfDifferent(const WebCore::VisibleSelection & passedNewSelection={...}, WebCore::TextGranularity granularity=CharacterGranularity, WebCore::FrameSelection::EndPointsAdjustmentMode endpointsAdjustmentMode=DoNotAdjust) Line 329 C++ > WebKit2.dll!WebCore::EventHandler::updateSelectionForMouseDownDispatchingSelectStart(WebCore::Node * targetNode=0x00000159dda58010, const WebCore::VisibleSelection & selection={...}, WebCore::TextGranularity granularity=CharacterGranularity) Line 551 C++ > WebKit2.dll!WebCore::EventHandler::handleMousePressEventSingleClick(const WebCore::MouseEventWithHitTestResults & event={...}) Line 754 C++ > WebKit2.dll!WebCore::EventHandler::handleMousePressEvent(const WebCore::MouseEventWithHitTestResults & event={...}) Line 853 C++ > WebKit2.dll!WebCore::EventHandler::handleMousePressEvent(const WebCore::PlatformMouseEvent & platformMouseEvent={...}) Line 1851 C++ > WebKit2.dll!WebCore::UserInputBridge::handleMousePressEvent(const WebCore::PlatformMouseEvent & mouseEvent={...}, WebCore::InputSource __formal=User) Line 58 C++ > WebKit2.dll!WebKit::handleMouseEvent(const WebKit::WebMouseEvent & mouseEvent={...}, WebKit::WebPage * page=0x0000015999677330) Line 2721 C++ > WebKit2.dll!WebKit::WebPage::mouseEvent(const WebKit::WebMouseEvent & mouseEvent={...}) Line 2788 C++ > WebKit2.dll!IPC::callMemberFunctionImpl<WebKit::WebPage,void (__cdecl WebKit::WebPage::*)(WebKit::WebMouseEvent const &),std::tuple<WebKit::WebMouseEvent>,0>(WebKit::WebPage * object=0x0000015999677330, void(WebKit::WebPage::*)(const WebKit::WebMouseEvent &) function=0x00000022be0fd5b0, std::tuple<WebKit::WebMouseEvent> && args={...}, std::integer_sequence<unsigned __int64,0> __formal={...}) Line 42 C++ > WebKit2.dll!IPC::callMemberFunction<WebKit::WebPage,void (__cdecl WebKit::WebPage::*)(WebKit::WebMouseEvent const &),std::tuple<WebKit::WebMouseEvent>,std::integer_sequence<unsigned __int64,0>>(std::tuple<WebKit::WebMouseEvent> && args={...}, WebKit::WebPage * object=0x0000015999677330, void(WebKit::WebPage::*)(const WebKit::WebMouseEvent &) function=0x00000022be0fd690) Line 48 C++ > WebKit2.dll!IPC::handleMessage<Messages::WebPage::MouseEvent,WebKit::WebPage,void (__cdecl WebKit::WebPage::*)(WebKit::WebMouseEvent const &)>(IPC::Decoder & decoder={...}, WebKit::WebPage * object=0x0000015999677330, void(WebKit::WebPage::*)(const WebKit::WebMouseEvent &) function=0x00000022be0fe360) Line 115 C++ > WebKit2.dll!WebKit::WebPage::didReceiveWebPageMessage(IPC::Connection & connection={...}, IPC::Decoder & decoder={...}) Line 1072 C++ > WebKit2.dll!WebKit::WebPage::didReceiveMessage(IPC::Connection & connection={...}, IPC::Decoder & decoder={...}) Line 4607 C++ > WebKit2.dll!IPC::MessageReceiverMap::dispatchMessage(IPC::Connection & connection={...}, IPC::Decoder & decoder={...}) Line 124 C++ > WebKit2.dll!WebKit::WebProcess::didReceiveMessage(IPC::Connection & connection={...}, IPC::Decoder & decoder={...}) Line 770 C++ > WebKit2.dll!IPC::Connection::dispatchMessage(IPC::Decoder & decoder={...}) Line 1002 C++ > WebKit2.dll!IPC::Connection::dispatchMessage(std::unique_ptr<IPC::Decoder,std::default_delete<IPC::Decoder>> message={...}) Line 1072 C++ > WebKit2.dll!IPC::Connection::dispatchOneIncomingMessage() Line 1140 C++ > WebKit2.dll!IPC::Connection::enqueueIncomingMessage::__l2::<lambda>() Line 979 C++ > WebKit2.dll!WTF::Detail::CallableWrapper<void <lambda>(void),void>::call() Line 52 C++ > WTF.dll!WTF::Function<void __cdecl(void)>::operator()() Line 85 C++ > WTF.dll!WTF::RunLoop::performWork() Line 141 C++ > WTF.dll!WTF::RunLoop::wndProc(HWND__ * hWnd=0x0000000000390bfe, unsigned int message=1025, unsigned __int64 wParam=1484337169072, __int64 lParam=0) Line 57 C++ > WTF.dll!WTF::RunLoop::RunLoopWndProc(HWND__ * hWnd=0x0000000000390bfe, unsigned int message=1025, unsigned __int64 wParam=1484337169072, __int64 lParam=0) Line 39 C++ > user32.dll!00007ffb15755c0d() Unknown > user32.dll!00007ffb15755602() Unknown > WTF.dll!WTF::RunLoop::run() Line 74 C++ > WebKit2.dll!WebKit::AuxiliaryProcessMain<WebKit::WebProcess,WebKit::WebProcessMainWin>(int argc=7, char * * argv=0x0000015999626fe0) Line 69 C++ > WebKit2.dll!WebKit::WebProcessMain(int argc=7, char * * argv=0x0000015999626fe0) Line 58 C++ > WebKitWebProcess.exe!main(int argc=7, char * * argv=0x0000015999626fe0) Line 35 C++ > [Inline Frame] WebKitWebProcess.exe!invoke_main() Line 78 C++ > WebKitWebProcess.exe!__scrt_common_main_seh() Line 288 C++ > kernel32.dll!00007ffb14ca7bd4() Unknown > ntdll.dll!00007ffb16c4ce51() Unknown
Attachments
Add attachment
proposed patch, testcase, etc.
Fujii Hironori
Comment 1
2020-06-16 19:23:12 PDT
There is a FIXME comment in WebPage::scheduleFullEditorStateUpdate()
> // FIXME: Scheduling a compositing layer flush here can be more expensive than necessary. > // Instead, we should just compute and send post-layout editor state during the next frame.
It was added by:
Bug 193070
– REGRESSION (
r239441
): [iOS] Selection UI sometimes doesn't change after tapping "select all" in the callout bar
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug