Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(128)

Unified Diff: content/renderer/pepper/pepper_plugin_instance_impl.cc

Issue 21192002: Remove more methods from PluginDelegate. Some I moved the implementationto the callers. For others,… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/pepper/pepper_plugin_instance_impl.cc
===================================================================
--- content/renderer/pepper/pepper_plugin_instance_impl.cc (revision 214249)
+++ content/renderer/pepper/pepper_plugin_instance_impl.cc (working copy)
@@ -324,6 +324,30 @@
return array.Pass();
}
+class PluginInstanceLockTarget : public MouseLockDispatcher::LockTarget {
+ public:
+ PluginInstanceLockTarget(PepperPluginInstanceImpl* plugin)
+ : plugin_(plugin) {}
+
+ virtual void OnLockMouseACK(bool succeeded) OVERRIDE {
+ plugin_->OnLockMouseACK(succeeded);
+ }
+
+ virtual void OnMouseLockLost() OVERRIDE {
+ plugin_->OnMouseLockLost();
+ }
+
+ virtual bool HandleMouseLockedInputEvent(
+ const WebKit::WebMouseEvent &event) OVERRIDE {
+ plugin_->HandleMouseLockedInputEvent(event);
+ return true;
+ }
+
+ private:
+ PepperPluginInstanceImpl* plugin_;
+};
+
+
} // namespace
// static
@@ -508,6 +532,7 @@
lock_mouse_callback_->Abort();
delegate_->InstanceDeleted(this);
+ UnSetAndDeleteLockTargetAdapter();
module_->InstanceDeleted(this);
// If we switched from the NaCl plugin module, notify it too.
if (original_module_.get())
@@ -619,7 +644,8 @@
BindGraphics(pp_instance(), 0);
InvalidateRect(gfx::Rect());
- delegate()->PluginCrashed(this);
+ render_view_->PluginCrashed(module_->path(), module_->GetPeerProcessId());
+ UnSetAndDeleteLockTargetAdapter();
}
static void SetGPUHistogram(const ::ppapi::Preferences& prefs,
@@ -863,8 +889,10 @@
WebCursorInfo* cursor_info) {
TRACE_EVENT0("ppapi", "PepperPluginInstanceImpl::HandleInputEvent");
- if (WebInputEvent::isMouseEventType(event.type))
- delegate()->DidReceiveMouseEvent(this);
+ if (WebInputEvent::isMouseEventType(event.type)) {
+ static_cast<PepperPluginDelegateImpl*>(delegate_)->DidReceiveMouseEvent(
+ this);
+ }
// Don't dispatch input events to crashed plugins.
if (module()->is_crashed())
@@ -1586,7 +1614,7 @@
bool old_plugin_focus = PluginHasFocus();
flash_fullscreen_ = flash_fullscreen;
- if (is_mouselock_pending && !delegate()->IsMouseLocked(this)) {
+ if (is_mouselock_pending && !IsMouseLocked()) {
if (!IsProcessingUserGesture() &&
!module_->permissions().HasPermission(
::ppapi::PERMISSION_BYPASS_USER_GESTURE)) {
@@ -1595,7 +1623,7 @@
// Open a user gesture here so the Webkit user gesture checks will succeed
// for out-of-process plugins.
WebScopedUserGesture user_gesture(CurrentUserGestureToken());
- if (!delegate()->LockMouse(this))
+ if (!LockMouse())
lock_mouse_callback_->Run(PP_ERROR_FAILED);
}
}
@@ -2281,7 +2309,7 @@
if (TrackedCallback::IsPending(lock_mouse_callback_))
return PP_ERROR_INPROGRESS;
- if (delegate()->IsMouseLocked(this))
+ if (IsMouseLocked())
return PP_OK;
if (!CanAccessMainFrame())
@@ -2292,11 +2320,11 @@
// Attempt mouselock only if Flash isn't waiting on fullscreen, otherwise
// we wait and call LockMouse() in UpdateFlashFullscreenState().
- if (!FlashIsFullscreenOrPending() || flash_fullscreen()) {
+ if (!FlashIsFullscreenOrPending() || flash_fullscreen_) {
// Open a user gesture here so the Webkit user gesture checks will succeed
// for out-of-process plugins.
WebScopedUserGesture user_gesture(CurrentUserGestureToken());
- if (!delegate()->LockMouse(this))
+ if (!LockMouse())
return PP_ERROR_FAILED;
}
@@ -2306,7 +2334,7 @@
}
void PepperPluginInstanceImpl::UnlockMouse(PP_Instance instance) {
- delegate()->UnlockMouse(this);
+ GetMouseLockDispatcher()->UnlockMouse(GetOrCreateLockTargetAdapter());
}
void PepperPluginInstanceImpl::SetTextInputType(PP_Instance instance,
@@ -2606,7 +2634,8 @@
if (fullscreen_container_) {
fullscreen_container_->DidChangeCursor(*cursor);
} else {
- delegate()->DidChangeCursor(this, *cursor);
+ static_cast<PepperPluginDelegateImpl*>(delegate_)->DidChangeCursor(
+ this, *cursor);
}
}
@@ -2760,4 +2789,38 @@
element.setAttribute(WebString::fromUTF8(kStyle), style_before_fullscreen_);
}
+bool PepperPluginInstanceImpl::IsMouseLocked() {
+ return GetMouseLockDispatcher()->IsMouseLockedTo(
+ GetOrCreateLockTargetAdapter());
+}
+
+bool PepperPluginInstanceImpl::LockMouse() {
+ return GetMouseLockDispatcher()->LockMouse(GetOrCreateLockTargetAdapter());
+}
+
+MouseLockDispatcher::LockTarget*
+ PepperPluginInstanceImpl::GetOrCreateLockTargetAdapter() {
+ if (!lock_target_.get()) {
+ lock_target_.reset(new PluginInstanceLockTarget(this));
+ }
+ return lock_target_.get();
+}
+
+MouseLockDispatcher* PepperPluginInstanceImpl::GetMouseLockDispatcher() {
+ if (flash_fullscreen_) {
+ RenderWidgetFullscreenPepper* container =
+ static_cast<RenderWidgetFullscreenPepper*>(fullscreen_container_);
+ return container->mouse_lock_dispatcher();
+ } else {
+ return render_view_->mouse_lock_dispatcher();
+ }
+}
+
+void PepperPluginInstanceImpl::UnSetAndDeleteLockTargetAdapter() {
+ if (lock_target_.get()) {
+ GetMouseLockDispatcher()->OnLockTargetDestroyed(lock_target_.get());
+ lock_target_.reset();
+ }
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698