diff options
author | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-22 22:31:08 +0000 |
---|---|---|
committer | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-22 22:31:08 +0000 |
commit | d16d8e951b82049c22d8604851c91a59194545f8 (patch) | |
tree | 4049deea0f2e12f239b857a60ffac7ac1cfa4d8c | |
parent | e9b19f26146a8f4cf5248084a85770f00bb4148a (diff) | |
download | chromium_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/SConscript | 18 | ||||
-rw-r--r-- | webkit/glue/plugins/plugin_lib.cc | 10 | ||||
-rw-r--r-- | webkit/glue/plugins/plugin_lib.h | 10 | ||||
-rw-r--r-- | webkit/glue/plugins/plugin_lib_linux.cc | 47 | ||||
-rw-r--r-- | webkit/glue/plugins/plugin_list_linux.cc | 42 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_shell_gtk.cc | 5 |
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 |