summaryrefslogtreecommitdiffstats
path: root/dom/plugins/ipc/PPluginModule.ipdl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/plugins/ipc/PPluginModule.ipdl')
-rw-r--r--dom/plugins/ipc/PPluginModule.ipdl155
1 files changed, 155 insertions, 0 deletions
diff --git a/dom/plugins/ipc/PPluginModule.ipdl b/dom/plugins/ipc/PPluginModule.ipdl
new file mode 100644
index 0000000000..6d98408c2f
--- /dev/null
+++ b/dom/plugins/ipc/PPluginModule.ipdl
@@ -0,0 +1,155 @@
+/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
+/* 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 PPluginInstance;
+include protocol PPluginScriptableObject;
+include protocol PContent;
+include protocol PProfiler;
+include protocol PFunctionBroker;
+
+using NPError from "npapi.h";
+using NPNVariable from "npapi.h";
+using mozilla::dom::NativeThreadId from "mozilla/dom/NativeThreadId.h";
+using class mac_plugin_interposing::NSCursorInfo from "mozilla/plugins/PluginMessageUtils.h";
+using struct nsID from "nsID.h";
+using struct mozilla::plugins::NPAudioDeviceChangeDetailsIPC from "mozilla/plugins/PluginMessageUtils.h";
+using struct mozilla::plugins::NPAudioDeviceStateChangedIPC from "mozilla/plugins/PluginMessageUtils.h";
+
+namespace mozilla {
+namespace plugins {
+
+struct PluginSettings
+{
+ // These settings correspond to NPNVariable. They are fetched from
+ // mozilla::plugins::parent::_getvalue.
+ bool javascriptEnabled;
+ bool asdEnabled;
+ bool isOffline;
+ bool supportsXembed;
+ bool supportsWindowless;
+
+ // These settings come from elsewhere.
+ nsCString userAgent;
+ bool nativeCursorsSupported;
+};
+
+intr protocol PPluginModule
+{
+ manages PPluginInstance;
+
+both:
+ // Window-specific message which instructs the interrupt mechanism to enter
+ // a nested event loop for the current interrupt call.
+ async ProcessNativeEventsInInterruptCall();
+
+child:
+ async InitProfiler(Endpoint<PProfilerChild> aEndPoint);
+
+ async DisableFlashProtectedMode();
+
+ // Sync query to check if a Flash library indicates it
+ // supports async rendering mode.
+ intr ModuleSupportsAsyncRender()
+ returns (bool result);
+
+ // Forces the child process to update its plugin function table.
+ intr NP_GetEntryPoints()
+ returns (NPError rv);
+
+ intr NP_Initialize(PluginSettings settings)
+ returns (NPError rv);
+
+ async PPluginInstance(nsCString aMimeType,
+ nsCString[] aNames,
+ nsCString[] aValues);
+
+ // Implements the synchronous version of NPP_New for when async plugin init
+ // is preffed off.
+ intr SyncNPP_New(PPluginInstance aActor)
+ returns (NPError rv);
+
+ intr NP_Shutdown()
+ returns (NPError rv);
+
+ intr OptionalFunctionsSupported()
+ returns (bool aURLRedirectNotify, bool aClearSiteData,
+ bool aGetSitesWithData);
+
+ async NPP_ClearSiteData(nsCString site, uint64_t flags, uint64_t maxAge, uint64_t aCallbackId);
+
+ async NPP_GetSitesWithData(uint64_t aCallbackId);
+
+ // Windows specific message to set up an audio session in the plugin process
+ async SetAudioSessionData(nsID aID,
+ nsString aDisplayName,
+ nsString aIconPath);
+
+ async SetParentHangTimeout(uint32_t seconds);
+
+ intr InitCrashReporter()
+ returns (NativeThreadId tid);
+
+ async SettingChanged(PluginSettings settings);
+
+ async NPP_SetValue_NPNVaudioDeviceChangeDetails(NPAudioDeviceChangeDetailsIPC changeDetails);
+ async NPP_SetValue_NPNVaudioDeviceStateChanged(NPAudioDeviceStateChangedIPC deviceState);
+
+ async InitPluginModuleChild(Endpoint<PPluginModuleChild> endpoint);
+
+ async InitPluginFunctionBroker(Endpoint<PFunctionBrokerChild> endpoint);
+
+parent:
+ /**
+ * This message is only used on X11 platforms.
+ *
+ * Send a dup of the plugin process's X socket to the parent
+ * process. In theory, this scheme keeps the plugin's X resources
+ * around until after both the plugin process shuts down *and* the
+ * parent process closes the dup fd. This is used to prevent the
+ * parent process from crashing on X errors if, e.g., the plugin
+ * crashes *just before* a repaint and the parent process tries to
+ * use the newly-invalid surface.
+ */
+ async BackUpXResources(FileDescriptor aXSocketFd);
+
+ // Wake up and process a few native events. Periodically called by
+ // Gtk-specific code upon detecting that the plugin process has
+ // entered a nested event loop. If the browser doesn't process
+ // native events, then "livelock" and some other glitches can occur.
+ intr ProcessSomeEvents();
+
+ // OS X Specific calls to manage the plugin's window
+ // when interposing system calls.
+ async PluginShowWindow(uint32_t aWindowId, bool aModal,
+ int32_t aX, int32_t aY,
+ double aWidth, double aHeight);
+ async PluginHideWindow(uint32_t aWindowId);
+
+ // OS X Specific calls to allow the plugin to manage the cursor.
+ async SetCursor(NSCursorInfo cursorInfo);
+ async ShowCursor(bool show);
+ async PushCursor(NSCursorInfo cursorInfo);
+ async PopCursor();
+
+ sync NPN_SetException(nsCString message);
+
+ async NPN_ReloadPlugins(bool aReloadPages);
+
+ // Notifies the chrome process that a PluginModuleChild linked to a content
+ // process was destroyed. The chrome process may choose to asynchronously shut
+ // down the plugin process in response.
+ async NotifyContentModuleDestroyed();
+
+ // Answers to request about site data
+ async ReturnClearSiteData(NPError aRv, uint64_t aCallbackId);
+
+ async ReturnSitesWithData(nsCString[] aSites, uint64_t aCallbackId);
+
+ intr NPN_SetValue_NPPVpluginRequiresAudioDeviceChanges(bool shouldRegister)
+ returns (NPError result);
+};
+
+} // namespace plugins
+} // namespace mozilla