Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(123)

Side by Side Diff: webkit/glue/plugins/plugin_lib.h

Issue 6012002: Move the NPAPI files from webkit/glue/plugins to webkit/plugins/npapi and put... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/glue/plugins/plugin_instance_mac.mm ('k') | webkit/glue/plugins/plugin_lib.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef WEBKIT_GLUE_PLUGINS_PLUGIN_LIB_H_
6 #define WEBKIT_GLUE_PLUGINS_PLUGIN_LIB_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "base/basictypes.h"
12 #include "base/native_library.h"
13 #include "base/ref_counted.h"
14 #include "build/build_config.h"
15 #include "webkit/glue/plugins/plugin_list.h"
16 #include "webkit/glue/plugins/webplugin.h"
17
18 class FilePath;
19 struct WebPluginInfo;
20
21 namespace NPAPI {
22
23 class PluginInstance;
24
25 // A PluginLib is a single NPAPI Plugin Library, and is the lifecycle
26 // manager for new PluginInstances.
27 class PluginLib : public base::RefCounted<PluginLib> {
28 public:
29 static PluginLib* CreatePluginLib(const FilePath& filename);
30
31 // Creates a WebPluginInfo structure given a plugin's path. On success
32 // returns true, with the information being put into "info".
33 // Returns false if the library couldn't be found, or if it's not a plugin.
34 static bool ReadWebPluginInfo(const FilePath& filename, WebPluginInfo* info);
35
36 #if defined(OS_POSIX) && !defined(OS_MACOSX)
37 // Parse the result of an NP_GetMIMEDescription() call.
38 // This API is only used on Unixes, and is exposed here for testing.
39 static void ParseMIMEDescription(const std::string& description,
40 std::vector<WebPluginMimeType>* mime_types);
41 #endif
42
43 // Unloads all the loaded plugin libraries and cleans up the plugin map.
44 static void UnloadAllPlugins();
45
46 // Shuts down all loaded plugin instances.
47 static void ShutdownAllPlugins();
48
49 // Get the Plugin's function pointer table.
50 NPPluginFuncs* functions();
51
52 // Creates a new instance of this plugin.
53 PluginInstance* CreateInstance(const std::string& mime_type);
54
55 // Called by the instance when the instance is tearing down.
56 void CloseInstance();
57
58 // Gets information about this plugin and the mime types that it
59 // supports.
60 const WebPluginInfo& plugin_info() { return web_plugin_info_; }
61
62 bool internal() { return internal_; }
63
64 //
65 // NPAPI functions
66 //
67
68 // NPAPI method to initialize a Plugin.
69 // Initialize can be safely called multiple times
70 NPError NP_Initialize();
71
72 // NPAPI method to shutdown a Plugin.
73 void NP_Shutdown(void);
74
75 int instance_count() const { return instance_count_; }
76
77 // Prevents the library code from being unload when Unload() is called (since
78 // some plugins crash if unloaded).
79 void PreventLibraryUnload();
80
81 // protected for testability.
82 protected:
83 friend class base::RefCounted<PluginLib>;
84
85 // Creates a new PluginLib.
86 // |entry_points| is non-NULL for internal plugins.
87 PluginLib(const WebPluginInfo& info,
88 const PluginEntryPoints* entry_points);
89
90 virtual ~PluginLib();
91
92 // Attempts to load the plugin from the library.
93 // Returns true if it is a legitimate plugin, false otherwise
94 bool Load();
95
96 // Unloads the plugin library.
97 void Unload();
98
99 // Shutdown the plugin library.
100 void Shutdown();
101
102 private:
103 bool internal_; // True for plugins that are built-in into chrome binaries.
104 WebPluginInfo web_plugin_info_; // Supported mime types, description
105 base::NativeLibrary library_; // The opened library reference.
106 NPPluginFuncs plugin_funcs_; // The struct of plugin side functions.
107 bool initialized_; // Is the plugin initialized?
108 NPSavedData *saved_data_; // Persisted plugin info for NPAPI.
109 int instance_count_; // Count of plugins in use.
110 bool skip_unload_; // True if library_ should not be unloaded.
111
112 // Function pointers to entry points into the plugin.
113 PluginEntryPoints entry_points_;
114
115 DISALLOW_COPY_AND_ASSIGN(PluginLib);
116 };
117
118 } // namespace NPAPI
119
120 #endif // WEBKIT_GLUE_PLUGINS_PLUGIN_LIB_H_
OLDNEW
« no previous file with comments | « webkit/glue/plugins/plugin_instance_mac.mm ('k') | webkit/glue/plugins/plugin_lib.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698