A reference to a document (and the act of saving it) can outlive the
browser tab it was originally loaded in, and this needs to be reflected
in IPC in order to avoid MsgRouteError crashes; see bug for more info.
Note that we still need to pass the PBrowser when starting persistence,
because that's the only handle the parent has on the top-level document;
see comments in this patch for more info.
Also makes TabChildBase::GetDocument public, because it's just a wrapper
around WebNavigation() which is already public, to avoid code duplication.
We were accidentally overwriting chromeFlags with CHROME_DEFAULT, which
we should only do if the caller has provided a features string when
opening a dialog.
We were accidentally overwriting chromeFlags with CHROME_DEFAULT, which
we should only do if the caller has provided a features string when
opening a dialog.
The way IPDL glue currently works, it's unsafe to do Send__delete__ on
another actor in that context, and these callbacks can indirectly cause
that; see bug for details.
The URI of the document being serialized must be taken into account within
GetLocalURI on URIData. This method previously returned its path relative to
the document in which it is first visited, resulting in a bug when subdocuments
stored in different locations also linked to it. By passing in mTargetBaseURI
GetLocalURI can ensure it is returning a path relative to the document
currently being serialized.
The patch removes 455 occurrences of FAIL_ON_WARNINGS from moz.build files, and
adds 78 instances of ALLOW_COMPILER_WARNINGS. About half of those 78 are in
code we control and which should be removable with a little effort.
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.
This restores the behavior from before bug 1101100, when various
indirect properties of the document were obtained by JS that ignored
exceptions by using null instead. This is currently breaking for the
documents created by Print Preview, because they have no page descriptor.
This patch also makes similar changes to the contentDescriptor getter.
The patch for bug 1101100, in converting this code to be asynchronous
and distributed, accidentally dropped the check for `data` being null;
this patch restores it, and adds a regression test.
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.
We don't ever want to accept "private", "non-private", "remote" or "non-remote" from the
content process. We only let the parent decide when to open those types of windows.
The bulk of this commit was generated by running:
run-clang-tidy.py \
-checks='-*,llvm-namespace-comment' \
-header-filter=^/.../mozilla-central/.* \
-fix
They are kept around for the sake of the standalone glue, which is used
for e.g. webapprt, which doesn't have direct access to jemalloc, and thus
still needs a wrapper to go through the xpcom function list and get to
jemalloc from there.