diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-11 20:06:07 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-11 20:06:07 +0000 |
commit | d88a23dbeada3ba7639bcbe2d4b73dcaf9cc789e (patch) | |
tree | fab5aaed66f3c7e222e64320f938a612f6276a13 /third_party/npapi | |
parent | c51e8d50a9314b0580444ed93640b7ae1a2433b8 (diff) | |
download | chromium_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.cpp | 332 | ||||
-rw-r--r-- | third_party/npapi/npspy/common/logfile.cpp | 4 | ||||
-rw-r--r-- | third_party/npapi/npspy/common/logger.cpp | 12 | ||||
-rw-r--r-- | third_party/npapi/npspy/common/npn_gate.cpp | 201 | ||||
-rw-r--r-- | third_party/npapi/npspy/common/plugload.cpp | 3 | ||||
-rw-r--r-- | third_party/npapi/npspy/common/utils.cpp | 2 | ||||
-rw-r--r-- | third_party/npapi/npspy/include/actionnames.h | 22 | ||||
-rw-r--r-- | third_party/npapi/npspy/include/format.h | 25 | ||||
-rw-r--r-- | third_party/npapi/npspy/include/logfile.h | 4 | ||||
-rw-r--r-- | third_party/npapi/npspy/include/logger.h | 4 | ||||
-rw-r--r-- | third_party/npapi/npspy/include/xp.h | 2 | ||||
-rw-r--r-- | third_party/npapi/npspy/windows/loggerw.cpp | 24 | ||||
-rw-r--r-- | third_party/npapi/npspy/windows/loggerw.h | 4 | ||||
-rw-r--r-- | third_party/npapi/npspy/windows/npspy.rc | 154 | ||||
-rw-r--r-- | third_party/npapi/npspy/windows/resource.h | 66 |
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 |