Index: remoting/client/pepper/pepper_main.cc |
diff --git a/remoting/client/pepper/pepper_main.cc b/remoting/client/pepper/pepper_main.cc |
deleted file mode 100644 |
index 013c90a7a10fa57baba9991cc5f867f199689b8a..0000000000000000000000000000000000000000 |
--- a/remoting/client/pepper/pepper_main.cc |
+++ /dev/null |
@@ -1,373 +0,0 @@ |
-// Copyright (c) 2010 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 "remoting/client/pepper/pepper_plugin.h" |
-#include "third_party/npapi/bindings/npapi.h" |
-#include "third_party/npapi/bindings/nphostapi.h" |
- |
-#if __GNUC__ >= 4 |
-# define EXPORT __attribute__ ((visibility("default"))) |
-# define PRIVATE __attribute__ ((visibility("hidden"))) |
-#else |
-# define EXPORT |
-# define PRIVATE |
-#endif |
- |
-// |
-// External Plugin Implementation |
-// |
- |
-// Plugin info. |
-// These routines are defined externally and provide the code that is specific |
-// to this particular plugin. |
- |
-// Initialize general plugin information. |
-extern void InitializePluginInfo(pepper::PepperPlugin::Info* plugin_info); |
- |
-// Routine to create the PepperPlugin subclass that implements all of the |
-// plugin-specific functionality. |
-extern pepper::PepperPlugin* CreatePlugin(NPNetscapeFuncs* browser_funcs, |
- NPP instance); |
- |
-namespace pepper { |
- |
-// |
-// Globals |
-// |
- |
-// Pointer to struct containing all the callbacks provided by the browser |
-// to the plugin. |
-NPNetscapeFuncs* g_browser_funcs = NULL; |
- |
-// General information (name/description) about this plugin. |
-PepperPlugin::Info g_plugin_info = { false, NULL, NULL, NULL }; |
- |
- |
-// |
-// Internal setup routines |
-// |
- |
-PRIVATE void Initialize(NPNetscapeFuncs* browser_funcs) { |
- g_browser_funcs = browser_funcs; |
- if (!g_plugin_info.initialized) { |
- InitializePluginInfo(&g_plugin_info); |
- } |
-} |
- |
-// Populate the NPPluginFuncs struct so that the browser knows how to find |
-// each entry point for the plugin. |
-PRIVATE void SetupEntryPoints(NPPluginFuncs* plugin_funcs) { |
- plugin_funcs->version = ((NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR); |
- plugin_funcs->size = sizeof(NPPluginFuncs); |
- plugin_funcs->newp = NPP_New; |
- plugin_funcs->destroy = NPP_Destroy; |
- plugin_funcs->setwindow = NPP_SetWindow; |
- plugin_funcs->newstream = NPP_NewStream; |
- plugin_funcs->destroystream = NPP_DestroyStream; |
- plugin_funcs->asfile = NPP_StreamAsFile; |
- plugin_funcs->writeready = NPP_WriteReady; |
- plugin_funcs->write = NPP_Write; |
- plugin_funcs->print = NPP_Print; |
- plugin_funcs->event = NPP_HandleEvent; |
- plugin_funcs->urlnotify = NPP_URLNotify; |
- plugin_funcs->javaClass = NULL; |
- plugin_funcs->getvalue = NPP_GetValue; |
- plugin_funcs->setvalue = NPP_SetValue; |
-} |
- |
-// Get the PepperPlugin from the private data storage in the instance. |
-PRIVATE PepperPlugin* GetPlugin(NPP instance) { |
- return static_cast<PepperPlugin*>(instance->pdata); |
-} |
- |
-} // namespace pepper |
- |
- |
-// |
-// Exported interfaces |
-// Routines to initialize/shutdown the plugin. |
-// |
- |
-extern "C" { |
- |
-#if defined(OS_POSIX) && !defined(OS_MACOSX) |
- |
-// Get the MIME-type associated with this plugin. |
-// Linux-only. Mac & Windows use a different mechanism for associating a |
-// MIME-type with the plugin. |
-// Note that this is called before NPP_Initialize(). |
-EXPORT const char* API_CALL NP_GetMIMEDescription() { |
- if (!pepper::g_plugin_info.initialized) { |
- InitializePluginInfo(&pepper::g_plugin_info); |
- } |
- return pepper::g_plugin_info.mime_description; |
-} |
- |
-// Old version of NPP_GetValue, required for Linux. |
-// Simply redirects to the NPP_GetValue. |
-EXPORT NPError API_CALL NP_GetValue(NPP instance, |
- NPPVariable variable, |
- void* value) { |
- return NPP_GetValue(instance, variable, value); |
-} |
- |
-// NP_Initialize for Linux. |
-// This is the equivalent of NP_Initialize and NP_GetEntryPoints for Mac/Win. |
-EXPORT NPError API_CALL NP_Initialize(NPNetscapeFuncs* browser_funcs, |
- NPPluginFuncs* plugin_funcs) { |
- pepper::Initialize(browser_funcs); |
- pepper::SetupEntryPoints(plugin_funcs); |
- return NPERR_NO_ERROR; |
-} |
- |
-#else |
- |
-// NP_Initialize for Mac/Windows. |
-EXPORT NPError API_CALL NP_Initialize(NPNetscapeFuncs* browser_funcs) { |
- pepper::Initialize(browser_funcs); |
- return NPERR_NO_ERROR; |
-} |
- |
-// NP_GetEntryPoints for Mac/Windows. |
-EXPORT NPError API_CALL NP_GetEntryPoints(NPPluginFuncs* plugin_funcs) { |
- pepper::SetupEntryPoints(plugin_funcs); |
- return NPERR_NO_ERROR; |
-} |
- |
-#endif // defined(OS_POSIX) && !defined(OS_MACOSX) |
- |
-EXPORT NPError API_CALL NP_Shutdown() { |
- pepper::g_browser_funcs = NULL; |
- return NPERR_NO_ERROR; |
-} |
- |
-} // extern "C" |
- |
- |
-// |
-// Plugin Entrypoints |
-// Entry points that the plugin makes available to the browser. |
-// |
- |
-EXPORT NPError NPP_New(NPMIMEType pluginType, |
- NPP instance, |
- uint16 mode, |
- int16 argc, |
- char* argn[], |
- char* argv[], |
- NPSavedData* saved) { |
- if (!instance) { |
- return NPERR_INVALID_INSTANCE_ERROR; |
- } |
- |
- pepper::PepperPlugin* plugin |
- = CreatePlugin(pepper::g_browser_funcs, instance); |
- NPError result = plugin->New(pluginType, argc, argn, argv); |
- if (result != NPERR_NO_ERROR) { |
- delete plugin; |
- return result; |
- } |
- |
- instance->pdata = plugin; |
- return NPERR_NO_ERROR; |
-} |
- |
-EXPORT NPError NPP_Destroy(NPP instance, NPSavedData** save) { |
- if (!instance) { |
- return NPERR_INVALID_INSTANCE_ERROR; |
- } |
- |
- NPError result = NPERR_NO_ERROR; |
- pepper::PepperPlugin* plugin = pepper::GetPlugin(instance); |
- if (plugin) { |
- result = plugin->Destroy(save); |
- if (result != NPERR_NO_ERROR) { |
- return result; |
- } |
- delete plugin; |
- instance->pdata = NULL; |
- } |
- return result; |
-} |
- |
-EXPORT NPError NPP_SetWindow(NPP instance, NPWindow* window) { |
- if (!instance) { |
- return NPERR_INVALID_INSTANCE_ERROR; |
- } |
- |
- pepper::PepperPlugin* plugin = pepper::GetPlugin(instance); |
- if (plugin) { |
- return plugin->SetWindow(window); |
- } |
- |
- return NPERR_GENERIC_ERROR; |
-} |
- |
-EXPORT NPError NPP_NewStream(NPP instance, |
- NPMIMEType type, |
- NPStream* stream, |
- NPBool seekable, |
- uint16* stype) { |
- if (!instance) { |
- return NPERR_INVALID_INSTANCE_ERROR; |
- } |
- |
- pepper::PepperPlugin* plugin = pepper::GetPlugin(instance); |
- if (plugin) { |
- return plugin->NewStream(type, stream, seekable, stype); |
- } |
- |
- return NPERR_GENERIC_ERROR; |
-} |
- |
-EXPORT NPError NPP_DestroyStream(NPP instance, |
- NPStream* stream, |
- NPReason reason) { |
- if (!instance) { |
- return NPERR_INVALID_INSTANCE_ERROR; |
- } |
- |
- pepper::PepperPlugin* plugin = pepper::GetPlugin(instance); |
- if (plugin) { |
- return plugin->DestroyStream(stream, reason); |
- } |
- |
- return NPERR_GENERIC_ERROR; |
-} |
- |
-EXPORT void NPP_StreamAsFile(NPP instance, |
- NPStream* stream, |
- const char* fname) { |
- if (!instance) { |
- return; |
- } |
- |
- pepper::PepperPlugin* plugin = pepper::GetPlugin(instance); |
- if (plugin) { |
- plugin->StreamAsFile(stream, fname); |
- } |
-} |
- |
-EXPORT int32 NPP_WriteReady(NPP instance, |
- NPStream* stream) { |
- if (!instance) { |
- return 0; |
- } |
- |
- pepper::PepperPlugin* plugin = pepper::GetPlugin(instance); |
- if (plugin) { |
- return plugin->WriteReady(stream); |
- } |
- |
- return 0; |
-} |
- |
-EXPORT int32 NPP_Write(NPP instance, |
- NPStream* stream, |
- int32 offset, |
- int32 len, |
- void* buffer) { |
- if (!instance) { |
- return 0; |
- } |
- |
- pepper::PepperPlugin* plugin = pepper::GetPlugin(instance); |
- if (plugin) { |
- return plugin->Write(stream, offset, len, buffer); |
- } |
- |
- return 0; |
-} |
- |
-EXPORT void NPP_Print(NPP instance, |
- NPPrint* platformPrint) { |
- if (!instance) { |
- return; |
- } |
- |
- pepper::PepperPlugin* plugin = pepper::GetPlugin(instance); |
- if (plugin) { |
- plugin->Print(platformPrint); |
- } |
-} |
- |
-EXPORT int16 NPP_HandleEvent(NPP instance, |
- void* event) { |
- if (!instance) { |
- return false; |
- } |
- |
- pepper::PepperPlugin* plugin = pepper::GetPlugin(instance); |
- if (plugin) { |
- return plugin->HandleEvent(event); |
- } |
- |
- return false; |
-} |
- |
-EXPORT void NPP_URLNotify(NPP instance, |
- const char* url, |
- NPReason reason, |
- void* notifyData) { |
- if (!instance) { |
- return; |
- } |
- |
- pepper::PepperPlugin* plugin = pepper::GetPlugin(instance); |
- if (plugin) { |
- plugin->URLNotify(url, reason, notifyData); |
- } |
-} |
- |
-EXPORT NPError NPP_GetValue(NPP instance, |
- NPPVariable variable, |
- void* value) { |
-#if defined(OS_POSIX) && !defined(OS_MACOSX) |
- // Note that it is valid to call this routine before the plugin instance |
- // has been created. |
- // For example, the browser requests the name/description when plugin |
- // is loaded or when about:plugins is opened (whichever comes first). |
- // Thus, we can't check for a valid instance instance here and bail if |
- // it's not setup (like we do for the other routines). |
- |
- // If the name/description is being requested, then get that directly. |
- if (variable == NPPVpluginNameString) { |
- *((const char**)value) = pepper::g_plugin_info.plugin_name; |
- return NPERR_NO_ERROR; |
- } |
- if (variable == NPPVpluginDescriptionString) { |
- *((const char**)value) = pepper::g_plugin_info.plugin_description; |
- return NPERR_NO_ERROR; |
- } |
- if (variable == NPPVpluginNeedsXEmbed) { |
- *(static_cast<NPBool*>(value)) = true; |
- return NPERR_NO_ERROR; |
- } |
-#endif // defined(OS_POSIX) && !defined(OS_MACOSX) |
- |
- if (instance) { |
- // If we have an instance, then let the plugin handle the call. |
- pepper::PepperPlugin* plugin = pepper::GetPlugin(instance); |
- if (plugin) { |
- return plugin->GetValue(variable, value); |
- } |
- } |
- |
- return NPERR_GENERIC_ERROR; |
-} |
- |
-EXPORT NPError NPP_SetValue(NPP instance, |
- NPNVariable variable, |
- void* value) { |
- if (!instance) { |
- return NPERR_INVALID_INSTANCE_ERROR; |
- } |
- |
- pepper::PepperPlugin* plugin = pepper::GetPlugin(instance); |
- if (plugin) { |
- return plugin->SetValue(variable, value); |
- } |
- |
- return NPERR_GENERIC_ERROR; |
-} |