OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef WEBKIT_PLUGINS_NPAPI_PLUGIN_LIST_H_ | 5 #ifndef WEBKIT_PLUGINS_NPAPI_PLUGIN_LIST_H_ |
6 #define WEBKIT_PLUGINS_NPAPI_PLUGIN_LIST_H_ | 6 #define WEBKIT_PLUGINS_NPAPI_PLUGIN_LIST_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
11 #include <vector> | 11 #include <vector> |
12 | 12 |
13 #include "base/basictypes.h" | 13 #include "base/basictypes.h" |
14 #include "base/callback.h" | 14 #include "base/callback.h" |
15 #include "base/file_path.h" | 15 #include "base/file_path.h" |
16 #include "base/memory/linked_ptr.h" | 16 #include "base/memory/linked_ptr.h" |
17 #include "base/memory/scoped_vector.h" | 17 #include "base/memory/scoped_vector.h" |
18 #include "base/synchronization/lock.h" | 18 #include "base/synchronization/lock.h" |
19 #include "third_party/npapi/bindings/nphostapi.h" | 19 #include "third_party/npapi/bindings/nphostapi.h" |
20 #include "webkit/plugins/npapi/plugin_group.h" | 20 #include "webkit/plugins/npapi/plugin_group.h" |
| 21 #include "webkit/plugins/webkit_plugins_export.h" |
21 #include "webkit/plugins/webplugininfo.h" | 22 #include "webkit/plugins/webplugininfo.h" |
22 | 23 |
23 class GURL; | 24 class GURL; |
24 | 25 |
25 namespace base { | 26 namespace base { |
26 | 27 |
27 template <typename T> | 28 template <typename T> |
28 struct DefaultLazyInstanceTraits; | 29 struct DefaultLazyInstanceTraits; |
29 | 30 |
30 } // namespace base | 31 } // namespace base |
31 | 32 |
32 namespace webkit { | 33 namespace webkit { |
33 namespace npapi { | 34 namespace npapi { |
34 | 35 |
35 extern FilePath::CharType kDefaultPluginLibraryName[]; | 36 WEBKIT_PLUGINS_EXPORT extern FilePath::CharType kDefaultPluginLibraryName[]; |
36 | 37 |
37 // This struct holds entry points into a plugin. The entry points are | 38 // This struct holds entry points into a plugin. The entry points are |
38 // slightly different between Win/Mac and Unixes. Note that the interface for | 39 // slightly different between Win/Mac and Unixes. Note that the interface for |
39 // querying plugins is synchronous and it is preferable to use a higher-level | 40 // querying plugins is synchronous and it is preferable to use a higher-level |
40 // asynchronous information to query information. | 41 // asynchronous information to query information. |
41 struct PluginEntryPoints { | 42 struct PluginEntryPoints { |
42 #if !defined(OS_POSIX) || defined(OS_MACOSX) | 43 #if !defined(OS_POSIX) || defined(OS_MACOSX) |
43 NP_GetEntryPointsFunc np_getentrypoints; | 44 NP_GetEntryPointsFunc np_getentrypoints; |
44 #endif | 45 #endif |
45 NP_InitializeFunc np_initialize; | 46 NP_InitializeFunc np_initialize; |
46 NP_ShutdownFunc np_shutdown; | 47 NP_ShutdownFunc np_shutdown; |
47 }; | 48 }; |
48 | 49 |
49 // The PluginList is responsible for loading our NPAPI based plugins. It does | 50 // The PluginList is responsible for loading our NPAPI based plugins. It does |
50 // so in whatever manner is appropriate for the platform. On Windows, it loads | 51 // so in whatever manner is appropriate for the platform. On Windows, it loads |
51 // plugins from a known directory by looking for DLLs which start with "NP", | 52 // plugins from a known directory by looking for DLLs which start with "NP", |
52 // and checking to see if they are valid NPAPI libraries. On the Mac, it walks | 53 // and checking to see if they are valid NPAPI libraries. On the Mac, it walks |
53 // the machine-wide and user plugin directories and loads anything that has | 54 // the machine-wide and user plugin directories and loads anything that has |
54 // the correct types. On Linux, it walks the plugin directories as well | 55 // the correct types. On Linux, it walks the plugin directories as well |
55 // (e.g. /usr/lib/browser-plugins/). | 56 // (e.g. /usr/lib/browser-plugins/). |
56 // This object is thread safe. | 57 // This object is thread safe. |
57 class PluginList { | 58 class WEBKIT_PLUGINS_EXPORT PluginList { |
58 public: | 59 public: |
59 // Gets the one instance of the PluginList. | 60 // Gets the one instance of the PluginList. |
60 static PluginList* Singleton(); | 61 static PluginList* Singleton(); |
61 | 62 |
62 // Returns true if we're in debug-plugin-loading mode. This is controlled | 63 // Returns true if we're in debug-plugin-loading mode. This is controlled |
63 // by a command line switch. | 64 // by a command line switch. |
64 static bool DebugPluginLoading(); | 65 static bool DebugPluginLoading(); |
65 | 66 |
66 // Cause the plugin list to refresh next time they are accessed, regardless | 67 // Cause the plugin list to refresh next time they are accessed, regardless |
67 // of whether they are already loaded. | 68 // of whether they are already loaded. |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 // Set to true if the default plugin is enabled. | 297 // Set to true if the default plugin is enabled. |
297 bool default_plugin_enabled_; | 298 bool default_plugin_enabled_; |
298 | 299 |
299 DISALLOW_COPY_AND_ASSIGN(PluginList); | 300 DISALLOW_COPY_AND_ASSIGN(PluginList); |
300 }; | 301 }; |
301 | 302 |
302 } // namespace npapi | 303 } // namespace npapi |
303 } // namespace webkit | 304 } // namespace webkit |
304 | 305 |
305 #endif // WEBKIT_PLUGINS_NPAPI_PLUGIN_LIST_H_ | 306 #endif // WEBKIT_PLUGINS_NPAPI_PLUGIN_LIST_H_ |
OLD | NEW |