Cairo has a number of nifty features predicated on support for atomic
operations on integer types. Normally, such support would be determined
by cairo's configure script. But since we don't run cairo's configure
script, we need to manually define HAVE_INTEL_ATOMIC_PRIMITIVES during
cairo's build. That macro enables codepaths that depend on certain
SIZEOF_* variables being defined by autoconf, so we also need to add the
necessary code in moz.build to set those.
--HG--
extra : rebase_source : 2f00c4e48145b9f72839c57a619058a7bdec8efd
Recently-added GENERATED_FILES support and support for specifying
per-file methods for GENERATED_FILES means that we can move the rules
for generating tab SVGs in browser/themes/ to moz.build. As a bonus, we
can also eliminate duplicate between the rules by moving them to a
shared mozbuild file in browser/themes/, rather than individual
browser/themes/{linux,osx,windows}/ Makefiles.
MiscContainer declares that it HasDangerousPublicDestructor. This
declaration is accurate, but unnecessary, as MiscContainer doesn't use
any of the nsISupports machinery that checks
HasDangerousPublicDestructor. So HasDangerousPublicDestructor is a nice
bit of documentation, but completely unused; let's remove it.
MiscContainer having a public destructor is a bit of a footgun, though.
Let's protect MiscContainer's destructor and make nsAttrValue a friend
class, since nsAttrValue is what controls the lifetime of MiscContainer
objects.
This will cause the content process to take itself down in the event that it
loses communication with the parent process. This case is particularly
important for the case where the parent process crashes while the content
process is blocked or busy on the main thread, as the content process will
no longer continue to exist as a zombie process, but will shut down after
a short delay.
--HG--
extra : rebase_source : 52799d2cacdc72ca0c36200320b249961a3b638d
On B2G, the primary frame for tab content was not giving the correct process offset so we revert back to the mechanism we used to have in nsSubdocumentFrame.
Change the PuppetWidget from defining screen coordinates from tab-content-relative to being based on actual screen geometry. PuppetWidgets can have position. In the parent process, the widget has a position and a separate client position (that includes OS window chrome... on Linux and Windows as others have no chrome). In the child process, the widget (non-origin) position, whose calculation compensates for the OS window decoration.
TabParents now register for the MozUpdateWindowPos event on the chrome TopWindowRoot. When the window is moved, the OS widget calls WindowMoved on its listener (the nsWebShellWindow), which sends a MozUpdateWindowPos event.
PuppetWidget::WidgetToScreenOffset now reports proper widget screen location. Previously, in the content process, all widgets were defined to be located at the screen origin. This also repairs mac e10s OOP plugin coordinate calculations that would be broken by this change.