Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/browser-plugin/scriptable.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'browser-plugin/scriptable.cpp')
-rw-r--r--browser-plugin/scriptable.cpp30
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;