| OLD | NEW | 
|---|
|  | (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 CHROME_COMMON_CHROME_PLUGIN_LIB_H_ |  | 
| 6 #define CHROME_COMMON_CHROME_PLUGIN_LIB_H_ |  | 
| 7 #pragma once |  | 
| 8 |  | 
| 9 #include "base/basictypes.h" |  | 
| 10 #include "base/file_path.h" |  | 
| 11 #include "base/ref_counted.h" |  | 
| 12 #include "chrome/common/chrome_plugin_api.h" |  | 
| 13 |  | 
| 14 class MessageLoop; |  | 
| 15 |  | 
| 16 // A ChromePluginLib is a single Chrome Plugin Library. |  | 
| 17 // This class is used in the browser process (IO thread), and the plugin process |  | 
| 18 // (plugin thread).  It should not be accessed on other threads, because it |  | 
| 19 // issues a NOTIFY_CHROME_PLUGIN_UNLOADED notification. |  | 
| 20 class ChromePluginLib : public base::RefCounted<ChromePluginLib>  { |  | 
| 21  public: |  | 
| 22   static bool IsInitialized(); |  | 
| 23   static ChromePluginLib* Create(const FilePath& filename, |  | 
| 24                                  const CPBrowserFuncs* bfuncs); |  | 
| 25   static ChromePluginLib* Find(const FilePath& filename); |  | 
| 26   static void Destroy(const FilePath& filename); |  | 
| 27   static bool IsPluginThread(); |  | 
| 28   static MessageLoop* GetPluginThreadLoop(); |  | 
| 29 |  | 
| 30   static ChromePluginLib* FromCPID(CPID id) { |  | 
| 31     return reinterpret_cast<ChromePluginLib*>(id); |  | 
| 32   } |  | 
| 33 |  | 
| 34   // Adds Chrome plugins to the NPAPI plugin list. |  | 
| 35   static void RegisterPluginsWithNPAPI(); |  | 
| 36 |  | 
| 37   // Loads all the plugins that are marked as "LoadOnStartup" in the |  | 
| 38   // registry. This should only be called in the browser process. |  | 
| 39   static void LoadChromePlugins(const CPBrowserFuncs* bfuncs); |  | 
| 40 |  | 
| 41   // Unloads all the loaded plugins and cleans up the plugin map. |  | 
| 42   static void UnloadAllPlugins(); |  | 
| 43 |  | 
| 44   // Returns true if the plugin is currently loaded. |  | 
| 45   bool is_loaded() const { return initialized_; } |  | 
| 46 |  | 
| 47   // Get the Plugin's function pointer table. |  | 
| 48   const CPPluginFuncs& functions() const; |  | 
| 49 |  | 
| 50   CPID cpid() { return reinterpret_cast<CPID>(this); } |  | 
| 51 |  | 
| 52   const FilePath& filename() { return filename_; } |  | 
| 53 |  | 
| 54   // Plugin API functions |  | 
| 55 |  | 
| 56   // Method to call a test function in the plugin, used for unit tests. |  | 
| 57   int CP_Test(void* param); |  | 
| 58 |  | 
| 59 #if defined(OS_WIN) |  | 
| 60   // The registry path to search for Chrome Plugins/ |  | 
| 61   static const TCHAR kRegistryChromePlugins[]; |  | 
| 62 #endif  // defined(OS_WIN) |  | 
| 63 |  | 
| 64  private: |  | 
| 65   friend class base::RefCounted<ChromePluginLib>; |  | 
| 66 |  | 
| 67   explicit ChromePluginLib(const FilePath& filename); |  | 
| 68   ~ChromePluginLib(); |  | 
| 69 |  | 
| 70   // Method to initialize a Plugin. |  | 
| 71   // Initialize can be safely called multiple times. |  | 
| 72   bool CP_Initialize(const CPBrowserFuncs* bfuncs); |  | 
| 73 |  | 
| 74   // Method to shutdown a Plugin. |  | 
| 75   void CP_Shutdown(); |  | 
| 76 |  | 
| 77   // Attempts to load the plugin. |  | 
| 78   // Returns true if it is a legitimate plugin, false otherwise |  | 
| 79   bool Load(); |  | 
| 80 |  | 
| 81   // Unloads the plugin. |  | 
| 82   void Unload(); |  | 
| 83 |  | 
| 84   FilePath filename_;  // the path to the plugin |  | 
| 85 #if defined(OS_WIN) |  | 
| 86   // TODO(port): Remove ifdefs when we have portable replacement for HMODULE. |  | 
| 87   HMODULE module_;  // the opened plugin handle |  | 
| 88 #endif  // defined(OS_WIN) |  | 
| 89   bool initialized_;  // is the plugin initialized |  | 
| 90 |  | 
| 91   // Exported symbols from the plugin, looked up by name. |  | 
| 92   CP_VersionNegotiateFunc CP_VersionNegotiate_; |  | 
| 93   CP_InitializeFunc CP_Initialize_; |  | 
| 94 |  | 
| 95   // Additional function pointers provided by the plugin. |  | 
| 96   CPPluginFuncs plugin_funcs_; |  | 
| 97 |  | 
| 98   // Used for unit tests. |  | 
| 99   typedef int (STDCALL *CP_TestFunc)(void*); |  | 
| 100   CP_TestFunc CP_Test_; |  | 
| 101 |  | 
| 102   DISALLOW_COPY_AND_ASSIGN(ChromePluginLib); |  | 
| 103 }; |  | 
| 104 |  | 
| 105 #endif  // CHROME_COMMON_CHROME_PLUGIN_LIB_H_ |  | 
| OLD | NEW | 
|---|