| OLD | NEW |
| (Empty) |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "mojo/examples/pepper_container_app/plugin_instance.h" | |
| 6 | |
| 7 #include "base/logging.h" | |
| 8 #include "mojo/examples/pepper_container_app/graphics_3d_resource.h" | |
| 9 #include "mojo/examples/pepper_container_app/mojo_ppapi_globals.h" | |
| 10 #include "ppapi/c/pp_errors.h" | |
| 11 #include "ppapi/c/pp_var.h" | |
| 12 #include "ppapi/c/ppp_graphics_3d.h" | |
| 13 #include "ppapi/c/ppp_instance.h" | |
| 14 #include "ppapi/shared_impl/ppb_view_shared.h" | |
| 15 #include "ppapi/shared_impl/proxy_lock.h" | |
| 16 #include "ppapi/shared_impl/tracked_callback.h" | |
| 17 #include "ppapi/thunk/enter.h" | |
| 18 #include "ppapi/thunk/ppb_graphics_3d_api.h" | |
| 19 | |
| 20 namespace mojo { | |
| 21 namespace examples { | |
| 22 | |
| 23 PluginInstance::PluginInstance(scoped_refptr<PluginModule> plugin_module) | |
| 24 : pp_instance_(0), | |
| 25 plugin_module_(plugin_module) { | |
| 26 pp_instance_ = MojoPpapiGlobals::Get()->AddInstance(this); | |
| 27 } | |
| 28 | |
| 29 PluginInstance::~PluginInstance() { | |
| 30 MojoPpapiGlobals::Get()->InstanceDeleted(pp_instance_); | |
| 31 } | |
| 32 | |
| 33 bool PluginInstance::DidCreate() { | |
| 34 ppapi::ProxyAutoUnlock unlock; | |
| 35 const PPP_Instance_1_1* instance_interface = | |
| 36 static_cast<const PPP_Instance_1_1*>(plugin_module_->GetPluginInterface( | |
| 37 PPP_INSTANCE_INTERFACE_1_1)); | |
| 38 return !!instance_interface->DidCreate(pp_instance(), 0, NULL, NULL); | |
| 39 } | |
| 40 | |
| 41 void PluginInstance::DidDestroy() { | |
| 42 ppapi::ProxyAutoUnlock unlock; | |
| 43 const PPP_Instance_1_1* instance_interface = | |
| 44 static_cast<const PPP_Instance_1_1*>(plugin_module_->GetPluginInterface( | |
| 45 PPP_INSTANCE_INTERFACE_1_1)); | |
| 46 instance_interface->DidDestroy(pp_instance()); | |
| 47 } | |
| 48 | |
| 49 void PluginInstance::DidChangeView(const PP_Rect& bounds) { | |
| 50 ppapi::ViewData view_data; | |
| 51 view_data.rect = bounds; | |
| 52 view_data.is_fullscreen = false; | |
| 53 view_data.is_page_visible = true; | |
| 54 view_data.clip_rect = bounds; | |
| 55 view_data.device_scale = 1.0f; | |
| 56 view_data.css_scale = 1.0f; | |
| 57 | |
| 58 ppapi::ScopedPPResource resource(ppapi::ScopedPPResource::PassRef(), | |
| 59 (new ppapi::PPB_View_Shared( | |
| 60 ppapi::OBJECT_IS_IMPL, pp_instance(), view_data))->GetReference()); | |
| 61 { | |
| 62 ppapi::ProxyAutoUnlock unlock; | |
| 63 const PPP_Instance_1_1* instance_interface = | |
| 64 static_cast<const PPP_Instance_1_1*>(plugin_module_->GetPluginInterface( | |
| 65 PPP_INSTANCE_INTERFACE_1_1)); | |
| 66 instance_interface->DidChangeView(pp_instance(), resource); | |
| 67 } | |
| 68 } | |
| 69 | |
| 70 void PluginInstance::Graphics3DContextLost() { | |
| 71 ppapi::ProxyAutoUnlock unlock; | |
| 72 const PPP_Graphics3D_1_0* graphic_3d_interface = | |
| 73 static_cast<const PPP_Graphics3D_1_0*>(plugin_module_->GetPluginInterface( | |
| 74 PPP_GRAPHICS_3D_INTERFACE_1_0)); | |
| 75 // TODO(yzshen): Maybe we only need to notify for the bound graphics context? | |
| 76 graphic_3d_interface->Graphics3DContextLost(pp_instance()); | |
| 77 } | |
| 78 | |
| 79 bool PluginInstance::IsBoundGraphics(PP_Resource device) const { | |
| 80 return device != 0 && device == bound_graphics_.get(); | |
| 81 } | |
| 82 | |
| 83 PP_Bool PluginInstance::BindGraphics(PP_Instance instance, PP_Resource device) { | |
| 84 if (bound_graphics_.get() == device) | |
| 85 return PP_TRUE; | |
| 86 | |
| 87 ppapi::thunk::EnterResourceNoLock<ppapi::thunk::PPB_Graphics3D_API> | |
| 88 enter(device, false); | |
| 89 if (enter.failed()) | |
| 90 return PP_FALSE; | |
| 91 | |
| 92 bound_graphics_ = device; | |
| 93 static_cast<Graphics3DResource*>(enter.object())->BindGraphics(); | |
| 94 | |
| 95 return PP_TRUE; | |
| 96 } | |
| 97 | |
| 98 PP_Bool PluginInstance::IsFullFrame(PP_Instance instance) { | |
| 99 NOTIMPLEMENTED(); | |
| 100 return PP_FALSE; | |
| 101 } | |
| 102 | |
| 103 const ppapi::ViewData* PluginInstance::GetViewData(PP_Instance instance) { | |
| 104 NOTIMPLEMENTED(); | |
| 105 return NULL; | |
| 106 } | |
| 107 | |
| 108 PP_Bool PluginInstance::FlashIsFullscreen(PP_Instance instance) { | |
| 109 NOTIMPLEMENTED(); | |
| 110 return PP_FALSE; | |
| 111 } | |
| 112 | |
| 113 PP_Var PluginInstance::GetWindowObject(PP_Instance instance) { | |
| 114 NOTIMPLEMENTED(); | |
| 115 return PP_MakeUndefined(); | |
| 116 } | |
| 117 | |
| 118 PP_Var PluginInstance::GetOwnerElementObject(PP_Instance instance) { | |
| 119 NOTIMPLEMENTED(); | |
| 120 return PP_MakeUndefined(); | |
| 121 } | |
| 122 | |
| 123 PP_Var PluginInstance::ExecuteScript(PP_Instance instance, | |
| 124 PP_Var script, | |
| 125 PP_Var* exception) { | |
| 126 NOTIMPLEMENTED(); | |
| 127 return PP_MakeUndefined(); | |
| 128 } | |
| 129 | |
| 130 uint32_t PluginInstance::GetAudioHardwareOutputSampleRate( | |
| 131 PP_Instance instance) { | |
| 132 NOTIMPLEMENTED(); | |
| 133 return 0; | |
| 134 } | |
| 135 | |
| 136 uint32_t PluginInstance::GetAudioHardwareOutputBufferSize( | |
| 137 PP_Instance instance) { | |
| 138 NOTIMPLEMENTED(); | |
| 139 return 0; | |
| 140 } | |
| 141 | |
| 142 PP_Var PluginInstance::GetDefaultCharSet(PP_Instance instance) { | |
| 143 NOTIMPLEMENTED(); | |
| 144 return PP_MakeUndefined(); | |
| 145 } | |
| 146 | |
| 147 void PluginInstance::Log(PP_Instance instance, | |
| 148 PP_LogLevel log_level, | |
| 149 PP_Var value) { | |
| 150 NOTIMPLEMENTED(); | |
| 151 } | |
| 152 | |
| 153 void PluginInstance::LogWithSource(PP_Instance instance, | |
| 154 PP_LogLevel log_level, | |
| 155 PP_Var source, | |
| 156 PP_Var value) { | |
| 157 NOTIMPLEMENTED(); | |
| 158 } | |
| 159 | |
| 160 void PluginInstance::SetPluginToHandleFindRequests(PP_Instance instance) { | |
| 161 NOTIMPLEMENTED(); | |
| 162 } | |
| 163 | |
| 164 void PluginInstance::NumberOfFindResultsChanged(PP_Instance instance, | |
| 165 int32_t total, | |
| 166 PP_Bool final_result) { | |
| 167 NOTIMPLEMENTED(); | |
| 168 } | |
| 169 | |
| 170 void PluginInstance::SelectedFindResultChanged(PP_Instance instance, | |
| 171 int32_t index) { | |
| 172 NOTIMPLEMENTED(); | |
| 173 } | |
| 174 | |
| 175 void PluginInstance::SetTickmarks(PP_Instance instance, | |
| 176 const PP_Rect* tickmarks, | |
| 177 uint32_t count) { | |
| 178 NOTIMPLEMENTED(); | |
| 179 } | |
| 180 | |
| 181 PP_Bool PluginInstance::IsFullscreen(PP_Instance instance) { | |
| 182 NOTIMPLEMENTED(); | |
| 183 return PP_FALSE; | |
| 184 } | |
| 185 | |
| 186 PP_Bool PluginInstance::SetFullscreen(PP_Instance instance, | |
| 187 PP_Bool fullscreen) { | |
| 188 NOTIMPLEMENTED(); | |
| 189 return PP_FALSE; | |
| 190 } | |
| 191 | |
| 192 PP_Bool PluginInstance::GetScreenSize(PP_Instance instance, PP_Size* size) { | |
| 193 NOTIMPLEMENTED(); | |
| 194 return PP_FALSE; | |
| 195 } | |
| 196 | |
| 197 ppapi::Resource* PluginInstance::GetSingletonResource( | |
| 198 PP_Instance instance, | |
| 199 ppapi::SingletonResourceID id) { | |
| 200 NOTIMPLEMENTED(); | |
| 201 return NULL; | |
| 202 } | |
| 203 | |
| 204 int32_t PluginInstance::RequestInputEvents(PP_Instance instance, | |
| 205 uint32_t event_classes) { | |
| 206 NOTIMPLEMENTED(); | |
| 207 return PP_ERROR_FAILED; | |
| 208 } | |
| 209 | |
| 210 int32_t PluginInstance::RequestFilteringInputEvents(PP_Instance instance, | |
| 211 uint32_t event_classes) { | |
| 212 NOTIMPLEMENTED(); | |
| 213 return PP_ERROR_FAILED; | |
| 214 } | |
| 215 | |
| 216 void PluginInstance::ClearInputEventRequest(PP_Instance instance, | |
| 217 uint32_t event_classes) { | |
| 218 NOTIMPLEMENTED(); | |
| 219 } | |
| 220 | |
| 221 void PluginInstance::StartTrackingLatency(PP_Instance instance) { | |
| 222 NOTIMPLEMENTED(); | |
| 223 } | |
| 224 | |
| 225 void PluginInstance::PostMessage(PP_Instance instance, PP_Var message) { | |
| 226 NOTIMPLEMENTED(); | |
| 227 } | |
| 228 | |
| 229 int32_t PluginInstance::RegisterMessageHandler( | |
| 230 PP_Instance instance, | |
| 231 void* user_data, | |
| 232 const PPP_MessageHandler_0_2* handler, | |
| 233 PP_Resource message_loop) { | |
| 234 NOTIMPLEMENTED(); | |
| 235 return PP_ERROR_FAILED; | |
| 236 } | |
| 237 | |
| 238 // TODO(dmichael): Remove this. crbug.com/414398 | |
| 239 int32_t PluginInstance::RegisterMessageHandler_1_1_Deprecated( | |
| 240 PP_Instance instance, | |
| 241 void* user_data, | |
| 242 const PPP_MessageHandler_0_1_Deprecated* handler, | |
| 243 PP_Resource message_loop) { | |
| 244 NOTIMPLEMENTED(); | |
| 245 return PP_ERROR_FAILED; | |
| 246 } | |
| 247 | |
| 248 void PluginInstance::UnregisterMessageHandler(PP_Instance instance) { | |
| 249 NOTIMPLEMENTED(); | |
| 250 } | |
| 251 | |
| 252 PP_Bool PluginInstance::SetCursor(PP_Instance instance, | |
| 253 PP_MouseCursor_Type type, | |
| 254 PP_Resource image, | |
| 255 const PP_Point* hot_spot) { | |
| 256 NOTIMPLEMENTED(); | |
| 257 return PP_FALSE; | |
| 258 } | |
| 259 | |
| 260 int32_t PluginInstance::LockMouse( | |
| 261 PP_Instance instance, | |
| 262 scoped_refptr<ppapi::TrackedCallback> callback) { | |
| 263 NOTIMPLEMENTED(); | |
| 264 return PP_ERROR_FAILED; | |
| 265 } | |
| 266 | |
| 267 void PluginInstance::UnlockMouse(PP_Instance instance) { | |
| 268 NOTIMPLEMENTED(); | |
| 269 } | |
| 270 | |
| 271 void PluginInstance::SetTextInputType(PP_Instance instance, | |
| 272 PP_TextInput_Type type) { | |
| 273 NOTIMPLEMENTED(); | |
| 274 } | |
| 275 | |
| 276 void PluginInstance::UpdateCaretPosition(PP_Instance instance, | |
| 277 const PP_Rect& caret, | |
| 278 const PP_Rect& bounding_box) { | |
| 279 NOTIMPLEMENTED(); | |
| 280 } | |
| 281 | |
| 282 void PluginInstance::CancelCompositionText(PP_Instance instance) { | |
| 283 NOTIMPLEMENTED(); | |
| 284 } | |
| 285 | |
| 286 void PluginInstance::SelectionChanged(PP_Instance instance) { | |
| 287 NOTIMPLEMENTED(); | |
| 288 } | |
| 289 | |
| 290 void PluginInstance::UpdateSurroundingText(PP_Instance instance, | |
| 291 const char* text, | |
| 292 uint32_t caret, | |
| 293 uint32_t anchor) { | |
| 294 NOTIMPLEMENTED(); | |
| 295 } | |
| 296 | |
| 297 void PluginInstance::ZoomChanged(PP_Instance instance, double factor) { | |
| 298 NOTIMPLEMENTED(); | |
| 299 } | |
| 300 | |
| 301 void PluginInstance::ZoomLimitsChanged(PP_Instance instance, | |
| 302 double minimum_factor, | |
| 303 double maximum_factor) { | |
| 304 NOTIMPLEMENTED(); | |
| 305 } | |
| 306 | |
| 307 PP_Var PluginInstance::GetDocumentURL(PP_Instance instance, | |
| 308 PP_URLComponents_Dev* components) { | |
| 309 NOTIMPLEMENTED(); | |
| 310 return PP_MakeUndefined(); | |
| 311 } | |
| 312 | |
| 313 void PluginInstance::PromiseResolved(PP_Instance instance, uint32 promise_id) { | |
| 314 NOTIMPLEMENTED(); | |
| 315 } | |
| 316 | |
| 317 void PluginInstance::PromiseResolvedWithSession(PP_Instance instance, | |
| 318 uint32 promise_id, | |
| 319 PP_Var web_session_id_var) { | |
| 320 NOTIMPLEMENTED(); | |
| 321 } | |
| 322 | |
| 323 void PluginInstance::PromiseResolvedWithKeyIds(PP_Instance instance, | |
| 324 uint32 promise_id, | |
| 325 PP_Var key_ids_var) { | |
| 326 NOTIMPLEMENTED(); | |
| 327 } | |
| 328 | |
| 329 void PluginInstance::PromiseRejected(PP_Instance instance, | |
| 330 uint32 promise_id, | |
| 331 PP_CdmExceptionCode exception_code, | |
| 332 uint32 system_code, | |
| 333 PP_Var error_description_var) { | |
| 334 NOTIMPLEMENTED(); | |
| 335 } | |
| 336 | |
| 337 void PluginInstance::SessionMessage(PP_Instance instance, | |
| 338 PP_Var web_session_id_var, | |
| 339 PP_Var message_var, | |
| 340 PP_Var destination_url_var) { | |
| 341 NOTIMPLEMENTED(); | |
| 342 } | |
| 343 | |
| 344 void PluginInstance::SessionKeysChange(PP_Instance instance, | |
| 345 PP_Var web_session_id_var, | |
| 346 PP_Bool has_additional_usable_key) { | |
| 347 NOTIMPLEMENTED(); | |
| 348 } | |
| 349 | |
| 350 void PluginInstance::SessionExpirationChange(PP_Instance instance, | |
| 351 PP_Var web_session_id_var, | |
| 352 PP_Time new_expiry_time) { | |
| 353 NOTIMPLEMENTED(); | |
| 354 } | |
| 355 | |
| 356 void PluginInstance::SessionReady(PP_Instance instance, | |
| 357 PP_Var web_session_id_var) { | |
| 358 NOTIMPLEMENTED(); | |
| 359 } | |
| 360 | |
| 361 void PluginInstance::SessionClosed(PP_Instance instance, | |
| 362 PP_Var web_session_id_var) { | |
| 363 NOTIMPLEMENTED(); | |
| 364 } | |
| 365 | |
| 366 void PluginInstance::SessionError(PP_Instance instance, | |
| 367 PP_Var web_session_id_var, | |
| 368 PP_CdmExceptionCode exception_code, | |
| 369 uint32 system_code, | |
| 370 PP_Var error_description_var) { | |
| 371 NOTIMPLEMENTED(); | |
| 372 } | |
| 373 | |
| 374 void PluginInstance::DeliverBlock(PP_Instance instance, | |
| 375 PP_Resource decrypted_block, | |
| 376 const PP_DecryptedBlockInfo* block_info) { | |
| 377 NOTIMPLEMENTED(); | |
| 378 } | |
| 379 | |
| 380 void PluginInstance::DecoderInitializeDone(PP_Instance instance, | |
| 381 PP_DecryptorStreamType decoder_type, | |
| 382 uint32_t request_id, | |
| 383 PP_Bool success) { | |
| 384 NOTIMPLEMENTED(); | |
| 385 } | |
| 386 | |
| 387 void PluginInstance::DecoderDeinitializeDone( | |
| 388 PP_Instance instance, | |
| 389 PP_DecryptorStreamType decoder_type, | |
| 390 uint32_t request_id) { | |
| 391 NOTIMPLEMENTED(); | |
| 392 } | |
| 393 | |
| 394 void PluginInstance::DecoderResetDone(PP_Instance instance, | |
| 395 PP_DecryptorStreamType decoder_type, | |
| 396 uint32_t request_id) { | |
| 397 NOTIMPLEMENTED(); | |
| 398 } | |
| 399 | |
| 400 void PluginInstance::DeliverFrame(PP_Instance instance, | |
| 401 PP_Resource decrypted_frame, | |
| 402 const PP_DecryptedFrameInfo* frame_info) { | |
| 403 NOTIMPLEMENTED(); | |
| 404 } | |
| 405 | |
| 406 void PluginInstance::DeliverSamples(PP_Instance instance, | |
| 407 PP_Resource audio_frames, | |
| 408 const PP_DecryptedSampleInfo* sample_info) { | |
| 409 NOTIMPLEMENTED(); | |
| 410 } | |
| 411 | |
| 412 PP_Var PluginInstance::ResolveRelativeToDocument( | |
| 413 PP_Instance instance, | |
| 414 PP_Var relative, | |
| 415 PP_URLComponents_Dev* components) { | |
| 416 NOTIMPLEMENTED(); | |
| 417 return PP_MakeUndefined(); | |
| 418 } | |
| 419 | |
| 420 PP_Bool PluginInstance::DocumentCanRequest(PP_Instance instance, PP_Var url) { | |
| 421 NOTIMPLEMENTED(); | |
| 422 return PP_FALSE; | |
| 423 } | |
| 424 | |
| 425 PP_Bool PluginInstance::DocumentCanAccessDocument(PP_Instance instance, | |
| 426 PP_Instance target) { | |
| 427 NOTIMPLEMENTED(); | |
| 428 return PP_FALSE; | |
| 429 } | |
| 430 | |
| 431 PP_Var PluginInstance::GetPluginInstanceURL(PP_Instance instance, | |
| 432 PP_URLComponents_Dev* components) { | |
| 433 NOTIMPLEMENTED(); | |
| 434 return PP_MakeUndefined(); | |
| 435 } | |
| 436 | |
| 437 PP_Var PluginInstance::GetPluginReferrerURL(PP_Instance instance, | |
| 438 PP_URLComponents_Dev* components) { | |
| 439 NOTIMPLEMENTED(); | |
| 440 return PP_MakeUndefined(); | |
| 441 } | |
| 442 | |
| 443 } // namespace examples | |
| 444 } // namespace mojo | |
| OLD | NEW |