Chromium Code Reviews| Index: webkit/plugins/npapi/plugin_host.cc |
| diff --git a/webkit/plugins/npapi/plugin_host.cc b/webkit/plugins/npapi/plugin_host.cc |
| index 9aed03b2d44853faccb3456209aa3307a42d8666..5fd6492fb77c30f59ea30e848c53a5b98a0be6f0 100644 |
| --- a/webkit/plugins/npapi/plugin_host.cc |
| +++ b/webkit/plugins/npapi/plugin_host.cc |
| @@ -693,6 +693,10 @@ NPError NPN_GetValue(NPP id, NPNVariable variable, void* value) { |
| switch (static_cast<int>(variable)) { |
| case NPNVWindowNPObject: { |
| scoped_refptr<PluginInstance> plugin(FindInstance(id)); |
| + if (!plugin.get()) { |
|
ananta
2011/03/23 18:39:26
Should we move this code outside the switch block
davidben
2011/03/23 18:51:08
Some variables don't seem to require a plugin inst
|
| + NOTREACHED(); |
| + return NPERR_INVALID_INSTANCE_ERROR; |
| + } |
| NPObject *np_object = plugin->webplugin()->GetWindowScriptNPObject(); |
| // Return value is expected to be retained, as |
| // described here: |
| @@ -709,6 +713,10 @@ NPError NPN_GetValue(NPP id, NPNVariable variable, void* value) { |
| } |
| case NPNVPluginElementNPObject: { |
| scoped_refptr<PluginInstance> plugin(FindInstance(id)); |
| + if (!plugin.get()) { |
| + NOTREACHED(); |
| + return NPERR_INVALID_INSTANCE_ERROR; |
| + } |
| NPObject *np_object = plugin->webplugin()->GetPluginElement(); |
| // Return value is expected to be retained, as |
| // described here: |
| @@ -728,7 +736,7 @@ NPError NPN_GetValue(NPP id, NPNVariable variable, void* value) { |
| scoped_refptr<PluginInstance> plugin = FindInstance(id); |
| if (!plugin.get()) { |
| NOTREACHED(); |
| - return NPERR_GENERIC_ERROR; |
| + return NPERR_INVALID_INSTANCE_ERROR; |
| } |
| gfx::PluginWindowHandle handle = plugin->window_handle(); |
| *((void**)value) = (void*)handle; |
| @@ -763,6 +771,10 @@ NPError NPN_GetValue(NPP id, NPNVariable variable, void* value) { |
| case NPNVprivateModeBool: { |
| NPBool* private_mode = reinterpret_cast<NPBool*>(value); |
| scoped_refptr<PluginInstance> plugin(FindInstance(id)); |
| + if (!plugin.get()) { |
| + NOTREACHED(); |
| + return NPERR_INVALID_INSTANCE_ERROR; |
| + } |
| *private_mode = plugin->webplugin()->IsOffTheRecord(); |
| rv = NPERR_NO_ERROR; |
| break; |
| @@ -778,6 +790,10 @@ NPError NPN_GetValue(NPP id, NPNVariable variable, void* value) { |
| // with the variable definition, in order to avoid duplicate case clauses |
| // in this big switch statement. |
| scoped_refptr<PluginInstance> plugin(FindInstance(id)); |
| + if (!plugin.get()) { |
| + NOTREACHED(); |
| + return NPERR_INVALID_INSTANCE_ERROR; |
| + } |
| if (plugin->plugin_lib()->plugin_info().path.value() == |
| webkit::npapi::kDefaultPluginLibraryName) { |
| plugin->webplugin()->OnMissingPluginStatus(variable - |
| @@ -789,6 +805,10 @@ NPError NPN_GetValue(NPP id, NPNVariable variable, void* value) { |
| case NPNVpluginDrawingModel: { |
| // return the drawing model that was negotiated when we initialized. |
| scoped_refptr<PluginInstance> plugin(FindInstance(id)); |
| + if (!plugin.get()) { |
| + NOTREACHED(); |
| + return NPERR_INVALID_INSTANCE_ERROR; |
| + } |
| *reinterpret_cast<int*>(value) = plugin->drawing_model(); |
| rv = NPERR_NO_ERROR; |
| break; |
| @@ -869,6 +889,10 @@ NPError NPN_SetValue(NPP id, NPPVariable variable, void* value) { |
| // Allows the plugin to set various modes |
| scoped_refptr<PluginInstance> plugin(FindInstance(id)); |
| + if (!plugin.get()) { |
| + NOTREACHED(); |
| + return NPERR_INVALID_INSTANCE_ERROR; |
| + } |
| switch(variable) { |
| case NPPVpluginWindowBool: { |
| // Sets windowless mode for display of the plugin |