// static
void XWalkExtensionRendererController::DidCreateScriptContext(
v8::Local<v8::Context> context) {
+ base::AutoLock lock(script_context_lock);
// Initialize context's aligned pointer in embedder data with nullptr
// This should be handled even if 'is_shutdown_' = true, otherise,
// GetAlignedPointerFromEmbedderData can give invalid uninitialized memory.
- base::AutoLock lock(script_context_lock);
XWalkExtensionContextData::SetContextData(nullptr, context);
+ auto& controller = GetInstance();
+ controller.context_data_initialized = true;
// Skip plugin loading after application exit request.
if (is_shutdown_)
"objecttools", base::WrapUnique(new ObjectToolsModule));
}
- auto& controller = GetInstance();
controller.Initialize(execution_context);
for (auto& it : controller.description_map_) {
void XWalkExtensionRendererController::WillReleaseScriptContext(
v8::Local<v8::Context> context) {
base::AutoLock lock(script_context_lock);
+ // if context_data not initialize, when GetAlignedPointerFromEmbedderData
+ // can give invalid uninitialized memory.
+ auto& controller = GetInstance();
+ if (!controller.context_data_initialized) {
+ LOG(ERROR) << "context_data not initialize!";
+ return;
+ }
+
v8::Context::Scope context_scope(context);
XWalkExtensionContextData::DeleteContextData(context);
}