| OLD | NEW |
| 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 #import "chrome/browser/ui/cocoa/tab_contents/web_drop_target.h" | 5 #import "chrome/browser/ui/cocoa/tab_contents/web_drop_target.h" |
| 6 | 6 |
| 7 #include "base/sys_string_conversions.h" | 7 #include "base/sys_string_conversions.h" |
| 8 #include "chrome/browser/bookmarks/bookmark_node_data.h" | 8 #include "chrome/browser/bookmarks/bookmark_node_data.h" |
| 9 #include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h" | 9 #include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h" |
| 10 #include "chrome/browser/ui/browser.h" | 10 #include "chrome/browser/ui/browser.h" |
| 11 #include "chrome/browser/ui/browser_window.h" | 11 #include "chrome/browser/ui/browser_window.h" |
| 12 #include "chrome/browser/ui/cocoa/drag_util.h" | |
| 13 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 12 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| 14 #include "content/browser/renderer_host/render_view_host.h" | 13 #include "content/browser/renderer_host/render_view_host.h" |
| 15 #include "content/browser/tab_contents/tab_contents.h" | 14 #include "content/browser/tab_contents/tab_contents.h" |
| 16 #import "third_party/mozilla/NSPasteboard+Utils.h" | 15 #import "third_party/mozilla/NSPasteboard+Utils.h" |
| 16 #import "ui/base/dragdrop/cocoa_dnd_util.h" |
| 17 #include "webkit/glue/webdropdata.h" | 17 #include "webkit/glue/webdropdata.h" |
| 18 #include "webkit/glue/window_open_disposition.h" | 18 #include "webkit/glue/window_open_disposition.h" |
| 19 | 19 |
| 20 using WebKit::WebDragOperationsMask; | 20 using WebKit::WebDragOperationsMask; |
| 21 | 21 |
| 22 @implementation WebDropTarget | 22 @implementation WebDropTarget |
| 23 | 23 |
| 24 // |contents| is the TabContents representing this tab, used to communicate | 24 // |contents| is the TabContents representing this tab, used to communicate |
| 25 // drag&drop messages to WebCore and handle navigation on a successful drop | 25 // drag&drop messages to WebCore and handle navigation on a successful drop |
| 26 // (if necessary). | 26 // (if necessary). |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 - (BOOL)performDragOperation:(id<NSDraggingInfo>)info | 160 - (BOOL)performDragOperation:(id<NSDraggingInfo>)info |
| 161 view:(NSView*)view { | 161 view:(NSView*)view { |
| 162 if (currentRVH_ != tabContents_->render_view_host()) | 162 if (currentRVH_ != tabContents_->render_view_host()) |
| 163 [self draggingEntered:info view:view]; | 163 [self draggingEntered:info view:view]; |
| 164 | 164 |
| 165 // Check if we only allow navigation and navigate to a url on the pasteboard. | 165 // Check if we only allow navigation and navigate to a url on the pasteboard. |
| 166 if ([self onlyAllowsNavigation]) { | 166 if ([self onlyAllowsNavigation]) { |
| 167 NSPasteboard* pboard = [info draggingPasteboard]; | 167 NSPasteboard* pboard = [info draggingPasteboard]; |
| 168 if ([pboard containsURLData]) { | 168 if ([pboard containsURLData]) { |
| 169 GURL url; | 169 GURL url; |
| 170 drag_util::PopulateURLAndTitleFromPasteBoard(&url, NULL, pboard, YES); | 170 ui::PopulateURLAndTitleFromPasteboard(&url, NULL, pboard, YES); |
| 171 tabContents_->OpenURL(url, GURL(), CURRENT_TAB, | 171 tabContents_->OpenURL(url, GURL(), CURRENT_TAB, |
| 172 content::PAGE_TRANSITION_AUTO_BOOKMARK); | 172 content::PAGE_TRANSITION_AUTO_BOOKMARK); |
| 173 return YES; | 173 return YES; |
| 174 } | 174 } |
| 175 return NO; | 175 return NO; |
| 176 } | 176 } |
| 177 | 177 |
| 178 // If the tab is showing the bookmark manager, send BookmarkDrag events | 178 // If the tab is showing the bookmark manager, send BookmarkDrag events |
| 179 BookmarkTabHelper::BookmarkDrag* dragDelegate = | 179 BookmarkTabHelper::BookmarkDrag* dragDelegate = |
| 180 tab_ ? tab_->bookmark_tab_helper()->GetBookmarkDragDelegate() : NULL; | 180 tab_ ? tab_->bookmark_tab_helper()->GetBookmarkDragDelegate() : NULL; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 205 // Given |data|, which should not be nil, fill it in using the contents of the | 205 // Given |data|, which should not be nil, fill it in using the contents of the |
| 206 // given pasteboard. | 206 // given pasteboard. |
| 207 - (void)populateWebDropData:(WebDropData*)data | 207 - (void)populateWebDropData:(WebDropData*)data |
| 208 fromPasteboard:(NSPasteboard*)pboard { | 208 fromPasteboard:(NSPasteboard*)pboard { |
| 209 DCHECK(data); | 209 DCHECK(data); |
| 210 DCHECK(pboard); | 210 DCHECK(pboard); |
| 211 NSArray* types = [pboard types]; | 211 NSArray* types = [pboard types]; |
| 212 | 212 |
| 213 // Get URL if possible. To avoid exposing file system paths to web content, | 213 // Get URL if possible. To avoid exposing file system paths to web content, |
| 214 // filenames in the drag are not converted to file URLs. | 214 // filenames in the drag are not converted to file URLs. |
| 215 drag_util::PopulateURLAndTitleFromPasteBoard(&data->url, | 215 ui::PopulateURLAndTitleFromPasteboard(&data->url, |
| 216 &data->url_title, | 216 &data->url_title, |
| 217 pboard, | 217 pboard, |
| 218 NO); | 218 NO); |
| 219 | 219 |
| 220 // Get plain text. | 220 // Get plain text. |
| 221 if ([types containsObject:NSStringPboardType]) { | 221 if ([types containsObject:NSStringPboardType]) { |
| 222 data->plain_text = | 222 data->plain_text = |
| 223 base::SysNSStringToUTF16([pboard stringForType:NSStringPboardType]); | 223 base::SysNSStringToUTF16([pboard stringForType:NSStringPboardType]); |
| 224 } | 224 } |
| 225 | 225 |
| 226 // Get HTML. If there's no HTML, try RTF. | 226 // Get HTML. If there's no HTML, try RTF. |
| 227 if ([types containsObject:NSHTMLPboardType]) { | 227 if ([types containsObject:NSHTMLPboardType]) { |
| 228 data->text_html = | 228 data->text_html = |
| (...skipping 15 matching lines...) Expand all Loading... |
| 244 if (exists && !isDir) | 244 if (exists && !isDir) |
| 245 data->filenames.push_back(base::SysNSStringToUTF16(filename)); | 245 data->filenames.push_back(base::SysNSStringToUTF16(filename)); |
| 246 } | 246 } |
| 247 } | 247 } |
| 248 } | 248 } |
| 249 | 249 |
| 250 // TODO(pinkerton): Get file contents. http://crbug.com/34661 | 250 // TODO(pinkerton): Get file contents. http://crbug.com/34661 |
| 251 } | 251 } |
| 252 | 252 |
| 253 @end | 253 @end |
| OLD | NEW |