diff options
Diffstat (limited to 'browser-plugin/scriptable.cpp')
-rw-r--r-- | browser-plugin/scriptable.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/browser-plugin/scriptable.cpp b/browser-plugin/scriptable.cpp index 81caeb0..833d24f 100644 --- a/browser-plugin/scriptable.cpp +++ b/browser-plugin/scriptable.cpp @@ -23,6 +23,10 @@ #include "plugin.h" #include <string.h> +// FIXME: attempts to call methods are resulting in +// Error: NPMethod called on non-NPObject wrapped JSObject! +#define CAN_CALL_METHODS 0 + void ScriptablePluginObjectBase::Invalidate () { @@ -203,6 +207,7 @@ ScriptablePluginObject::ScriptablePluginObject (NPP npp) : mZoomInID = NPN_GetStringIdentifier ("zoomIn"); mZoomOutID = NPN_GetStringIdentifier ("zoomOut"); + mFindTermsID = NPN_GetStringIdentifier ("findTerms"); mFindPreviousID = NPN_GetStringIdentifier ("findPrevious"); mFindNextID = NPN_GetStringIdentifier ("findNext"); } @@ -210,6 +215,7 @@ ScriptablePluginObject::ScriptablePluginObject (NPP npp) : bool ScriptablePluginObject::HasMethod (NPIdentifier name) { +#if CAN_CALL_METHODS NPIdentifier methods[] = { mZoomInID, mZoomOutID, @@ -222,6 +228,7 @@ ScriptablePluginObject::HasMethod (NPIdentifier name) return true; } } +#endif return false; } @@ -230,6 +237,11 @@ bool ScriptablePluginObject::HasProperty (NPIdentifier name) { NPIdentifier properties[] = { +#if !CAN_CALL_METHODS + mFindTermsID, + mFindNextID, + mFindPreviousID, +#endif mTitleID, mZoomID, mCanCopyID, @@ -325,6 +337,22 @@ ScriptablePluginObject::SetProperty (NPIdentifier name, const NPVariant *value) plugin->CopyClipboard (); return true; +#if !CAN_CALL_METHODS + } else if (name == mFindTermsID) { + if (!NPVARIANT_IS_STRING (*value)) { + NPN_SetException (this, "Invalid type for findTerms, expected a string"); + return false; + } + + plugin->Find (NPVARIANT_TO_STRING (*value).utf8characters); + return true; + } else if (name == mFindNextID) { + plugin->FindNext (); + return true; + } else if (name == mFindPreviousID) { + plugin->FindPrevious (); + return true; +#endif } return false; @@ -358,6 +386,7 @@ ScriptablePluginObject::Invoke (NPIdentifier name, const NPVariant *args, } else if (name == mZoomOutID) { plugin->ZoomOut (); return true; +#if CAN_CALL_METHODS } else if (name == mFindNextID) { if (argCount < 1 || !NPVARIANT_IS_STRING (args[0])) { return false; @@ -370,6 +399,7 @@ ScriptablePluginObject::Invoke (NPIdentifier name, const NPVariant *args, } plugin->FindPrevious(NPVARIANT_TO_STRING (args[0]).utf8characters); return true; +#endif } return false; |