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

Side by Side Diff: content/renderer/pepper_plugin_delegate_impl.h

Issue 8970016: refactoring mouse lock to support pepper and WebKit (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #ifndef CONTENT_RENDERER_PEPPER_PLUGIN_DELEGATE_IMPL_H_ 5 #ifndef CONTENT_RENDERER_PEPPER_PLUGIN_DELEGATE_IMPL_H_
6 #define CONTENT_RENDERER_PEPPER_PLUGIN_DELEGATE_IMPL_H_ 6 #define CONTENT_RENDERER_PEPPER_PLUGIN_DELEGATE_IMPL_H_
7 #pragma once 7 #pragma once
8 8
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 bool CanComposeInline() const; 182 bool CanComposeInline() const;
183 183
184 // IME events. 184 // IME events.
185 void OnImeSetComposition( 185 void OnImeSetComposition(
186 const string16& text, 186 const string16& text,
187 const std::vector<WebKit::WebCompositionUnderline>& underlines, 187 const std::vector<WebKit::WebCompositionUnderline>& underlines,
188 int selection_start, 188 int selection_start,
189 int selection_end); 189 int selection_end);
190 void OnImeConfirmComposition(const string16& text); 190 void OnImeConfirmComposition(const string16& text);
191 191
192 // Notification that the request to lock the mouse has completed.
193 void OnLockMouseACK(bool succeeded);
194 // Notification that the plugin instance has lost the mouse lock.
195 void OnMouseLockLost();
196 // Notification that a mouse event has arrived at the render view. 192 // Notification that a mouse event has arrived at the render view.
197 // Returns true if no further handling is needed. For example, if the mouse is 193 void WillHandleMouseEvent();
198 // currently locked, this method directly dispatches the event to the owner of
199 // the mouse lock and returns true.
200 bool HandleMouseEvent(const WebKit::WebMouseEvent& event);
201 194
202 // PluginDelegate implementation. 195 // PluginDelegate implementation.
203 virtual void PluginFocusChanged(webkit::ppapi::PluginInstance* instance, 196 virtual void PluginFocusChanged(webkit::ppapi::PluginInstance* instance,
204 bool focused) OVERRIDE; 197 bool focused) OVERRIDE;
205 virtual void PluginTextInputTypeChanged( 198 virtual void PluginTextInputTypeChanged(
206 webkit::ppapi::PluginInstance* instance) OVERRIDE; 199 webkit::ppapi::PluginInstance* instance) OVERRIDE;
207 virtual void PluginCaretPositionChanged( 200 virtual void PluginCaretPositionChanged(
208 webkit::ppapi::PluginInstance* instance) OVERRIDE; 201 webkit::ppapi::PluginInstance* instance) OVERRIDE;
209 virtual void PluginRequestedCancelComposition( 202 virtual void PluginRequestedCancelComposition(
210 webkit::ppapi::PluginInstance* instance) OVERRIDE; 203 webkit::ppapi::PluginInstance* instance) OVERRIDE;
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 virtual void DidStartLoading() OVERRIDE; 361 virtual void DidStartLoading() OVERRIDE;
369 virtual void DidStopLoading() OVERRIDE; 362 virtual void DidStopLoading() OVERRIDE;
370 virtual void SetContentRestriction(int restrictions) OVERRIDE; 363 virtual void SetContentRestriction(int restrictions) OVERRIDE;
371 virtual void SaveURLAs(const GURL& url) OVERRIDE; 364 virtual void SaveURLAs(const GURL& url) OVERRIDE;
372 virtual webkit_glue::P2PTransport* CreateP2PTransport() OVERRIDE; 365 virtual webkit_glue::P2PTransport* CreateP2PTransport() OVERRIDE;
373 virtual double GetLocalTimeZoneOffset(base::Time t) OVERRIDE; 366 virtual double GetLocalTimeZoneOffset(base::Time t) OVERRIDE;
374 virtual std::string GetFlashCommandLineArgs() OVERRIDE; 367 virtual std::string GetFlashCommandLineArgs() OVERRIDE;
375 virtual base::SharedMemory* CreateAnonymousSharedMemory(uint32_t size) 368 virtual base::SharedMemory* CreateAnonymousSharedMemory(uint32_t size)
376 OVERRIDE; 369 OVERRIDE;
377 virtual ::ppapi::Preferences GetPreferences() OVERRIDE; 370 virtual ::ppapi::Preferences GetPreferences() OVERRIDE;
378 virtual void LockMouse(webkit::ppapi::PluginInstance* instance) OVERRIDE; 371 virtual bool LockMouse(webkit::ppapi::PluginInstance* instance) OVERRIDE;
379 virtual void UnlockMouse(webkit::ppapi::PluginInstance* instance) OVERRIDE; 372 virtual void UnlockMouse(webkit::ppapi::PluginInstance* instance) OVERRIDE;
380 virtual void DidChangeCursor(webkit::ppapi::PluginInstance* instance, 373 virtual void DidChangeCursor(webkit::ppapi::PluginInstance* instance,
381 const WebKit::WebCursorInfo& cursor) OVERRIDE; 374 const WebKit::WebCursorInfo& cursor) OVERRIDE;
382 virtual void DidReceiveMouseEvent( 375 virtual void DidReceiveMouseEvent(
383 webkit::ppapi::PluginInstance* instance) OVERRIDE; 376 webkit::ppapi::PluginInstance* instance) OVERRIDE;
384 virtual bool IsInFullscreenMode() OVERRIDE; 377 virtual bool IsInFullscreenMode() OVERRIDE;
385 378
386 // RenderViewObserver implementation. 379 // RenderViewObserver implementation.
387 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 380 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
388 virtual void OnDestruct() OVERRIDE; 381 virtual void OnDestruct() OVERRIDE;
(...skipping 27 matching lines...) Expand all
416 const std::string& data, 409 const std::string& data,
417 const PP_NetAddress_Private& addr); 410 const PP_NetAddress_Private& addr);
418 411
419 CONTENT_EXPORT int GetRoutingId() const; 412 CONTENT_EXPORT int GetRoutingId() const;
420 413
421 private: 414 private:
422 // Asynchronously attempts to create a PPAPI broker for the given plugin. 415 // Asynchronously attempts to create a PPAPI broker for the given plugin.
423 scoped_refptr<PpapiBrokerImpl> CreatePpapiBroker( 416 scoped_refptr<PpapiBrokerImpl> CreatePpapiBroker(
424 webkit::ppapi::PluginModule* plugin_module); 417 webkit::ppapi::PluginModule* plugin_module);
425 418
426 bool MouseLockedOrPending() const {
427 return mouse_locked_ || pending_lock_request_ || pending_unlock_request_;
428 }
429
430 // Implementation of PepperParentContextProvider. 419 // Implementation of PepperParentContextProvider.
431 virtual RendererGLContext* GetParentContextForPlatformContext3D() OVERRIDE; 420 virtual RendererGLContext* GetParentContextForPlatformContext3D() OVERRIDE;
432 421
433 // Helper function to check that TCP/UDP private APIs are allowed for current 422 // Helper function to check that TCP/UDP private APIs are allowed for current
434 // page. This check actually allows socket usage for NativeClient code only. 423 // page. This check actually allows socket usage for NativeClient code only.
435 // It is better to move this check to browser process but Pepper message 424 // It is better to move this check to browser process but Pepper message
436 // filters in browser process have no context about page that sent 425 // filters in browser process have no context about page that sent
437 // the request. Doing this check in render process is safe because NaCl code 426 // the request. Doing this check in render process is safe because NaCl code
438 // is executed in separate NaCl process. 427 // is executed in separate NaCl process.
439 // TODO(dpolukhin, yzshen): make the check consistent for in- and out-process 428 // TODO(dpolukhin, yzshen): make the check consistent for in- and out-process
(...skipping 24 matching lines...) Expand all
464 typedef IDMap<scoped_refptr<PpapiBrokerImpl>, IDMapOwnPointer> BrokerMap; 453 typedef IDMap<scoped_refptr<PpapiBrokerImpl>, IDMapOwnPointer> BrokerMap;
465 BrokerMap pending_connect_broker_; 454 BrokerMap pending_connect_broker_;
466 455
467 // Whether or not the focus is on a PPAPI plugin 456 // Whether or not the focus is on a PPAPI plugin
468 webkit::ppapi::PluginInstance* focused_plugin_; 457 webkit::ppapi::PluginInstance* focused_plugin_;
469 458
470 // Current text input composition text. Empty if no composition is in 459 // Current text input composition text. Empty if no composition is in
471 // progress. 460 // progress.
472 string16 composition_text_; 461 string16 composition_text_;
473 462
474 // |mouse_lock_owner_| is not owned by this class. We can know about when it
475 // is destroyed via InstanceDeleted().
476 // |mouse_lock_owner_| being non-NULL doesn't indicate that currently the
477 // mouse has been locked. It is possible that a request to lock the mouse has
478 // been sent, but the response hasn't arrived yet.
479 webkit::ppapi::PluginInstance* mouse_lock_owner_;
480 bool mouse_locked_;
481 // If both |pending_lock_request_| and |pending_unlock_request_| are true,
482 // it means a lock request was sent before an unlock request and we haven't
483 // received responses for them.
484 // The logic in LockMouse() makes sure that a lock request won't be sent when
485 // there is a pending unlock request.
486 bool pending_lock_request_;
487 bool pending_unlock_request_;
488
489 // The plugin instance that received the last mouse event. It is set to NULL 463 // The plugin instance that received the last mouse event. It is set to NULL
490 // if the last mouse event went to elements other than Pepper plugins. 464 // if the last mouse event went to elements other than Pepper plugins.
491 // |last_mouse_event_target_| is not owned by this class. We can know about 465 // |last_mouse_event_target_| is not owned by this class. We can know about
492 // when it is destroyed via InstanceDeleted(). 466 // when it is destroyed via InstanceDeleted().
493 webkit::ppapi::PluginInstance* last_mouse_event_target_; 467 webkit::ppapi::PluginInstance* last_mouse_event_target_;
494 468
495 DISALLOW_COPY_AND_ASSIGN(PepperPluginDelegateImpl); 469 DISALLOW_COPY_AND_ASSIGN(PepperPluginDelegateImpl);
496 }; 470 };
497 471
498 #endif // CONTENT_RENDERER_PEPPER_PLUGIN_DELEGATE_IMPL_H_ 472 #endif // CONTENT_RENDERER_PEPPER_PLUGIN_DELEGATE_IMPL_H_
OLDNEW
« no previous file with comments | « no previous file | content/renderer/pepper_plugin_delegate_impl.cc » ('j') | content/renderer/render_view_impl.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698