about:support was not re-rendered correctly with on Android
Categories
(Core :: Graphics: WebRender, defect)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox89 | --- | fixed |
People
(Reporter: sotaro, Assigned: sotaro)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
When Tabs were switched with about:support, sometimes about:support was not re-rendered correctly. It seems to related to content size change with/without IME.
| Assignee | ||
Updated•4 years ago
|
| Assignee | ||
Updated•4 years ago
|
| Assignee | ||
Updated•4 years ago
|
| Assignee | ||
Updated•4 years ago
|
| Assignee | ||
Comment 1•4 years ago
•
|
||
The problem also happened with RenderCompositorSWGL and RenderCompositorEGL. The problem happened even when WebRrender always did full render.
I did not saw the problem when compositor was CompositorOGL.
| Assignee | ||
Comment 2•4 years ago
•
|
||
When the problem happened, "GeckoView:SetActive" message handling took long time and no rendering after the message handling.
- https://searchfox.org/mozilla-central/rev/54f37fc1ac0f98b590af51e01ce82bb74179bf63/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoSession.java#2018
- https://searchfox.org/mozilla-central/rev/54f37fc1ac0f98b590af51e01ce82bb74179bf63/mobile/android/modules/geckoview/GeckoViewContent.jsm#151
nsWindow::Resize() and SyncResumeResizeCompositor() were handled before "GeckoView:SetActive" message handling. Though they triggers rendering.
| Assignee | ||
Comment 3•4 years ago
•
|
||
With pref gfx.webrender.dl.dump-parent = true, display list seemed not updated to a new widget size.
nsWindow::OnSizeChanged() is expected to trigger reflow. But related nsViewManager::SetWindowDimensions() did not call DoSetWindowDimensions(), since related PresShell was not active. In this case, resize is delayed.
PresShell became active by PresShell::SetIsActive() call. It was called like the following. When the problem happened, PresShell::SetIsActive() was delayed a lot.
GeckoSession.setActive(true) // GeckoSession.java
->mEventDispatcher.dispatch("GeckoView:SetActive", msg); // GeckoSession.java
->GeckoViewContent.onEvent() // GeckoViewContent.jsm
->case "GeckoView:SetActive": // GeckoViewContent.jsm
->BrowsingContext::DidSet()
->nsDocShell::ActivenessMaybeChanged()
->PresShell::SetIsActive(/* aIsActive */ true)
| Assignee | ||
Comment 4•4 years ago
|
||
When the problem happened, WebRenderLayerManager::EndTransactionWithoutLayer() was not called since PresShell::SetIsActive(/* aIsActive */ true).
From it, the problem seems to be addressed, when GeckoView:SetActive message handling could trigger EndTransactionWithoutLayer().
| Assignee | ||
Comment 5•4 years ago
|
||
| Assignee | ||
Comment 6•4 years ago
|
||
We want to trigger rendering with "GeckoView:SetActive" message handling. Trigger rendering with "PresShell::SetIsActive(/* aIsActive */ true)" is simple implementation. Though I am not sure it is OK.
| Assignee | ||
Comment 7•4 years ago
|
||
:mstange, do you have any ideas to trigger rendering with "GeckoView:SetActive" message handling?
Comment 8•4 years ago
|
||
I don't know much about how tab switching interacts with presshell activeness on Android, or what the right place to trigger rendering is, or when and how GeckoView sends "GeckoView:SetActive" during tab switching.
Does your WIP patch work? It sounds reasonable enough.
Is about:support behaving differently from content tabs because it's rendered in the parent process? Do you know what the path from "GeckoView:SetActive" to rendering is for content processes?
| Assignee | ||
Comment 9•4 years ago
•
|
||
(In reply to Markus Stange [:mstange] from comment #8)
Does your WIP patch work? It sounds reasonable enough.
Yes, it addressed the problem.
Is about:support behaving differently from content tabs because it's rendered in the parent process? Do you know what the path from "GeckoView:SetActive" to rendering is for content processes?
MozBrowser.docShellIsActive(val) seems to have a code to trigger rendering in content process.
- https://searchfox.org/mozilla-central/rev/e9fb777466c3af99998d8d8cabf7e9defbeef292/mobile/android/modules/geckoview/GeckoViewContent.jsm#152
- https://searchfox.org/mozilla-central/rev/e9fb777466c3af99998d8d8cabf7e9defbeef292/toolkit/content/widgets/browser-custom-element.js#416
- https://searchfox.org/mozilla-central/rev/e9fb777466c3af99998d8d8cabf7e9defbeef292/dom/ipc/BrowserHost.cpp#115
- https://searchfox.org/mozilla-central/rev/e9fb777466c3af99998d8d8cabf7e9defbeef292/dom/ipc/BrowserParent.cpp#3345
- https://searchfox.org/mozilla-central/rev/e9fb777466c3af99998d8d8cabf7e9defbeef292/dom/ipc/BrowserParent.cpp#3382
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
| Assignee | ||
Comment 10•4 years ago
|
||
Comment 11•4 years ago
|
||
Comment 12•4 years ago
|
||
| bugherder | ||
Description
•