示例#1
0
void WebFrame::addToJSWindowObject(const char* name, void *object)
{
    JSC::JSLock lock(false);
    JSDOMWindow *window = toJSDOMWindow(core(this));
    if (!window)
        return;
    
    JSC::Bindings::RootObject *root = core(this)->script()->bindingRootObject();
    JSC::ExecState* exec = window->globalExec();
    JSC::PropertySlot pr;

    if (!window->getOwnPropertySlot(exec, JSC::Identifier(exec, name), pr)) {
        //printf("addToJSWindowObject %p name =%s ok \n", core(this), name);
        //JSC::JSObject *runtimeObject = JSC::Bindings::Instance::createRuntimeObject(exec, JSC::Bindings::BalInstance::create(static_cast<BalObject*>(object), root));
        JSC::JSObject *runtimeObject = JSC::Bindings::Instance::createRuntimeObject(exec, JSC::Bindings::BalInstance::getBalInstance(static_cast<BalObject*>(object), root));
        JSC::PutPropertySlot prop;
        window->put(exec, JSC::Identifier(exec, name), runtimeObject, prop);
    }
}