layout/ipc/PRenderFrame.ipdl

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     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/. */
     8 include protocol PBrowser;
     9 include protocol PLayerTransaction;
    12 using class nsRegion from "nsRegion.h";
    14 namespace mozilla {
    15 namespace layout {
    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;
    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();
    45     async NotifyCompositorTransaction();
    47     async UpdateHitRegion(nsRegion aRegion);
    49     async __delete__();
    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__;
    57 state HAVE_CONTENT:
    58     recv NotifyCompositorTransaction goto HAVE_CONTENT;
    59     recv UpdateHitRegion goto HAVE_CONTENT;
    60     recv __delete__;
    61 };
    63 } // namespace layout
    64 } // namespace mozilla

mercurial