mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
f43c96af4d
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.
43 lines
1.4 KiB
C++
43 lines
1.4 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/* vim: set ts=8 sts=4 et sw=4 tw=99: */
|
|
/* 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 "ChromeObjectWrapper.h"
|
|
#include "WrapperFactory.h"
|
|
#include "AccessCheck.h"
|
|
#include "xpcprivate.h"
|
|
#include "jsapi.h"
|
|
#include "jswrapper.h"
|
|
#include "nsXULAppAPI.h"
|
|
|
|
using namespace JS;
|
|
|
|
namespace xpc {
|
|
|
|
const ChromeObjectWrapper ChromeObjectWrapper::singleton;
|
|
|
|
bool
|
|
ChromeObjectWrapper::defineProperty(JSContext *cx, HandleObject wrapper,
|
|
HandleId id,
|
|
MutableHandle<JSPropertyDescriptor> desc,
|
|
JS::ObjectOpResult &result) const
|
|
{
|
|
if (!AccessCheck::checkPassToPrivilegedCode(cx, wrapper, desc.value()))
|
|
return false;
|
|
return ChromeObjectWrapperBase::defineProperty(cx, wrapper, id, desc, result);
|
|
}
|
|
|
|
bool
|
|
ChromeObjectWrapper::set(JSContext *cx, HandleObject wrapper,
|
|
HandleObject receiver, HandleId id,
|
|
bool strict, MutableHandleValue vp) const
|
|
{
|
|
if (!AccessCheck::checkPassToPrivilegedCode(cx, wrapper, vp))
|
|
return false;
|
|
return ChromeObjectWrapperBase::set(cx, wrapper, receiver, id, strict, vp);
|
|
}
|
|
|
|
}
|