From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- dom/ipc/PPluginWidget.ipdl | 61 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 dom/ipc/PPluginWidget.ipdl (limited to 'dom/ipc/PPluginWidget.ipdl') diff --git a/dom/ipc/PPluginWidget.ipdl b/dom/ipc/PPluginWidget.ipdl new file mode 100644 index 000000000..d96ea4ed8 --- /dev/null +++ b/dom/ipc/PPluginWidget.ipdl @@ -0,0 +1,61 @@ +/* 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 and linux 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); +}; + +} +} -- cgit v1.2.3