summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorevanm@google.com <evanm@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-09-24 00:11:25 +0000
committerevanm@google.com <evanm@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-09-24 00:11:25 +0000
commite614262b18654a1a62da00d5a8e4d3de3eda9f81 (patch)
treed14dfebe8119c53887b8477422f070a297db9185
parentf9d44aa6e5fdefae83b3e02effdd7376b31dd3ef (diff)
downloadchromium_src-e614262b18654a1a62da00d5a8e4d3de3eda9f81.zip
chromium_src-e614262b18654a1a62da00d5a8e4d3de3eda9f81.tar.gz
chromium_src-e614262b18654a1a62da00d5a8e4d3de3eda9f81.tar.bz2
port some parts of webkit/glue/plugins/test to Linux
these are not all parts (about a half), but still something BUG=1949 Patch from Paweł Hajdan jr <phajdan.jr@gmail.com>. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2534 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--base/string_util.h5
-rw-r--r--base/string_util_posix.h4
-rw-r--r--base/string_util_win.h4
-rw-r--r--webkit/SConscript2
-rw-r--r--webkit/glue/plugins/test/SConscript92
-rw-r--r--webkit/glue/plugins/test/npapi_test.cc15
-rw-r--r--webkit/glue/plugins/test/plugin_arguments_test.cc5
-rw-r--r--webkit/glue/plugins/test/plugin_client.cc41
-rw-r--r--webkit/glue/plugins/test/plugin_get_javascript_url_test.cc17
-rw-r--r--webkit/glue/plugins/test/plugin_test.cc8
-rw-r--r--webkit/glue/plugins/test/plugin_test.h7
11 files changed, 123 insertions, 77 deletions
diff --git a/base/string_util.h b/base/string_util.h
index 69ac608..8c28f3b 100644
--- a/base/string_util.h
+++ b/base/string_util.h
@@ -23,6 +23,11 @@ namespace base {
// are listed below. These functions are then implemented as inline calls
// to the platform-specific equivalents in the platform-specific headers.
+// Compare the two strings s1 and s2 without regard to case using
+// the current locale; returns 0 if they are equal, 1 if s1 > s2, and -1 if
+// s2 > s1 according to a lexicographic comparison.
+int strcasecmp(const char* s1, const char* s2);
+
// Compare up to count characters of s1 and s2 without regard to case using
// the current locale; returns 0 if they are equal, 1 if s1 > s2, and -1 if
// s2 > s1 according to a lexicographic comparison.
diff --git a/base/string_util_posix.h b/base/string_util_posix.h
index 3db654c..f9c3597 100644
--- a/base/string_util_posix.h
+++ b/base/string_util_posix.h
@@ -14,6 +14,10 @@
namespace base {
+inline int strcasecmp(const char* string1, const char* string2) {
+ return ::strcasecmp(string1, string2);
+}
+
inline int strncasecmp(const char* string1, const char* string2, size_t count) {
return ::strncasecmp(string1, string2, count);
}
diff --git a/base/string_util_win.h b/base/string_util_win.h
index 6042efd..a8e6e5a 100644
--- a/base/string_util_win.h
+++ b/base/string_util_win.h
@@ -14,6 +14,10 @@
namespace base {
+inline int strcasecmp(const char* s1, const char* s2) {
+ return _stricmp(s1, s2);
+}
+
inline int strncasecmp(const char* s1, const char* s2, size_t count) {
return _strnicmp(s1, s2, count);
}
diff --git a/webkit/SConscript b/webkit/SConscript
index 40da418..5e77b4b 100644
--- a/webkit/SConscript
+++ b/webkit/SConscript
@@ -153,6 +153,7 @@ sconscript_dirs = [
'build/V8Bindings/SConscript',
'default_plugin/SConscript',
'glue/SConscript',
+ 'glue/plugins/test/SConscript',
]
if env['PLATFORM'] == 'win32':
# These extra dirs aren't win32-specific, they're just the dirs that
@@ -164,7 +165,6 @@ if env['PLATFORM'] == 'win32':
'build/WebCore/SConscript', # This almost works on linux. It requires
# some changes to WebKit that we'll get
# in the merge.
- 'glue/plugins/test/SConscript',
'tools/npapi_layout_test_plugin/SConscript',
'tools/test_shell/SConscript',
'tools/test_shell/resources/fonts/SConscript',
diff --git a/webkit/glue/plugins/test/SConscript b/webkit/glue/plugins/test/SConscript
index 37c3a1a..82a58d3 100644
--- a/webkit/glue/plugins/test/SConscript
+++ b/webkit/glue/plugins/test/SConscript
@@ -10,62 +10,74 @@ env_res = env_res.Clone()
input_files = [
'npapi_constants.cc',
'npapi_test.cc',
- env_res.RES('npapi_test.rc'),
- 'plugin_arguments_test.cc',
- 'plugin_client.cc',
'plugin_delete_plugin_in_stream_test.cc',
- 'plugin_execute_script_delete_test.cc',
'plugin_get_javascript_url_test.cc',
- 'plugin_geturl_test.cc',
'plugin_new_fails_test.cc',
- 'plugin_npobject_lifetime_test.cc',
'plugin_npobject_proxy_test.cc',
- 'plugin_test.cc',
- 'plugin_window_size_test.cc',
- 'npapi_test.def',
+ 'plugin_test.cc'
]
+if env['PLATFORM'] == 'win32':
+ # TODO(port): Port these.
+ input_files.extend([
+ 'plugin_arguments_test.cc',
+ 'plugin_execute_script_delete_test.cc',
+ 'plugin_geturl_test.cc',
+ 'plugin_client.cc', # Includes not ported headers.
+ 'plugin_npobject_lifetime_test.cc', # Has win32-isms (HWND, CALLBACK).
+ 'plugin_window_size_test.cc' # Has w32-isms including HWND.
+ ])
+
env.Append(
LIBS = [
'base',
],
)
-env.Append(
- CCFLAGS = [
- '/TP',
- '/wd4800',
- ],
+if env['PLATFORM'] == 'win32':
+ input_files.extend([
+ env_res.RES('npapi_test.rc'),
+ 'npapi_test.def'
+ ])
- LIBS = [
- 'comctl32.lib',
- 'rpcrt4.lib',
- 'shlwapi.lib',
- 'winmm.lib',
- ],
+ env.Append(
+ CCFLAGS = [
+ '/TP',
+ '/wd4800',
+ ],
- LINKFLAGS = [
- '/INCREMENTAL',
- '/DELAYLOAD:"dwmapi.dll"',
- '/DELAYLOAD:"uxtheme.dll"',
- '/FIXED:No',
- '/SUBSYSTEM:CONSOLE',
- '/MACHINE:X86',
- '/safeseh',
- '/dynamicbase',
- '/ignore:4199',
- '/nxcompat',
- ],
-)
+ LIBS = [
+ 'comctl32.lib',
+ 'rpcrt4.lib',
+ 'shlwapi.lib',
+ 'winmm.lib',
+ ],
+
+ LINKFLAGS = [
+ '/INCREMENTAL',
+ '/DELAYLOAD:"dwmapi.dll"',
+ '/DELAYLOAD:"uxtheme.dll"',
+ '/FIXED:No',
+ '/SUBSYSTEM:CONSOLE',
+ '/MACHINE:X86',
+ '/safeseh',
+ '/dynamicbase',
+ '/ignore:4199',
+ '/nxcompat',
+ ],
+ )
-dll = env.ChromeSharedLibrary(['npapi_test_plugin',
- 'npapi_test_plugin.lib',
- 'npapi_test_plugin.ilk',
- 'npapi_test_plugin.pdb'],
- input_files)
+ dll = env.ChromeSharedLibrary([
+ 'npapi_test_plugin',
+ 'npapi_test_plugin.lib',
+ 'npapi_test_plugin.ilk',
+ 'npapi_test_plugin.pdb'
+ ], input_files)
-# TODO(sgk): goes away once ChromeSharedLibrary does this for us.
-env.Install('$LIBS_DIR', dll[1])
+ # TODO(sgk): goes away once ChromeSharedLibrary does this for us.
+ env.Install('$LIBS_DIR', dll[1])
+else:
+ dll = env.ChromeSharedLibrary(['npapi_test_plugin'], input_files)
i = env.Install('$TARGET_ROOT', dll)
env.Alias('webkit', i)
diff --git a/webkit/glue/plugins/test/npapi_test.cc b/webkit/glue/plugins/test/npapi_test.cc
index e12a7da..a286e58 100644
--- a/webkit/glue/plugins/test/npapi_test.cc
+++ b/webkit/glue/plugins/test/npapi_test.cc
@@ -41,23 +41,30 @@
//
//
+#include "base/basictypes.h"
+
+#if defined(OS_WIN)
#include <windows.h>
+#endif
+
#include "webkit/glue/plugins/test/plugin_client.h"
-BOOL WINAPI DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID lpReserved) {
+#if defined(OS_WIN)
+BOOL API_CALL DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID lpReserved) {
return TRUE;
}
+#endif
extern "C" {
-NPError WINAPI NP_GetEntryPoints(NPPluginFuncs* pFuncs) {
+NPError API_CALL NP_GetEntryPoints(NPPluginFuncs* pFuncs) {
return NPAPIClient::PluginClient::GetEntryPoints(pFuncs);
}
-NPError WINAPI NP_Initialize(NPNetscapeFuncs* pFuncs) {
+NPError API_CALL NP_Initialize(NPNetscapeFuncs* pFuncs) {
return NPAPIClient::PluginClient::Initialize(pFuncs);
}
-NPError WINAPI NP_Shutdown() {
+NPError API_CALL NP_Shutdown() {
return NPAPIClient::PluginClient::Shutdown();
}
} // extern "C"
diff --git a/webkit/glue/plugins/test/plugin_arguments_test.cc b/webkit/glue/plugins/test/plugin_arguments_test.cc
index a0d08a8..d6eac88 100644
--- a/webkit/glue/plugins/test/plugin_arguments_test.cc
+++ b/webkit/glue/plugins/test/plugin_arguments_test.cc
@@ -2,8 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/basictypes.h"
+
+#if defined(OS_WIN)
#define STRSAFE_NO_DEPRECATE
#include <strsafe.h>
+#endif
+
#include "webkit/glue/plugins/test/plugin_arguments_test.h"
namespace NPAPIClient {
diff --git a/webkit/glue/plugins/test/plugin_client.cc b/webkit/glue/plugins/test/plugin_client.cc
index 1512cff..a2f5dc6 100644
--- a/webkit/glue/plugins/test/plugin_client.cc
+++ b/webkit/glue/plugins/test/plugin_client.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/string_util.h"
#include "webkit/glue/plugins/test/plugin_client.h"
#include "webkit/glue/plugins/test/plugin_arguments_test.h"
#include "webkit/glue/plugins/test/plugin_delete_plugin_in_stream_test.h"
@@ -40,7 +41,7 @@ NPError PluginClient::GetEntryPoints(NPPluginFuncs* pFuncs) {
pFuncs->urlnotify = NPP_URLNotify;
pFuncs->getvalue = NPP_GetValue;
pFuncs->setvalue = NPP_SetValue;
- pFuncs->javaClass = NPP_GetJavaClass;
+ pFuncs->javaClass = static_cast<JRIGlobalRef>(NPP_GetJavaClass);
return NPERR_NO_ERROR;
}
@@ -50,7 +51,8 @@ NPError PluginClient::Initialize(NPNetscapeFuncs* pFuncs) {
return NPERR_INVALID_FUNCTABLE_ERROR;
}
- if (HIBYTE(pFuncs->version) > NP_VERSION_MAJOR) {
+ if (static_cast<unsigned char>((pFuncs->version >> 8) & 0xff) >
+ NP_VERSION_MAJOR) {
return NPERR_INCOMPATIBLE_VERSION_ERROR;
}
@@ -77,7 +79,7 @@ NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode,
// lookup the name parameter
int name_index = 0;
for (name_index = 0; name_index < argc; name_index++)
- if (_stricmp(argn[name_index], "name") == 0)
+ if (base::strcasecmp(argn[name_index], "name") == 0)
break;
if (name_index >= argc)
@@ -87,40 +89,43 @@ NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode,
bool windowless_plugin = false;
NPAPIClient::PluginTest *new_test = NULL;
- if (_stricmp(argv[name_index], "arguments") == 0) {
+ if (base::strcasecmp(argv[name_index], "arguments") == 0) {
new_test = new NPAPIClient::PluginArgumentsTest(instance,
NPAPIClient::PluginClient::HostFunctions());
- } else if (_stricmp(argv[name_index], "geturl") == 0) {
+ } else if (base::strcasecmp(argv[name_index], "geturl") == 0) {
new_test = new NPAPIClient::PluginGetURLTest(instance,
NPAPIClient::PluginClient::HostFunctions());
- } else if (_stricmp(argv[name_index], "npobject_proxy") == 0) {
+ } else if (base::strcasecmp(argv[name_index], "npobject_proxy") == 0) {
new_test = new NPAPIClient::NPObjectProxyTest(instance,
NPAPIClient::PluginClient::HostFunctions());
- } else if (_stricmp(argv[name_index], "execute_script_delete_in_paint") == 0) {
+ } else if (base::strcasecmp(argv[name_index],
+ "execute_script_delete_in_paint") == 0) {
new_test = new NPAPIClient::ExecuteScriptDeleteTest(instance,
NPAPIClient::PluginClient::HostFunctions());
windowless_plugin = true;
- } else if (_stricmp(argv[name_index], "getjavascripturl") == 0) {
+ } else if (base::strcasecmp(argv[name_index], "getjavascripturl") == 0) {
new_test = new NPAPIClient::ExecuteGetJavascriptUrlTest(instance,
NPAPIClient::PluginClient::HostFunctions());
- } else if (_stricmp(argv[name_index], "checkwindowrect") == 0) {
+ } else if (base::strcasecmp(argv[name_index], "checkwindowrect") == 0) {
new_test = new NPAPIClient::PluginWindowSizeTest(instance,
NPAPIClient::PluginClient::HostFunctions());
- } else if (_stricmp(argv[name_index], "self_delete_plugin_stream") == 0) {
+ } else if (base::strcasecmp(argv[name_index],
+ "self_delete_plugin_stream") == 0) {
new_test = new NPAPIClient::DeletePluginInStreamTest(instance,
NPAPIClient::PluginClient::HostFunctions());
- } else if (_stricmp(argv[name_index], "npobject_lifetime_test") == 0) {
+ } else if (base::strcasecmp(argv[name_index],
+ "npobject_lifetime_test") == 0) {
new_test = new NPAPIClient::NPObjectLifetimeTest(instance,
NPAPIClient::PluginClient::HostFunctions());
- } else if (_stricmp(argv[name_index],
- "npobject_lifetime_test_second_instance") == 0) {
+ } else if (base::strcasecmp(argv[name_index],
+ "npobject_lifetime_test_second_instance") == 0) {
new_test = new NPAPIClient::NPObjectLifetimeTestInstance2(instance,
NPAPIClient::PluginClient::HostFunctions());
- } else if (_stricmp(argv[name_index], "new_fails") == 0) {
+ } else if (base::strcasecmp(argv[name_index], "new_fails") == 0) {
new_test = new NPAPIClient::NewFailsTest(instance,
NPAPIClient::PluginClient::HostFunctions());
- } else if (_stricmp(argv[name_index],
- "npobject_delete_plugin_in_evaluate") == 0) {
+ } else if (base::strcasecmp(argv[name_index],
+ "npobject_delete_plugin_in_evaluate") == 0) {
new_test = new NPAPIClient::NPObjectDeletePluginInNPN_Evaluate(instance,
NPAPIClient::PluginClient::HostFunctions());
} else {
@@ -270,7 +275,3 @@ void* NPP_GetJavaClass(void) {
}
} // extern "C"
-
-
-
-
diff --git a/webkit/glue/plugins/test/plugin_get_javascript_url_test.cc b/webkit/glue/plugins/test/plugin_get_javascript_url_test.cc
index 8eff37e..43281f7 100644
--- a/webkit/glue/plugins/test/plugin_get_javascript_url_test.cc
+++ b/webkit/glue/plugins/test/plugin_get_javascript_url_test.cc
@@ -4,6 +4,7 @@
#include "webkit/glue/plugins/test/plugin_get_javascript_url_test.h"
+#include "base/basictypes.h"
// url for "self".
#define SELF_URL "javascript:window.location+\"\""
@@ -38,7 +39,9 @@ NPError ExecuteGetJavascriptUrlTest::NewStream(NPMIMEType type, NPStream* stream
if (stream == NULL)
SetError("NewStream got null stream");
- unsigned long stream_id = PtrToUlong(stream->notifyData);
+ COMPILE_ASSERT(sizeof(unsigned long) <= sizeof(stream->notifyData),
+ cast_validity_check);
+ unsigned long stream_id = reinterpret_cast<unsigned long>(stream->notifyData);
switch (stream_id) {
case SELF_URL_STREAM_ID:
break;
@@ -60,7 +63,9 @@ int32 ExecuteGetJavascriptUrlTest::Write(NPStream *stream, int32 offset, int32 l
if (len < 0 || len > STREAM_CHUNK)
SetError("Write got bogus stream chunk size");
- unsigned long stream_id = PtrToUlong(stream->notifyData);
+ COMPILE_ASSERT(sizeof(unsigned long) <= sizeof(stream->notifyData),
+ cast_validity_check);
+ unsigned long stream_id = reinterpret_cast<unsigned long>(stream->notifyData);
switch (stream_id) {
case SELF_URL_STREAM_ID:
self_url_.append(static_cast<char*>(buffer), len);
@@ -78,7 +83,9 @@ NPError ExecuteGetJavascriptUrlTest::DestroyStream(NPStream *stream, NPError rea
if (stream == NULL)
SetError("NewStream got null stream");
- unsigned long stream_id = PtrToUlong(stream->notifyData);
+ COMPILE_ASSERT(sizeof(unsigned long) <= sizeof(stream->notifyData),
+ cast_validity_check);
+ unsigned long stream_id = reinterpret_cast<unsigned long>(stream->notifyData);
switch (stream_id) {
case SELF_URL_STREAM_ID:
// don't care
@@ -91,7 +98,9 @@ NPError ExecuteGetJavascriptUrlTest::DestroyStream(NPStream *stream, NPError rea
}
void ExecuteGetJavascriptUrlTest::URLNotify(const char* url, NPReason reason, void* data) {
- unsigned long stream_id = PtrToUlong(data);
+ COMPILE_ASSERT(sizeof(unsigned long) <= sizeof(data),
+ cast_validity_check);
+ unsigned long stream_id = reinterpret_cast<unsigned long>(data);
switch (stream_id) {
case SELF_URL_STREAM_ID:
if (strcmp(url, SELF_URL) != 0)
diff --git a/webkit/glue/plugins/test/plugin_test.cc b/webkit/glue/plugins/test/plugin_test.cc
index 2559d44..f70c429 100644
--- a/webkit/glue/plugins/test/plugin_test.cc
+++ b/webkit/glue/plugins/test/plugin_test.cc
@@ -3,6 +3,8 @@
// found in the LICENSE file.
#include "webkit/glue/plugins/test/plugin_test.h"
+
+#include "base/string_util.h"
#include "webkit/glue/plugins/test/npapi_constants.h"
namespace NPAPIClient {
@@ -32,8 +34,8 @@ NPError PluginTest::SetWindow(NPWindow* pNPWindow) {
// end up using libicu, which is a string of dependencies we don't
// want.
-inline BYTE toHex(const BYTE &x) {
- return x > 9 ? x + 55: x + 48;
+inline unsigned char toHex(const unsigned char x) {
+ return x > 9 ? (x + 'A' - 10) : (x + '0');
}
std::string URLEncode(const std::string &sIn) {
@@ -88,7 +90,7 @@ void PluginTest::SignalTestCompleted() {
const char *PluginTest::GetArgValue(const char *name, const int16 argc,
const char *argn[], const char *argv[]) {
for (int idx = 0; idx < argc; idx++)
- if (_stricmp(argn[idx], name) == 0)
+ if (base::strcasecmp(argn[idx], name) == 0)
return argv[idx];
return NULL;
}
diff --git a/webkit/glue/plugins/test/plugin_test.h b/webkit/glue/plugins/test/plugin_test.h
index 1b5441e..0332339 100644
--- a/webkit/glue/plugins/test/plugin_test.h
+++ b/webkit/glue/plugins/test/plugin_test.h
@@ -77,13 +77,10 @@ class PluginTest {
void ExpectIntegerEqual(int val1, int val2) {
if (val1 != val2) {
std::string err;
- char buf[64]; // what's the right size?
err = "Expected Equal for '";
- sprintf_s(buf, "%d", val1);
- err.append(buf);
+ err.append(IntToString(val1));
err.append("' and '");
- sprintf_s(buf, "%d", val2);
- err.append(buf);
+ err.append(IntToString(val2));
err.append("'");
SetError(err);
}