Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  embedding.rst   Sprache: unbekannt

 
Browsing Context Embedding
==========================

Embedder Element to nsDocShell
------------------------------

In order to render the contents of a ``BrowsingContext``, the embedding
element needs to be able to communicate with the ``nsDocShell`` which is
currently being used to host it's content. This is done in 3 different ways
depending on which combination of processes is in-use.

- *in-process*: The ``nsFrameLoader`` directly embeds the ``nsDocShell``.
- *remote tab*: The parent process is the embedder, and uses a ``PBrowser``,
  via a ``BrowserHost``. The ``BrowserChild`` actor holds the actual
  ``nsDocShell`` alive.
- *remote subframe*: A content process is the embedder, and uses a
  ``PBrowserBridge``, via a ``BrowserBridgeHost`` to communicate with the
  parent process. The parent process then uses a ``BrowserParent``, as in the
  *remote tab* case, to communicate with the ``nsDocShell``.

Diagram
^^^^^^^

.. digraph:: embedding

  node [shape=rectangle]

  subgraph cluster_choice {
    color=transparent;
    node [shape=none];

    "In-Process";
    "Remote Tab";
    "Remote Subframe";
  }

  "nsFrameLoaderOwner" [label="nsFrameLoaderOwner\ne.g. <iframe>, <xul:browser>, <embed>"]

  "nsFrameLoaderOwner" -> "nsFrameLoader";

  "nsFrameLoader" -> "In-Process" [dir=none];
  "nsFrameLoader" -> "Remote Tab" [dir=none];
  "nsFrameLoader" -> "Remote Subframe" [dir=none];

  "In-Process" -> "nsDocShell";
  "Remote Tab" -> "BrowserHost";
  "Remote Subframe" -> "BrowserBridgeHost";

  "BrowserHost" -> "BrowserParent";
  "BrowserParent" -> "BrowserChild" [label="PBrowser" style=dotted];
  "BrowserChild" -> "nsDocShell";

  "BrowserBridgeHost" -> "BrowserBridgeChild";
  "BrowserBridgeChild" -> "BrowserBridgeParent" [label="PBrowserBridge", style=dotted];
  "BrowserBridgeParent" -> "BrowserParent";

nsDocShell to Document
----------------------

Embedding an individual document within a ``nsDocShell`` is done within the
content process, which has that docshell.


Diagram
^^^^^^^

This diagram shows the objects involved in a content process which is being
used to host a given ``BrowsingContext``, along with rough relationships
between them. Dotted lines represent a "current" relationship, whereas solid
lines are a stronger lifetime relationship.

.. graph:: document

  node [shape=rectangle]

  "BrowsingContext" -- "nsDocShell" [style=dotted];
  "nsDocShell" -- "nsGlobalWindowOuter";
  "nsGlobalWindowOuter" -- "nsGlobalWindowInner" [style=dotted];
  "nsGlobalWindowInner" -- "Document" [style=dotted];

  "nsDocShell" -- "nsDocumentViewer" [style=dotted];
  "nsDocumentViewer" -- "Document";
  "nsDocumentViewer" -- "PresShell";

  "nsGlobalWindowInner" -- "WindowGlobalChild";
  "BrowsingContext" -- "WindowContext" [style=dotted];
  "WindowContext" -- "nsGlobalWindowInner";

  subgraph cluster_synced {
    label = "Synced Contexts";
    "BrowsingContext" "WindowContext";
  }

[ Dauer der Verarbeitung: 0.3 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge