Previously the code would only set the resolution on the FrameMetrics when
the scroll ID was equal to ROOT_SCROLL_ID. This only happens on the root
scrollable frame for a layer tree. However, with bug 732971 fixed, any presShell
can have a resolution associated with it, so we need to populate the mResolution
for any layer that is the root scrollable layer for a presShell.
On platforms like Fennec and Metro the content presShell is a sub-presShell
of the root presShell. The resolution is set on the content presShell, but would
not get populated on the FrameMetrics correctly because of this condition. The #ifdef
ANDROID hack a few lines below was used to work around this on Fennec but it
was broken on Metro. This change corrects the behaviour on both of these platforms.
When we get to PresShell::Destroy the pres shell and document have already
nulled out their poitners to the docshell which DocAccessible::Shutdown()
needs to remove the document from the command observer.
The new nsDisplayResolution layer type is created for any subdocument whose
presShell specifies a non-1.0 resolution. This is specifically needed for
platforms such as Android and Metro, where the presShells corresponding to
the tabs (which have non-1.0 resolutions) are not the root presShell.
In bug 921928, the user places a call and then tries to do other actions
(calls, SMS, contacts, ...) with actions very close to the attention
screen. When trying to do those other actions, event fluffing is
prioritizing the attention screen rather than user apps.
---
layout/base/PositionedEventTargeting.cpp | 10 ++
layout/base/tests/Makefile.in | 2 +
.../bug921928_event_target_iframe_apps_oop.html | 8 +
.../base/tests/test_event_target_iframe_oop.html | 178 +++++++++++++++++++++
4 files changed, 198 insertions(+)
create mode 100644 layout/base/tests/bug921928_event_target_iframe_apps_oop.html
create mode 100644 layout/base/tests/test_event_target_iframe_oop.html
This is to avoid having to #include FrameLayerBuilder.h in nsLayoutUtils.h in the next patch.
--HG--
extra : rebase_source : 5f3c3ae2785267949766ae094414781133d4ce44
I never liked nsDisplayListBuilder::IsFixedItem anyway, its behavior and
naming was confusing. Also, it assumed there's only one viewport displayport,
on the rootmost document, and that's a bad assumption in general.
We're able to remove calls to ForceVisiblityForFixedItem because FrameLayerBuilder
is now responsible for inflating the visible region of the fixed-pos layers.
--HG--
extra : rebase_source : e93d8e25d2f5c7f3e167e47203d961e6b4293b81
This patch also makes FrameLayerBuilder responsible for setting the visible region
of a fixed-pos layer to the displayport intersected with the draw-region of
the layer. This will let us remove some displaylist code in later patches.
We add special handling to GetAnimatedGeometryRootFor for nsDisplayScrollLayers,
to match what nsDisplayList::IsFixedItem does.
--HG--
extra : rebase_source : f9258243fe666d5dee33c13a88e596bbed8e2c1c
This prevents insanely large fixed-pos elements from getting an over-huge
dirty rect and building an enormous display list.
This is also a step towards getting rid of nsDisplayListBuilder::mHasDisplayPort,
which is good because the new code works on any subdocument that has a displayport.
--HG--
extra : rebase_source : e853022dd2ce85af318f235f8851d9dd8b5001ac
Restyling margin-top and margin-bottom will typically require reflow and cause
sibling elements to be moved and invalidated, so it's not a big win to layerize
such nodes. However, layerizing them should be relatively harmless.
--HG--
extra : rebase_source : b41764dd8ab3651afeec2756c436e059f25b7d46
Restyling margin-top and margin-bottom will typically require reflow and cause
sibling elements to be moved and invalidated, so it's not a big win to layerize
such nodes. However, layerizing them should be relatively harmless.
--HG--
extra : rebase_source : 659593b6b6990aa859144641eb23e7ccf384a82a
This also changes the functionality a little bit to track independent
per-property mutation counts and independent "content active" status.
--HG--
extra : rebase_source : e69b8e7a95d36720bd38d74f0789ede603e58a09
If a fixed position element has both top and bottom, or both left and right
positioning, set the fixed position anchor to the center of the corresponding
axis. This causes it to remain center-aligned when async zooming.
The main change here is to have nsCSSFrameConstructor able to construct
a scrollframe for nsFieldSetFrame's inner frame.
To make this work properly (as much like normal scrolled elements, and
to be consistent with Chrome), we need another major change, which is to move
the padding from the nsFieldSetFrame to its inner frame. We do this by copying
the padding to the inner frame and ignoring the padding on the outer frame.
To get this right for percentage padding and intrinsic widths is a little
tricky. For that, we need nsLayoutUtils::IntrinsicForContainer to be able to
ignore the padding on a frame so we don't add it twice.
Overriding nsFieldSetFrame::GetScrollTargetFrame makes setting scrollTop/
scrollLeft on a <fieldset> work as expected.
* * *
Bug 261037 - A fieldset overflow:auto reftest.
--HG--
extra : rebase_source : d737eebdc25b3b748a84de676d5e8e066505e00b
The main change here is to have nsCSSFrameConstructor able to construct
a scrollframe for nsFieldSetFrame's inner frame.
To make this work properly (as much like normal scrolled elements, and
to be consistent with Chrome), we need another major change, which is to move
the padding from the nsFieldSetFrame to its inner frame. We do this by copying
the padding to the inner frame and ignoring the padding on the outer frame.
To get this right for percentage padding and intrinsic widths is a little
tricky. For that, we need nsLayoutUtils::IntrinsicForContainer to be able to
ignore the padding on a frame so we don't add it twice.
Overriding nsFieldSetFrame::GetScrollTargetFrame makes setting scrollTop/
scrollLeft on a <fieldset> work as expected.
* * *
Bug 261037 - A fieldset overflow:auto reftest.
--HG--
extra : rebase_source : 6ca585f685965d3a538bde64ad4057c5fd7b538f