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/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
474 for (PluginObjectSet::iterator i = plugin_object_copy.begin(); | 474 for (PluginObjectSet::iterator i = plugin_object_copy.begin(); |
475 i != plugin_object_copy.end(); ++i) | 475 i != plugin_object_copy.end(); ++i) |
476 delete *i; | 476 delete *i; |
477 | 477 |
478 if (TrackedCallback::IsPending(lock_mouse_callback_)) | 478 if (TrackedCallback::IsPending(lock_mouse_callback_)) |
479 lock_mouse_callback_->Abort(); | 479 lock_mouse_callback_->Abort(); |
480 | 480 |
481 delegate_->InstanceDeleted(this); | 481 delegate_->InstanceDeleted(this); |
482 module_->InstanceDeleted(this); | 482 module_->InstanceDeleted(this); |
483 // If we switched from the NaCl plugin module, notify it too. | 483 // If we switched from the NaCl plugin module, notify it too. |
484 if (original_module_) | 484 if (original_module_.get()) |
485 original_module_->InstanceDeleted(this); | 485 original_module_->InstanceDeleted(this); |
486 | 486 |
487 // This should be last since some of the above "instance deleted" calls will | 487 // This should be last since some of the above "instance deleted" calls will |
488 // want to look up in the global map to get info off of our object. | 488 // want to look up in the global map to get info off of our object. |
489 HostGlobals::Get()->InstanceDeleted(pp_instance_); | 489 HostGlobals::Get()->InstanceDeleted(pp_instance_); |
490 } | 490 } |
491 | 491 |
492 // NOTE: Any of these methods that calls into the plugin needs to take into | 492 // NOTE: Any of these methods that calls into the plugin needs to take into |
493 // account that the plugin may use Var to remove the <embed> from the DOM, which | 493 // account that the plugin may use Var to remove the <embed> from the DOM, which |
494 // will make the WebPluginImpl drop its reference, usually the last one. If a | 494 // will make the WebPluginImpl drop its reference, usually the last one. If a |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
567 } else { | 567 } else { |
568 // Can't do optimized scrolling since there could be other elements on top | 568 // Can't do optimized scrolling since there could be other elements on top |
569 // of us or the view renders via the accelerated compositor which is | 569 // of us or the view renders via the accelerated compositor which is |
570 // incompatible with the move and backfill scrolling model. | 570 // incompatible with the move and backfill scrolling model. |
571 InvalidateRect(rect); | 571 InvalidateRect(rect); |
572 } | 572 } |
573 } | 573 } |
574 } | 574 } |
575 | 575 |
576 unsigned PluginInstance::GetBackingTextureId() { | 576 unsigned PluginInstance::GetBackingTextureId() { |
577 if (bound_graphics_3d_) | 577 if (bound_graphics_3d_.get()) |
578 return bound_graphics_3d_->GetBackingTextureId(); | 578 return bound_graphics_3d_->GetBackingTextureId(); |
579 | 579 |
580 return 0; | 580 return 0; |
581 } | 581 } |
582 | 582 |
583 void PluginInstance::CommitBackingTexture() { | 583 void PluginInstance::CommitBackingTexture() { |
584 if (texture_layer_) | 584 if (texture_layer_.get()) |
585 texture_layer_->SetNeedsDisplay(); | 585 texture_layer_->SetNeedsDisplay(); |
586 } | 586 } |
587 | 587 |
588 void PluginInstance::InstanceCrashed() { | 588 void PluginInstance::InstanceCrashed() { |
589 // Force free all resources and vars. | 589 // Force free all resources and vars. |
590 HostGlobals::Get()->InstanceCrashed(pp_instance()); | 590 HostGlobals::Get()->InstanceCrashed(pp_instance()); |
591 | 591 |
592 // Free any associated graphics. | 592 // Free any associated graphics. |
593 SetFullscreen(false); | 593 SetFullscreen(false); |
594 FlashSetFullscreen(false, false); | 594 FlashSetFullscreen(false, false); |
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
988 // immediately. It is possible that PluginInstance::ViewChanged() hasn't been | 988 // immediately. It is possible that PluginInstance::ViewChanged() hasn't been |
989 // called for the first time. In that case, most of the fields in |view_data_| | 989 // called for the first time. In that case, most of the fields in |view_data_| |
990 // haven't been properly initialized. | 990 // haven't been properly initialized. |
991 if (sent_initial_did_change_view_) | 991 if (sent_initial_did_change_view_) |
992 SendDidChangeView(); | 992 SendDidChangeView(); |
993 } | 993 } |
994 | 994 |
995 void PluginInstance::ViewWillInitiatePaint() { | 995 void PluginInstance::ViewWillInitiatePaint() { |
996 if (GetBoundGraphics2D()) | 996 if (GetBoundGraphics2D()) |
997 GetBoundGraphics2D()->ViewWillInitiatePaint(); | 997 GetBoundGraphics2D()->ViewWillInitiatePaint(); |
998 else if (bound_graphics_3d_) | 998 else if (bound_graphics_3d_.get()) |
999 bound_graphics_3d_->ViewWillInitiatePaint(); | 999 bound_graphics_3d_->ViewWillInitiatePaint(); |
1000 } | 1000 } |
1001 | 1001 |
1002 void PluginInstance::ViewInitiatedPaint() { | 1002 void PluginInstance::ViewInitiatedPaint() { |
1003 if (GetBoundGraphics2D()) | 1003 if (GetBoundGraphics2D()) |
1004 GetBoundGraphics2D()->ViewInitiatedPaint(); | 1004 GetBoundGraphics2D()->ViewInitiatedPaint(); |
1005 else if (bound_graphics_3d_) | 1005 else if (bound_graphics_3d_.get()) |
1006 bound_graphics_3d_->ViewInitiatedPaint(); | 1006 bound_graphics_3d_->ViewInitiatedPaint(); |
1007 } | 1007 } |
1008 | 1008 |
1009 void PluginInstance::ViewFlushedPaint() { | 1009 void PluginInstance::ViewFlushedPaint() { |
1010 // Keep a reference on the stack. See NOTE above. | 1010 // Keep a reference on the stack. See NOTE above. |
1011 scoped_refptr<PluginInstance> ref(this); | 1011 scoped_refptr<PluginInstance> ref(this); |
1012 if (GetBoundGraphics2D()) | 1012 if (GetBoundGraphics2D()) |
1013 GetBoundGraphics2D()->ViewFlushedPaint(); | 1013 GetBoundGraphics2D()->ViewFlushedPaint(); |
1014 else if (bound_graphics_3d_) | 1014 else if (bound_graphics_3d_.get()) |
1015 bound_graphics_3d_->ViewFlushedPaint(); | 1015 bound_graphics_3d_->ViewFlushedPaint(); |
1016 } | 1016 } |
1017 | 1017 |
1018 bool PluginInstance::GetBitmapForOptimizedPluginPaint( | 1018 bool PluginInstance::GetBitmapForOptimizedPluginPaint( |
1019 const gfx::Rect& paint_bounds, | 1019 const gfx::Rect& paint_bounds, |
1020 TransportDIB** dib, | 1020 TransportDIB** dib, |
1021 gfx::Rect* location, | 1021 gfx::Rect* location, |
1022 gfx::Rect* clip, | 1022 gfx::Rect* clip, |
1023 float* scale_factor) { | 1023 float* scale_factor) { |
1024 if (!always_on_top_) | 1024 if (!always_on_top_) |
(...skipping 759 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1784 void PluginInstance::UpdateLayer() { | 1784 void PluginInstance::UpdateLayer() { |
1785 if (!container_) | 1785 if (!container_) |
1786 return; | 1786 return; |
1787 | 1787 |
1788 bool want_layer = GetBackingTextureId(); | 1788 bool want_layer = GetBackingTextureId(); |
1789 | 1789 |
1790 if (want_layer == !!texture_layer_.get() && | 1790 if (want_layer == !!texture_layer_.get() && |
1791 layer_bound_to_fullscreen_ == !!fullscreen_container_) | 1791 layer_bound_to_fullscreen_ == !!fullscreen_container_) |
1792 return; | 1792 return; |
1793 | 1793 |
1794 if (texture_layer_) { | 1794 if (texture_layer_.get()) { |
1795 texture_layer_->ClearClient(); | 1795 texture_layer_->ClearClient(); |
1796 if (!layer_bound_to_fullscreen_) | 1796 if (!layer_bound_to_fullscreen_) |
1797 container_->setWebLayer(NULL); | 1797 container_->setWebLayer(NULL); |
1798 else if (fullscreen_container_) | 1798 else if (fullscreen_container_) |
1799 fullscreen_container_->SetLayer(NULL); | 1799 fullscreen_container_->SetLayer(NULL); |
1800 web_layer_.reset(); | 1800 web_layer_.reset(); |
1801 texture_layer_ = NULL; | 1801 texture_layer_ = NULL; |
1802 } | 1802 } |
1803 if (want_layer) { | 1803 if (want_layer) { |
1804 DCHECK(bound_graphics_3d_.get()); | 1804 DCHECK(bound_graphics_3d_.get()); |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1950 new ContentDecryptorDelegate(pp_instance_, plugin_decryption_interface)); | 1950 new ContentDecryptorDelegate(pp_instance_, plugin_decryption_interface)); |
1951 return content_decryptor_delegate_.get(); | 1951 return content_decryptor_delegate_.get(); |
1952 } | 1952 } |
1953 | 1953 |
1954 PP_Bool PluginInstance::BindGraphics(PP_Instance instance, | 1954 PP_Bool PluginInstance::BindGraphics(PP_Instance instance, |
1955 PP_Resource device) { | 1955 PP_Resource device) { |
1956 TRACE_EVENT0("ppapi", "PluginInstance::BindGraphics"); | 1956 TRACE_EVENT0("ppapi", "PluginInstance::BindGraphics"); |
1957 // The Graphics3D instance can't be destroyed until we call | 1957 // The Graphics3D instance can't be destroyed until we call |
1958 // UpdateLayer(). | 1958 // UpdateLayer(). |
1959 scoped_refptr< ::ppapi::Resource> old_graphics = bound_graphics_3d_.get(); | 1959 scoped_refptr< ::ppapi::Resource> old_graphics = bound_graphics_3d_.get(); |
1960 if (bound_graphics_3d_) { | 1960 if (bound_graphics_3d_.get()) { |
1961 bound_graphics_3d_->BindToInstance(false); | 1961 bound_graphics_3d_->BindToInstance(false); |
1962 bound_graphics_3d_ = NULL; | 1962 bound_graphics_3d_ = NULL; |
1963 } | 1963 } |
1964 if (bound_graphics_2d_platform_) { | 1964 if (bound_graphics_2d_platform_) { |
1965 GetBoundGraphics2D()->BindToInstance(NULL); | 1965 GetBoundGraphics2D()->BindToInstance(NULL); |
1966 bound_graphics_2d_platform_ = NULL; | 1966 bound_graphics_2d_platform_ = NULL; |
1967 } | 1967 } |
1968 | 1968 |
1969 // Special-case clearing the current device. | 1969 // Special-case clearing the current device. |
1970 if (!device) { | 1970 if (!device) { |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2232 case ::ppapi::EXTENSIONS_COMMON_SINGLETON_ID: | 2232 case ::ppapi::EXTENSIONS_COMMON_SINGLETON_ID: |
2233 case ::ppapi::FLASH_CLIPBOARD_SINGLETON_ID: | 2233 case ::ppapi::FLASH_CLIPBOARD_SINGLETON_ID: |
2234 case ::ppapi::FLASH_FILE_SINGLETON_ID: | 2234 case ::ppapi::FLASH_FILE_SINGLETON_ID: |
2235 case ::ppapi::FLASH_FULLSCREEN_SINGLETON_ID: | 2235 case ::ppapi::FLASH_FULLSCREEN_SINGLETON_ID: |
2236 case ::ppapi::FLASH_SINGLETON_ID: | 2236 case ::ppapi::FLASH_SINGLETON_ID: |
2237 case ::ppapi::PDF_SINGLETON_ID: | 2237 case ::ppapi::PDF_SINGLETON_ID: |
2238 case ::ppapi::TRUETYPE_FONT_SINGLETON_ID: | 2238 case ::ppapi::TRUETYPE_FONT_SINGLETON_ID: |
2239 NOTIMPLEMENTED(); | 2239 NOTIMPLEMENTED(); |
2240 return NULL; | 2240 return NULL; |
2241 case ::ppapi::GAMEPAD_SINGLETON_ID: | 2241 case ::ppapi::GAMEPAD_SINGLETON_ID: |
2242 return gamepad_impl_; | 2242 return gamepad_impl_.get(); |
2243 } | 2243 } |
2244 | 2244 |
2245 NOTREACHED(); | 2245 NOTREACHED(); |
2246 return NULL; | 2246 return NULL; |
2247 } | 2247 } |
2248 | 2248 |
2249 int32_t PluginInstance::RequestInputEvents(PP_Instance instance, | 2249 int32_t PluginInstance::RequestInputEvents(PP_Instance instance, |
2250 uint32_t event_classes) { | 2250 uint32_t event_classes) { |
2251 input_event_mask_ |= event_classes; | 2251 input_event_mask_ |= event_classes; |
2252 filtered_input_event_mask_ &= ~(event_classes); | 2252 filtered_input_event_mask_ &= ~(event_classes); |
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2613 screen_size_for_fullscreen_ = gfx::Size(); | 2613 screen_size_for_fullscreen_ = gfx::Size(); |
2614 WebElement element = container_->element(); | 2614 WebElement element = container_->element(); |
2615 element.setAttribute(WebString::fromUTF8(kWidth), width_before_fullscreen_); | 2615 element.setAttribute(WebString::fromUTF8(kWidth), width_before_fullscreen_); |
2616 element.setAttribute(WebString::fromUTF8(kHeight), height_before_fullscreen_); | 2616 element.setAttribute(WebString::fromUTF8(kHeight), height_before_fullscreen_); |
2617 element.setAttribute(WebString::fromUTF8(kBorder), border_before_fullscreen_); | 2617 element.setAttribute(WebString::fromUTF8(kBorder), border_before_fullscreen_); |
2618 element.setAttribute(WebString::fromUTF8(kStyle), style_before_fullscreen_); | 2618 element.setAttribute(WebString::fromUTF8(kStyle), style_before_fullscreen_); |
2619 } | 2619 } |
2620 | 2620 |
2621 } // namespace ppapi | 2621 } // namespace ppapi |
2622 } // namespace webkit | 2622 } // namespace webkit |
OLD | NEW |