• Christopher Cameron's avatar
    MacPWAs: Add factory for remote RenderWidgetHostView · a2bf5a4a
    Christopher Cameron authored
    Add a new interface, content::mojom::NSViewBridgeFactory. This may be
    used to create a content::mojo::RenderWidgetHostNSViewBridge in
    another process, and initialize its client to a specified
    content::mojo::RenderWidgetHostNSViewClient.
      * Note that the interface created by mojom::NSViewBridgeFactory is a
        stub interface, mojom::StubInterface, which is cast to a
        mojom::RenderWidgetHostNSViewBridge. This is because the latter
        has content-internal dependencies, and so cannot be included in
        any other module.
    
    Add a content::NSViewBridgeFactoryHost class that will own such
    a connection. There will exist one instance of this class for each
    AppShimHost in the browser process.
      * Included in this a "host id". This will be set at initialization to
        match a views::BridgeFactoryHost.
      * When embedding web contents into a views::View, the
        views::BridgedNativeWidgetHostImpl will specify this id to the
        content::RenderWidgetHostViewMac, to ensure that all NSViews be
        created in the same process.
    
    Add a content::NSViewBridgeFactoryImpl class that implements the
    content::mojom::NSViewBridgeFactory interface. There will exist one
    global instance of this class in each app shim process.
    
    Add to content::RenderWidgetHostViewMac a MigrateNSViewBridge function,
    which will move corresponding NSView to a different host.
    
    Add to RenderWidgetHostNSViewBridgeLocal a constructor that takes
    mojo interfaces. This constructor is called in the app shim process.
    Clarify that the creator of the RenderWidgetHostNSViewBridgeLocal is
    its owner, and is responsible for its destruction.
    
    Note that all interfaces are associated. This is because call ordering
    needs to be preserved amongst multiple NSViews (e.g, to add one as a
    subview of another, but only once both have been put in an expected
    state).
    
    Bug: 859152
    Change-Id: I69f64c57cf51189ca75e215346f3ef1cbab23094
    Reviewed-on: https://chromium-review.googlesource.com/1239763Reviewed-by: default avatarRobert Sesek <rsesek@chromium.org>
    Reviewed-by: default avatarAvi Drissman <avi@chromium.org>
    Reviewed-by: default avatarKen Rockot <rockot@chromium.org>
    Commit-Queue: ccameron <ccameron@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#594797}
    a2bf5a4a
ns_view_bridge_factory_host.mm 1.36 KB