NPObject* ScriptController::createScriptObjectForPluginElement(HTMLPlugInElement* plugin) { // Can't create NPObjects when JavaScript is disabled. if (!canExecuteScripts()) return createNoScriptObject(); v8::HandleScope handleScope; v8::Handle<v8::Context> v8Context = V8Proxy::mainWorldContext(m_frame); if (v8Context.IsEmpty()) return createNoScriptObject(); v8::Context::Scope scope(v8Context); DOMWindow* window = m_frame->domWindow(); v8::Handle<v8::Value> v8plugin = toV8(static_cast<HTMLEmbedElement*>(plugin)); if (!v8plugin->IsObject()) return createNoScriptObject(); return npCreateV8ScriptObject(0, v8::Handle<v8::Object>::Cast(v8plugin), window); }
NPObject* ScriptController::createScriptObjectForPluginElement(HTMLPlugInElement* plugin) { // Can't create NPObjects when JavaScript is disabled. if (!isEnabled()) return createNoScriptObject(); v8::HandleScope handleScope; v8::Handle<v8::Context> context = V8Proxy::GetContext(m_frame); if (context.IsEmpty()) return createNoScriptObject(); v8::Context::Scope scope(context); DOMWindow* window = m_frame->domWindow(); v8::Handle<v8::Value> v8plugin = V8Proxy::ToV8Object(V8ClassIndex::HTMLEMBEDELEMENT, plugin); if (!v8plugin->IsObject()) return createNoScriptObject(); return npCreateV8ScriptObject(0, v8::Handle<v8::Object>::Cast(v8plugin), window); }
static NPObject* createScriptObject(Frame* frame) { v8::HandleScope handleScope; v8::Handle<v8::Context> v8Context = V8Proxy::mainWorldContext(frame); if (v8Context.IsEmpty()) return createNoScriptObject(); v8::Context::Scope scope(v8Context); DOMWindow* window = frame->domWindow(); v8::Handle<v8::Value> global = toV8(window); ASSERT(global->IsObject()); return npCreateV8ScriptObject(0, v8::Handle<v8::Object>::Cast(global), window); }
static NPObject* createScriptObject(Frame* frame) { v8::HandleScope handleScope; v8::Handle<v8::Context> context = V8Proxy::GetContext(frame); if (context.IsEmpty()) return createNoScriptObject(); v8::Context::Scope scope(context); DOMWindow* window = frame->domWindow(); v8::Handle<v8::Value> global = V8Proxy::ToV8Object(V8ClassIndex::DOMWINDOW, window); ASSERT(global->IsObject()); return npCreateV8ScriptObject(0, v8::Handle<v8::Object>::Cast(global), window); }
NPObject* ScriptController::windowScriptNPObject() { if (m_windowScriptNPObject) return m_windowScriptNPObject; if (canExecuteScripts()) { // JavaScript is enabled, so there is a JavaScript window object. // Return an NPObject bound to the window object. m_windowScriptNPObject = createScriptObject(m_frame); _NPN_RegisterObject(m_windowScriptNPObject, 0); } else { // JavaScript is not enabled, so we cannot bind the NPObject to the // JavaScript window object. Instead, we create an NPObject of a // different class, one which is not bound to a JavaScript object. m_windowScriptNPObject = createNoScriptObject(); } return m_windowScriptNPObject; }