OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #import <Cocoa/Cocoa.h> | |
6 | |
7 #include "base/string16.h" | |
8 | |
9 class GURL; | |
10 class RenderViewHost; | |
11 class TabContents; | |
12 struct WebDropData; | |
13 | |
14 namespace content { | |
15 class WebDragDestDelegate; | |
16 } | |
17 | |
18 // A typedef for a RenderViewHost used for comparison purposes only. | |
19 typedef RenderViewHost* RenderViewHostIdentifier; | |
20 | |
21 // A class that handles tracking and event processing for a drag and drop | |
22 // over the content area. Assumes something else initiates the drag, this is | |
23 // only for processing during a drag. | |
24 | |
25 @interface WebDropTarget : NSObject { | |
26 @private | |
27 // Our associated TabContents. Weak reference. | |
28 TabContents* tabContents_; | |
29 | |
30 // Delegate; weak. | |
31 content::WebDragDestDelegate* delegate_; | |
32 | |
33 // Updated asynchronously during a drag to tell us whether or not we should | |
34 // allow the drop. | |
35 NSDragOperation current_operation_; | |
36 | |
37 // Keep track of the render view host we're dragging over. If it changes | |
38 // during a drag, we need to re-send the DragEnter message. | |
39 RenderViewHostIdentifier currentRVH_; | |
40 } | |
41 | |
42 // |contents| is the TabContents representing this tab, used to communicate | |
43 // drag&drop messages to WebCore and handle navigation on a successful drop | |
44 // (if necessary). | |
45 - (id)initWithTabContents:(TabContents*)contents; | |
46 | |
47 - (void)setDragDelegate:(content::WebDragDestDelegate*)delegate; | |
48 | |
49 // Sets the current operation negotiated by the source and destination, | |
50 // which determines whether or not we should allow the drop. Takes effect the | |
51 // next time |-draggingUpdated:| is called. | |
52 - (void)setCurrentOperation: (NSDragOperation)operation; | |
53 | |
54 // Messages to send during the tracking of a drag, ususally upon receiving | |
55 // calls from the view system. Communicates the drag messages to WebCore. | |
56 - (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)info | |
57 view:(NSView*)view; | |
58 - (void)draggingExited:(id<NSDraggingInfo>)info; | |
59 - (NSDragOperation)draggingUpdated:(id<NSDraggingInfo>)info | |
60 view:(NSView*)view; | |
61 - (BOOL)performDragOperation:(id<NSDraggingInfo>)info | |
62 view:(NSView*)view; | |
63 | |
64 @end | |
65 | |
66 // Public use only for unit tests. | |
67 @interface WebDropTarget(Testing) | |
68 // Given |data|, which should not be nil, fill it in using the contents of the | |
69 // given pasteboard. | |
70 - (void)populateWebDropData:(WebDropData*)data | |
71 fromPasteboard:(NSPasteboard*)pboard; | |
72 // Given a point in window coordinates and a view in that window, return a | |
73 // flipped point in the coordinate system of |view|. | |
74 - (NSPoint)flipWindowPointToView:(const NSPoint&)windowPoint | |
75 view:(NSView*)view; | |
76 // Given a point in window coordinates and a view in that window, return a | |
77 // flipped point in screen coordinates. | |
78 - (NSPoint)flipWindowPointToScreen:(const NSPoint&)windowPoint | |
79 view:(NSView*)view; | |
80 @end | |
OLD | NEW |