This alters nsIWebBrowserPersistable so that startPersistence takes an
outerWindowID. This allows us to target a particular subframe from
beneath an nsFrameLoader, which is useful when attempting to Save
Frame As a remote browser.
We send a pagehide event during swapping docshell frame loaders, and
before this patch we would not be able to differentiate this event with
the one that we send when navigating away from a page, so we would
incorrectly dispatch an audio-playback notification indicating that
audio playback has stopped. This patch adds a flag to the root docshell
when the frame loader swapping is in progress and disables the above
behavior when that flag is set.
The high-level overview is that the parts of nsWebBrowserPersist which
access the DOM have been factored out (as WebBrowserPersistLocalDocument)
and abstracted (nsIWebBrowserPersistDocument) such that they can be
implemented in the cross-process case using IPC.
Don't rely on MaybeCreateDocShell to set mRemoteFrame so we don't have
to call MaybeCreateDocShell in weird places. Instead we set mRemoteFrame
early in the nsFrameLoader constructor. This should still allow us to
switch default remoteness dynamically.
CLOSED TREE
Backed out changeset 9af9111e9c27 (bug 1126089)
Backed out changeset 288efd5e2ca0 (bug 1126089)
Backed out changeset 3bcebfd13538 (bug 1126089)
This patch was generated by a script. Here's the source of the script for
future reference:
find . \( -iname "*.cpp" -o -iname "*.h" \) | \
xargs -n 1 sed -i "s/nsRefPtr<nsIRunnable>/nsCOMPtr<nsIRunnable>/g"
The ScrollingBehavior passed around extensively in TabParent/TabChild is
entirely redundant now that the layers.async-pan-zoom.enabled pref definitively
controls whether or not APZ is enabled. All the code related to ScrollingBehavior
can be removed.
This attribute used to force APZ to be used on content processes even if the
overall APZ pref was false. However, this has a couple of problems, which cancel
each other out:
- If the pref is false, the APZ machinery is never created, and so it's
impossible to have content processes "using" APZ.
- The reftest harness checks for the pref and ignores mozasyncpanzoom when
evaluating the "asyncPanZoom" condition in reftest manifests.
Therefore, any reftests which were skip-if(!asyncPanZoom) would never run unless
the pref was set, and in those cases the mozasyncpanzoom attribute would not be
needed at all, as APZ is already enabled with the pref.
However, the mozasyncpanzoom attribute would cause some parts of the child
process code to behave as though APZ was enabled, which is incorrect. Removing
this attribute and relying solely on the pref corrects that.