Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright 2009, Google Inc. | 2 * Copyright 2009, Google Inc. |
| 3 * All rights reserved. | 3 * All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 30 */ | 30 */ |
| 31 | 31 |
| 32 | 32 |
| 33 #include "plugin/cross/main.h" | 33 #include "plugin/cross/main.h" |
| 34 | 34 |
| 35 using glue::_o3d::PluginObject; | 35 using glue::_o3d::PluginObject; |
| 36 using glue::StreamManager; | 36 using glue::StreamManager; |
| 37 | 37 |
| 38 #if !defined(O3D_INTERNAL_PLUGIN) | |
| 39 | |
| 38 int BreakpadEnabler::scope_count_ = 0; | 40 int BreakpadEnabler::scope_count_ = 0; |
| 39 | 41 |
| 40 // Used for breakpad crash handling | 42 // Used for breakpad crash handling |
| 41 ExceptionManager *g_exception_manager = NULL; | 43 ExceptionManager *g_exception_manager = NULL; |
| 42 | 44 |
| 43 extern "C" { | 45 #endif // O3D_INTERNAL_PLUGIN |
| 44 char *NP_GetMIMEDescription(void) { | 46 |
| 45 return O3D_PLUGIN_MIME_TYPE "::O3D MIME"; | 47 namespace o3d { |
| 48 | |
| 49 char *NP_GetMIMEDescription(void) { | |
|
Antoine Labour
2009/07/11 02:59:43
FYI, that broke the linux plugin.
That's one of th
| |
| 50 return O3D_PLUGIN_MIME_TYPE "::O3D MIME"; | |
| 51 } | |
| 52 | |
| 53 NPError NP_GetValue(void *instance, NPPVariable variable, void *value) { | |
| 54 switch (variable) { | |
| 55 case NPPVpluginNameString: | |
| 56 *static_cast<char **>(value) = O3D_PLUGIN_NAME; | |
| 57 break; | |
| 58 case NPPVpluginDescriptionString: | |
| 59 *static_cast<char **>(value) = O3D_PLUGIN_DESCRIPTION; | |
| 60 break; | |
| 61 default: | |
| 62 return NPERR_INVALID_PARAM; | |
| 63 break; | |
| 46 } | 64 } |
| 65 return NPERR_NO_ERROR; | |
| 66 } | |
| 47 | 67 |
| 48 NPError NP_GetValue(void *instance, NPPVariable variable, void *value) { | 68 NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream *stream, |
| 49 switch (variable) { | 69 NPBool seekable, uint16 *stype) { |
| 50 case NPPVpluginNameString: | 70 HANDLE_CRASHES; |
| 51 *static_cast<char **>(value) = O3D_PLUGIN_NAME; | 71 PluginObject *obj = static_cast<PluginObject*>(instance->pdata); |
| 52 break; | 72 StreamManager *stream_manager = obj->stream_manager(); |
| 53 case NPPVpluginDescriptionString: | 73 if (stream_manager->NewStream(stream, stype)) { |
| 54 *static_cast<char **>(value) = O3D_PLUGIN_DESCRIPTION; | 74 return NPERR_NO_ERROR; |
| 55 break; | 75 } else { |
| 56 default: | 76 // TODO: find out which error we should return |
| 57 return NPERR_INVALID_PARAM; | 77 return NPERR_INVALID_PARAM; |
| 58 break; | 78 } |
| 79 } | |
| 80 | |
| 81 NPError NPP_DestroyStream(NPP instance, NPStream *stream, NPReason reason) { | |
| 82 HANDLE_CRASHES; | |
| 83 PluginObject *obj = static_cast<PluginObject*>(instance->pdata); | |
| 84 StreamManager *stream_manager = obj->stream_manager(); | |
| 85 if (stream_manager->DestroyStream(stream, reason)) { | |
| 86 return NPERR_NO_ERROR; | |
| 87 } else { | |
| 88 // TODO: find out which error we should return | |
| 89 return NPERR_INVALID_PARAM; | |
| 90 } | |
| 91 } | |
| 92 | |
| 93 int32 NPP_WriteReady(NPP instance, NPStream *stream) { | |
| 94 HANDLE_CRASHES; | |
| 95 PluginObject *obj = static_cast<PluginObject*>(instance->pdata); | |
| 96 StreamManager *stream_manager = obj->stream_manager(); | |
| 97 return stream_manager->WriteReady(stream); | |
| 98 } | |
| 99 | |
| 100 int32 NPP_Write(NPP instance, NPStream *stream, int32 offset, int32 len, | |
| 101 void *buffer) { | |
| 102 HANDLE_CRASHES; | |
| 103 PluginObject *obj = static_cast<PluginObject*>(instance->pdata); | |
| 104 StreamManager *stream_manager = obj->stream_manager(); | |
| 105 return stream_manager->Write(stream, offset, len, buffer); | |
| 106 } | |
| 107 | |
| 108 void NPP_Print(NPP instance, NPPrint *platformPrint) { | |
| 109 HANDLE_CRASHES; | |
| 110 } | |
| 111 | |
| 112 void NPP_URLNotify(NPP instance, const char *url, NPReason reason, | |
| 113 void *notifyData) { | |
| 114 HANDLE_CRASHES; | |
| 115 PluginObject *obj = static_cast<PluginObject*>(instance->pdata); | |
| 116 StreamManager *stream_manager = obj->stream_manager(); | |
| 117 stream_manager->URLNotify(url, reason, notifyData); | |
| 118 } | |
| 119 | |
| 120 NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value) { | |
| 121 HANDLE_CRASHES; | |
| 122 switch (variable) { | |
| 123 case NPPVpluginScriptableNPObject: { | |
| 124 void **v = static_cast<void **>(value); | |
| 125 PluginObject *obj = static_cast<PluginObject *>(instance->pdata); | |
| 126 // Return value is expected to be retained | |
| 127 GLUE_PROFILE_START(instance, "retainobject"); | |
| 128 NPN_RetainObject(obj); | |
| 129 GLUE_PROFILE_STOP(instance, "retainobject"); | |
| 130 *v = obj; | |
| 131 break; | |
| 59 } | 132 } |
| 60 return NPERR_NO_ERROR; | 133 default: { |
| 61 } | 134 NPError ret = PlatformNPPGetValue(instance, variable, value); |
| 62 | 135 if (ret == NPERR_INVALID_PARAM) |
| 63 NPError OSCALL NP_GetEntryPoints(NPPluginFuncs *pluginFuncs) { | 136 ret = o3d::NP_GetValue(instance, variable, value); |
| 64 HANDLE_CRASHES; | 137 return ret; |
| 65 pluginFuncs->version = 11; | |
| 66 pluginFuncs->size = sizeof(*pluginFuncs); | |
| 67 pluginFuncs->newp = NPP_New; | |
| 68 pluginFuncs->destroy = NPP_Destroy; | |
| 69 pluginFuncs->setwindow = NPP_SetWindow; | |
| 70 pluginFuncs->newstream = NPP_NewStream; | |
| 71 pluginFuncs->destroystream = NPP_DestroyStream; | |
| 72 pluginFuncs->asfile = NPP_StreamAsFile; | |
| 73 pluginFuncs->writeready = NPP_WriteReady; | |
| 74 pluginFuncs->write = NPP_Write; | |
| 75 pluginFuncs->print = NPP_Print; | |
| 76 pluginFuncs->event = NPP_HandleEvent; | |
| 77 pluginFuncs->urlnotify = NPP_URLNotify; | |
| 78 pluginFuncs->getvalue = NPP_GetValue; | |
| 79 pluginFuncs->setvalue = NPP_SetValue; | |
| 80 | |
| 81 return NPERR_NO_ERROR; | |
| 82 } | |
| 83 | |
| 84 NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream *stream, | |
| 85 NPBool seekable, uint16 *stype) { | |
| 86 HANDLE_CRASHES; | |
| 87 PluginObject *obj = static_cast<PluginObject*>(instance->pdata); | |
| 88 StreamManager *stream_manager = obj->stream_manager(); | |
| 89 if (stream_manager->NewStream(stream, stype)) { | |
| 90 return NPERR_NO_ERROR; | |
| 91 } else { | |
| 92 // TODO: find out which error we should return | |
| 93 return NPERR_INVALID_PARAM; | |
| 94 } | 138 } |
| 95 } | 139 } |
| 140 return NPERR_NO_ERROR; | |
| 141 } | |
| 96 | 142 |
| 97 NPError NPP_DestroyStream(NPP instance, NPStream *stream, NPReason reason) { | 143 NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value) { |
| 98 HANDLE_CRASHES; | 144 HANDLE_CRASHES; |
| 99 PluginObject *obj = static_cast<PluginObject*>(instance->pdata); | 145 return NPERR_GENERIC_ERROR; |
| 100 StreamManager *stream_manager = obj->stream_manager(); | 146 } |
| 101 if (stream_manager->DestroyStream(stream, reason)) { | 147 } // namespace o3d |
| 102 return NPERR_NO_ERROR; | |
| 103 } else { | |
| 104 // TODO: find out which error we should return | |
| 105 return NPERR_INVALID_PARAM; | |
| 106 } | |
| 107 } | |
| 108 | 148 |
| 109 int32 NPP_WriteReady(NPP instance, NPStream *stream) { | 149 #if defined(O3D_INTERNAL_PLUGIN) |
| 110 HANDLE_CRASHES; | 150 namespace o3d { |
| 111 PluginObject *obj = static_cast<PluginObject*>(instance->pdata); | 151 #else |
| 112 StreamManager *stream_manager = obj->stream_manager(); | 152 extern "C" { |
| 113 return stream_manager->WriteReady(stream); | 153 #endif |
| 114 } | |
| 115 | 154 |
| 116 int32 NPP_Write(NPP instance, NPStream *stream, int32 offset, int32 len, | 155 NPError OSCALL NP_GetEntryPoints(NPPluginFuncs *pluginFuncs) { |
| 117 void *buffer) { | 156 HANDLE_CRASHES; |
| 118 HANDLE_CRASHES; | 157 pluginFuncs->version = 11; |
| 119 PluginObject *obj = static_cast<PluginObject*>(instance->pdata); | 158 pluginFuncs->size = sizeof(*pluginFuncs); |
| 120 StreamManager *stream_manager = obj->stream_manager(); | 159 pluginFuncs->newp = o3d::NPP_New; |
| 121 return stream_manager->Write(stream, offset, len, buffer); | 160 pluginFuncs->destroy = o3d::NPP_Destroy; |
| 122 } | 161 pluginFuncs->setwindow = o3d::NPP_SetWindow; |
| 162 pluginFuncs->newstream = o3d::NPP_NewStream; | |
| 163 pluginFuncs->destroystream = o3d::NPP_DestroyStream; | |
| 164 pluginFuncs->asfile = o3d::NPP_StreamAsFile; | |
| 165 pluginFuncs->writeready = o3d::NPP_WriteReady; | |
| 166 pluginFuncs->write = o3d::NPP_Write; | |
| 167 pluginFuncs->print = o3d::NPP_Print; | |
| 168 pluginFuncs->event = o3d::NPP_HandleEvent; | |
| 169 pluginFuncs->urlnotify = o3d::NPP_URLNotify; | |
| 170 pluginFuncs->getvalue = o3d::NPP_GetValue; | |
| 171 pluginFuncs->setvalue = o3d::NPP_SetValue; | |
| 123 | 172 |
| 124 void NPP_Print(NPP instance, NPPrint *platformPrint) { | 173 return NPERR_NO_ERROR; |
| 125 HANDLE_CRASHES; | 174 } |
| 126 } | 175 } // namespace o3d / extern "C" |
| 127 | |
| 128 void NPP_URLNotify(NPP instance, const char *url, NPReason reason, | |
| 129 void *notifyData) { | |
| 130 HANDLE_CRASHES; | |
| 131 PluginObject *obj = static_cast<PluginObject*>(instance->pdata); | |
| 132 StreamManager *stream_manager = obj->stream_manager(); | |
| 133 stream_manager->URLNotify(url, reason, notifyData); | |
| 134 } | |
| 135 | |
| 136 NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value) { | |
| 137 HANDLE_CRASHES; | |
| 138 switch (variable) { | |
| 139 case NPPVpluginScriptableNPObject: { | |
| 140 void **v = static_cast<void **>(value); | |
| 141 PluginObject *obj = static_cast<PluginObject *>(instance->pdata); | |
| 142 // Return value is expected to be retained | |
| 143 GLUE_PROFILE_START(instance, "retainobject"); | |
| 144 NPN_RetainObject(obj); | |
| 145 GLUE_PROFILE_STOP(instance, "retainobject"); | |
| 146 *v = obj; | |
| 147 break; | |
| 148 } | |
| 149 default: { | |
| 150 NPError ret = PlatformNPPGetValue(instance, variable, value); | |
| 151 if (ret == NPERR_INVALID_PARAM) | |
| 152 ret = NP_GetValue(instance, variable, value); | |
| 153 return ret; | |
| 154 } | |
| 155 } | |
| 156 return NPERR_NO_ERROR; | |
| 157 } | |
| 158 | |
| 159 NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value) { | |
| 160 HANDLE_CRASHES; | |
| 161 return NPERR_GENERIC_ERROR; | |
| 162 } | |
| 163 } // extern "C" | |
| OLD | NEW |