diff options
-rw-r--r-- | content/renderer/pepper_plugin_delegate_impl.cc | 13 | ||||
-rw-r--r-- | content/renderer/pepper_plugin_delegate_impl.h | 3 | ||||
-rw-r--r-- | webkit/plugins/ppapi/mock_plugin_delegate.cc | 5 | ||||
-rw-r--r-- | webkit/plugins/ppapi/mock_plugin_delegate.h | 2 | ||||
-rw-r--r-- | webkit/plugins/ppapi/plugin_delegate.h | 6 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppapi_plugin_instance.cc | 97 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppapi_plugin_instance.h | 14 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppapi_webplugin_impl.cc | 8 |
8 files changed, 32 insertions, 116 deletions
diff --git a/content/renderer/pepper_plugin_delegate_impl.cc b/content/renderer/pepper_plugin_delegate_impl.cc index 1bb13ee..f5b73d1 100644 --- a/content/renderer/pepper_plugin_delegate_impl.cc +++ b/content/renderer/pepper_plugin_delegate_impl.cc @@ -1299,13 +1299,6 @@ int32_t PepperPluginDelegateImpl::ShowContextMenu( webkit::ppapi::PPB_Flash_Menu_Impl* menu, const gfx::Point& position) { int32 render_widget_id = render_view_->routing_id(); - if (instance->IsFullscreen(instance->pp_instance())) { - webkit::ppapi::FullscreenContainer* container = - instance->fullscreen_container(); - DCHECK(container); - render_widget_id = - static_cast<RenderWidgetFullscreenPepper*>(container)->routing_id(); - } int request_id = pending_context_menus_.Add( new scoped_refptr<webkit::ppapi::PPB_Flash_Menu_Impl>(menu)); @@ -1369,12 +1362,6 @@ void PepperPluginDelegateImpl::OnCustomContextMenuAction( saved_context_menu_action_ = action; } -webkit::ppapi::FullscreenContainer* -PepperPluginDelegateImpl::CreateFullscreenContainer( - webkit::ppapi::PluginInstance* instance) { - return render_view_->CreatePepperFullscreenContainer(instance); -} - gfx::Size PepperPluginDelegateImpl::GetScreenSize() { WebKit::WebScreenInfo info = render_view_->screenInfo(); return gfx::Size(info.rect.width, info.rect.height); diff --git a/content/renderer/pepper_plugin_delegate_impl.h b/content/renderer/pepper_plugin_delegate_impl.h index b254488..6ade353 100644 --- a/content/renderer/pepper_plugin_delegate_impl.h +++ b/content/renderer/pepper_plugin_delegate_impl.h @@ -281,9 +281,6 @@ class PepperPluginDelegateImpl void CompleteShowContextMenu(int request_id, bool did_select, unsigned action); - virtual webkit::ppapi::FullscreenContainer* - CreateFullscreenContainer( - webkit::ppapi::PluginInstance* instance) OVERRIDE; virtual gfx::Size GetScreenSize() OVERRIDE; virtual std::string GetDefaultEncoding() OVERRIDE; virtual void ZoomLimitsChanged(double minimum_factor, double maximum_factor) diff --git a/webkit/plugins/ppapi/mock_plugin_delegate.cc b/webkit/plugins/ppapi/mock_plugin_delegate.cc index c34643a..b42dbf1 100644 --- a/webkit/plugins/ppapi/mock_plugin_delegate.cc +++ b/webkit/plugins/ppapi/mock_plugin_delegate.cc @@ -223,11 +223,6 @@ int32_t MockPluginDelegate::ShowContextMenu( return PP_ERROR_FAILED; } -FullscreenContainer* MockPluginDelegate::CreateFullscreenContainer( - PluginInstance* instance) { - return NULL; -} - gfx::Size MockPluginDelegate::GetScreenSize() { return gfx::Size(1024, 768); } diff --git a/webkit/plugins/ppapi/mock_plugin_delegate.h b/webkit/plugins/ppapi/mock_plugin_delegate.h index 04382e0..5964c11 100644 --- a/webkit/plugins/ppapi/mock_plugin_delegate.h +++ b/webkit/plugins/ppapi/mock_plugin_delegate.h @@ -100,8 +100,6 @@ class MockPluginDelegate : public PluginDelegate { PluginInstance* instance, webkit::ppapi::PPB_Flash_Menu_Impl* menu, const gfx::Point& position); - virtual FullscreenContainer* CreateFullscreenContainer( - PluginInstance* instance); virtual gfx::Size GetScreenSize(); virtual std::string GetDefaultEncoding(); virtual void ZoomLimitsChanged(double minimum_factor, diff --git a/webkit/plugins/ppapi/plugin_delegate.h b/webkit/plugins/ppapi/plugin_delegate.h index f63276e..5587502 100644 --- a/webkit/plugins/ppapi/plugin_delegate.h +++ b/webkit/plugins/ppapi/plugin_delegate.h @@ -79,7 +79,6 @@ namespace webkit { namespace ppapi { class FileIO; -class FullscreenContainer; class PepperFilePath; class PluginInstance; class PluginModule; @@ -390,11 +389,6 @@ class PluginDelegate { webkit::ppapi::PPB_Flash_Menu_Impl* menu, const gfx::Point& position) = 0; - // Create a fullscreen container for a plugin instance. This effectively - // switches the plugin to fullscreen. - virtual FullscreenContainer* CreateFullscreenContainer( - PluginInstance* instance) = 0; - // Gets the size of the screen. The fullscreen window will be created at that // size. virtual gfx::Size GetScreenSize() = 0; diff --git a/webkit/plugins/ppapi/ppapi_plugin_instance.cc b/webkit/plugins/ppapi/ppapi_plugin_instance.cc index c353ed8..ab6b8e5 100644 --- a/webkit/plugins/ppapi/ppapi_plugin_instance.cc +++ b/webkit/plugins/ppapi/ppapi_plugin_instance.cc @@ -52,7 +52,6 @@ #include "ui/gfx/skia_util.h" #include "webkit/plugins/ppapi/common.h" #include "webkit/plugins/ppapi/event_conversion.h" -#include "webkit/plugins/ppapi/fullscreen_container.h" #include "webkit/plugins/ppapi/message_channel.h" #include "webkit/plugins/ppapi/npapi_glue.h" #include "webkit/plugins/ppapi/plugin_delegate.h" @@ -233,7 +232,7 @@ PluginInstance::PluginInstance( plugin_print_interface_(NULL), plugin_graphics_3d_interface_(NULL), always_on_top_(false), - fullscreen_container_(NULL), + desired_fullscreen_state_(false), fullscreen_(false), message_channel_(NULL), sad_plugin_(NULL), @@ -277,10 +276,6 @@ void PluginInstance::Delete() { scoped_refptr<PluginInstance> ref(this); instance_interface_->DidDestroy(pp_instance()); - if (fullscreen_container_) { - fullscreen_container_->Destroy(); - fullscreen_container_ = NULL; - } container_ = NULL; } @@ -301,32 +296,21 @@ void PluginInstance::Paint(WebCanvas* canvas, } void PluginInstance::InvalidateRect(const gfx::Rect& rect) { - if (fullscreen_container_) { - if (rect.IsEmpty()) - fullscreen_container_->Invalidate(); - else - fullscreen_container_->InvalidateRect(rect); - } else { - if (!container_ || position_.IsEmpty()) - return; // Nothing to do. - if (rect.IsEmpty()) - container_->invalidate(); - else - container_->invalidateRect(rect); - } + if (!container_ || position_.IsEmpty()) + return; // Nothing to do. + if (rect.IsEmpty()) + container_->invalidate(); + else + container_->invalidateRect(rect); } void PluginInstance::ScrollRect(int dx, int dy, const gfx::Rect& rect) { - if (fullscreen_container_) { - fullscreen_container_->ScrollRect(dx, dy, rect); + if (full_frame_) { + container_->scrollRect(dx, dy, rect); } else { - if (full_frame_) { - container_->scrollRect(dx, dy, rect); - } else { - // Can't do optimized scrolling since there could be other elements on top - // of us. - InvalidateRect(rect); - } + // Can't do optimized scrolling since there could be other elements on top + // of us. + InvalidateRect(rect); } } @@ -340,10 +324,7 @@ unsigned PluginInstance::GetBackingTextureId() { } void PluginInstance::CommitBackingTexture() { - if (fullscreen_container_) - fullscreen_container_->Invalidate(); - else - container_->commitBackingTexture(); + container_->commitBackingTexture(); } void PluginInstance::InstanceCrashed() { @@ -505,7 +486,7 @@ PP_Var PluginInstance::GetInstanceObject() { void PluginInstance::ViewChanged(const gfx::Rect& position, const gfx::Rect& clip) { - fullscreen_ = (fullscreen_container_ != NULL); + fullscreen_ = desired_fullscreen_state_; position_ = position; if (clip.IsEmpty()) { @@ -779,10 +760,7 @@ bool PluginInstance::PluginHasFocus() const { } void PluginInstance::ReportGeometry() { - // If this call was delayed, we may have transitioned back to fullscreen in - // the mean time, so only report the geometry if we are actually in normal - // mode. - if (container_ && !fullscreen_container_) + if (container_) container_->reportGeometry(); } @@ -958,7 +936,7 @@ void PluginInstance::PrintEnd() { } bool PluginInstance::IsFullscreenOrPending() { - return fullscreen_container_ != NULL; + return desired_fullscreen_state_; } void PluginInstance::SetFullscreen(bool fullscreen, bool delay_report) { @@ -971,22 +949,16 @@ void PluginInstance::SetFullscreen(bool fullscreen, bool delay_report) { if (fullscreen == IsFullscreenOrPending()) return; - BindGraphics(pp_instance(), 0); - VLOG(1) << "Setting fullscreen to " << (fullscreen ? "on" : "off"); - if (fullscreen) { - DCHECK(!fullscreen_container_); - fullscreen_container_ = delegate_->CreateFullscreenContainer(this); + desired_fullscreen_state_ = fullscreen; + if (fullscreen) + container_->element().requestFullScreen(); + else + container_->element().document().cancelFullScreen(); + if (!delay_report) { + ReportGeometry(); } else { - DCHECK(fullscreen_container_); - fullscreen_container_->Destroy(); - fullscreen_container_ = NULL; - fullscreen_ = false; - if (!delay_report) { - ReportGeometry(); - } else { - MessageLoop::current()->PostTask( + MessageLoop::current()->PostTask( FROM_HERE, NewRunnableMethod(this, &PluginInstance::ReportGeometry)); - } } } @@ -1033,10 +1005,7 @@ int32_t PluginInstance::Navigate(PPB_URLRequestInfo_Impl* request, } PluginDelegate::PlatformContext3D* PluginInstance::CreateContext3D() { - if (fullscreen_container_) - return fullscreen_container_->CreateContext3D(); - else - return delegate_->CreateContext3D(); + return delegate_->CreateContext3D(); } bool PluginInstance::PrintPDFOutput(PP_Resource print_output, @@ -1306,16 +1275,6 @@ PPB_Surface3D_Impl* PluginInstance::GetBoundSurface3D() const { } void PluginInstance::setBackingTextureId(unsigned int id) { - // If we have a full-screen container_ then the plugin is fullscreen, - // and the parent context is not the one for the browser page, but for the - // full-screen window, and so the parent texture ID doesn't correspond to - // anything in the page's context. - // - // TODO(alokp): It would be better at some point to have the equivalent - // in the FullscreenContainer so that we don't need to poll - if (fullscreen_container_) - return; - if (container_) container_->setBackingTextureId(id); } @@ -1361,10 +1320,6 @@ PP_Bool PluginInstance::BindGraphics(PP_Instance instance, return PP_TRUE; } - // Refuse to bind if we're transitioning to fullscreen. - if (fullscreen_container_ && !fullscreen_) - return PP_FALSE; - EnterResourceNoLock<PPB_Graphics2D_API> enter_2d(device, false); PPB_Graphics2D_Impl* graphics_2d = enter_2d.succeeded() ? static_cast<PPB_Graphics2D_Impl*>(enter_2d.object()) : NULL; @@ -1552,8 +1507,6 @@ void PluginInstance::SubscribeToPolicyUpdates(PP_Instance instance) { void PluginInstance::DoSetCursor(WebCursorInfo* cursor) { cursor_.reset(cursor); - if (fullscreen_container_) - fullscreen_container_->DidChangeCursor(*cursor); } } // namespace ppapi diff --git a/webkit/plugins/ppapi/ppapi_plugin_instance.h b/webkit/plugins/ppapi/ppapi_plugin_instance.h index 16c7fff..2ce4751 100644 --- a/webkit/plugins/ppapi/ppapi_plugin_instance.h +++ b/webkit/plugins/ppapi/ppapi_plugin_instance.h @@ -64,7 +64,6 @@ class Resource; namespace webkit { namespace ppapi { -class FullscreenContainer; class MessageChannel; class ObjectVar; class PluginDelegate; @@ -242,10 +241,6 @@ class PluginInstance : public base::RefCounted<PluginInstance>, // embedded in a page). bool IsFullPagePlugin() const; - FullscreenContainer* fullscreen_container() const { - return fullscreen_container_; - } - // FunctionGroupBase overrides. virtual ::ppapi::thunk::PPB_Instance_FunctionAPI* AsPPB_Instance_FunctionAPI() OVERRIDE; @@ -467,10 +462,11 @@ class PluginInstance : public base::RefCounted<PluginInstance>, // to use a more optimized painting path in some cases. bool always_on_top_; - // Plugin container for fullscreen mode. NULL if not in fullscreen mode. Note: - // there is a transition state where fullscreen_container_ is non-NULL but - // fullscreen_ is false (see above). - FullscreenContainer* fullscreen_container_; + // Since entering fullscreen mode is an asynchronous operation, we set this + // variable to the desired state at the time we issue the fullscreen change + // request. The plugin will receive a DidChangeView event when it goes + // fullscreen. + bool desired_fullscreen_state_; // True if we are in fullscreen mode. Note: it is false during the transition. bool fullscreen_; diff --git a/webkit/plugins/ppapi/ppapi_webplugin_impl.cc b/webkit/plugins/ppapi/ppapi_webplugin_impl.cc index cc6e66d..2747b9d 100644 --- a/webkit/plugins/ppapi/ppapi_webplugin_impl.cc +++ b/webkit/plugins/ppapi/ppapi_webplugin_impl.cc @@ -118,8 +118,7 @@ bool WebPluginImpl::getFormValue(WebString* value) { } void WebPluginImpl::paint(WebCanvas* canvas, const WebRect& rect) { - if (!instance_->IsFullscreenOrPending()) - instance_->Paint(canvas, plugin_rect_, rect); + instance_->Paint(canvas, plugin_rect_, rect); } void WebPluginImpl::updateGeometry( @@ -128,8 +127,7 @@ void WebPluginImpl::updateGeometry( const WebVector<WebRect>& cut_outs_rects, bool is_visible) { plugin_rect_ = window_rect; - if (!instance_->IsFullscreenOrPending()) - instance_->ViewChanged(plugin_rect_, clip_rect); + instance_->ViewChanged(plugin_rect_, clip_rect); } void WebPluginImpl::updateFocus(bool focused) { @@ -145,8 +143,6 @@ bool WebPluginImpl::acceptsInputEvents() { bool WebPluginImpl::handleInputEvent(const WebKit::WebInputEvent& event, WebKit::WebCursorInfo& cursor_info) { - if (instance_->IsFullscreenOrPending()) - return false; return instance_->HandleInputEvent(event, &cursor_info); } |