Closed Bug 1701567 Opened 4 years ago Closed 4 years ago

about:support was not re-rendered correctly with on Android

Categories

(Core :: Graphics: WebRender, defect)

Unspecified
Android
defect

Tracking

()

RESOLVED FIXED
89 Branch
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.

OS: Unspecified → Android
Assignee: nobody → sotaro.ikeda.g
Summary: about:support was not re-rendered correctly with RenderCompositorOGLSWGL with Tab switch on Android → about:support was not re-rendered correctly with on Android

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.

No longer blocks: 1701381

When the problem happened, "GeckoView:SetActive" message handling took long time and no rendering after the message handling.

nsWindow::Resize() and SyncResumeResizeCompositor() were handled before "GeckoView:SetActive" message handling. Though they triggers rendering.

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)

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().

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.

:mstange, do you have any ideas to trigger rendering with "GeckoView:SetActive" message handling?

Flags: needinfo?(mstange.moz)

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?

Flags: needinfo?(mstange.moz)

(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.

Attachment #9213323 - Attachment description: WIP: Bug 1701567 - Schedule paint when PresShell becomes active on Android → Bug 1701567 - Schedule paint when PresShell becomes active on Android
Attachment #9213323 - Attachment description: Bug 1701567 - Schedule paint when PresShell becomes active on Android → WIP: Bug 1701567 - Schedule paint when PresShell becomes active
Attachment #9213323 - Attachment description: WIP: Bug 1701567 - Schedule paint when PresShell becomes active → Bug 1701567 - Schedule paint when PresShell becomes active
Pushed by sikeda.birchill@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/e261df7eded5 Schedule paint when PresShell becomes active r=mstange
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 89 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: