Open Bug 1648427 Opened 4 years ago Updated 2 months ago

Pinch zoom is not working on parent process about: pages

Categories

(Core :: Panning and Zooming, defect, P2)

79 Branch
defect

Tracking

()

Tracking Status
firefox77 --- disabled
firefox78 --- disabled
firefox79 --- affected

People

(Reporter: gpalko, Unassigned)

References

(Blocks 2 open bugs)

Details

Affected versions
Nightly 79.0a1

Affected platforms
Devices with touchscreen or precision touchpad(tested on Lenovo yoga)

Preconditions
apz.allow_zooming = true
apz.windows.use_direct_manipulation = true

Steps to reproduce
1. Open about:support or any other about:page
2. Initiate pinch zooming from the touchscreen or the precision touchpad

Expected result
APZ zooming is performed

Actual Result
The page doesn't react to pinch gesture

No longer depends on: 1648425

I don't think this needs to block nightly, so I'm marking it as blocking release for now.

Severity: -- → S3
Priority: -- → P3

I'm guessing that about: pages are probably not content documents, thus they can't be root content documents and we only support zooming the root content document. Fenix does support zooming about:support, but about: pages might work differently there.

Severity: S3 → S4
Priority: P3 → P2
See Also: → 1705978

Updating the title to be more specific.

Fenix does support zooming about:support

Did this regress at some point? I'm not able to zoom about:support in Fenix.

Summary: Pinch zoom is not working on 'about:' pages → Pinch zoom is not working on parent process about: pages
See Also: → 1890064

(In reply to Gregory Pappas [:gregp] from comment #5)

Fenix does support zooming about:support

Did this regress at some point? I'm not able to zoom about:support in Fenix.

It looks that way. Bug 1890064 was filed about it recently and I just posted a regression range there.

I am going to leave comments what I found while I was working/investigating on bug 1890064.

  1. What preventing pinch-zooming on desktop is GetWidget in ZoomConstraintsClient specifically this code
  2. The function returns nullptr in the case where the top level content document lives in the parent process such as about:support
  3. The function needs to return the the browser window's nsIWidget in the case
  4. Just simply returning the browser window's nsIWidget will probably cause bug 1875274 on desktops
  5. To avoid bug 1875274, nsBaseWidget needs to keep multiple InitialZoomConstraints rather than the single one
  6. The UpdateZoomConstraints ipc call also needs to handle multiple ZoomConstraints

Instead of storing multiple zoom constraints on a widget, would it make sense to store the zoom constraints somewhere else, say the presshell?

It could be, but now there's no trigger to send each ZoomConstraints to APZ. The reason why we store a ZoomConstraints in a widget now is that when a presshell tries to send its ZoomConstraints to APZ via the widget, the APZ hasn't yet been instantiated, thus the widget holds the ZoomConstraints then send it after the APZ instantiation. If we store each ZoomConstraints in each presshell, we need to enumerate all such presshells when the APZ instantiation happens.

You need to log in before you can comment on or make changes to this bug.