Line data Source code
1 : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */
2 : /* This Source Code Form is subject to the terms of the Mozilla Public
3 : * License, v. 2.0. If a copy of the MPL was not distributed with this
4 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 :
6 : #include "reflect.h"
7 : #include "jsapi.h"
8 : #include "mozilla/ModuleUtils.h"
9 : #include "nsMemory.h"
10 : #include "nsString.h"
11 : #include "nsNativeCharsetUtils.h"
12 : #include "xpc_make_class.h"
13 :
14 : #define JSREFLECT_CONTRACTID \
15 : "@mozilla.org/jsreflect;1"
16 :
17 : #define JSREFLECT_CID \
18 : { 0x1a817186, 0x357a, 0x47cd, { 0x8a, 0xea, 0x28, 0x50, 0xd6, 0x0e, 0x95, 0x9e } }
19 :
20 : namespace mozilla {
21 : namespace reflect {
22 :
23 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(Module)
24 :
25 0 : NS_IMPL_ISUPPORTS(Module, nsIXPCScriptable)
26 :
27 : Module::Module() = default;
28 :
29 : Module::~Module() = default;
30 :
31 : #define XPC_MAP_CLASSNAME Module
32 : #define XPC_MAP_QUOTED_CLASSNAME "Module"
33 : #define XPC_MAP_FLAGS XPC_SCRIPTABLE_WANT_CALL
34 : #include "xpc_map_end.h"
35 :
36 : NS_IMETHODIMP
37 0 : Module::Call(nsIXPConnectWrappedNative* wrapper,
38 : JSContext* cx,
39 : JSObject* obj,
40 : const JS::CallArgs& args,
41 : bool* _retval)
42 : {
43 0 : JS::Rooted<JSObject*> global(cx, JS::CurrentGlobalOrNull(cx));
44 0 : if (!global)
45 0 : return NS_ERROR_NOT_AVAILABLE;
46 :
47 0 : *_retval = JS_InitReflectParse(cx, global);
48 0 : return NS_OK;
49 : }
50 :
51 : } // namespace reflect
52 : } // namespace mozilla
53 :
54 : NS_DEFINE_NAMED_CID(JSREFLECT_CID);
55 :
56 : static const mozilla::Module::CIDEntry kReflectCIDs[] = {
57 : { &kJSREFLECT_CID, false, nullptr, mozilla::reflect::ModuleConstructor },
58 : { nullptr }
59 : };
60 :
61 : static const mozilla::Module::ContractIDEntry kReflectContracts[] = {
62 : { JSREFLECT_CONTRACTID, &kJSREFLECT_CID },
63 : { nullptr }
64 : };
65 :
66 : static const mozilla::Module kReflectModule = {
67 : mozilla::Module::kVersion,
68 : kReflectCIDs,
69 : kReflectContracts
70 : };
71 :
72 : NSMODULE_DEFN(jsreflect) = &kReflectModule;
|