summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/renderer/pepper_plugin_delegate_impl.cc13
-rw-r--r--content/renderer/pepper_plugin_delegate_impl.h3
-rw-r--r--webkit/plugins/ppapi/mock_plugin_delegate.cc5
-rw-r--r--webkit/plugins/ppapi/mock_plugin_delegate.h2
-rw-r--r--webkit/plugins/ppapi/plugin_delegate.h6
-rw-r--r--webkit/plugins/ppapi/ppapi_plugin_instance.cc97
-rw-r--r--webkit/plugins/ppapi/ppapi_plugin_instance.h14
-rw-r--r--webkit/plugins/ppapi/ppapi_webplugin_impl.cc8
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);
}