gecko/js/ipc/JavaScriptTypes.ipdlh
Jason Orendorff f43c96af4d Bug 1113369, part 3 - [[DefineOwnProperty]] ObjectOpResult support. r=Waldo, r=bz in dom, r=dvander in js/ipc, r=bholley in js/xpconnect.
Add an ObjectOpResult out-param for DefineProperty functions everywhere. We leave a few js::DefineProperty() convenience functions with no *result out-param. These have strict behavior: that is, they automatically check the result and throw if it is false. In bug 1125624 these strict signatures may end up being called DefinePropertyOrThrow, as that is what the spec calls it.
2015-01-30 11:37:07 -06:00

156 lines
2.4 KiB
Plaintext

/* -*- 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;
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;
};
}
}