diff -r 000000000000 -r 6474c204b198 layout/ipc/PRenderFrame.ipdl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/layout/ipc/PRenderFrame.ipdl Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,64 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * vim: sw=2 ts=8 et : + */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +include protocol PBrowser; +include protocol PLayerTransaction; + + +using class nsRegion from "nsRegion.h"; + +namespace mozilla { +namespace layout { + +/** + * PRenderFrame (in the layout sense of "frame") represents one web + * "page". It's used to graft content processes' layer trees into + * chrome's rendering path. The lifetime of a PRenderFrame is tied to + * its PresShell in the child process. + * + * The child process conceptually "owns" a PRenderFrame, because it + * only makes sense wrt documents loaded by the child. + */ +sync protocol PRenderFrame +{ + manager PBrowser; + manages PLayerTransaction; + +parent: + /** + * Shadow layer trees can be grafted into the parent's in one of + * two ways + * - direct shadow tree: updates are sent to parent + * - indirect: the parent holds a reference (ID) to a shadow tree + * that's managed by the compositor. During composition, the + * shadow tree is looked up and grafted appropriately + * + * |id| is set to 0 in the "direct" case, and to a whole number + * in the "indirect" case. + */ + async PLayerTransaction(); + + async NotifyCompositorTransaction(); + + async UpdateHitRegion(nsRegion aRegion); + + async __delete__(); + +state EMPTY_OR_DIRECT_COMPOSITOR: + recv PLayerTransaction goto HAVE_CONTENT; + recv NotifyCompositorTransaction goto EMPTY_OR_DIRECT_COMPOSITOR; + recv UpdateHitRegion goto EMPTY_OR_DIRECT_COMPOSITOR; + recv __delete__; + +state HAVE_CONTENT: + recv NotifyCompositorTransaction goto HAVE_CONTENT; + recv UpdateHitRegion goto HAVE_CONTENT; + recv __delete__; +}; + +} // namespace layout +} // namespace mozilla