OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "webkit/plugins/ppapi/ppapi_plugin_instance.h" | 5 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/debug/trace_event.h" | 8 #include "base/debug/trace_event.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/memory/linked_ptr.h" | 10 #include "base/memory/linked_ptr.h" |
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 PluginModule* module) { | 326 PluginModule* module) { |
327 base::Callback<const void*(const char*)> get_plugin_interface_func = | 327 base::Callback<const void*(const char*)> get_plugin_interface_func = |
328 base::Bind(&PluginModule::GetPluginInterface, module); | 328 base::Bind(&PluginModule::GetPluginInterface, module); |
329 PPP_Instance_Combined* ppp_instance_combined = | 329 PPP_Instance_Combined* ppp_instance_combined = |
330 PPP_Instance_Combined::Create(get_plugin_interface_func); | 330 PPP_Instance_Combined::Create(get_plugin_interface_func); |
331 if (!ppp_instance_combined) | 331 if (!ppp_instance_combined) |
332 return NULL; | 332 return NULL; |
333 return new PluginInstance(delegate, module, ppp_instance_combined); | 333 return new PluginInstance(delegate, module, ppp_instance_combined); |
334 } | 334 } |
335 | 335 |
| 336 PluginInstance::GamepadImpl::GamepadImpl(PluginDelegate* delegate) |
| 337 : delegate_(delegate) { |
| 338 } |
| 339 |
| 340 void PluginInstance::GamepadImpl::Sample(PP_GamepadsSampleData* data) { |
| 341 WebKit::WebGamepads webkit_data; |
| 342 delegate_->SampleGamepads(&webkit_data); |
| 343 ConvertWebKitGamepadData(webkit_data, data); |
| 344 } |
| 345 |
336 PluginInstance::PluginInstance( | 346 PluginInstance::PluginInstance( |
337 PluginDelegate* delegate, | 347 PluginDelegate* delegate, |
338 PluginModule* module, | 348 PluginModule* module, |
339 ::ppapi::PPP_Instance_Combined* instance_interface) | 349 ::ppapi::PPP_Instance_Combined* instance_interface) |
340 : delegate_(delegate), | 350 : delegate_(delegate), |
341 module_(module), | 351 module_(module), |
342 instance_interface_(instance_interface), | 352 instance_interface_(instance_interface), |
343 pp_instance_(0), | 353 pp_instance_(0), |
344 container_(NULL), | 354 container_(NULL), |
345 full_frame_(false), | 355 full_frame_(false), |
346 sent_initial_did_change_view_(false), | 356 sent_initial_did_change_view_(false), |
347 view_change_weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), | 357 view_change_weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), |
348 has_webkit_focus_(false), | 358 has_webkit_focus_(false), |
349 has_content_area_focus_(false), | 359 has_content_area_focus_(false), |
350 find_identifier_(-1), | 360 find_identifier_(-1), |
351 plugin_decryption_interface_(NULL), | 361 plugin_decryption_interface_(NULL), |
352 plugin_find_interface_(NULL), | 362 plugin_find_interface_(NULL), |
353 plugin_input_event_interface_(NULL), | 363 plugin_input_event_interface_(NULL), |
354 plugin_messaging_interface_(NULL), | 364 plugin_messaging_interface_(NULL), |
355 plugin_mouse_lock_interface_(NULL), | 365 plugin_mouse_lock_interface_(NULL), |
356 plugin_pdf_interface_(NULL), | 366 plugin_pdf_interface_(NULL), |
357 plugin_private_interface_(NULL), | 367 plugin_private_interface_(NULL), |
358 plugin_selection_interface_(NULL), | 368 plugin_selection_interface_(NULL), |
359 plugin_textinput_interface_(NULL), | 369 plugin_textinput_interface_(NULL), |
360 plugin_zoom_interface_(NULL), | 370 plugin_zoom_interface_(NULL), |
361 checked_for_plugin_input_event_interface_(false), | 371 checked_for_plugin_input_event_interface_(false), |
362 checked_for_plugin_messaging_interface_(false), | 372 checked_for_plugin_messaging_interface_(false), |
| 373 gamepad_impl_(delegate), |
363 plugin_print_interface_(NULL), | 374 plugin_print_interface_(NULL), |
364 plugin_graphics_3d_interface_(NULL), | 375 plugin_graphics_3d_interface_(NULL), |
365 always_on_top_(false), | 376 always_on_top_(false), |
366 fullscreen_container_(NULL), | 377 fullscreen_container_(NULL), |
367 flash_fullscreen_(false), | 378 flash_fullscreen_(false), |
368 desired_fullscreen_state_(false), | 379 desired_fullscreen_state_(false), |
369 message_channel_(NULL), | 380 message_channel_(NULL), |
370 sad_plugin_(NULL), | 381 sad_plugin_(NULL), |
371 input_event_mask_(0), | 382 input_event_mask_(0), |
372 filtered_input_event_mask_(0), | 383 filtered_input_event_mask_(0), |
(...skipping 1171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1544 if (!web_view) { | 1555 if (!web_view) { |
1545 NOTREACHED(); | 1556 NOTREACHED(); |
1546 return false; | 1557 return false; |
1547 } | 1558 } |
1548 #else | 1559 #else |
1549 //FIXME | 1560 //FIXME |
1550 return container_->isRectTopmost(rect); | 1561 return container_->isRectTopmost(rect); |
1551 #endif | 1562 #endif |
1552 } | 1563 } |
1553 | 1564 |
1554 void PluginInstance::SampleGamepads(PP_Instance instance, | |
1555 PP_GamepadsSampleData* data) { | |
1556 WebKit::WebGamepads webkit_data; | |
1557 delegate()->SampleGamepads(&webkit_data); | |
1558 ConvertWebKitGamepadData(webkit_data, data); | |
1559 } | |
1560 | |
1561 bool PluginInstance::IsViewAccelerated() { | 1565 bool PluginInstance::IsViewAccelerated() { |
1562 if (!container_) | 1566 if (!container_) |
1563 return false; | 1567 return false; |
1564 | 1568 |
1565 WebDocument document = container_->element().document(); | 1569 WebDocument document = container_->element().document(); |
1566 WebFrame* frame = document.frame(); | 1570 WebFrame* frame = document.frame(); |
1567 if (!frame) | 1571 if (!frame) |
1568 return false; | 1572 return false; |
1569 WebView* view = frame->view(); | 1573 WebView* view = frame->view(); |
1570 if (!view) | 1574 if (!view) |
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2078 PP_Bool PluginInstance::GetScreenSize(PP_Instance instance, PP_Size* size) { | 2082 PP_Bool PluginInstance::GetScreenSize(PP_Instance instance, PP_Size* size) { |
2079 gfx::Size screen_size = delegate()->GetScreenSize(); | 2083 gfx::Size screen_size = delegate()->GetScreenSize(); |
2080 *size = PP_MakeSize(screen_size.width(), screen_size.height()); | 2084 *size = PP_MakeSize(screen_size.width(), screen_size.height()); |
2081 return PP_TRUE; | 2085 return PP_TRUE; |
2082 } | 2086 } |
2083 | 2087 |
2084 ::ppapi::thunk::PPB_Flash_API* PluginInstance::GetFlashAPI() { | 2088 ::ppapi::thunk::PPB_Flash_API* PluginInstance::GetFlashAPI() { |
2085 return &flash_impl_; | 2089 return &flash_impl_; |
2086 } | 2090 } |
2087 | 2091 |
| 2092 ::ppapi::thunk::PPB_Gamepad_API* PluginInstance::GetGamepadAPI( |
| 2093 PP_Instance /* instance */) { |
| 2094 return &gamepad_impl_; |
| 2095 } |
| 2096 |
2088 int32_t PluginInstance::RequestInputEvents(PP_Instance instance, | 2097 int32_t PluginInstance::RequestInputEvents(PP_Instance instance, |
2089 uint32_t event_classes) { | 2098 uint32_t event_classes) { |
2090 input_event_mask_ |= event_classes; | 2099 input_event_mask_ |= event_classes; |
2091 filtered_input_event_mask_ &= ~(event_classes); | 2100 filtered_input_event_mask_ &= ~(event_classes); |
2092 if (event_classes & PP_INPUTEVENT_CLASS_TOUCH) | 2101 if (event_classes & PP_INPUTEVENT_CLASS_TOUCH) |
2093 container_->setIsAcceptingTouchEvents(IsAcceptingTouchEvents()); | 2102 container_->setIsAcceptingTouchEvents(IsAcceptingTouchEvents()); |
2094 return ValidateRequestInputEvents(false, event_classes); | 2103 return ValidateRequestInputEvents(false, event_classes); |
2095 } | 2104 } |
2096 | 2105 |
2097 int32_t PluginInstance::RequestFilteringInputEvents(PP_Instance instance, | 2106 int32_t PluginInstance::RequestFilteringInputEvents(PP_Instance instance, |
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2424 screen_size_for_fullscreen_ = gfx::Size(); | 2433 screen_size_for_fullscreen_ = gfx::Size(); |
2425 WebElement element = container_->element(); | 2434 WebElement element = container_->element(); |
2426 element.setAttribute(WebString::fromUTF8(kWidth), width_before_fullscreen_); | 2435 element.setAttribute(WebString::fromUTF8(kWidth), width_before_fullscreen_); |
2427 element.setAttribute(WebString::fromUTF8(kHeight), height_before_fullscreen_); | 2436 element.setAttribute(WebString::fromUTF8(kHeight), height_before_fullscreen_); |
2428 element.setAttribute(WebString::fromUTF8(kBorder), border_before_fullscreen_); | 2437 element.setAttribute(WebString::fromUTF8(kBorder), border_before_fullscreen_); |
2429 element.setAttribute(WebString::fromUTF8(kStyle), style_before_fullscreen_); | 2438 element.setAttribute(WebString::fromUTF8(kStyle), style_before_fullscreen_); |
2430 } | 2439 } |
2431 | 2440 |
2432 } // namespace ppapi | 2441 } // namespace ppapi |
2433 } // namespace webkit | 2442 } // namespace webkit |
OLD | NEW |