summaryrefslogtreecommitdiffstats
path: root/js/ipc/JavaScriptTypes.ipdlh
diff options
context:
space:
mode:
Diffstat (limited to 'js/ipc/JavaScriptTypes.ipdlh')
-rw-r--r--js/ipc/JavaScriptTypes.ipdlh161
1 files changed, 161 insertions, 0 deletions
diff --git a/js/ipc/JavaScriptTypes.ipdlh b/js/ipc/JavaScriptTypes.ipdlh
new file mode 100644
index 000000000..5129fc304
--- /dev/null
+++ b/js/ipc/JavaScriptTypes.ipdlh
@@ -0,0 +1,161 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ * vim: set ts=4 sw=4 et tw=80:
+ *
+ * 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 DOMTypes;
+
+using struct mozilla::void_t from "ipc/IPCMessageUtils.h";
+
+namespace mozilla {
+namespace jsipc {
+
+struct JSIID
+{
+ uint32_t m0;
+ uint16_t m1;
+ uint16_t m2;
+ uint8_t m3_0;
+ uint8_t m3_1;
+ uint8_t m3_2;
+ uint8_t m3_3;
+ uint8_t m3_4;
+ uint8_t m3_5;
+ uint8_t m3_6;
+ uint8_t m3_7;
+};
+
+struct LocalObject
+{
+ uint64_t serializedId;
+};
+
+struct RemoteObject
+{
+ uint64_t serializedId;
+ bool isCallable;
+ bool isConstructor;
+ bool isDOMObject;
+ nsCString objectTag;
+};
+
+union ObjectVariant
+{
+ LocalObject;
+ RemoteObject;
+};
+
+struct WellKnownSymbol
+{
+ uint32_t which;
+};
+
+struct RegisteredSymbol
+{
+ nsString key;
+};
+
+union SymbolVariant
+{
+ WellKnownSymbol;
+ RegisteredSymbol;
+};
+
+struct UndefinedVariant {};
+struct NullVariant {};
+
+union ObjectOrNullVariant
+{
+ ObjectVariant;
+ NullVariant;
+};
+
+union JSVariant
+{
+ UndefinedVariant;
+ NullVariant;
+ ObjectVariant;
+ SymbolVariant;
+ nsString; /* StringValue(x) */
+ double; /* NumberValue(x) */
+ bool; /* BooleanValue(x) */
+ JSIID; /* XPC nsIID */
+};
+
+union JSIDVariant
+{
+ SymbolVariant;
+ nsString;
+ int32_t;
+};
+
+struct ReturnSuccess
+{
+};
+
+struct ReturnStopIteration
+{
+};
+
+struct ReturnDeadCPOW
+{
+};
+
+struct ReturnException
+{
+ JSVariant exn;
+};
+
+struct ReturnObjectOpResult
+{
+ uint32_t code;
+};
+
+union ReturnStatus
+{
+ ReturnSuccess;
+ ReturnStopIteration;
+ ReturnDeadCPOW;
+ ReturnException;
+ ReturnObjectOpResult;
+};
+
+union JSParam
+{
+ void_t; /* value is strictly an xpc out param */
+ JSVariant; /* actual value to pass through */
+};
+
+union GetterSetter
+{
+ uint64_t;
+ ObjectVariant;
+};
+
+struct PPropertyDescriptor
+{
+ ObjectOrNullVariant obj;
+ uint32_t attrs;
+ JSVariant value;
+
+ // How to interpret these values depends on whether JSPROP_GETTER/SETTER
+ // are set. If set, the corresponding value is a CPOW or 0 for NULL.
+ // Otherwise, the following table is used:
+ //
+ // 0 - NULL
+ // 1 - Default getter or setter.
+ // 2 - Unknown
+ GetterSetter getter;
+ GetterSetter setter;
+};
+
+struct CpowEntry
+{
+ nsString name;
+ JSVariant value;
+};
+
+}
+}