/* -*- 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 ReturnException { JSVariant exn; }; struct ReturnObjectOpResult { uint32_t code; }; union ReturnStatus { ReturnSuccess; ReturnStopIteration; 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; }; } }