MCPcopy Create free account
hub / github.com/NativeScript/android / Init

Method Init

test-app/runtime/src/main/cpp/ModuleInternal.cpp:66–130  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

64}
65
66void ModuleInternal::Init(Isolate* isolate, const string& baseDir) {
67 JEnv env;
68
69 if (MODULE_CLASS == nullptr) {
70 MODULE_CLASS = env.FindClass("com/tns/Module");
71 assert(MODULE_CLASS != nullptr);
72
73 RESOLVE_PATH_METHOD_ID = env.GetStaticMethodID(MODULE_CLASS, "resolvePath", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;");
74 assert(RESOLVE_PATH_METHOD_ID != nullptr);
75
76 GET_APPLICATION_FILES_PATH_METHOD_ID = env.GetStaticMethodID(MODULE_CLASS, "getApplicationFilesPath", "()Ljava/lang/String;");
77 assert(GET_APPLICATION_FILES_PATH_METHOD_ID != nullptr);
78 }
79
80 m_isolate = isolate;
81
82 string requireFactoryScript =
83 "(function () { "
84 " function require_factory(requireInternal, dirName) { "
85 " return function require(modulePath) { "
86 " if(global.__requireOverride) { "
87 " var result = global.__requireOverride(modulePath, dirName); "
88 " if(result) { "
89 " return result; "
90 " } "
91 " } "
92 " return requireInternal(modulePath, dirName); "
93 " } "
94 " } "
95 " return require_factory; "
96 "})()";
97
98 auto source = ArgConverter::ConvertToV8String(isolate, requireFactoryScript);
99 auto context = isolate->GetCurrentContext();
100
101 auto global = context->Global();
102
103 Local<Script> script;
104 auto maybeScript = Script::Compile(context, source).ToLocal(&script);
105
106 assert(!script.IsEmpty());
107
108 Local<Value> result;
109 auto maybeResult = script->Run(context).ToLocal(&result);
110
111 assert(!result.IsEmpty() && result->IsFunction());
112
113 auto requireFactoryFunction = result.As<Function>();
114
115 m_requireFactoryFunction = new Persistent<Function>(isolate, requireFactoryFunction);
116
117 auto requireFuncTemplate = FunctionTemplate::New(isolate, RequireCallback, External::New(isolate, this));
118 auto requireFunc = requireFuncTemplate->GetFunction(context).ToLocalChecked();
119 global->Set(context, ArgConverter::ConvertToV8String(isolate, "__nativeRequire"), requireFunc);
120 m_requireFunction = new Persistent<Function>(isolate, requireFunc);
121
122 Local<Function> globalRequire;
123

Callers

nothing calls this directly

Calls 10

NewFunction · 0.85
GetStaticMethodIDMethod · 0.80
ToLocalMethod · 0.80
ToLocalCheckedMethod · 0.80
GetFunctionMethod · 0.80
FindClassMethod · 0.45
GlobalMethod · 0.45
IsEmptyMethod · 0.45
SetMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected