gecko-dev/dom/ipc/PPluginWidget.ipdl
Wes Kocher 4468d77e14 Backed out 5 changesets (bug 1338172) for linux crashtest failures a=backout
Backed out changeset 9ee6c6f4e59c (bug 1338172)
Backed out changeset 1c92fbfca20a (bug 1338172)
Backed out changeset 907d9c3d1043 (bug 1338172)
Backed out changeset e4994ab9d628 (bug 1338172)
Backed out changeset 6209f07e1f26 (bug 1338172)

MozReview-Commit-ID: 3f4xBRcGPqM
2017-02-14 14:31:54 -08:00

62 lines
2.2 KiB
Plaintext

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
include protocol PBrowser;
include "mozilla/GfxMessageUtils.h";
using nsIntRect from "nsRect.h";
namespace mozilla {
namespace plugins {
/**
* PPluginWidget - a nsIWidget'ish protocol for windowed plugins in e10s.
* On windows we create native widgets in chrome which we then manage
* from content. On the content side there's PluginWidgetProxy which
* implements nsIWidget. We hand this around layout and plugins code. Anything
* not dealt with via PluginWidgetProxy falls through to PuppetWidget. Native
* widget exists on the chrome side (PluginWidgetParent) attached to the
* browser window as a child. Window management calls are forwarded from
* PluginWidgetProxy to PluginWidgetParent over this interface.
*
* Note lifetime management for PluginWidgetProxy (the plugin widget) and the
* connection (PluginWidgetChild) are separated. PluginWidgetChild will
* be torn down first by the tab, followed by the deref'ing of the nsIWidget
* via layout.
*/
sync protocol PPluginWidget {
manager PBrowser;
parent:
async __delete__();
/**
* Used to set the ID of a scroll capture container from the parent process,
* so that we can create a proxy container in the layer tree.
* @param aScrollCaptureId async container ID of the parent container
* @param aPluginInstanceId plugin ID on which to set the scroll capture ID
*/
sync Create() returns (nsresult aResult, uint64_t aScrollCaptureId,
uintptr_t aPluginInstanceId);
async SetFocus(bool aRaise);
/**
* Returns NS_NATIVE_PLUGIN_PORT and its variants: a sharable native
* window for plugins. On Linux, this returns an XID for a socket widget
* embedded in the chrome side native window. On Windows this returns the
* native HWND of the plugin widget.
*/
sync GetNativePluginPort() returns (uintptr_t value);
/**
* Sends an NS_NATIVE_CHILD_WINDOW to be adopted by the widget's native window
* on the chrome side. This is only currently used on Windows.
*/
sync SetNativeChildWindow(uintptr_t childWindow);
};
}
}