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

Side by Side Diff: content/browser/browser_plugin/browser_plugin_guest.h

Issue 12086095: Fixed drag and drop into and out of Browser Plugin. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Addressed comments Created 7 years, 8 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 unified diff | Download patch
OLDNEW
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 // A BrowserPluginGuest is the browser side of a browser <--> embedder 5 // A BrowserPluginGuest is the browser side of a browser <--> embedder
6 // renderer channel. A BrowserPlugin (a WebPlugin) is on the embedder 6 // renderer channel. A BrowserPlugin (a WebPlugin) is on the embedder
7 // renderer side of browser <--> embedder renderer communication. 7 // renderer side of browser <--> embedder renderer communication.
8 // 8 //
9 // BrowserPluginGuest lives on the UI thread of the browser process. It has a 9 // BrowserPluginGuest lives on the UI thread of the browser process. It has a
10 // helper, BrowserPluginGuestHelper, which is a RenderViewHostObserver. The 10 // helper, BrowserPluginGuestHelper, which is a RenderViewHostObserver. The
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 // A browser plugin guest provides functionality for WebContents to operate in 72 // A browser plugin guest provides functionality for WebContents to operate in
73 // the guest role and implements guest-specific overrides for ViewHostMsg_* 73 // the guest role and implements guest-specific overrides for ViewHostMsg_*
74 // messages. 74 // messages.
75 // 75 //
76 // When a guest is initially created, it is in an unattached state. That is, 76 // When a guest is initially created, it is in an unattached state. That is,
77 // it is not visible anywhere and has no embedder WebContents assigned. 77 // it is not visible anywhere and has no embedder WebContents assigned.
78 // A BrowserPluginGuest is said to be "attached" if it has an embedder. 78 // A BrowserPluginGuest is said to be "attached" if it has an embedder.
79 // A BrowserPluginGuest can also create a new unattached guest via 79 // A BrowserPluginGuest can also create a new unattached guest via
80 // CreateNewWindow. The newly created guest will live in the same partition, 80 // CreateNewWindow. The newly created guest will live in the same partition,
81 // which means it can share storage and can script this guest. 81 // which means it can share storage and can script this guest.
82 class CONTENT_EXPORT BrowserPluginGuest : public NotificationObserver, 82 class CONTENT_EXPORT BrowserPluginGuest
83 public WebContentsDelegate, 83 : public NotificationObserver,
84 public WebContentsObserver { 84 public WebContentsDelegate,
85 public WebContentsObserver,
86 public base::SupportsWeakPtr<BrowserPluginGuest> {
85 public: 87 public:
86 typedef base::Callback<void(bool)> GeolocationCallback; 88 typedef base::Callback<void(bool)> GeolocationCallback;
87 virtual ~BrowserPluginGuest(); 89 virtual ~BrowserPluginGuest();
88 90
89 static BrowserPluginGuest* Create( 91 static BrowserPluginGuest* Create(
90 int instance_id, 92 int instance_id,
91 WebContentsImpl* web_contents); 93 WebContentsImpl* web_contents);
92 94
93 // Destroys the guest WebContents and all its associated state, including 95 // Destroys the guest WebContents and all its associated state, including
94 // this BrowserPluginGuest, and its new unattached windows. 96 // this BrowserPluginGuest, and its new unattached windows.
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 // BrowserPluginGuest is already destroyed. 233 // BrowserPluginGuest is already destroyed.
232 static void AcknowledgeBufferPresent(int route_id, 234 static void AcknowledgeBufferPresent(int route_id,
233 int gpu_host_id, 235 int gpu_host_id,
234 const std::string& mailbox_name, 236 const std::string& mailbox_name,
235 uint32 sync_point); 237 uint32 sync_point);
236 238
237 // Returns whether BrowserPluginGuest is interested in receiving the given 239 // Returns whether BrowserPluginGuest is interested in receiving the given
238 // |message|. 240 // |message|.
239 static bool ShouldForwardToBrowserPluginGuest(const IPC::Message& message); 241 static bool ShouldForwardToBrowserPluginGuest(const IPC::Message& message);
240 242
243 void DragSourceEndedAt(int client_x, int client_y, int screen_x,
244 int screen_y, WebKit::WebDragOperation operation);
245
246 void DragSourceMovedTo(int client_x, int client_y,
247 int screen_x, int screen_y);
248
249 // Called when the drag started by this guest ends at an OS-level.
250 void EndSystemDrag();
251
241 private: 252 private:
242 typedef std::pair<MediaStreamRequest, MediaResponseCallback> 253 typedef std::pair<MediaStreamRequest, MediaResponseCallback>
243 MediaStreamRequestAndCallbackPair; 254 MediaStreamRequestAndCallbackPair;
244 typedef std::map<int, MediaStreamRequestAndCallbackPair> 255 typedef std::map<int, MediaStreamRequestAndCallbackPair>
245 MediaStreamRequestsMap; 256 MediaStreamRequestsMap;
246 257
247 class EmbedderRenderViewHostObserver; 258 class EmbedderRenderViewHostObserver;
248 friend class TestBrowserPluginGuest; 259 friend class TestBrowserPluginGuest;
249 260
250 BrowserPluginGuest(int instance_id, 261 BrowserPluginGuest(int instance_id,
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 void OnUnlockMouse(); 367 void OnUnlockMouse();
357 void OnUnlockMouseAck(int instance_id); 368 void OnUnlockMouseAck(int instance_id);
358 void OnUpdateRectACK( 369 void OnUpdateRectACK(
359 int instance_id, 370 int instance_id,
360 const BrowserPluginHostMsg_AutoSize_Params& auto_size_params, 371 const BrowserPluginHostMsg_AutoSize_Params& auto_size_params,
361 const BrowserPluginHostMsg_ResizeGuest_Params& resize_guest_params); 372 const BrowserPluginHostMsg_ResizeGuest_Params& resize_guest_params);
362 373
363 374
364 // Message handlers for messages from guest. 375 // Message handlers for messages from guest.
365 376
377 void OnDragStopped();
366 void OnHandleInputEventAck( 378 void OnHandleInputEventAck(
367 WebKit::WebInputEvent::Type event_type, 379 WebKit::WebInputEvent::Type event_type,
368 InputEventAckState ack_result); 380 InputEventAckState ack_result);
369 void OnHasTouchEventHandlers(bool accept); 381 void OnHasTouchEventHandlers(bool accept);
370 void OnSetCursor(const WebCursor& cursor); 382 void OnSetCursor(const WebCursor& cursor);
371 // On MacOSX popups are painted by the browser process. We handle them here 383 // On MacOSX popups are painted by the browser process. We handle them here
372 // so that they are positioned correctly. 384 // so that they are positioned correctly.
373 #if defined(OS_MACOSX) 385 #if defined(OS_MACOSX)
374 void OnShowPopup(const ViewHostMsg_ShowPopup_Params& params); 386 void OnShowPopup(const ViewHostMsg_ShowPopup_Params& params);
375 #endif 387 #endif
376 void OnShowWidget(int route_id, const gfx::Rect& initial_pos); 388 void OnShowWidget(int route_id, const gfx::Rect& initial_pos);
377 // Overriden in tests. 389 // Overriden in tests.
378 virtual void OnTakeFocus(bool reverse); 390 virtual void OnTakeFocus(bool reverse);
379 void OnUpdateDragCursor(WebKit::WebDragOperation operation);
380 void OnUpdateFrameName(int frame_id, 391 void OnUpdateFrameName(int frame_id,
381 bool is_top_level, 392 bool is_top_level,
382 const std::string& name); 393 const std::string& name);
383 void OnUpdateRect(const ViewHostMsg_UpdateRect_Params& params); 394 void OnUpdateRect(const ViewHostMsg_UpdateRect_Params& params);
384 395
385 // Helpers for |OnRespondPermission|. 396 // Helpers for |OnRespondPermission|.
386 void OnRespondPermissionDownload(int request_id, bool should_allow); 397 void OnRespondPermissionDownload(int request_id, bool should_allow);
387 void OnRespondPermissionGeolocation(int request_id, bool should_allow); 398 void OnRespondPermissionGeolocation(int request_id, bool should_allow);
388 void OnRespondPermissionMedia(int request_id, bool should_allow); 399 void OnRespondPermissionMedia(int request_id, bool should_allow);
389 void OnRespondPermissionNewWindow(int request_id, bool should_allow); 400 void OnRespondPermissionNewWindow(int request_id, bool should_allow);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 461
451 typedef std::map<int, base::Callback<void(bool)> > DownloadRequestMap; 462 typedef std::map<int, base::Callback<void(bool)> > DownloadRequestMap;
452 DownloadRequestMap download_request_callback_map_; 463 DownloadRequestMap download_request_callback_map_;
453 464
454 DISALLOW_COPY_AND_ASSIGN(BrowserPluginGuest); 465 DISALLOW_COPY_AND_ASSIGN(BrowserPluginGuest);
455 }; 466 };
456 467
457 } // namespace content 468 } // namespace content
458 469
459 #endif // CONTENT_BROWSER_BROWSER_PLUGIN_BROWSER_PLUGIN_GUEST_H_ 470 #endif // CONTENT_BROWSER_BROWSER_PLUGIN_BROWSER_PLUGIN_GUEST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698