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

Side by Side Diff: content/browser/web_contents/web_drag_source_mac.mm

Issue 11666018: Don't put HTML onto the clipboard if there is file content data. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 12 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #import "content/browser/web_contents/web_drag_source_mac.h" 5 #import "content/browser/web_contents/web_drag_source_mac.h"
6 6
7 #include <sys/param.h> 7 #include <sys/param.h>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/file_path.h" 10 #include "base/file_path.h"
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 336
337 @implementation WebDragSource (Private) 337 @implementation WebDragSource (Private)
338 338
339 - (void)fillPasteboard { 339 - (void)fillPasteboard {
340 DCHECK(pasteboard_.get()); 340 DCHECK(pasteboard_.get());
341 341
342 [pasteboard_ 342 [pasteboard_
343 declareTypes:[NSArray arrayWithObject:ui::kChromeDragDummyPboardType] 343 declareTypes:[NSArray arrayWithObject:ui::kChromeDragDummyPboardType]
344 owner:contentsView_]; 344 owner:contentsView_];
345 345
346 // HTML.
347 if (!dropData_->html.string().empty())
348 [pasteboard_ addTypes:[NSArray arrayWithObject:NSHTMLPboardType]
349 owner:contentsView_];
350
351 // URL (and title). 346 // URL (and title).
352 if (dropData_->url.is_valid()) { 347 if (dropData_->url.is_valid()) {
353 NSURL* url = [NSURL URLWithString:SysUTF8ToNSString(dropData_->url.spec())]; 348 NSURL* url = [NSURL URLWithString:SysUTF8ToNSString(dropData_->url.spec())];
354 // If NSURL creation failed, check for a badly-escaped JavaScript URL. 349 // If NSURL creation failed, check for a badly-escaped JavaScript URL.
355 // Strip out any existing escapes and then re-escape uniformly. 350 // Strip out any existing escapes and then re-escape uniformly.
356 if (!url && dropData_->url.SchemeIs(chrome::kJavaScriptScheme)) { 351 if (!url && dropData_->url.SchemeIs(chrome::kJavaScriptScheme)) {
357 net::UnescapeRule::Type unescapeRules = 352 net::UnescapeRule::Type unescapeRules =
358 net::UnescapeRule::SPACES | 353 net::UnescapeRule::SPACES |
359 net::UnescapeRule::URL_SPECIAL_CHARS | 354 net::UnescapeRule::URL_SPECIAL_CHARS |
360 net::UnescapeRule::CONTROL_CHARS; 355 net::UnescapeRule::CONTROL_CHARS;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 [pasteboard_ setPropertyList:@[SysUTF8ToNSString(fileExtension.substr(1))] 421 [pasteboard_ setPropertyList:@[SysUTF8ToNSString(fileExtension.substr(1))]
427 forType:NSFilesPromisePboardType]; 422 forType:NSFilesPromisePboardType];
428 423
429 if (!dropData_->file_contents.empty()) { 424 if (!dropData_->file_contents.empty()) {
430 NSArray* types = @[base::mac::CFToNSCast(fileUTI_.get())]; 425 NSArray* types = @[base::mac::CFToNSCast(fileUTI_.get())];
431 [pasteboard_ addTypes:types owner:contentsView_]; 426 [pasteboard_ addTypes:types owner:contentsView_];
432 } 427 }
433 } 428 }
434 } 429 }
435 430
431 // HTML.
432 // Mail.app and TextEdit don't accept drops with both HTML and file content on
433 // them <http://crbug.com/55879>. If there is both file content and HTML in
434 // |dropData_| (as in the case of dragging an image), only provide the file
435 // data.
Nico 2012/12/23 00:08:26 How does the HTML content for just an image look?
436 if (!dropData_->html.string().empty() && dropData_->file_contents.empty())
437 [pasteboard_ addTypes:[NSArray arrayWithObject:NSHTMLPboardType]
438 owner:contentsView_];
439
436 // Plain text. 440 // Plain text.
437 if (!dropData_->text.string().empty()) 441 if (!dropData_->text.string().empty())
438 [pasteboard_ addTypes:[NSArray arrayWithObject:NSStringPboardType] 442 [pasteboard_ addTypes:[NSArray arrayWithObject:NSStringPboardType]
439 owner:contentsView_]; 443 owner:contentsView_];
440 444
441 if (!dropData_->custom_data.empty()) { 445 if (!dropData_->custom_data.empty()) {
442 [pasteboard_ 446 [pasteboard_
443 addTypes:[NSArray arrayWithObject:ui::kWebCustomDataPboardType] 447 addTypes:[NSArray arrayWithObject:ui::kWebCustomDataPboardType]
444 owner:contentsView_]; 448 owner:contentsView_];
445 } 449 }
446 } 450 }
447 451
448 - (NSImage*)dragImage { 452 - (NSImage*)dragImage {
449 if (dragImage_) 453 if (dragImage_)
450 return dragImage_; 454 return dragImage_;
451 455
452 // Default to returning a generic image. 456 // Default to returning a generic image.
453 return content::GetContentClient()->GetNativeImageNamed( 457 return content::GetContentClient()->GetNativeImageNamed(
454 IDR_DEFAULT_FAVICON).ToNSImage(); 458 IDR_DEFAULT_FAVICON).ToNSImage();
455 } 459 }
456 460
457 @end // @implementation WebDragSource (Private) 461 @end // @implementation WebDragSource (Private)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698