OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome_frame/chrome_frame_npapi_entrypoints.h" | 5 #include "chrome_frame/chrome_frame_npapi_entrypoints.h" |
6 #include "chrome_frame/chrome_frame_npapi.h" | 6 #include "chrome_frame/chrome_frame_npapi.h" |
7 | 7 |
8 #define NPAPI WINAPI | 8 #define NPAPI WINAPI |
9 | 9 |
10 // Plugin entry points. | 10 // Plugin entry points. |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 if (plugin_instance == NULL) { | 112 if (plugin_instance == NULL) { |
113 return NPERR_INVALID_INSTANCE_ERROR; | 113 return NPERR_INVALID_INSTANCE_ERROR; |
114 } | 114 } |
115 | 115 |
116 plugin_instance->SetWindow(window_info); | 116 plugin_instance->SetWindow(window_info); |
117 return NPERR_NO_ERROR; | 117 return NPERR_NO_ERROR; |
118 } | 118 } |
119 | 119 |
120 NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, | 120 NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, |
121 NPBool seekable, uint16* stream_type) { | 121 NPBool seekable, uint16* stream_type) { |
122 NPAPIUrlRequest* url_request = ChromeFrameNPAPI::ValidateRequest( | 122 ChromeFrameNPAPI* plugin_instance = |
123 instance, stream->notifyData); | 123 ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); |
124 if (url_request) { | 124 if (plugin_instance == NULL) { |
125 if (!url_request->OnStreamCreated(type, stream)) | 125 return NPERR_INVALID_INSTANCE_ERROR; |
126 return NPERR_GENERIC_ERROR; | |
127 } | 126 } |
128 | 127 |
129 // We need to return the requested stream mode if we are returning a success | 128 return plugin_instance->NewStream(type, stream, seekable, stream_type); |
130 // code. If we don't do this it causes Opera to blow up. | |
131 *stream_type = NP_NORMAL; | |
132 return NPERR_NO_ERROR; | |
133 } | 129 } |
134 | 130 |
135 NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason) { | 131 NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason) { |
136 NPAPIUrlRequest* url_request = ChromeFrameNPAPI::ValidateRequest( | 132 ChromeFrameNPAPI* plugin_instance = |
137 instance, stream->notifyData); | 133 ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); |
138 if (url_request) { | 134 if (plugin_instance == NULL) { |
139 url_request->OnStreamDestroyed(reason); | 135 return NPERR_INVALID_INSTANCE_ERROR; |
140 } | 136 } |
141 | 137 |
142 return NPERR_NO_ERROR; | 138 return plugin_instance->DestroyStream(stream, reason); |
143 } | 139 } |
144 | 140 |
145 NPError NPP_GetValue(NPP instance, NPPVariable variable, void* value) { | 141 NPError NPP_GetValue(NPP instance, NPPVariable variable, void* value) { |
146 if (variable == NPPVpluginScriptableNPObject) { | 142 if (variable == NPPVpluginScriptableNPObject) { |
147 void** plugin = reinterpret_cast<void**>(value); | 143 void** plugin = reinterpret_cast<void**>(value); |
148 ChromeFrameNPAPI::ChromeFrameNPObject* chrome_frame_npapi_obj = | 144 ChromeFrameNPAPI::ChromeFrameNPObject* chrome_frame_npapi_obj = |
149 reinterpret_cast<ChromeFrameNPAPI::ChromeFrameNPObject*>( | 145 reinterpret_cast<ChromeFrameNPAPI::ChromeFrameNPObject*>( |
150 instance->pdata); | 146 instance->pdata); |
151 // Return value is expected to be retained | 147 // Return value is expected to be retained |
152 npapi::RetainObject(reinterpret_cast<NPObject*>(chrome_frame_npapi_obj)); | 148 npapi::RetainObject(reinterpret_cast<NPObject*>(chrome_frame_npapi_obj)); |
153 *plugin = chrome_frame_npapi_obj; | 149 *plugin = chrome_frame_npapi_obj; |
154 return NPERR_NO_ERROR; | 150 return NPERR_NO_ERROR; |
155 } | 151 } |
156 return NPERR_GENERIC_ERROR; | 152 return NPERR_GENERIC_ERROR; |
157 } | 153 } |
158 | 154 |
159 NPError NPP_SetValue(NPP instance, NPNVariable variable, void* value) { | 155 NPError NPP_SetValue(NPP instance, NPNVariable variable, void* value) { |
160 return NPERR_GENERIC_ERROR; | 156 return NPERR_GENERIC_ERROR; |
161 } | 157 } |
162 | 158 |
163 int32 NPP_WriteReady(NPP instance, NPStream* stream) { | 159 int32 NPP_WriteReady(NPP instance, NPStream* stream) { |
164 static const int kMaxBytesForPluginConsumption = 0x7FFFFFFF; | 160 static const int kMaxBytesForPluginConsumption = 0x7FFFFFFF; |
165 | 161 |
166 NPAPIUrlRequest* url_request = ChromeFrameNPAPI::ValidateRequest( | 162 ChromeFrameNPAPI* plugin_instance = |
167 instance, stream->notifyData); | 163 ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); |
168 if (url_request) { | 164 |
169 return url_request->OnWriteReady(); | 165 if (plugin_instance == NULL) { |
| 166 return kMaxBytesForPluginConsumption; |
170 } | 167 } |
171 | 168 |
172 return kMaxBytesForPluginConsumption; | 169 return plugin_instance->WriteReady(stream); |
173 } | 170 } |
174 | 171 |
175 int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, | 172 int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, |
176 void* buffer) { | 173 void* buffer) { |
177 NPAPIUrlRequest* url_request = ChromeFrameNPAPI::ValidateRequest( | 174 ChromeFrameNPAPI* plugin_instance = |
178 instance, stream->notifyData); | 175 ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); |
179 if (url_request) { | |
180 return url_request->OnWrite(buffer, len); | |
181 } | |
182 | 176 |
183 return len; | 177 if (plugin_instance == NULL) |
| 178 return len; |
| 179 |
| 180 return plugin_instance->Write(stream, offset, len, buffer); |
184 } | 181 } |
185 | 182 |
186 void NPP_URLNotify(NPP instance, const char* url, NPReason reason, | 183 void NPP_URLNotify(NPP instance, const char* url, NPReason reason, |
187 void* notifyData) { | 184 void* notifyData) { |
188 ChromeFrameNPAPI* plugin_instance = | 185 ChromeFrameNPAPI* plugin_instance = |
189 ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); | 186 ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); |
190 if (plugin_instance) { | 187 if (plugin_instance) { |
191 plugin_instance->UrlNotify(url, reason, notifyData); | 188 plugin_instance->UrlNotify(url, reason, notifyData); |
192 } | 189 } |
193 } | 190 } |
194 | 191 |
195 void NPP_Print(NPP instance, NPPrint* print_info) { | 192 void NPP_Print(NPP instance, NPPrint* print_info) { |
196 ChromeFrameNPAPI* plugin_instance = | 193 ChromeFrameNPAPI* plugin_instance = |
197 ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); | 194 ChromeFrameNPAPI::ChromeFrameInstanceFromPluginInstance(instance); |
198 | 195 |
199 if (plugin_instance == NULL) { | 196 if (plugin_instance == NULL) { |
200 NOTREACHED(); | 197 NOTREACHED(); |
201 return; | 198 return; |
202 } | 199 } |
203 | 200 |
204 plugin_instance->Print(print_info); | 201 plugin_instance->Print(print_info); |
205 } | 202 } |
206 | 203 |
207 } // namespace chrome_frame | 204 } // namespace chrome_frame |
OLD | NEW |