1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/components/reflect/reflect.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,76 @@ 1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +#include "reflect.h" 1.10 +#include "jsapi.h" 1.11 +#include "mozilla/ModuleUtils.h" 1.12 +#include "nsMemory.h" 1.13 +#include "nsString.h" 1.14 +#include "nsNativeCharsetUtils.h" 1.15 + 1.16 +#define JSREFLECT_CONTRACTID \ 1.17 + "@mozilla.org/jsreflect;1" 1.18 + 1.19 +#define JSREFLECT_CID \ 1.20 +{ 0x1a817186, 0x357a, 0x47cd, { 0x8a, 0xea, 0x28, 0x50, 0xd6, 0x0e, 0x95, 0x9e } } 1.21 + 1.22 +namespace mozilla { 1.23 +namespace reflect { 1.24 + 1.25 +NS_GENERIC_FACTORY_CONSTRUCTOR(Module) 1.26 + 1.27 +NS_IMPL_ISUPPORTS(Module, nsIXPCScriptable) 1.28 + 1.29 +Module::Module() 1.30 +{ 1.31 +} 1.32 + 1.33 +Module::~Module() 1.34 +{ 1.35 +} 1.36 + 1.37 +#define XPC_MAP_CLASSNAME Module 1.38 +#define XPC_MAP_QUOTED_CLASSNAME "Module" 1.39 +#define XPC_MAP_WANT_CALL 1.40 +#define XPC_MAP_FLAGS nsIXPCScriptable::WANT_CALL 1.41 +#include "xpc_map_end.h" 1.42 + 1.43 +NS_IMETHODIMP 1.44 +Module::Call(nsIXPConnectWrappedNative* wrapper, 1.45 + JSContext* cx, 1.46 + JSObject* obj, 1.47 + const JS::CallArgs& args, 1.48 + bool* _retval) 1.49 +{ 1.50 + JS::Rooted<JSObject*> global(cx, JS::CurrentGlobalOrNull(cx)); 1.51 + if (!global) 1.52 + return NS_ERROR_NOT_AVAILABLE; 1.53 + 1.54 + *_retval = !!JS_InitReflect(cx, global); 1.55 + return NS_OK; 1.56 +} 1.57 + 1.58 +} 1.59 +} 1.60 + 1.61 +NS_DEFINE_NAMED_CID(JSREFLECT_CID); 1.62 + 1.63 +static const mozilla::Module::CIDEntry kReflectCIDs[] = { 1.64 + { &kJSREFLECT_CID, false, nullptr, mozilla::reflect::ModuleConstructor }, 1.65 + { nullptr } 1.66 +}; 1.67 + 1.68 +static const mozilla::Module::ContractIDEntry kReflectContracts[] = { 1.69 + { JSREFLECT_CONTRACTID, &kJSREFLECT_CID }, 1.70 + { nullptr } 1.71 +}; 1.72 + 1.73 +static const mozilla::Module kReflectModule = { 1.74 + mozilla::Module::kVersion, 1.75 + kReflectCIDs, 1.76 + kReflectContracts 1.77 +}; 1.78 + 1.79 +NSMODULE_DEFN(jsreflect) = &kReflectModule;