|
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- |
|
2 * vim: sw=2 ts=8 et : |
|
3 */ |
|
4 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
5 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
7 |
|
8 include protocol PBrowser; |
|
9 include protocol PLayerTransaction; |
|
10 |
|
11 |
|
12 using class nsRegion from "nsRegion.h"; |
|
13 |
|
14 namespace mozilla { |
|
15 namespace layout { |
|
16 |
|
17 /** |
|
18 * PRenderFrame (in the layout sense of "frame") represents one web |
|
19 * "page". It's used to graft content processes' layer trees into |
|
20 * chrome's rendering path. The lifetime of a PRenderFrame is tied to |
|
21 * its PresShell in the child process. |
|
22 * |
|
23 * The child process conceptually "owns" a PRenderFrame, because it |
|
24 * only makes sense wrt documents loaded by the child. |
|
25 */ |
|
26 sync protocol PRenderFrame |
|
27 { |
|
28 manager PBrowser; |
|
29 manages PLayerTransaction; |
|
30 |
|
31 parent: |
|
32 /** |
|
33 * Shadow layer trees can be grafted into the parent's in one of |
|
34 * two ways |
|
35 * - direct shadow tree: updates are sent to parent |
|
36 * - indirect: the parent holds a reference (ID) to a shadow tree |
|
37 * that's managed by the compositor. During composition, the |
|
38 * shadow tree is looked up and grafted appropriately |
|
39 * |
|
40 * |id| is set to 0 in the "direct" case, and to a whole number |
|
41 * in the "indirect" case. |
|
42 */ |
|
43 async PLayerTransaction(); |
|
44 |
|
45 async NotifyCompositorTransaction(); |
|
46 |
|
47 async UpdateHitRegion(nsRegion aRegion); |
|
48 |
|
49 async __delete__(); |
|
50 |
|
51 state EMPTY_OR_DIRECT_COMPOSITOR: |
|
52 recv PLayerTransaction goto HAVE_CONTENT; |
|
53 recv NotifyCompositorTransaction goto EMPTY_OR_DIRECT_COMPOSITOR; |
|
54 recv UpdateHitRegion goto EMPTY_OR_DIRECT_COMPOSITOR; |
|
55 recv __delete__; |
|
56 |
|
57 state HAVE_CONTENT: |
|
58 recv NotifyCompositorTransaction goto HAVE_CONTENT; |
|
59 recv UpdateHitRegion goto HAVE_CONTENT; |
|
60 recv __delete__; |
|
61 }; |
|
62 |
|
63 } // namespace layout |
|
64 } // namespace mozilla |