summaryrefslogtreecommitdiffstats
path: root/third_party/npapi
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-11 20:06:07 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-11 20:06:07 +0000
commitd88a23dbeada3ba7639bcbe2d4b73dcaf9cc789e (patch)
treefab5aaed66f3c7e222e64320f938a612f6276a13 /third_party/npapi
parentc51e8d50a9314b0580444ed93640b7ae1a2433b8 (diff)
downloadchromium_src-d88a23dbeada3ba7639bcbe2d4b73dcaf9cc789e.zip
chromium_src-d88a23dbeada3ba7639bcbe2d4b73dcaf9cc789e.tar.gz
chromium_src-d88a23dbeada3ba7639bcbe2d4b73dcaf9cc789e.tar.bz2
Beef up NPSPY a bit while tracking down bug 28809. This adds proper logging to the new NPAPI functions along with the UI to disable it. I also started to use std::string in places which used fixed buffers, since they caused crashes.
Review URL: http://codereview.chromium.org/486017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34372 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'third_party/npapi')
-rw-r--r--third_party/npapi/npspy/common/format.cpp332
-rw-r--r--third_party/npapi/npspy/common/logfile.cpp4
-rw-r--r--third_party/npapi/npspy/common/logger.cpp12
-rw-r--r--third_party/npapi/npspy/common/npn_gate.cpp201
-rw-r--r--third_party/npapi/npspy/common/plugload.cpp3
-rw-r--r--third_party/npapi/npspy/common/utils.cpp2
-rw-r--r--third_party/npapi/npspy/include/actionnames.h22
-rw-r--r--third_party/npapi/npspy/include/format.h25
-rw-r--r--third_party/npapi/npspy/include/logfile.h4
-rw-r--r--third_party/npapi/npspy/include/logger.h4
-rw-r--r--third_party/npapi/npspy/include/xp.h2
-rw-r--r--third_party/npapi/npspy/windows/loggerw.cpp24
-rw-r--r--third_party/npapi/npspy/windows/loggerw.h4
-rw-r--r--third_party/npapi/npspy/windows/npspy.rc154
-rw-r--r--third_party/npapi/npspy/windows/resource.h66
15 files changed, 548 insertions, 311 deletions
diff --git a/third_party/npapi/npspy/common/format.cpp b/third_party/npapi/npspy/common/format.cpp
index 45a5707..8135669 100644
--- a/third_party/npapi/npspy/common/format.cpp
+++ b/third_party/npapi/npspy/common/format.cpp
@@ -35,6 +35,11 @@
*
* ***** END LICENSE BLOCK ***** */
+#include <string>
+#include <vector>
+#include <errno.h>
+
+
#include "xp.h"
#include "format.h"
@@ -42,6 +47,147 @@
extern Logger * logger;
+////////////////////////////////////////////////////////////////////////////////
+// From Google Chrome's string_util.cc
+
+// It's possible for functions that use a va_list, such as StringPrintf, to
+// invalidate the data in it upon use. The fix is to make a copy of the
+// structure before using it and use that copy instead. va_copy is provided
+// for this purpose. MSVC does not provide va_copy, so define an
+// implementation here. It is not guaranteed that assignment is a copy, so the
+// StringUtil.__GNUC__ unit test tests this capability.
+#if defined(COMPILER_GCC)
+#define GG_VA_COPY(a, b) (va_copy(a, b))
+#elif defined(_MSC_VER)
+#define GG_VA_COPY(a, b) (a = b)
+#endif
+
+
+// The arraysize(arr) macro returns the # of elements in an array arr.
+// The expression is a compile-time constant, and therefore can be
+// used in defining new arrays, for example. If you use arraysize on
+// a pointer by mistake, you will get a compile-time error.
+//
+// One caveat is that arraysize() doesn't accept any array of an
+// anonymous type or a type defined inside a function. In these rare
+// cases, you have to use the unsafe ARRAYSIZE_UNSAFE() macro below. This is
+// due to a limitation in C++'s template system. The limitation might
+// eventually be removed, but it hasn't happened yet.
+
+// This template function declaration is used in defining arraysize.
+// Note that the function doesn't need an implementation, as we only
+// use its type.
+template <typename T, size_t N>
+char (&ArraySizeHelper(T (&array)[N]))[N];
+
+// That gcc wants both of these prototypes seems mysterious. VC, for
+// its part, can't decide which to use (another mystery). Matching of
+// template overloads: the final frontier.
+#ifndef _MSC_VER
+template <typename T, size_t N>
+char (&ArraySizeHelper(const T (&array)[N]))[N];
+#endif
+
+#define arraysize(array) (sizeof(ArraySizeHelper(array)))
+
+#if defined(_WIN32)
+inline int vsnprintf(char* buffer, size_t size,
+ const char* format, va_list arguments) {
+ int length = vsnprintf_s(buffer, size, size - 1, format, arguments);
+ if (length < 0)
+ return _vscprintf(format, arguments);
+ return length;
+}
+#else
+inline int vsnprintf(char* buffer, size_t size,
+ const char* format, va_list arguments) {
+ return ::vsnprintf(buffer, size, format, arguments);
+}
+#endif
+
+
+// Templatized backend for StringPrintF/StringAppendF. This does not finalize
+// the va_list, the caller is expected to do that.
+template <class StringType>
+static void StringAppendVT(StringType* dst,
+ const typename StringType::value_type* format,
+ va_list ap) {
+ // First try with a small fixed size buffer.
+ // This buffer size should be kept in sync with StringUtilTest.GrowBoundary
+ // and StringUtilTest.StringPrintfBounds.
+ typename StringType::value_type stack_buf[1024];
+
+ va_list ap_copy;
+ GG_VA_COPY(ap_copy, ap);
+
+#if !defined(_WIN32)
+ errno = 0;
+#endif
+ int result = vsnprintf(stack_buf, arraysize(stack_buf), format, ap_copy);
+ va_end(ap_copy);
+
+ if (result >= 0 && result < static_cast<int>(arraysize(stack_buf))) {
+ // It fit.
+ dst->append(stack_buf, result);
+ return;
+ }
+
+ // Repeatedly increase buffer size until it fits.
+ int mem_length = arraysize(stack_buf);
+ while (true) {
+ if (result < 0) {
+#if !defined(_WIN32)
+ // On Windows, vsnprintf always returns the number of characters in a
+ // fully-formatted string, so if we reach this point, something else is
+ // wrong and no amount of buffer-doubling is going to fix it.
+ if (errno != 0 && errno != EOVERFLOW)
+#endif
+ {
+ // If an error other than overflow occurred, it's never going to work.
+ return;
+ }
+ // Try doubling the buffer size.
+ mem_length *= 2;
+ } else {
+ // We need exactly "result + 1" characters.
+ mem_length = result + 1;
+ }
+
+ if (mem_length > 32 * 1024 * 1024) {
+ // That should be plenty, don't try anything larger. This protects
+ // against huge allocations when using vsnprintf implementations that
+ // return -1 for reasons other than overflow without setting errno.
+ return;
+ }
+
+ std::vector<typename StringType::value_type> mem_buf(mem_length);
+
+ // NOTE: You can only use a va_list once. Since we're in a while loop, we
+ // need to make a new copy each time so we don't use up the original.
+ GG_VA_COPY(ap_copy, ap);
+ result = vsnprintf(&mem_buf[0], mem_length, format, ap_copy);
+ va_end(ap_copy);
+
+ if ((result >= 0) && (result < mem_length)) {
+ // It fit.
+ dst->append(&mem_buf[0], result);
+ return;
+ }
+ }
+}
+
+std::string StringPrintf(const char* format, ...) {
+ va_list ap;
+ va_start(ap, format);
+ std::string result;
+ StringAppendVT(&result, format, ap);
+ va_end(ap);
+ return result;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+
char * FormatNPAPIError(int iError)
{
static char szError[64];
@@ -548,10 +694,8 @@ void freeLogItemStruct(LogItemStruct * lis)
delete lis;
}
-int formatLogItem(LogItemStruct * plis, char * szOutput, BOOL bDOSStyle)
+void formatLogItem(LogItemStruct * plis, std::string* output, BOOL bDOSStyle)
{
- int iRet = 0;
- static char szString[1024];
static char szEOL[8];
static char szEOI[256];
static char szEndOfItem[] = "";
@@ -569,8 +713,6 @@ int formatLogItem(LogItemStruct * plis, char * szOutput, BOOL bDOSStyle)
//strcat(szEOI, "\n");
}
- szOutput[0] = '\0';
-
DWORD dw1 = plis->arg1.dwArg;
DWORD dw2 = plis->arg2.dwArg;
DWORD dw3 = plis->arg3.dwArg;
@@ -594,22 +736,22 @@ int formatLogItem(LogItemStruct * plis, char * szOutput, BOOL bDOSStyle)
// NPN action
case action_npn_version:
if((plis->arg1.pData != NULL)&&(plis->arg2.pData != NULL)&&(plis->arg3.pData != NULL)&&(plis->arg4.pData != NULL))
- sprintf(szString, "NPN_Version(%#08lx, %#08lx, %#08lx, %#08lx)%s", dw1,dw2,dw3,dw4,szEOL);
+ *output = StringPrintf("NPN_Version(%#08lx, %#08lx, %#08lx, %#08lx)", dw1,dw2,dw3,dw4);
else
- sprintf(szString, "NPN_Version(%#08lx, %#08lx, %#08lx, %#08lx)%s", dw1,dw2,dw3,dw4,szEOL);
+ *output = StringPrintf("NPN_Version(%#08lx, %#08lx, %#08lx, %#08lx)", dw1,dw2,dw3,dw4);
break;
case action_npn_get_url_notify:
{
FormatPCHARArgument(sz2, sizeof(sz2), &plis->arg2);
FormatPCHARArgument(sz3, sizeof(sz3), &plis->arg3);
- sprintf(szString, "NPN_GetURLNotify(%#08lx, %s, %s, %#08lx)%s", dw1,sz2,sz3,dw4,szEOL);
+ *output = StringPrintf("NPN_GetURLNotify(%#08lx, %s, %s, %#08lx)", dw1,sz2,sz3,dw4);
break;
}
case action_npn_get_url:
{
FormatPCHARArgument(sz2, sizeof(sz2), &plis->arg2);
FormatPCHARArgument(sz3, sizeof(sz3), &plis->arg3);
- sprintf(szString, "NPN_GetURL(%#08lx, %s, %s)%s", dw1,sz2,sz3,szEOL);
+ *output = StringPrintf("NPN_GetURL(%#08lx, %s, %s)", dw1,sz2,sz3);
break;
}
case action_npn_post_url_notify:
@@ -619,8 +761,8 @@ int formatLogItem(LogItemStruct * plis, char * szOutput, BOOL bDOSStyle)
FormatPCHARArgument(sz5, sizeof(sz5), &plis->arg5);
FormatBOOLArgument(sz6, sizeof(sz6), &plis->arg6);
- sprintf(szString, "NPN_PostURLNotify(%#08lx, %s, %s, %li, %s, %s, %#08lx)%s",
- dw1,sz2,sz3,(uint32)dw4,sz5,sz6,dw7,szEOL);
+ *output = StringPrintf("NPN_PostURLNotify(%#08lx, %s, %s, %li, %s, %s, %#08lx)",
+ dw1,sz2,sz3,(uint32)dw4,sz5,sz6,dw7);
break;
}
case action_npn_post_url:
@@ -630,8 +772,8 @@ int formatLogItem(LogItemStruct * plis, char * szOutput, BOOL bDOSStyle)
FormatPCHARArgument(sz5, sizeof(sz5), &plis->arg5);
FormatBOOLArgument(sz6, sizeof(sz6), &plis->arg6);
- sprintf(szString, "NPN_PostURL(%#08lx, %s, %s, %li, %s, %s)%s",
- dw1,sz2,sz3,(uint32)dw4,sz5,sz6,szEOL);
+ *output = StringPrintf("NPN_PostURL(%#08lx, %s, %s, %li, %s, %s)",
+ dw1,sz2,sz3,(uint32)dw4,sz5,sz6);
break;
}
case action_npn_new_stream:
@@ -639,53 +781,53 @@ int formatLogItem(LogItemStruct * plis, char * szOutput, BOOL bDOSStyle)
FormatPCHARArgument(sz2, sizeof(sz2), &plis->arg2);
FormatPCHARArgument(sz3, sizeof(sz3), &plis->arg3);
if(plis->arg4.pData != NULL)
- sprintf(szString, "NPN_NewStream(%#08lx, %s, %s, %#08lx(%#08lx))%s",
- dw1, sz2,sz3,dw4,*(DWORD *)plis->arg4.pData,szEOL);
+ *output = StringPrintf("NPN_NewStream(%#08lx, %s, %s, %#08lx(%#08lx))",
+ dw1, sz2,sz3,dw4,*(DWORD *)plis->arg4.pData);
else
- sprintf(szString, "NPN_NewStream(%#08lx, \"%s\", \"%s\", %#08lx)%s", dw1, sz2,sz3,dw4,szEOL);
+ *output = StringPrintf("NPN_NewStream(%#08lx, \"%s\", \"%s\", %#08lx)", dw1, sz2,sz3,dw4);
break;
}
case action_npn_destroy_stream:
- sprintf(szString, "NPN_DestroyStream(%#08lx, %#08lx, %s)%s", dw1,dw2,FormatNPAPIReason((int)dw3),szEOL);
+ *output = StringPrintf("NPN_DestroyStream(%#08lx, %#08lx, %s)", dw1,dw2,FormatNPAPIReason((int)dw3));
break;
case action_npn_request_read:
- sprintf(szString, "NPN_RequestRead(%#08lx, %#08lx)%s", dw1, dw2, szEOL);
+ *output = StringPrintf("NPN_RequestRead(%#08lx, %#08lx)", dw1, dw2);
break;
case action_npn_write:
{
FormatPCHARArgument(sz4, sizeof(sz4), &plis->arg4);
- sprintf(szString, "NPN_Write(%#08lx, %#08lx, %li, %s)%s", dw1, dw2, (int32)dw3, sz4, szEOL);
+ *output = StringPrintf("NPN_Write(%#08lx, %#08lx, %li, %s)", dw1, dw2, (int32)dw3, sz4);
break;
}
case action_npn_status:
{
FormatPCHARArgument(sz2, sizeof(sz2), &plis->arg2);
- sprintf(szString, "NPN_Status(%#08lx, %s)%s", dw1, sz2, szEOL);
+ *output = StringPrintf("NPN_Status(%#08lx, %s)", dw1, sz2);
break;
}
case action_npn_user_agent:
- sprintf(szString, "NPN_UserAgent(%#08lx)%s", dw1, szEOL);
+ *output = StringPrintf("NPN_UserAgent(%#08lx)", dw1);
break;
case action_npn_mem_alloc:
- sprintf(szString, "NPN_MemAlloc(%li)%s", dw1, szEOL);
+ *output = StringPrintf("NPN_MemAlloc(%li)", dw1);
break;
case action_npn_mem_free:
- sprintf(szString, "NPN_MemFree(%#08lx)%s", dw1,szEOL);
+ *output = StringPrintf("NPN_MemFree(%#08lx)", dw1);
break;
case action_npn_mem_flush:
- sprintf(szString, "NPN_MemFlush(%li)%s", dw1, szEOL);
+ *output = StringPrintf("NPN_MemFlush(%li)", dw1);
break;
case action_npn_reload_plugins:
{
FormatBOOLArgument(sz1, sizeof(sz1), &plis->arg1);
- sprintf(szString, "NPN_ReloadPlugins(%s)%s", sz1,szEOL);
+ *output = StringPrintf("NPN_ReloadPlugins(%s)", sz1);
break;
}
case action_npn_get_java_env:
- sprintf(szString, "NPN_GetJavaEnv()%s", szEOL);
+ *output = StringPrintf("NPN_GetJavaEnv()");
break;
case action_npn_get_java_peer:
- sprintf(szString, "NPN_GetJavaPeer(%#08lx)%s", dw1, szEOL);
+ *output = StringPrintf("NPN_GetJavaPeer(%#08lx)", dw1);
break;
case action_npn_get_value:
{
@@ -695,19 +837,19 @@ int formatLogItem(LogItemStruct * plis, char * szOutput, BOOL bDOSStyle)
case NPNVxtAppContext:
case NPNVnetscapeWindow:
if(dw3 != 0L)
- sprintf(szString, "NPN_GetValue(%#08lx, %s, %#08lx(%#08lx))%s",dw1,FormatNPNVariable((NPNVariable)dw2),dw3,*(DWORD *)dw3,szEOL);
+ *output = StringPrintf("NPN_GetValue(%#08lx, %s, %#08lx(%#08lx))",dw1,FormatNPNVariable((NPNVariable)dw2),dw3,*(DWORD *)dw3);
else
- sprintf(szString, "NPN_GetValue(%#08lx, %s, %#08lx)%s",dw1,FormatNPNVariable((NPNVariable)dw2),dw3,szEOL);
+ *output = StringPrintf("NPN_GetValue(%#08lx, %s, %#08lx)",dw1,FormatNPNVariable((NPNVariable)dw2),dw3);
break;
case NPNVjavascriptEnabledBool:
case NPNVasdEnabledBool:
case NPNVisOfflineBool:
if(dw3 != 0L)
- sprintf(szString, "NPN_GetValue(%#08lx, %s, %#08lx(%s))%s",
+ *output = StringPrintf("NPN_GetValue(%#08lx, %s, %#08lx(%s))",
dw1,FormatNPNVariable((NPNVariable)dw2),dw3,
- (((NPBool)*(DWORD *)dw3) == TRUE) ? "TRUE" : "FALSE", szEOL);
+ (((NPBool)*(DWORD *)dw3) == TRUE) ? "TRUE" : "FALSE");
else
- sprintf(szString, "NPN_GetValue(%#08lx, %s, %#08lx)%s",dw1,FormatNPNVariable((NPNVariable)dw2),dw3,szEOL);
+ *output = StringPrintf("NPN_GetValue(%#08lx, %s, %#08lx)",dw1,FormatNPNVariable((NPNVariable)dw2),dw3);
break;
default:
break;
@@ -719,13 +861,13 @@ int formatLogItem(LogItemStruct * plis, char * szOutput, BOOL bDOSStyle)
if(((NPPVariable)dw2 == NPPVpluginNameString) || ((NPPVariable)dw2 == NPPVpluginDescriptionString))
{
FormatPCHARArgument(sz3, sizeof(sz3), &plis->arg3);
- sprintf(szString, "NPN_SetValue(%#08lx, %s, %s)%s", dw1,FormatNPPVariable((NPPVariable)dw2),sz3,szEOL);
+ *output = StringPrintf("NPN_SetValue(%#08lx, %s, %s)", dw1,FormatNPPVariable((NPPVariable)dw2),sz3);
}
else if(((NPPVariable)dw2 == NPPVpluginWindowBool) || ((NPPVariable)dw2 == NPPVpluginTransparentBool))
{
FormatPBOOLArgument(sz3, sizeof(sz3), &plis->arg3);
- sprintf(szString, "NPN_SetValue(%#08lx, %s, %s)%s",
- dw1,FormatNPPVariable((NPPVariable)dw2),sz3,szEOL);
+ *output = StringPrintf("NPN_SetValue(%#08lx, %s, %s)",
+ dw1,FormatNPPVariable((NPPVariable)dw2),sz3);
}
else if((NPPVariable)dw2 == NPPVpluginWindowSize)
{
@@ -733,15 +875,15 @@ int formatLogItem(LogItemStruct * plis, char * szOutput, BOOL bDOSStyle)
{
int32 iWidth = ((NPSize *)plis->arg3.pData)->width;
int32 iHeight = ((NPSize *)plis->arg3.pData)->height;
- sprintf(szString, "NPN_SetValue(%#08lx, %s, %#08lx(%li,%li))%s",
- dw1,FormatNPPVariable((NPPVariable)dw2),dw3,iWidth,iHeight,szEOL);
+ *output = StringPrintf("NPN_SetValue(%#08lx, %s, %#08lx(%li,%li))",
+ dw1,FormatNPPVariable((NPPVariable)dw2),dw3,iWidth,iHeight);
}
else
- sprintf(szString, "NPN_SetValue(%#08lx, %s, %#08lx(?,?))%s",
- dw1,FormatNPPVariable((NPPVariable)dw2),dw3,szEOL);
+ *output = StringPrintf("NPN_SetValue(%#08lx, %s, %#08lx(?,?))",
+ dw1,FormatNPPVariable((NPPVariable)dw2),dw3);
}
else
- sprintf(szString, "NPN_SetValue(%#08lx, %s, %#08lx(What is it?))%s", dw1,FormatNPPVariable((NPPVariable)dw2),dw3,szEOL);
+ *output = StringPrintf("NPN_SetValue(%#08lx, %s, %#08lx(What is it?))", dw1,FormatNPPVariable((NPPVariable)dw2),dw3);
break;
case action_npn_invalidate_rect:
{
@@ -751,17 +893,77 @@ int formatLogItem(LogItemStruct * plis, char * szOutput, BOOL bDOSStyle)
uint16 left = ((NPRect *)plis->arg2.pData)->left;
uint16 bottom = ((NPRect *)plis->arg2.pData)->bottom;
uint16 right = ((NPRect *)plis->arg2.pData)->right;
- sprintf(szString, "NPN_InvalidateRect(%#08lx, %#08lx(%u,%u;%u,%u)%s", dw1,dw2,top,left,bottom,right,szEOL);
+ *output = StringPrintf("NPN_InvalidateRect(%#08lx, %#08lx(%u,%u;%u,%u)", dw1,dw2,top,left,bottom,right);
}
else
- sprintf(szString, "NPN_InvalidateRect(%#08lx, %#08lx(?,?,?,?)%s", dw1,dw2,szEOL);
+ *output = StringPrintf("NPN_InvalidateRect(%#08lx, %#08lx(?,?,?,?)", dw1,dw2);
break;
}
case action_npn_invalidate_region:
- sprintf(szString, "NPN_InvalidateRegion(%#08lx, %#08lx)%s", dw1,dw2,szEOL);
+ *output = StringPrintf("NPN_InvalidateRegion(%#08lx, %#08lx)", dw1,dw2);
break;
case action_npn_force_redraw:
- sprintf(szString, "NPN_ForceRedraw(%#08lx)%s", dw1,szEOL);
+ *output = StringPrintf("NPN_ForceRedraw(%#08lx)", dw1);
+ break;
+ case action_npn_enumerate:
+ *output = StringPrintf("NPN_Enumerate()");
+ break;
+ case action_npn_pop_popups_enabled_state:
+ *output = StringPrintf("NPN_PopPopupsEnabledState()");
+ break;
+ case action_npn_push_popups_enabled_state:
+ *output = StringPrintf("NPN_PushPopupsEnabledState()");
+ break;
+ case action_npn_set_exception:
+ *output = StringPrintf("NPN_SetException(%s)", dw1);
+ break;
+ case action_npn_has_method:
+ *output = StringPrintf("NPN_HasMethod(%d)", dw1);
+ break;
+ case action_npn_has_property:
+ *output = StringPrintf("NPN_HasProperty(%d)", dw1);
+ break;
+ case action_npn_remove_property:
+ *output = StringPrintf("NPN_RemoveProperty(%d)", dw1);
+ break;
+ case action_npn_set_property:
+ *output = StringPrintf("NPN_SetProperty(%d)", dw1);
+ break;
+ case action_npn_get_property:
+ *output = StringPrintf("NPN_GetProperty(%d)", dw1);
+ break;
+ case action_npn_evaluate:
+ *output = StringPrintf("NPN_Evaluate(%s)", dw1);
+ break;
+ case action_npn_invoke_default:
+ *output = StringPrintf("NPN_InvokeDefault(%#08lx)", dw1);
+ break;
+ case action_npn_invoke:
+ *output = StringPrintf("NPN_Invoke(%#08lx)", dw1);
+ break;
+ case action_npn_release_object:
+ *output = StringPrintf("NPN_ReleaseObject(%d)", dw1);
+ break;
+ case action_npn_retain_object:
+ *output = StringPrintf("NPN_RetainObject(%d)", dw1);
+ break;
+ case action_npn_create_object:
+ *output = StringPrintf("NPN_CreateObject(%#08lx)", dw1);
+ break;
+ case action_npn_int_from_identifier:
+ *output = StringPrintf("NPN_IntFromIdentifier(%d)", dw1);
+ break;
+ case action_npn_utf8_from_identifier:
+ *output = StringPrintf("NPN_UTF8FromIdentifier(%d)", dw1);
+ break;
+ case action_npn_identifier_is_string:
+ *output = StringPrintf("NPN_IdentifierIsString(%d)", dw1);
+ break;
+ case action_npn_get_int_identifer:
+ *output = StringPrintf("NPN_GetIntIdentifier(%d)", dw1);
+ break;
+ case action_npn_get_string_identifiers:
+ *output = StringPrintf("NPN_GetStringIdentifier()");
break;
// NPP action
@@ -780,12 +982,12 @@ int formatLogItem(LogItemStruct * plis, char * szOutput, BOOL bDOSStyle)
strcpy(szMode, "[Invalid mode]");
break;
}
- sprintf(szString, "NPP_New(\"%s\", %#08lx, %s, %i, %#08lx, %#08lx, %#08lx)%s",
- (char *)dw1,dw2,szMode,(int)dw4,dw5,dw6,dw7,szEOL);
+ *output = StringPrintf("NPP_New(\"%s\", %#08lx, %s, %i, %#08lx, %#08lx, %#08lx)",
+ (char *)dw1,dw2,szMode,(int)dw4,dw5,dw6,dw7);
break;
}
case action_npp_destroy:
- sprintf(szString, "NPP_Destroy(%#08lx, %#08lx(%#08lx))%s", dw1, dw2, *(DWORD *)plis->arg2.pData,szEOL);
+ *output = StringPrintf("NPP_Destroy(%#08lx, %#08lx(%#08lx))", dw1, dw2, *(DWORD *)plis->arg2.pData);
break;
case action_npp_set_window:
{
@@ -816,10 +1018,10 @@ int formatLogItem(LogItemStruct * plis, char * szOutput, BOOL bDOSStyle)
((NPWindow*)plis->arg2.pData)->clipRect.left,
((NPWindow*)plis->arg2.pData)->clipRect.bottom,
((NPWindow*)plis->arg2.pData)->clipRect.right, szType);
- sprintf(szString, "NPP_SetWindow(%#08lx, %#08lx)%s%s%s", dw1,dw2," ",szWindow,szEOL);
+ *output = StringPrintf("NPP_SetWindow(%#08lx, %#08lx) %s", dw1,dw2,szWindow);
}
else
- sprintf(szString, "NPP_SetWindow(%#08lx, %#08lx)%s", dw1,dw2,szEOL);
+ *output = StringPrintf("NPP_SetWindow(%#08lx, %#08lx)", dw1,dw2);
break;
}
@@ -841,57 +1043,55 @@ int formatLogItem(LogItemStruct * plis, char * szOutput, BOOL bDOSStyle)
break;
}
FormatPCHARArgument(sz2, sizeof(sz2), &plis->arg2);
- sprintf(szString, "NPP_NewStream(%#08lx, %s, %#08lx (%s), %s, %s)%s", dw1, sz2, dw3,
- ((NPStream*)dw3)->url, ((NPBool)dw4 == TRUE) ? "TRUE" : "FALSE", sz5, szEOL);
+ *output = StringPrintf("NPP_NewStream(%#08lx, %s, %#08lx (%s), %s, %s)", dw1, sz2, dw3,
+ ((NPStream*)dw3)->url, ((NPBool)dw4 == TRUE) ? "TRUE" : "FALSE", sz5);
break;
}
case action_npp_destroy_stream:
- sprintf(szString, "NPP_DestroyStream(%#08lx, %#08lx, %s)%s", dw1,dw2,FormatNPAPIReason((int)dw3),szEOL);
+ *output = StringPrintf("NPP_DestroyStream(%#08lx, %#08lx, %s)", dw1,dw2,FormatNPAPIReason((int)dw3));
break;
case action_npp_stream_as_file:
FormatPCHARArgument(sz3, sizeof(sz3), &plis->arg3);
- sprintf(szString, "NPP_StreamAsFile(%#08lx, %#08lx, %s)%s", dw1,dw2,sz3,szEOL);
+ *output = StringPrintf("NPP_StreamAsFile(%#08lx, %#08lx, %s)", dw1,dw2,sz3);
break;
case action_npp_write_ready:
- sprintf(szString, "NPP_WriteReady(%#08lx, %#08lx)%s", dw1,dw2,szEOL);
+ *output = StringPrintf("NPP_WriteReady(%#08lx, %#08lx)", dw1,dw2);
break;
case action_npp_write:
{
FormatPCHARArgument(sz5, sizeof(sz5), &plis->arg5);
- sprintf(szString, "NPP_Write(%#08lx, %#08lx, %li, %li, %s))%s",dw1,dw2,dw3,dw4,sz5,szEOL);
+ *output = StringPrintf("NPP_Write(%#08lx, %#08lx, %li, %li, %s))",dw1,dw2,dw3,dw4,sz5);
break;
}
case action_npp_print:
- sprintf(szString, "NPP_Print(%#08lx, %#08lx)%s", dw1, dw2,szEOL);
+ *output = StringPrintf("NPP_Print(%#08lx, %#08lx)", dw1, dw2);
break;
case action_npp_handle_event:
{
NPEvent *event = (NPEvent*)dw2;
- sprintf(szString, "NPP_HandleEvent(%#08lx, %#08lx {event=%d, wParam=%#08lx lParam=%#08lx)%s", dw1,dw2,event->event, event->wParam, event->lParam, szEOL);
+ *output = StringPrintf("NPP_HandleEvent(%#08lx, %#08lx {event=%d, wParam=%#08lx lParam=%#08lx)", dw1,dw2,event->event, event->wParam, event->lParam);
break;
}
case action_npp_url_notify:
{
FormatPCHARArgument(sz2, sizeof(sz2), &plis->arg2);
- sprintf(szString, "NPP_URLNotify(%#08lx, %s, %s, %#08lx)%s", dw1,sz2,FormatNPAPIReason((int)dw3),dw4,szEOL);
+ *output = StringPrintf("NPP_URLNotify(%#08lx, %s, %s, %#08lx)", dw1,sz2,FormatNPAPIReason((int)dw3),dw4);
break;
}
case action_npp_get_java_class:
- sprintf(szString, "NPP_GetJavaClass()%s",szEOL);
+ *output = StringPrintf("NPP_GetJavaClass()");
break;
case action_npp_get_value:
- sprintf(szString, "NPP_GetValue(%#08lx, %s, %#08lx)%s", dw1,FormatNPPVariable((NPPVariable)dw2),dw3,szEOL);
+ *output = StringPrintf("NPP_GetValue(%#08lx, %s, %#08lx)", dw1,FormatNPPVariable((NPPVariable)dw2),dw3);
break;
case action_npp_set_value:
- sprintf(szString, "NPP_SetValue(%#08lx, %s, %#08lx)%s", dw1,FormatNPNVariable((NPNVariable)dw2),dw3,szEOL);
+ *output = StringPrintf("NPP_SetValue(%#08lx, %s, %#08lx)", dw1,FormatNPNVariable((NPNVariable)dw2),dw3);
break;
default:
- sprintf(szString, "Unknown action%s",szEOL);
+ *output = StringPrintf("Unknown action");
break;
}
- strcat(szOutput, szString);
- strcat(szOutput, szEOI);
- iRet = strlen(szString) + strlen(szEOI) + 1;
- return iRet;
+ *output += szEOL;
+ *output += szEOI;
}
diff --git a/third_party/npapi/npspy/common/logfile.cpp b/third_party/npapi/npspy/common/logfile.cpp
index b26fb0d..669ad49 100644
--- a/third_party/npapi/npspy/common/logfile.cpp
+++ b/third_party/npapi/npspy/common/logfile.cpp
@@ -72,9 +72,9 @@ void CLogFile::close()
}
}
-DWORD CLogFile::write(char * buf)
+DWORD CLogFile::write(const std::string& buf)
{
- return XP_WriteFile(hFile, buf, strlen(buf));
+ return XP_WriteFile(hFile, buf.c_str(), buf.length());
}
void CLogFile::flush()
diff --git a/third_party/npapi/npspy/common/logger.cpp b/third_party/npapi/npspy/common/logger.cpp
index a0e4658..e58c69f 100644
--- a/third_party/npapi/npspy/common/logger.cpp
+++ b/third_party/npapi/npspy/common/logger.cpp
@@ -35,6 +35,8 @@
*
* ***** END LICENSE BLOCK ***** */
+#include <string>
+
#include "xp.h"
#include "logger.h"
@@ -304,20 +306,20 @@ void Logger::logCall(NPAPI_Action action, DWORD dw1, DWORD dw2, DWORD dw3, DWORD
if(isMuted(action))
return;
- static char szLog[512];
+ std::string log;
LogItemStruct * lis = makeLogItemStruct(action, dw1, dw2, dw3, dw4, dw5, dw6, dw7);
- int iLength = formatLogItem(lis, szLog, TRUE);
+ formatLogItem(lis, &log, TRUE);
freeLogItemStruct(lis);
if(bToConsole)
- printf("%s", szLog);
+ printf("%s", log.c_str());
if(bToFile)
- filer.write(szLog);
+ filer.write(log);
if(bToWindow)
- dumpStringToMainWindow(szLog);
+ dumpStringToMainWindow(log);
}
void Logger::logMessage(const char *msg)
diff --git a/third_party/npapi/npspy/common/npn_gate.cpp b/third_party/npapi/npspy/common/npn_gate.cpp
index f5b014b..4cf9fb7 100644
--- a/third_party/npapi/npspy/common/npn_gate.cpp
+++ b/third_party/npapi/npspy/common/npn_gate.cpp
@@ -383,283 +383,254 @@ void NPN_ForceRedraw(NPP instance)
NPIdentifier NPN_GetStringIdentifier(const NPUTF8 *name)
{
- char msg[1024];
- sprintf(msg, "NPN_GetStringIdentifier %s", name);
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_get_string_identifier, (DWORD)name);
NPIdentifier rv = NPNFuncs.getstringidentifier(name);
- sprintf(msg, "--Return: 0x%x", rv);
- logger->logMessage(msg);
+ if(logger)
+ logger->logReturn(action_npn_get_string_identifier, (DWORD)(rv));
return rv;
}
bool NPN_Enumerate(NPP id, NPObject* obj, NPIdentifier** identifier, uint32_t*val)
{
- char msg[1024];
- sprintf(msg, "NPN_Enumerate");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_enumerate);
bool rv = NPNFuncs.enumerate(id, obj, identifier, val);
- sprintf(msg, "--Return: %x", rv);
- logger->logMessage(msg);
+ if(logger)
+ logger->logReturn(action_npn_enumerate, rv);
return rv;
}
-bool NPN_PopPopupsEnabledState(NPP)
+bool NPN_PopPopupsEnabledState(NPP id)
{
- logger->logMessage("Undefined function");
- return 0;
+ if(logger)
+ logger->logCall(action_npn_pop_popups_enabled_state, (DWORD)id);
+
+ bool rv = NPNFuncs.poppopupsenabledstate(id);
+
+ if(logger)
+ logger->logReturn(action_npn_pop_popups_enabled_state, rv);
+
+ return rv;
}
-bool NPN_PushPopupsEnabledState(NPP, NPBool)
+bool NPN_PushPopupsEnabledState(NPP id, NPBool enabled)
{
- logger->logMessage("Undefined function");
- return 0;
+ if(logger)
+ logger->logCall(action_npn_push_popups_enabled_state, (DWORD)id);
+
+ bool rv = NPNFuncs.pushpopupsenabledstate(id, enabled);
+
+ if(logger)
+ logger->logReturn(action_npn_push_popups_enabled_state, rv);
+
+ return rv;
}
void NPN_SetException(NPObject*obj, const NPUTF8*message)
{
- char msg[1024];
- sprintf(msg, "NPN_SetException");
- logger->logMessage(message);
+ if(logger)
+ logger->logCall(action_npn_set_exception, (DWORD)message);
- NPNFuncs.setexception(obj,msg);
-
- sprintf(msg, "--Return.");
- logger->logMessage(msg);
+ NPNFuncs.setexception(obj,message);
}
void NPN_ReleaseVariantValue(NPVariant*variant)
{
- char msg[1024];
- sprintf(msg, "NPN_ReleaseVariantValue");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_release_variant_value, (DWORD)variant);
NPNFuncs.releasevariantvalue(variant);
-
- sprintf(msg, "--Return.");
- logger->logMessage(msg);}
+}
bool NPN_HasMethod(NPP id, NPObject* object, NPIdentifier identifier)
{
- char msg[1024];
- sprintf(msg, "NPN_HasMethod");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_has_method, (DWORD)identifier);
bool rv = NPNFuncs.hasmethod(id, object, identifier);
- sprintf(msg, "--Return: %x", rv);
- logger->logMessage(msg);
+ if(logger)
+ logger->logReturn(action_npn_has_method, rv);
return rv;
}
bool NPN_HasProperty(NPP id, NPObject* object, NPIdentifier identifier)
{
- char msg[1024];
- sprintf(msg, "NPN_HasProperty");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_has_property, (DWORD)identifier);
bool rv = NPNFuncs.hasmethod(id, object, identifier);
- sprintf(msg, "--Return: %x", rv);
- logger->logMessage(msg);
+ if(logger)
+ logger->logReturn(action_npn_has_property, rv);
return rv;
}
bool NPN_RemoveProperty(NPP id, NPObject* object, NPIdentifier identifier)
{
- char msg[1024];
- sprintf(msg, "NPN_RemoveProperty");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_remove_property, (DWORD)identifier);
bool rv = NPNFuncs.hasmethod(id, object, identifier);
- sprintf(msg, "--Return: %x", rv);
- logger->logMessage(msg);
-
return rv;
}
bool NPN_SetProperty(NPP id, NPObject* obj, NPIdentifier identifier, const NPVariant *variant)
{
- char msg[1024];
- sprintf(msg, "NPN_SetProperty");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_set_property, (DWORD)identifier);
bool rv = NPNFuncs.setproperty(id, obj, identifier, variant);
- sprintf(msg, "--Return: %x", rv);
- logger->logMessage(msg);
-
return rv;
}
bool NPN_GetProperty(NPP id, NPObject* obj, NPIdentifier identifier, NPVariant *variant)
{
- char msg[1024];
- sprintf(msg, "NPN_GetProperty");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_get_property, (DWORD)identifier);
bool rv = NPNFuncs.getproperty(id, obj, identifier, variant);
- sprintf(msg, "--Return: %x", rv);
- logger->logMessage(msg);
-
return rv;
}
bool NPN_Evaluate(NPP id, NPObject* obj, NPString* str, NPVariant* variant)
{
- char msg[1024];
- sprintf(msg, "NPN_Evaluate");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_evaluate, (DWORD)str);
bool rv = NPNFuncs.evaluate(id, obj, str, variant);
- sprintf(msg, "--Return: %x", rv);
- logger->logMessage(msg);
+ if(logger)
+ logger->logReturn(action_npn_evaluate, rv);
return rv;
}
bool NPN_InvokeDefault(NPP id, NPObject* obj, const NPVariant* args, uint32_t count, NPVariant*result)
{
- char msg[1024];
- sprintf(msg, "NPN_InvokeDefault");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_invoke_default, (DWORD)obj);
bool rv = NPNFuncs.invokeDefault(id, obj, args, count, result);
- sprintf(msg, "--Return: %x", rv);
- logger->logMessage(msg);
+ if(logger)
+ logger->logReturn(action_npn_invoke_default, rv);
return rv;
}
bool NPN_Invoke(NPP id, NPObject* obj, NPIdentifier identifier, const NPVariant *args, uint32_t count, NPVariant*result)
{
- char msg[1024];
- sprintf(msg, "NPN_Invoke");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_invoke, (DWORD)obj);
bool rv = NPNFuncs.invoke(id, obj, identifier, args, count, result);
- sprintf(msg, "--Return: %x", rv);
- logger->logMessage(msg);
+ if(logger)
+ logger->logReturn(action_npn_invoke, rv);
return rv;
}
void NPN_ReleaseObject(NPObject *obj)
{
- char msg[1024];
- sprintf(msg, "NPN_ReleaseObject");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_release_object, (DWORD)obj);
NPNFuncs.releaseobject(obj);
-
- sprintf(msg, "--Return.");
- logger->logMessage(msg);
}
NPObject *NPN_RetainObject(NPObject* obj)
{
- char msg[1024];
- sprintf(msg, "NPN_RetainObject");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_retain_object, (DWORD)obj);
NPObject *rv = NPNFuncs.retainobject(obj);
- sprintf(msg, "--Return: %x", rv);
- logger->logMessage(msg);
-
return rv;
}
NPObject* NPN_CreateObject(NPP id, NPClass *cl)
{
- char msg[1024];
- sprintf(msg, "NPN_CreateObject");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_create_object, (DWORD)cl);
NPObject *rv = NPNFuncs.createobject(id, cl);
- sprintf(msg, "--Return: %x", rv);
- logger->logMessage(msg);
+ if(logger)
+ logger->logReturn(action_npn_create_object, (DWORD)rv);
return rv;
}
int32_t NPN_IntFromIdentifier(NPIdentifier identifier)
{
- char msg[1024];
- sprintf(msg, "NPN_IntFromIdentifier");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_int_from_identifier, (DWORD)identifier);
int32_t rv = NPNFuncs.intfromidentifier(identifier);
- sprintf(msg, "--Return: %x", rv);
- logger->logMessage(msg);
+ if(logger)
+ logger->logReturn(action_npn_int_from_identifier, rv);
return rv;
}
NPUTF8 *NPN_UTF8FromIdentifier(NPIdentifier identifier)
{
- char msg[1024];
- sprintf(msg, "NPN_Enumerate");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_utf8_from_identifier, (DWORD)identifier);
NPUTF8 *rv = NPNFuncs.utf8fromidentifier(identifier);
- sprintf(msg, "--Return: %x", rv);
- logger->logMessage(msg);
+ if(logger)
+ logger->logReturn(action_npn_utf8_from_identifier, 1234567890);
return rv;
}
bool NPN_IdentifierIsString(NPIdentifier identifier)
{
- char msg[1024];
- sprintf(msg, "NPN_IdentifierIsString");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_identifier_is_string, (DWORD)identifier);
bool rv = NPNFuncs.identifierisstring(identifier);
- sprintf(msg, "--Return: %x", rv);
- logger->logMessage(msg);
+ if(logger)
+ logger->logReturn(action_npn_identifier_is_string, rv);
return rv;
}
NPIdentifier NPN_GetIntIdentifier(int32_t value)
{
- char msg[1024];
- sprintf(msg, "NPN_GetIntIdentifier");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_get_int_identifer, (DWORD)value);
NPIdentifier rv = NPNFuncs.getintidentifier(value);
- sprintf(msg, "--Return: %x", rv);
- logger->logMessage(msg);
+ if(logger)
+ logger->logReturn(action_npn_get_int_identifer, (DWORD)rv);
return rv;
}
void NPN_GetStringIdentifiers(const NPUTF8 **names, int32_t count, NPIdentifier *identifiers)
{
- char msg[1024];
- sprintf(msg, "NPN_GetStringIdentifiers");
- logger->logMessage(msg);
+ if(logger)
+ logger->logCall(action_npn_get_string_identifiers);
NPNFuncs.getstringidentifiers(names, count, identifiers);
-
- sprintf(msg, "--Return.");
- logger->logMessage(msg);
} \ No newline at end of file
diff --git a/third_party/npapi/npspy/common/plugload.cpp b/third_party/npapi/npspy/common/plugload.cpp
index da6ae66..d8b9340 100644
--- a/third_party/npapi/npspy/common/plugload.cpp
+++ b/third_party/npapi/npspy/common/plugload.cpp
@@ -108,6 +108,7 @@ XP_HLIB LoadRealPlugin(char * mimetype)
directories.push_back(szFileName);
directories.push_back("C:\\Windows\\System32\\Macromed\\Flash");
+ directories.push_back("C:\\Windows\\SysWOW64\\Macromed\\Flash");
for (size_t i = 0; i < directories.size(); ++i) {
std::string search_path = directories[i];
@@ -116,7 +117,7 @@ XP_HLIB LoadRealPlugin(char * mimetype)
if(handle == INVALID_HANDLE_VALUE)
{
FindClose(handle);
- return NULL;
+ continue;
}
DWORD versize = 0L;
diff --git a/third_party/npapi/npspy/common/utils.cpp b/third_party/npapi/npspy/common/utils.cpp
index e92762a..1b93561 100644
--- a/third_party/npapi/npspy/common/utils.cpp
+++ b/third_party/npapi/npspy/common/utils.cpp
@@ -97,7 +97,7 @@ void XP_CloseFile(XP_HFILE hFile)
}
}
-DWORD XP_WriteFile(XP_HFILE hFile, void * pBuf, int iSize)
+DWORD XP_WriteFile(XP_HFILE hFile, const void * pBuf, int iSize)
{
#ifdef XP_WIN
DWORD dwRet;
diff --git a/third_party/npapi/npspy/include/actionnames.h b/third_party/npapi/npspy/include/actionnames.h
index 7635bd4..f8aae59 100644
--- a/third_party/npapi/npspy/include/actionnames.h
+++ b/third_party/npapi/npspy/include/actionnames.h
@@ -64,6 +64,28 @@ char * ActionName[] =
"NPN_InvalidateRect",
"NPN_InvalidateRegion",
"NPN_ForceRedraw",
+ "NPN_Enumerate",
+ "NPN_PopPopupsEnabledState",
+ "NPN_PushPopupsEnabledState",
+ "NPN_SetException",
+ "NPN_ReleaseVariantValue",
+ "NPN_HasMethod",
+ "NPN_HasProperty",
+ "NPN_RemoveProperty",
+ "NPN_SetProperty",
+ "NPN_GetProperty",
+ "NPN_Evaluate",
+ "NPN_InvokeDefault",
+ "NPN_Invoke",
+ "NPN_ReleaseObject",
+ "NPN_RetainObject",
+ "NPN_CreateObject",
+ "NPN_IntFromIdentifier",
+ "NPN_UTF8FromIdentifier",
+ "NPN_IdentifierIsString",
+ "NPN_GetIntIdentifier",
+ "NPN_GetStringIdentifier",
+ "NPN_GetStringIdentifiers",
"NPP_New",
"NPP_Destroy",
"NPP_SetWindow",
diff --git a/third_party/npapi/npspy/include/format.h b/third_party/npapi/npspy/include/format.h
index 9c56454..9d1aae20 100644
--- a/third_party/npapi/npspy/include/format.h
+++ b/third_party/npapi/npspy/include/format.h
@@ -38,6 +38,7 @@
#ifndef __FORMAT_H__
#define __FORMAT_H__
+#include <string>
#include "npapi.h"
typedef enum
@@ -65,6 +66,28 @@ typedef enum
action_npn_invalidate_rect,
action_npn_invalidate_region,
action_npn_force_redraw,
+ action_npn_enumerate,
+ action_npn_pop_popups_enabled_state,
+ action_npn_push_popups_enabled_state,
+ action_npn_set_exception,
+ action_npn_release_variant_value,
+ action_npn_has_method,
+ action_npn_has_property,
+ action_npn_remove_property,
+ action_npn_set_property,
+ action_npn_get_property,
+ action_npn_evaluate,
+ action_npn_invoke_default,
+ action_npn_invoke,
+ action_npn_release_object,
+ action_npn_retain_object,
+ action_npn_create_object,
+ action_npn_int_from_identifier,
+ action_npn_utf8_from_identifier,
+ action_npn_identifier_is_string,
+ action_npn_get_int_identifer,
+ action_npn_get_string_identifier,
+ action_npn_get_string_identifiers,
action_npp_new,
action_npp_destroy,
@@ -128,6 +151,6 @@ LogItemStruct * makeLogItemStruct(NPAPI_Action action,
DWORD dw1, DWORD dw2, DWORD dw3, DWORD dw4,
DWORD dw5, DWORD dw6, DWORD dw7, BOOL bShort = FALSE);
void freeLogItemStruct(LogItemStruct * lis);
-int formatLogItem(LogItemStruct * plis, char * szOutput, BOOL bDOSStyle = FALSE);
+void formatLogItem(LogItemStruct * plis, std::string * szOutput, BOOL bDOSStyle = FALSE);
#endif // __LOGHLP_H__
diff --git a/third_party/npapi/npspy/include/logfile.h b/third_party/npapi/npspy/include/logfile.h
index f7ed94e..c8db248 100644
--- a/third_party/npapi/npspy/include/logfile.h
+++ b/third_party/npapi/npspy/include/logfile.h
@@ -38,6 +38,8 @@
#ifndef __LOGFILE_H__
#define __LOGFILE_H__
+#include <string>
+
class CLogFile
{
private:
@@ -50,7 +52,7 @@ public:
BOOL create(char * filename, BOOL delete_existing = FALSE);
void close();
- DWORD write(char * buf);
+ DWORD write(const std::string& buf);
void flush();
};
diff --git a/third_party/npapi/npspy/include/logger.h b/third_party/npapi/npspy/include/logger.h
index afe357e..e8ba736 100644
--- a/third_party/npapi/npspy/include/logger.h
+++ b/third_party/npapi/npspy/include/logger.h
@@ -42,7 +42,7 @@
#include "format.h"
#include "logfile.h"
-#define TOTAL_NUMBER_OF_API_CALLS 37
+#define TOTAL_NUMBER_OF_API_CALLS 60
#define DEFAULT_LOG_FILE_NAME "spylog.txt"
class Logger
@@ -74,7 +74,7 @@ public:
// platform dependent virtuals
virtual BOOL platformInit() = 0;
virtual void platformShut() = 0;
- virtual void dumpStringToMainWindow(char * string) = 0;
+ virtual void dumpStringToMainWindow(const std::string& string) = 0;
void setOnTop(BOOL ontop);
void setToFile(BOOL tofile, char * filename);
diff --git a/third_party/npapi/npspy/include/xp.h b/third_party/npapi/npspy/include/xp.h
index d3164c8..5edaee6 100644
--- a/third_party/npapi/npspy/include/xp.h
+++ b/third_party/npapi/npspy/include/xp.h
@@ -161,7 +161,7 @@ XP_HFILE XP_CreateFile(char * szFileName);
XP_HFILE XP_OpenFile(char * szFileName);
void XP_CloseFile(XP_HFILE hFile);
void XP_DeleteFile(char * szFileName);
-DWORD XP_WriteFile(XP_HFILE hFile, void * pBuf, int iSize);
+DWORD XP_WriteFile(XP_HFILE hFile, const void * pBuf, int iSize);
void XP_FlushFileBuffers(XP_HFILE hFile);
diff --git a/third_party/npapi/npspy/windows/loggerw.cpp b/third_party/npapi/npspy/windows/loggerw.cpp
index b3e6dd5..dc73127 100644
--- a/third_party/npapi/npspy/windows/loggerw.cpp
+++ b/third_party/npapi/npspy/windows/loggerw.cpp
@@ -151,36 +151,32 @@ void LoggerWin::onDestroyWindow()
hWnd = NULL;
}
-void LoggerWin::dumpStringToMainWindow(char * string)
+void LoggerWin::dumpStringToMainWindow(const std::string& string)
{
- bool free_string = false;
+ const char* output = string.c_str();
+ std::string temp_string;
// listboxes don't want <CR> and <LF> so cut them off if any. The order is important.
- char * p = strrchr(string, '\n');
- if(p) {
+ size_t newline = string.find('\n');
+ if(newline != std::string::npos) {
// make copy of string since it might be a constant
- char* temp = string;
- string = (char*)malloc(strlen(temp) + 1);
- strcpy(string, temp);
- free_string = true;
+ temp_string = string;
- p = strrchr(string, '\n');
+ char* p = strrchr(const_cast<char*>(temp_string.c_str()), '\n');
*p = '\0';
- p = strrchr(string, '\r');
+ p = strrchr(const_cast<char*>(temp_string.c_str()), '\r');
if(p)
*p = '\0';
+ output = temp_string.c_str();
}
HWND hWndOutput = GetDlgItem(hWnd, IDC_MAIN_OUTPUT);
- ListBox_AddString(hWndOutput, string);
+ ListBox_AddString(hWndOutput, output);
int count = ListBox_GetCount(hWndOutput);
if(count == 32767)
ListBox_ResetContent(hWndOutput);
ListBox_SetCaretIndex(hWndOutput, count - 1);
UpdateWindow(hWndOutput);
-
- if (free_string)
- free(string);
}
void LoggerWin::onClear()
diff --git a/third_party/npapi/npspy/windows/loggerw.h b/third_party/npapi/npspy/windows/loggerw.h
index 599d255..f79224e 100644
--- a/third_party/npapi/npspy/windows/loggerw.h
+++ b/third_party/npapi/npspy/windows/loggerw.h
@@ -38,6 +38,8 @@
#ifndef __LOGGRERW_H__
#define __LOGGRERW_H__
+#include <string>
+
#include "logger.h"
class LoggerWin : public Logger
@@ -55,7 +57,7 @@ public:
BOOL platformInit();
void platformShut();
- void dumpStringToMainWindow(char * string);
+ void dumpStringToMainWindow(const std::string& string);
void onDestroyWindow();
void onClear();
diff --git a/third_party/npapi/npspy/windows/npspy.rc b/third_party/npapi/npspy/windows/npspy.rc
index 96244d3..a870f11 100644
--- a/third_party/npapi/npspy/windows/npspy.rc
+++ b/third_party/npapi/npspy/windows/npspy.rc
@@ -47,18 +47,18 @@ BEGIN
BEGIN
VALUE "Comments", "\0"
VALUE "CompanyName", "mozilla.org\0"
- VALUE "FileDescription", "Spy plugin\0"
+ VALUE "FileDescription", "Shockwave Flash 10.0 r12\0"
VALUE "FileExtents", "*\0"
- VALUE "FileOpenName", "Macromedia Flash movie (*.swf)|FutureSplash movie (*.spl)|Macromedia Flash Paper (*.mfp)|*|any name (*.*)\0"
- VALUE "FileVersion", "8, 0, 24, 0\0"
- VALUE "InternalName", "Macromedia Flash Player 8.0\0"
+ VALUE "FileOpenName", "Macromedia Flash movie (*.swf)|FutureSplash movie (*.spl)|QuickTime Movie (*.mfp)|Windows Media (*.wmv)|any name (*.*)\0"
+ VALUE "FileVersion", "10, 0, 12, 0\0"
+ VALUE "InternalName", "Macromedia Flash Player 10.0\0"
VALUE "LegalCopyright", "Copyright © 2001-\0"
VALUE "LegalTrademarks", "\0"
- VALUE "MIMEType", "application/x-shockwave-flash|video/quicktime|application/x-mplayer2|*\0"
+ VALUE "MIMEType", "application/x-shockwave-flash|application/futuresplash|video/quicktime|application/x-mplayer2|*\0"
VALUE "OriginalFilename", "NPSPY.DLL\0"
VALUE "PrivateBuild", "\0"
VALUE "ProductName", "Shockwave Flash\0"
- VALUE "ProductVersion", "8, 0, 24, 0\0"
+ VALUE "ProductVersion", "10, 0, 12, 0\0"
VALUE "SpecialBuild", "\0"
END
END
@@ -129,84 +129,81 @@ BEGIN
GROUPBOX "Window",IDC_STATIC,7,7,224,32
END
-IDD_PAGE_FILTER DIALOG DISCARDABLE 0, 0, 238, 246
+IDD_PAGE_FILTER DIALOG DISCARDABLE 0, 0, 238, 482
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Filter"
FONT 8, "MS Sans Serif"
BEGIN
- GROUPBOX "Select calls to log",IDC_STATIC,7,7,224,232
- CONTROL "NPN_Version",IDC_CHECK_NPN_VERSION,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,22,59,10
- CONTROL "NPN_GetURLNotify",IDC_CHECK_NPN_GETURLNOTIFY,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,32,79,10
- CONTROL "NPN_GetURL",IDC_CHECK_NPN_GETURL,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,41,61,10
- CONTROL "NPN_PostURLNotify",IDC_CHECK_NPN_POSTURLNOTIFY,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,51,82,10
- CONTROL "NPN_PostURL",IDC_CHECK_NPN_POSTURL,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,61,64,10
- CONTROL "NPN_RequestRead",IDC_CHECK_NPN_REQUESTREAD,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,70,79,10
- CONTROL "NPN_NewStream",IDC_CHECK_NPN_NEWSTREAM,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,80,72,10
- CONTROL "NPN_Write",IDC_CHECK_NPN_WRITE,"Button",BS_AUTOCHECKBOX |
- WS_TABSTOP,15,89,52,10
- CONTROL "NPN_DestroyStream",IDC_CHECK_NPN_DESTROYSTREAM,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,99,81,10
- CONTROL "NPN_Status",IDC_CHECK_NPN_STATUS,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,109,55,10
- CONTROL "NPN_UserAgent",IDC_CHECK_NPN_ESERAGENT,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,118,69,10
- CONTROL "NPN_MemAlloc",IDC_CHECK_NPN_MEMALLOC,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,128,66,10
- CONTROL "NPN_MemFree",IDC_CHECK_NPN_MEMFREE,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,137,65,10
- CONTROL "NPN_MemFlush",IDC_CHECK_NPN_MEMFLUSH,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,147,67,10
- CONTROL "NPN_ReloadPlugins",IDC_CHECK_NPN_RELOADPLUGINS,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,157,81,10
- CONTROL "NPN_GetJavaEnv",IDC_CHECK_NPN_GETJAVAENV,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,166,75,10
- CONTROL "NPN_GetJavaPeer",IDC_CHECK_NPN_GETJAVAPEER,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,176,77,10
- CONTROL "NPN_GetValue",IDC_CHECK_NPN_GETVALUE,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,185,65,10
- CONTROL "NPN_SetValue",IDC_CHECK_NPN_SETVALUE,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,195,64,10
+ GROUPBOX "Select calls to log",IDC_STATIC,7,7,224,468
+ CONTROL "NPN_Version",IDC_CHECK_NPN_VERSION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,22,59,10
+ CONTROL "NPN_GetURLNotify",IDC_CHECK_NPN_GETURLNOTIFY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,32,79,10
+ CONTROL "NPN_GetURL",IDC_CHECK_NPN_GETURL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,41,61,10
+ CONTROL "NPN_PostURLNotify",IDC_CHECK_NPN_POSTURLNOTIFY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,51,82,10
+ CONTROL "NPN_PostURL",IDC_CHECK_NPN_POSTURL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,61,64,10
+ CONTROL "NPN_RequestRead",IDC_CHECK_NPN_REQUESTREAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,70,79,10
+ CONTROL "NPN_NewStream",IDC_CHECK_NPN_NEWSTREAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,80,72,10
+ CONTROL "NPN_Write",IDC_CHECK_NPN_WRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,89,52,10
+ CONTROL "NPN_DestroyStream",IDC_CHECK_NPN_DESTROYSTREAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,99,81,10
+ CONTROL "NPN_Status",IDC_CHECK_NPN_STATUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,109,55,10
+ CONTROL "NPN_UserAgent",IDC_CHECK_NPN_ESERAGENT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,118,69,10
+ CONTROL "NPN_MemAlloc",IDC_CHECK_NPN_MEMALLOC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,128,66,10
+ CONTROL "NPN_MemFree",IDC_CHECK_NPN_MEMFREE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,137,65,10
+ CONTROL "NPN_MemFlush",IDC_CHECK_NPN_MEMFLUSH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,147,67,10
+ CONTROL "NPN_ReloadPlugins",IDC_CHECK_NPN_RELOADPLUGINS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,157,81,10
+ CONTROL "NPN_GetJavaEnv",IDC_CHECK_NPN_GETJAVAENV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,166,75,10
+ CONTROL "NPN_GetJavaPeer",IDC_CHECK_NPN_GETJAVAPEER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,176,77,10
+ CONTROL "NPN_GetValue",IDC_CHECK_NPN_GETVALUE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,185,65,10
+ CONTROL "NPN_SetValue",IDC_CHECK_NPN_SETVALUE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,195,64,10
CONTROL "NPN_InvalidateRect",IDC_CHECK_NPN_INVALIDATEREGION,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,205,81,10
CONTROL "NPN_InvalidateRegion",IDC_CHECK_NPNINVALIDATEREGION,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,214,89,10
- CONTROL "NPN_ForceRedraw",IDC_CHECK_NPN_FORCEREDRAW,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,15,224,78,10
- CONTROL "NPP_New",IDC_CHECK_NPP_NEW,"Button",BS_AUTOCHECKBOX |
- WS_TABSTOP,140,22,49,10
- CONTROL "NPP_Destroy",IDC_CHECK_NPP_DESTROY,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,140,32,59,10
- CONTROL "NPP_SetWindow",IDC_CHECK_NPP_SETWINDOW,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,140,41,71,10
- CONTROL "NPP_NewStream",IDC_CHECK_NPP_NEWSTREAM,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,140,51,71,10
- CONTROL "NPP_DestroyStream",IDC_CHECK_NPP_DESTROYSTREAM,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,140,61,81,10
- CONTROL "NPP_StreamAsFile",IDC_CHECK_NPP_STREAMASFILE,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,140,70,75,10
- CONTROL "NPP_Write",IDC_CHECK_NPP_WRITE,"Button",BS_AUTOCHECKBOX |
- WS_TABSTOP,140,80,51,10
- CONTROL "NPP_WriteReady",IDC_CHECK_NPP_WRITEREADY,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,140,89,72,10
- CONTROL "NPP_Print",IDC_CHECK_NPP_PRINT,"Button",BS_AUTOCHECKBOX |
- WS_TABSTOP,140,99,49,10
- CONTROL "NPP_HandleEvent",IDC_CHECK_NPP_HANDLEEVENT,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,140,109,76,10
- CONTROL "NPP_URLNotify",IDC_CHECK_NPP_URLNOTIFY,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,140,118,67,10
- CONTROL "NPP_GetJavaClass",IDC_CHECK_NPP_GETJAVACLASS,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,140,128,78,10
- CONTROL "NPP_GetValue",IDC_CHECK_NPP_GETVALUE,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,140,137,64,10
- CONTROL "NPP_SetValue",IDC_CHECK_NPP_SETVALUE,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,140,147,63,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,215,89,10
+ CONTROL "NPN_ForceRedraw",IDC_CHECK_NPN_FORCEREDRAW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,225,78,10
+ CONTROL "NPN_Enumerate",IDC_CHECK_NPN_ENUMERATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,235,78,10
+ CONTROL "NPN_PopPopupsEnabledState",IDC_CHECK_NPN_POPPOPUPSENABLEDSTATE,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,245,120,10
+ CONTROL "NPN_PushPopupsEnabledState",IDC_CHECK_NPN_PUSHPOPUPSENABLEDSTATE,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,255,154,10
+ CONTROL "NPN_SetException",IDC_CHECK_NPN_SETEXCEPTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,265,78,10
+ CONTROL "NPN_ReleaseVariantValue",IDC_CHECK_NPN_RELEASEVARIANTVALUE,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,275,78,10
+ CONTROL "NPN_HasMethod",IDC_CHECK_NPN_HASMETHOD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,285,78,10
+ CONTROL "NPN_HasProperty",IDC_CHECK_NPN_HASPROPERTY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,295,78,10
+ CONTROL "NPN_RemoveProperty",IDC_CHECK_NPN_REMOVEPROPERTY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,305,115,10
+ CONTROL "NPN_SetProperty",IDC_CHECK_NPN_SETPROPERTY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,315,78,10
+ CONTROL "NPN_GetProperty",IDC_CHECK_NPN_GETPROPERTY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,325,78,10
+ CONTROL "NPN_Evaluate",IDC_CHECK_NPN_EVALUATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,335,78,10
+ CONTROL "NPN_InvokeDefault",IDC_CHECK_NPN_INVOKEDEFAULT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,345,78,10
+ CONTROL "NPN_Invoke",IDC_CHECK_NPN_INVOKE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,355,78,10
+ CONTROL "NPN_ReleaseObject",IDC_CHECK_NPN_RELEASEOBJECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,365,78,10
+ CONTROL "NPN_RetainObject",IDC_CHECK_NPN_RETAINOBJECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,375,78,10
+ CONTROL "NPN_CreateObject",IDC_CHECK_NPN_CREATEOBJECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,385,78,10
+ CONTROL "NPN_IntFromIdentifier",IDC_CHECK_NPN_INTFROMIDENTIFIER,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,395,109,10
+ CONTROL "NPN_UTF8FromIdentifier",IDC_CHECK_NPN_UTF8FROMIDENTIFIER,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,405,108,10
+ CONTROL "NPN_IdentifierIsString",IDC_CHECK_NPN_IDENTIFIERISSTRING,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,415,111,10
+ CONTROL "NPN_GetIntIdentifier",IDC_CHECK_NPN_GETINTIDENTIFIER,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,425,78,10
+ CONTROL "NPN_GetStringIdentifier",IDC_CHECK_NPN_GETSTRINGIDENTIFIER,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,435,111,10
+ CONTROL "NPN_GetStringIdentifiers",IDC_CHECK_NPN_GETSTRINGIDENTIFIERS,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,445,112,10
+ CONTROL "NPP_New",IDC_CHECK_NPP_NEW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,22,49,10
+ CONTROL "NPP_Destroy",IDC_CHECK_NPP_DESTROY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,32,59,10
+ CONTROL "NPP_SetWindow",IDC_CHECK_NPP_SETWINDOW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,41,71,10
+ CONTROL "NPP_NewStream",IDC_CHECK_NPP_NEWSTREAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,51,71,10
+ CONTROL "NPP_DestroyStream",IDC_CHECK_NPP_DESTROYSTREAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,61,81,10
+ CONTROL "NPP_StreamAsFile",IDC_CHECK_NPP_STREAMASFILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,70,75,10
+ CONTROL "NPP_Write",IDC_CHECK_NPP_WRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,80,51,10
+ CONTROL "NPP_WriteReady",IDC_CHECK_NPP_WRITEREADY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,89,72,10
+ CONTROL "NPP_Print",IDC_CHECK_NPP_PRINT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,99,49,10
+ CONTROL "NPP_HandleEvent",IDC_CHECK_NPP_HANDLEEVENT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,109,76,10
+ CONTROL "NPP_URLNotify",IDC_CHECK_NPP_URLNOTIFY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,118,67,10
+ CONTROL "NPP_GetJavaClass",IDC_CHECK_NPP_GETJAVACLASS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,128,78,10
+ CONTROL "NPP_GetValue",IDC_CHECK_NPP_GETVALUE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,137,64,10
+ CONTROL "NPP_SetValue",IDC_CHECK_NPP_SETVALUE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,147,63,10
PUSHBUTTON "&Check All",IDC_BUTTON_CHECKALL,169,198,50,14
PUSHBUTTON "C&lear All",IDC_BUTTON_CLEARALL,169,216,50,14
END
@@ -297,7 +294,7 @@ BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 231
TOPMARGIN, 7
- BOTTOMMARGIN, 239
+ BOTTOMMARGIN, 475
END
IDD_PAGE_LOG, DIALOG
@@ -349,4 +346,3 @@ ID_ICON_OPENSELECT ICON DISCARDABLE "res/foldopse.ICO"
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
-
diff --git a/third_party/npapi/npspy/windows/resource.h b/third_party/npapi/npspy/windows/resource.h
index fac3a5f..5946aae 100644
--- a/third_party/npapi/npspy/windows/resource.h
+++ b/third_party/npapi/npspy/windows/resource.h
@@ -52,28 +52,50 @@
#define IDC_CHECK_NPN_INVALIDATEREGION 1021
#define IDC_CHECK_NPNINVALIDATEREGION 1022
#define IDC_CHECK_NPN_FORCEREDRAW 1023
-#define IDC_CHECK_NPP_NEW 1024
-#define IDC_CHECK_NPP_DESTROY 1025
-#define IDC_CHECK_NPP_SETWINDOW 1026
-#define IDC_CHECK_NPP_NEWSTREAM 1027
-#define IDC_CHECK_NPP_DESTROYSTREAM 1028
-#define IDC_CHECK_NPP_STREAMASFILE 1029
-#define IDC_CHECK_NPP_WRITEREADY 1030
-#define IDC_CHECK_NPP_WRITE 1031
-#define IDC_CHECK_NPP_PRINT 1032
-#define IDC_CHECK_NPP_HANDLEEVENT 1033
-#define IDC_CHECK_NPP_URLNOTIFY 1034
-#define IDC_CHECK_NPP_GETJAVACLASS 1035
-#define IDC_CHECK_NPP_GETVALUE 1036
-#define IDC_CHECK_NPP_SETVALUE 1037
-#define IDC_BUTTON_CHECKALL 1038
-#define IDC_BUTTON_CLEARALL 1039
-#define IDC_CHECK_TOCONSOLE 1041
-#define IDC_CHECK_TOWINDOW 1042
-#define IDC_CHECK_TOFILE 1043
-#define IDC_CHECK_SPALID 1044
-#define IDC_EDIT_FILE 1047
-#define IDC_BUTTON_CHOOSEDIR 1048
+#define IDC_CHECK_NPN_ENUMERATE 1024
+#define IDC_CHECK_NPN_POPPOPUPSENABLEDSTATE 1025
+#define IDC_CHECK_NPN_PUSHPOPUPSENABLEDSTATE 1026
+#define IDC_CHECK_NPN_SETEXCEPTION 1027
+#define IDC_CHECK_NPN_RELEASEVARIANTVALUE 1028
+#define IDC_CHECK_NPN_HASMETHOD 1029
+#define IDC_CHECK_NPN_HASPROPERTY 1030
+#define IDC_CHECK_NPN_REMOVEPROPERTY 1031
+#define IDC_CHECK_NPN_SETPROPERTY 1032
+#define IDC_CHECK_NPN_GETPROPERTY 1033
+#define IDC_CHECK_NPN_EVALUATE 1034
+#define IDC_CHECK_NPN_INVOKEDEFAULT 1035
+#define IDC_CHECK_NPN_INVOKE 1036
+#define IDC_CHECK_NPN_RELEASEOBJECT 1037
+#define IDC_CHECK_NPN_RETAINOBJECT 1038
+#define IDC_CHECK_NPN_CREATEOBJECT 1039
+#define IDC_CHECK_NPN_INTFROMIDENTIFIER 1040
+#define IDC_CHECK_NPN_UTF8FROMIDENTIFIER 1041
+#define IDC_CHECK_NPN_IDENTIFIERISSTRING 1042
+#define IDC_CHECK_NPN_GETINTIDENTIFIER 1043
+#define IDC_CHECK_NPN_GETSTRINGIDENTIFIER 1044
+#define IDC_CHECK_NPN_GETSTRINGIDENTIFIERS 1045
+#define IDC_CHECK_NPP_NEW 1046
+#define IDC_CHECK_NPP_DESTROY 1047
+#define IDC_CHECK_NPP_SETWINDOW 1048
+#define IDC_CHECK_NPP_NEWSTREAM 1049
+#define IDC_CHECK_NPP_DESTROYSTREAM 1050
+#define IDC_CHECK_NPP_STREAMASFILE 1051
+#define IDC_CHECK_NPP_WRITEREADY 1052
+#define IDC_CHECK_NPP_WRITE 1053
+#define IDC_CHECK_NPP_PRINT 1054
+#define IDC_CHECK_NPP_HANDLEEVENT 1055
+#define IDC_CHECK_NPP_URLNOTIFY 1056
+#define IDC_CHECK_NPP_GETJAVACLASS 1057
+#define IDC_CHECK_NPP_GETVALUE 1058
+#define IDC_CHECK_NPP_SETVALUE 1059
+#define IDC_BUTTON_CHECKALL 1060
+#define IDC_BUTTON_CLEARALL 1061
+#define IDC_CHECK_TOCONSOLE 1062
+#define IDC_CHECK_TOWINDOW 1063
+#define IDC_CHECK_TOFILE 1064
+#define IDC_CHECK_SPALID 1065
+#define IDC_EDIT_FILE 1066
+#define IDC_BUTTON_CHOOSEDIR 1067
#define IDC_CHECK_MUTE 2019
#define IDC_CHECK_ONTOP 2020
#define IDC_BUTTON_OPTIONS 2023