If there is a plugin in a background tab and a complex scene in a foreground tab the accurate visible regions can cause us to bog down, for no good reason.
Updating plugin widget geometry every time we paint means we don't have to
explicitly request plugin geometry updates.
This patch stops us from flushing plugin geometry changes in
FlushPendingNotifications(Flush_Layout). There are too many Flush_Layouts and
flushing plugin geometry changes on them produces frequent
desynchronization of the plugin geometry with the rendered window contents.
There is some Web compatibility risk there --- it means we have to change
our tests, for one thing --- but hopefully it's OK.
--HG--
extra : rebase_source : 87adde45795ea2cab362ed9df54e62c5cc97e16c
This is a rollup of the following patches
- Change the interpretation of FrameMetrics.mZoom to a "resolution-indepedent zoom", instead of a resolution-depedent scale factor. r=roc
- Remove mention of "meta" from TabChild. r=roc
- Remove some useless logging. r=roc
- Tag FrameMetrics with its composition bounds at paint time. r=roc
- Add a helper to calculate the render resolution for a FrameMetrics. r=roc
- Add a helper to compute the approximate CSS dimensions a FrameMetrics will cover during composition. r=roc
- BrowserElementScrolling doesn't actually care about zoom or resolution. r=roc
- Accept the viewport that content has calculated, when it's received the latest widget geometry update. r=roc
- Mechanically separate uses of zoom/resolution based on new definitions. r=roc
- Convert GetViewportInfo()'s resolution-dependent scale into resolution-indepedent zoom. r=roc
- Reinterpret defaultZoom == 0.0 as "intrinsic scale". r=jwir3,roc
This swap was removed with the work in Bug 785333, as layers were associated
with merged frames as well as their underlying frames. Since DLBI, this is no
longer the case, so reinstate this temporary fix for a very common case of
the underlying frame of a display-item changing.
Fix the size check in nsDisplayBackground::ShouldFixToViewport so that async
scrolling of fixed backgrounds works correctly when zoomed in on Firefox
Mobile. Also make IsFixedItem in nsDisplayList public and use it in
FrameLayerBuilder, so that fixed items are determined and treated consistently.
Separate out background layers into separate display-list items, so that
backgrounds that are a mix of fixed and non-fixed layers will be treated
individually.
As well as storing the container layer against the underlying frame of the
container item, store it against its merged frames as well. In addition, check
for old container layers against merged frames when building a container layer.
This protects against losing the layer when the underlying frame of a container
item changes to either a new frame or an existing, merged frame.
As well as storing the container layer against the underlying frame of the
container item, store it against its merged frames as well. In addition, check
for old container layers against merged frames when building a container layer.
This protects against losing the layer when the underlying frame of a container
item changes to either a new frame or an existing, merged frame.
Allow nsDisplayFixedPosition items that share the same fixed-pos frame to be
merged. This avoids a bug where the Google PDF viewer document image gets
re-rendered offset on the initial frame of a scroll when layer acceleration is
enabled.