summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-22 22:31:08 +0000
committerevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-22 22:31:08 +0000
commitd16d8e951b82049c22d8604851c91a59194545f8 (patch)
tree4049deea0f2e12f239b857a60ffac7ac1cfa4d8c
parente9b19f26146a8f4cf5248084a85770f00bb4148a (diff)
downloadchromium_src-d16d8e951b82049c22d8604851c91a59194545f8.zip
chromium_src-d16d8e951b82049c22d8604851c91a59194545f8.tar.gz
chromium_src-d16d8e951b82049c22d8604851c91a59194545f8.tar.bz2
Build some basic plugin code on Linux.
Mostly style tweaks as I read some files, and some NOTIMPLEMENTED stubs. Review URL: http://codereview.chromium.org/18685 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8508 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--webkit/glue/SConscript18
-rw-r--r--webkit/glue/plugins/plugin_lib.cc10
-rw-r--r--webkit/glue/plugins/plugin_lib.h10
-rw-r--r--webkit/glue/plugins/plugin_lib_linux.cc47
-rw-r--r--webkit/glue/plugins/plugin_list_linux.cc42
-rw-r--r--webkit/tools/test_shell/test_shell_gtk.cc5
6 files changed, 104 insertions, 28 deletions
diff --git a/webkit/glue/SConscript b/webkit/glue/SConscript
index b3409bc..5027c9d 100644
--- a/webkit/glue/SConscript
+++ b/webkit/glue/SConscript
@@ -83,22 +83,6 @@ input_files = [
'webview_impl.cc',
]
-if env.Bit('linux'):
- # TODO(port): until we have plugin support for Linux, these files aren't
- # built.
- remove_files = [
- 'plugins/plugin_host.cc',
- 'plugins/plugin_instance.cc',
- 'plugins/plugin_lib.cc',
- 'plugins/plugin_list.cc',
- 'plugins/plugin_stream.cc',
- 'plugins/plugin_stream_url.cc',
- 'plugins/plugin_string_stream.cc',
- ]
- for file in remove_files:
- input_files.remove(file)
- input_files.extend(['plugins/plugin_stubs.cc'])
-
if env.Bit('windows'):
# TODO(port): These extra files aren't win32-specific, they've just not been
# tested on other platforms yet.
@@ -122,6 +106,8 @@ if env.Bit('windows'):
])
elif env.Bit('linux'):
input_files.extend([
+ 'plugins/plugin_lib_linux.cc',
+ 'plugins/plugin_list_linux.cc',
'webcursor_gtk.cc',
'webinputevent_linux.cc',
'webkit_glue_gtk.cc',
diff --git a/webkit/glue/plugins/plugin_lib.cc b/webkit/glue/plugins/plugin_lib.cc
index 57b6ef0..dace059 100644
--- a/webkit/glue/plugins/plugin_lib.cc
+++ b/webkit/glue/plugins/plugin_lib.cc
@@ -79,7 +79,7 @@ PluginLib::PluginLib(const WebPluginInfo& info,
if (np_getentrypoints && np_initialize && np_shutdown) {
internal_ = true;
NP_GetEntryPoints_ = np_getentrypoints;
- NP_Initialize_ = np_initialize;
+ NP_Initialize_ = np_initialize;
NP_Shutdown_ = np_shutdown;
} else {
internal_ = false;
@@ -93,7 +93,7 @@ PluginLib::~PluginLib() {
}
}
-NPPluginFuncs *PluginLib::functions() {
+NPPluginFuncs* PluginLib::functions() {
return &plugin_funcs_;
}
@@ -104,7 +104,7 @@ NPError PluginLib::NP_Initialize() {
if (!Load())
return NPERR_MODULE_LOAD_FAILED_ERROR;
- PluginHost *host = PluginHost::Singleton();
+ PluginHost* host = PluginHost::Singleton();
if (host == 0)
return NPERR_GENERIC_ERROR;
@@ -118,8 +118,8 @@ void PluginLib::NP_Shutdown(void) {
NP_Shutdown_();
}
-PluginInstance *PluginLib::CreateInstance(const std::string &mime_type) {
- PluginInstance *new_instance = new PluginInstance(this, mime_type);
+PluginInstance* PluginLib::CreateInstance(const std::string& mime_type) {
+ PluginInstance* new_instance = new PluginInstance(this, mime_type);
instance_count_++;
StatsCounter(kPluginInstancesActiveCounter).Increment();
DCHECK(new_instance != 0);
diff --git a/webkit/glue/plugins/plugin_lib.h b/webkit/glue/plugins/plugin_lib.h
index 97bd840..c7817cc 100644
--- a/webkit/glue/plugins/plugin_lib.h
+++ b/webkit/glue/plugins/plugin_lib.h
@@ -36,7 +36,7 @@ class PluginLib : public base::RefCounted<PluginLib> {
// returns true, with the information being put into "info". If it's an
// internal plugin, the function pointers are returned as well.
// Returns false if the library couldn't be found, or if it's not a plugin.
- static bool ReadWebPluginInfo(const FilePath &filename,
+ static bool ReadWebPluginInfo(const FilePath& filename,
WebPluginInfo* info,
NP_GetEntryPointsFunc* np_getentrypoints,
NP_InitializeFunc* np_initialize,
@@ -49,10 +49,10 @@ class PluginLib : public base::RefCounted<PluginLib> {
static void ShutdownAllPlugins();
// Get the Plugin's function pointer table.
- NPPluginFuncs *functions();
+ NPPluginFuncs* functions();
// Creates a new instance of this plugin.
- PluginInstance *CreateInstance(const std::string &mime_type);
+ PluginInstance* CreateInstance(const std::string& mime_type);
// Called by the instance when the instance is tearing down.
void CloseInstance();
@@ -100,6 +100,10 @@ class PluginLib : public base::RefCounted<PluginLib> {
typedef CFBundleRef NativeLibrary;
typedef CFStringRef NativeLibraryFunctionNameType;
#define FUNCTION_NAME(x) CFSTR(x)
+#elif defined(OS_LINUX)
+ typedef void* NativeLibrary;
+ typedef const char* NativeLibraryFunctionNameType;
+#define FUNCTION_NAME(x) x
#endif // OS_*
// Loads a native library from disk. NOTE: You must release it with
diff --git a/webkit/glue/plugins/plugin_lib_linux.cc b/webkit/glue/plugins/plugin_lib_linux.cc
new file mode 100644
index 0000000..47d6ebf
--- /dev/null
+++ b/webkit/glue/plugins/plugin_lib_linux.cc
@@ -0,0 +1,47 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "config.h"
+
+#include "webkit/glue/plugins/plugin_lib.h"
+
+#include "base/string_util.h"
+#include "base/sys_string_conversions.h"
+#include "webkit/glue/plugins/plugin_list.h"
+
+namespace NPAPI {
+
+// static
+PluginLib::NativeLibrary PluginLib::LoadNativeLibrary(
+ const FilePath& library_path) {
+ NOTIMPLEMENTED();
+ return NULL;
+}
+
+// static
+void PluginLib::UnloadNativeLibrary(NativeLibrary library) {
+ NOTIMPLEMENTED();
+}
+
+// static
+void* PluginLib::GetFunctionPointerFromNativeLibrary(
+ NativeLibrary library,
+ NativeLibraryFunctionNameType name) {
+ NOTIMPLEMENTED();
+ return NULL;
+}
+
+bool PluginLib::ReadWebPluginInfo(const FilePath& filename,
+ WebPluginInfo* info,
+ NP_GetEntryPointsFunc* np_getentrypoints,
+ NP_InitializeFunc* np_initialize,
+ NP_ShutdownFunc* np_shutdown) {
+ *np_getentrypoints = NULL;
+ *np_initialize = NULL;
+ *np_shutdown = NULL;
+
+ return false;
+}
+
+} // namespace NPAPI
diff --git a/webkit/glue/plugins/plugin_list_linux.cc b/webkit/glue/plugins/plugin_list_linux.cc
new file mode 100644
index 0000000..01b6457
--- /dev/null
+++ b/webkit/glue/plugins/plugin_list_linux.cc
@@ -0,0 +1,42 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "config.h"
+
+#include "webkit/glue/plugins/plugin_list.h"
+
+#include "base/file_util.h"
+#include "base/logging.h"
+
+namespace NPAPI {
+
+void PluginList::PlatformInit() {
+}
+
+void PluginList::GetPluginDirectories(std::vector<FilePath>* plugin_dirs) {
+ NOTIMPLEMENTED();
+}
+
+void PluginList::LoadPluginsFromDir(const FilePath& path) {
+ file_util::FileEnumerator enumerator(path,
+ false, // not recursive
+ file_util::FileEnumerator::DIRECTORIES);
+ for (FilePath path = enumerator.Next(); !path.value().empty();
+ path = enumerator.Next()) {
+ LoadPlugin(path);
+ }
+}
+
+bool PluginList::ShouldLoadPlugin(const WebPluginInfo& info) {
+ NOTIMPLEMENTED();
+ return true;
+}
+
+void PluginList::LoadInternalPlugins() {
+ // none for now
+ NOTIMPLEMENTED();
+}
+
+} // namespace NPAPI
+
diff --git a/webkit/tools/test_shell/test_shell_gtk.cc b/webkit/tools/test_shell/test_shell_gtk.cc
index 7fe0796..7d4bb01 100644
--- a/webkit/tools/test_shell/test_shell_gtk.cc
+++ b/webkit/tools/test_shell/test_shell_gtk.cc
@@ -709,10 +709,7 @@ std::string GetDataResource(int resource_id) {
}
bool GetPlugins(bool refresh, std::vector<WebPluginInfo>* plugins) {
- // TODO(port): Implement plugins someday. Don't let the error message
- // of NOTIMPLEMENTED into our layout test diffs.
- // NOTIMPLEMENTED();
- return false;
+ return NPAPI::PluginList::Singleton()->GetPlugins(refresh, plugins);
}
} // namespace webkit_glue