blob: c497106dfc99db613b1dc1ad84e2291fdf94c4ae [file] [log] [blame]
/**
# Copyright 2018 Taobao (China) Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
**/
#include "js_runtime/runtime/runtime_context_ios.h"
#include <cstdlib>
namespace unicorn {
RuntimeContextIOS::RuntimeContextIOS(RuntimeVM* vm) : vm_(vm), initialized_(false) {
CreateJavaScriptContext();
}
RuntimeContextIOS::~RuntimeContextIOS() { vm_ = nullptr; }
void RuntimeContextIOS::CreateJavaScriptContext() {
// TODO
engine_context_.reset(EngineContext::CreateEngineContext(this, vm_));
RuntimeVM::NotifyContextCreated(this);
}
void RuntimeContextIOS::ReleaseJavaScriptContext() {
RuntimeVM::NotifyContextDestorying(this);
engine_context_.reset();
}
void RuntimeContextIOS::SetName(const std::string& name) {}
void RuntimeContextIOS::InitializeContext() {}
void RuntimeContextIOS::UpdateSetting(const std::string& name) {}
bool RuntimeContextIOS::ExecuteJavaScript(const std::string& content) {
if (!engine_context_)
return false;
engine_context_->RunJavaScript(content);
return true;
}
std::unique_ptr<RuntimeValues> RuntimeContextIOS::ExecuteJavaScriptWithResult(
const std::string& content) {
// TODO
return std::make_unique<RuntimeValues>(
new RuntimeValues(nullptr));
}
void RuntimeContextIOS::NotifyIdle() {}
bool RuntimeContextIOS::Available() {
return engine_context_ ? true : false ;
}
void RuntimeContextIOS::Destroy() {}
void RuntimeContextIOS::OnEngineContextInitialized() {
if (!initialized_) initialized_ = true;
}
void RuntimeContextIOS::OnEngineContextFinalized() { initialized_ = false; }
std::unique_ptr<RuntimeContext> RuntimeContext::Create(RuntimeVM* vm) {
return std::unique_ptr<RuntimeContext>(
static_cast<RuntimeContext*>(new RuntimeContextIOS(vm)));
}
} // namespace unicorn