|
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 |
|
13 #define JSREFLECT_CONTRACTID \ |
|
14 "@mozilla.org/jsreflect;1" |
|
15 |
|
16 #define JSREFLECT_CID \ |
|
17 { 0x1a817186, 0x357a, 0x47cd, { 0x8a, 0xea, 0x28, 0x50, 0xd6, 0x0e, 0x95, 0x9e } } |
|
18 |
|
19 namespace mozilla { |
|
20 namespace reflect { |
|
21 |
|
22 NS_GENERIC_FACTORY_CONSTRUCTOR(Module) |
|
23 |
|
24 NS_IMPL_ISUPPORTS(Module, nsIXPCScriptable) |
|
25 |
|
26 Module::Module() |
|
27 { |
|
28 } |
|
29 |
|
30 Module::~Module() |
|
31 { |
|
32 } |
|
33 |
|
34 #define XPC_MAP_CLASSNAME Module |
|
35 #define XPC_MAP_QUOTED_CLASSNAME "Module" |
|
36 #define XPC_MAP_WANT_CALL |
|
37 #define XPC_MAP_FLAGS nsIXPCScriptable::WANT_CALL |
|
38 #include "xpc_map_end.h" |
|
39 |
|
40 NS_IMETHODIMP |
|
41 Module::Call(nsIXPConnectWrappedNative* wrapper, |
|
42 JSContext* cx, |
|
43 JSObject* obj, |
|
44 const JS::CallArgs& args, |
|
45 bool* _retval) |
|
46 { |
|
47 JS::Rooted<JSObject*> global(cx, JS::CurrentGlobalOrNull(cx)); |
|
48 if (!global) |
|
49 return NS_ERROR_NOT_AVAILABLE; |
|
50 |
|
51 *_retval = !!JS_InitReflect(cx, global); |
|
52 return NS_OK; |
|
53 } |
|
54 |
|
55 } |
|
56 } |
|
57 |
|
58 NS_DEFINE_NAMED_CID(JSREFLECT_CID); |
|
59 |
|
60 static const mozilla::Module::CIDEntry kReflectCIDs[] = { |
|
61 { &kJSREFLECT_CID, false, nullptr, mozilla::reflect::ModuleConstructor }, |
|
62 { nullptr } |
|
63 }; |
|
64 |
|
65 static const mozilla::Module::ContractIDEntry kReflectContracts[] = { |
|
66 { JSREFLECT_CONTRACTID, &kJSREFLECT_CID }, |
|
67 { nullptr } |
|
68 }; |
|
69 |
|
70 static const mozilla::Module kReflectModule = { |
|
71 mozilla::Module::kVersion, |
|
72 kReflectCIDs, |
|
73 kReflectContracts |
|
74 }; |
|
75 |
|
76 NSMODULE_DEFN(jsreflect) = &kReflectModule; |