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

Unified Diff: remoting/client/pepper/pepper_main.cc

Issue 2857011: Convert chromoting to pepperv2 API. (Closed)
Patch Set: break dep Created 10 years, 6 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/client/pepper/fake_browser.cc ('k') | remoting/client/pepper/pepper_plugin.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
-}
« no previous file with comments | « remoting/client/pepper/fake_browser.cc ('k') | remoting/client/pepper/pepper_plugin.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698