1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/layout/ipc/PRenderFrame.ipdl Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,64 @@ 1.4 +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- 1.5 + * vim: sw=2 ts=8 et : 1.6 + */ 1.7 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.8 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.9 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.10 + 1.11 +include protocol PBrowser; 1.12 +include protocol PLayerTransaction; 1.13 + 1.14 + 1.15 +using class nsRegion from "nsRegion.h"; 1.16 + 1.17 +namespace mozilla { 1.18 +namespace layout { 1.19 + 1.20 +/** 1.21 + * PRenderFrame (in the layout sense of "frame") represents one web 1.22 + * "page". It's used to graft content processes' layer trees into 1.23 + * chrome's rendering path. The lifetime of a PRenderFrame is tied to 1.24 + * its PresShell in the child process. 1.25 + * 1.26 + * The child process conceptually "owns" a PRenderFrame, because it 1.27 + * only makes sense wrt documents loaded by the child. 1.28 + */ 1.29 +sync protocol PRenderFrame 1.30 +{ 1.31 + manager PBrowser; 1.32 + manages PLayerTransaction; 1.33 + 1.34 +parent: 1.35 + /** 1.36 + * Shadow layer trees can be grafted into the parent's in one of 1.37 + * two ways 1.38 + * - direct shadow tree: updates are sent to parent 1.39 + * - indirect: the parent holds a reference (ID) to a shadow tree 1.40 + * that's managed by the compositor. During composition, the 1.41 + * shadow tree is looked up and grafted appropriately 1.42 + * 1.43 + * |id| is set to 0 in the "direct" case, and to a whole number 1.44 + * in the "indirect" case. 1.45 + */ 1.46 + async PLayerTransaction(); 1.47 + 1.48 + async NotifyCompositorTransaction(); 1.49 + 1.50 + async UpdateHitRegion(nsRegion aRegion); 1.51 + 1.52 + async __delete__(); 1.53 + 1.54 +state EMPTY_OR_DIRECT_COMPOSITOR: 1.55 + recv PLayerTransaction goto HAVE_CONTENT; 1.56 + recv NotifyCompositorTransaction goto EMPTY_OR_DIRECT_COMPOSITOR; 1.57 + recv UpdateHitRegion goto EMPTY_OR_DIRECT_COMPOSITOR; 1.58 + recv __delete__; 1.59 + 1.60 +state HAVE_CONTENT: 1.61 + recv NotifyCompositorTransaction goto HAVE_CONTENT; 1.62 + recv UpdateHitRegion goto HAVE_CONTENT; 1.63 + recv __delete__; 1.64 +}; 1.65 + 1.66 +} // namespace layout 1.67 +} // namespace mozilla