Changeset 64377 in webkit
- Timestamp:
- Jul 30, 2010, 2:43:48 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r64375 r64377 1 2010-07-30 Anders Carlsson <andersca@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 Implement NPN_Evaluate 6 https://bugs.webkit.org/show_bug.cgi?id=43268 7 8 Add test. 9 10 * plugins/npruntime/evaluate-expected.txt: Added. 11 * plugins/npruntime/evaluate.html: Added. 12 1 13 2010-07-30 Satish Sampath <satish@chromium.org> 2 14 -
trunk/WebKit2/ChangeLog
r64365 r64377 1 2010-07-30 Anders Carlsson <andersca@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 Implement NPN_Evaluate 6 https://bugs.webkit.org/show_bug.cgi?id=43268 7 8 * WebProcess/Plugins/NPRuntimeObjectMap.cpp: 9 (WebKit::NPRuntimeObjectMap::evaluate): 10 Evaluate the passed in string. 11 12 * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: 13 (WebKit::NPN_Evaluate): 14 Call NetscapePlugin::evaluate. 15 16 * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: 17 (WebKit::NetscapePlugin::evaluate): 18 Call PluginController::evaluate. 19 20 * WebProcess/Plugins/PluginController.h: 21 Add evaluate pure virtual member function. 22 23 * WebProcess/Plugins/PluginView.cpp: 24 (WebKit::PluginView::evaluate): 25 Update the popup window state and call NPRuntimeObjectMap::evaluate. 26 1 27 2010-07-30 Anders Carlsson <andersca@apple.com> 2 28 -
trunk/WebKit2/WebProcess/Plugins/NPJSObject.cpp
r64316 r64377 120 120 } 121 121 122 bool NPJSObject::invokeDefault(const NPVariant *arguments, uint32_t argumentCount, NPVariant *result)122 bool NPJSObject::invokeDefault(const NPVariant* arguments, uint32_t argumentCount, NPVariant* result) 123 123 { 124 124 ExecState* exec = m_objectMap->globalExec(); … … 216 216 } 217 217 218 bool NPJSObject::construct(const NPVariant *arguments, uint32_t argumentCount, NPVariant *result)218 bool NPJSObject::construct(const NPVariant* arguments, uint32_t argumentCount, NPVariant* result) 219 219 { 220 220 ExecState* exec = m_objectMap->globalExec(); -
trunk/WebKit2/WebProcess/Plugins/NPRuntimeObjectMap.cpp
r64365 r64377 26 26 #include "NPRuntimeObjectMap.h" 27 27 28 #include <JavaScriptCore/JSLock.h>29 30 28 #include "JSNPObject.h" 31 29 #include "NPJSObject.h" … … 33 31 #include "NotImplemented.h" 34 32 #include "PluginView.h" 33 #include <JavaScriptCore/JSLock.h> 34 #include <JavaScriptCore/SourceCode.h> 35 35 #include <WebCore/Frame.h> 36 36 … … 169 169 } 170 170 171 bool NPRuntimeObjectMap::evaluate(NPObject* npObject, const String&scriptString, NPVariant* result) 172 { 173 ProtectedPtr<JSGlobalObject> globalObject = this->globalObject(); 174 if (!globalObject) 175 return false; 176 177 ExecState* exec = globalObject->globalExec(); 178 179 JSLock lock(SilenceAssertionsOnly); 180 JSValue thisValue = getOrCreateJSObject(globalObject, npObject); 181 182 globalObject->globalData()->timeoutChecker.start(); 183 Completion completion = JSC::evaluate(exec, globalObject->globalScopeChain(), makeSource(UString(scriptString.impl())), thisValue); 184 globalObject->globalData()->timeoutChecker.stop(); 185 186 ComplType completionType = completion.complType(); 187 188 JSValue resultValue; 189 if (completionType == Normal) { 190 resultValue = completion.value(); 191 if (!resultValue) 192 resultValue = jsUndefined(); 193 } else 194 resultValue = jsUndefined(); 195 196 exec->clearException(); 197 198 convertJSValueToNPVariant(exec, resultValue, *result); 199 return true; 200 } 201 171 202 void NPRuntimeObjectMap::invalidate() 172 203 { -
trunk/WebKit2/WebProcess/Plugins/NPRuntimeObjectMap.h
r64365 r64377 39 39 } 40 40 41 namespace WebCore { 42 class String; 43 } 44 41 45 namespace WebKit { 42 46 … … 53 57 // retain it and return it. 54 58 NPObject* getOrCreateNPObject(JSC::JSObject*); 55 56 59 void npJSObjectDestroyed(NPJSObject*); 57 60 58 61 // Returns a JSObject object that wraps the given NPObject. 59 62 JSC::JSObject* getOrCreateJSObject(JSC::JSGlobalObject*, NPObject*); 60 61 63 void jsNPObjectDestroyed(JSNPObject*); 62 64 63 65 void convertJSValueToNPVariant(JSC::ExecState*, JSC::JSValue, NPVariant&); 64 66 JSC::JSValue convertNPVariantToJSValue(JSC::ExecState*, JSC::JSGlobalObject*, const NPVariant&); 67 68 bool evaluate(NPObject*, const WebCore::String&scriptString, NPVariant* result); 65 69 66 70 // Called when the plug-in is destroyed. Will invalidate all the NPObjects. -
trunk/WebKit2/WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp
r64316 r64377 551 551 } 552 552 553 static bool NPN_Invoke(NPP, NPObject *npObject, NPIdentifier methodName, const NPVariant *arguments, uint32_t argumentCount, NPVariant *result)553 static bool NPN_Invoke(NPP, NPObject *npObject, NPIdentifier methodName, const NPVariant* arguments, uint32_t argumentCount, NPVariant* result) 554 554 { 555 555 if (npObject->_class->invoke) … … 559 559 } 560 560 561 static bool NPN_InvokeDefault(NPP, NPObject *npObject, const NPVariant *arguments, uint32_t argumentCount, NPVariant *result)561 static bool NPN_InvokeDefault(NPP, NPObject *npObject, const NPVariant* arguments, uint32_t argumentCount, NPVariant* result) 562 562 { 563 563 if (npObject->_class->invokeDefault) … … 567 567 } 568 568 569 static bool NPN_Evaluate(NPP npp, NPObject *npobj, NPString *script, NPVariant *result) 570 { 571 notImplemented(); 572 return false; 569 static bool NPN_Evaluate(NPP npp, NPObject *npObject, NPString *script, NPVariant* result) 570 { 571 RefPtr<NetscapePlugin> plugin = NetscapePlugin::fromNPP(npp); 572 String scriptString = String::fromUTF8WithLatin1Fallback(script->UTF8Characters, script->UTF8Length); 573 574 return plugin->evaluate(npObject, scriptString, result); 573 575 } 574 576 -
trunk/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
r64304 r64377 149 149 } 150 150 151 bool NetscapePlugin::evaluate(NPObject* npObject, const String& scriptString, NPVariant* result) 152 { 153 return m_pluginController->evaluate(npObject, scriptString, result, allowPopups()); 154 } 155 151 156 NPObject* NetscapePlugin::windowScriptNPObject() 152 157 { -
trunk/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h
r64304 r64377 61 61 NPError destroyStream(NPStream*, NPReason); 62 62 void setStatusbarText(const WebCore::String&); 63 bool evaluate(NPObject*, const WebCore::String&scriptString, NPVariant* result); 63 64 64 65 // These return retained objects. -
trunk/WebKit2/WebProcess/Plugins/PluginController.h
r64304 r64377 28 28 29 29 struct NPObject; 30 typedef struct _NPVariant NPVariant; 30 31 31 32 namespace WebCore { … … 65 66 virtual NPObject* pluginElementNPObject() = 0; 66 67 68 // Evaluates the given script string in the context of the given NPObject. 69 virtual bool evaluate(NPObject*, const WebCore::String&scriptString, NPVariant* result, bool allowPopups) = 0; 70 67 71 // Set the statusbar text. 68 72 virtual void setStatusbarText(const WebCore::String&) = 0; -
trunk/WebKit2/WebProcess/Plugins/PluginView.cpp
r64365 r64377 637 637 } 638 638 639 bool PluginView::evaluate(NPObject* npObject, const String&scriptString, NPVariant* result, bool allowPopups) 640 { 641 if (!frame()) 642 return false; 643 644 bool oldAllowPopups = frame()->script()->allowPopupsFromPlugin(); 645 frame()->script()->setAllowPopupsFromPlugin(allowPopups); 646 647 // FIXME: What happens if calling evaluate will cause the plug-in view to go away. 648 bool returnValue = m_npRuntimeObjectMap.evaluate(npObject, scriptString, result); 649 650 frame()->script()->setAllowPopupsFromPlugin(oldAllowPopups); 651 652 return returnValue; 653 } 654 639 655 void PluginView::setStatusbarText(const String& statusbarText) 640 656 { -
trunk/WebKit2/WebProcess/Plugins/PluginView.h
r64365 r64377 104 104 virtual NPObject* windowScriptNPObject(); 105 105 virtual NPObject* pluginElementNPObject(); 106 virtual bool evaluate(NPObject*, const WebCore::String&scriptString, NPVariant* result, bool allowPopups); 106 107 virtual void setStatusbarText(const WebCore::String&); 107 108
Note:
See TracChangeset
for help on using the changeset viewer.