summaryrefslogtreecommitdiffstats
path: root/dom/plugins/ipc/PPluginScriptableObject.ipdl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/plugins/ipc/PPluginScriptableObject.ipdl')
-rw-r--r--dom/plugins/ipc/PPluginScriptableObject.ipdl102
1 files changed, 102 insertions, 0 deletions
diff --git a/dom/plugins/ipc/PPluginScriptableObject.ipdl b/dom/plugins/ipc/PPluginScriptableObject.ipdl
new file mode 100644
index 000000000..15d6cc148
--- /dev/null
+++ b/dom/plugins/ipc/PPluginScriptableObject.ipdl
@@ -0,0 +1,102 @@
+/* -*- 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 PluginTypes;
+
+using struct mozilla::void_t from "ipc/IPCMessageUtils.h";
+using struct mozilla::null_t from "ipc/IPCMessageUtils.h";
+
+namespace mozilla {
+namespace plugins {
+
+union Variant {
+ void_t;
+ null_t;
+ bool;
+ int;
+ double;
+ nsCString;
+ nullable PPluginScriptableObject;
+};
+
+intr protocol PPluginScriptableObject
+{
+ manager PPluginInstance;
+
+both:
+ async __delete__();
+
+parent:
+ intr NPN_Evaluate(nsCString aScript)
+ returns (Variant aResult,
+ bool aSuccess);
+
+child:
+ intr Invalidate();
+
+both:
+ // NPClass methods
+ intr HasMethod(PluginIdentifier aId)
+ returns (bool aHasMethod);
+
+ intr Invoke(PluginIdentifier aId,
+ Variant[] aArgs)
+ returns (Variant aResult,
+ bool aSuccess);
+
+ intr InvokeDefault(Variant[] aArgs)
+ returns (Variant aResult,
+ bool aSuccess);
+
+ intr HasProperty(PluginIdentifier aId)
+ returns (bool aHasProperty);
+
+ intr SetProperty(PluginIdentifier aId,
+ Variant aValue)
+ returns (bool aSuccess);
+
+ intr RemoveProperty(PluginIdentifier aId)
+ returns (bool aSuccess);
+
+ intr Enumerate()
+ returns (PluginIdentifier[] aProperties,
+ bool aSuccess);
+
+ intr Construct(Variant[] aArgs)
+ returns (Variant aResult,
+ bool aSuccess);
+
+ // Objects are initially unprotected, and the Protect and Unprotect functions
+ // only affect protocol objects that represent NPObjects created in the same
+ // process (rather than protocol objects that are a proxy for an NPObject
+ // created in another process). Protocol objects representing local NPObjects
+ // are protected after an NPObject has been associated with the protocol
+ // object. Sending the protocol object as an argument to the other process
+ // temporarily protects the protocol object again for the duration of the call.
+ async Protect();
+ async Unprotect();
+
+ /**
+ * GetProperty is slightly wonky due to the way we support NPObjects that have
+ * methods and properties with the same name. When child calls parent we
+ * simply return a property. When parent calls child, however, we need to do
+ * several checks at once and return all the results simultaneously.
+ */
+parent:
+ intr GetParentProperty(PluginIdentifier aId)
+ returns (Variant aResult,
+ bool aSuccess);
+
+child:
+ intr GetChildProperty(PluginIdentifier aId)
+ returns (bool aHasProperty,
+ bool aHasMethod,
+ Variant aResult,
+ bool aSuccess);
+};
+
+} // namespace plugins
+} // namespace mozilla