示例#1
0
static JSBool
CompartmentCallback(JSContext *cx, JSCompartment *compartment, uintN op)
{
    if(op == JSCOMPARTMENT_NEW)
        return JS_TRUE;

    XPCJSRuntime* self = nsXPConnect::GetRuntimeInstance();
    if(!self)
        return JS_TRUE;

    XPCCompartmentMap& map = self->GetCompartmentMap();
    nsAdoptingCString origin;
    origin.Adopt(static_cast<char *>(JS_SetCompartmentPrivate(cx, compartment, nsnull)));

#ifdef DEBUG
    {
        JSCompartment *current;
        NS_ASSERTION(map.Get(origin, &current), "no compartment?");
        NS_ASSERTION(current == compartment, "compartment mismatch");
    }
#endif

    map.Remove(origin);
    return JS_TRUE;
}