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

Side by Side Diff: content/renderer/render_view_impl.cc

Issue 1723763002: Add WebDragData to blink::WebView::dragtargetDrop (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 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 #include "content/renderer/render_view_impl.h" 5 #include "content/renderer/render_view_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 421
422 bool HandleMouseLockedInputEvent(const blink::WebMouseEvent& event) override { 422 bool HandleMouseLockedInputEvent(const blink::WebMouseEvent& event) override {
423 // The WebWidget handles mouse lock in WebKit's handleInputEvent(). 423 // The WebWidget handles mouse lock in WebKit's handleInputEvent().
424 return false; 424 return false;
425 } 425 }
426 426
427 private: 427 private:
428 blink::WebWidget* webwidget_; 428 blink::WebWidget* webwidget_;
429 }; 429 };
430 430
431 WebDragData DropDataToWebDragData(const DropData& drop_data) { 431 WebDragData DropDataToWebDragData(const DropData& drop_data,
432 bool is_meta_data) {
432 std::vector<WebDragData::Item> item_list; 433 std::vector<WebDragData::Item> item_list;
433 434
434 // These fields are currently unused when dragging into WebKit. 435 // These fields are currently unused when dragging into WebKit.
435 DCHECK(drop_data.download_metadata.empty()); 436 DCHECK(drop_data.download_metadata.empty());
436 DCHECK(drop_data.file_contents.empty()); 437 DCHECK(drop_data.file_contents.empty());
437 DCHECK(drop_data.file_description_filename.empty()); 438 DCHECK(drop_data.file_description_filename.empty());
438 439
439 if (!drop_data.text.is_null()) { 440 if (!drop_data.text.is_null()) {
440 WebDragData::Item item; 441 WebDragData::Item item;
441 item.storageType = WebDragData::Item::StorageTypeString; 442 item.storageType = WebDragData::Item::StorageTypeString;
442 item.stringType = WebString::fromUTF8(ui::Clipboard::kMimeTypeText); 443 item.stringType = WebString::fromUTF8(ui::Clipboard::kMimeTypeText);
443 item.stringData = drop_data.text.string(); 444 item.stringData = is_meta_data ? WebString::fromUTF8("")
445 : WebString(drop_data.text.string());
444 item_list.push_back(item); 446 item_list.push_back(item);
445 } 447 }
446 448
447 // TODO(dcheng): Do we need to distinguish between null and empty URLs? Is it 449 // TODO(dcheng): Do we need to distinguish between null and empty URLs? Is it
448 // meaningful to write an empty URL to the clipboard? 450 // meaningful to write an empty URL to the clipboard?
449 if (!drop_data.url.is_empty()) { 451 if (drop_data.has_url) {
450 WebDragData::Item item; 452 WebDragData::Item item;
451 item.storageType = WebDragData::Item::StorageTypeString; 453 item.storageType = WebDragData::Item::StorageTypeString;
452 item.stringType = WebString::fromUTF8(ui::Clipboard::kMimeTypeURIList); 454 item.stringType = WebString::fromUTF8(ui::Clipboard::kMimeTypeURIList);
453 item.stringData = WebString::fromUTF8(drop_data.url.spec()); 455 item.stringData = is_meta_data ? WebString::fromUTF8("")
454 item.title = drop_data.url_title; 456 : WebString::fromUTF8(drop_data.url.spec());
457 item.title =
458 is_meta_data ? WebString::fromUTF8("") : WebString(drop_data.url_title);
455 item_list.push_back(item); 459 item_list.push_back(item);
456 } 460 }
457 461
458 if (!drop_data.html.is_null()) { 462 if (!drop_data.html.is_null()) {
459 WebDragData::Item item; 463 WebDragData::Item item;
460 item.storageType = WebDragData::Item::StorageTypeString; 464 item.storageType = WebDragData::Item::StorageTypeString;
461 item.stringType = WebString::fromUTF8(ui::Clipboard::kMimeTypeHTML); 465 item.stringType = WebString::fromUTF8(ui::Clipboard::kMimeTypeHTML);
462 item.stringData = drop_data.html.string(); 466 item.stringData = is_meta_data ? WebString::fromUTF8("")
463 item.baseURL = drop_data.html_base_url; 467 : WebString(drop_data.html.string());
468 item.baseURL = is_meta_data ? GURL() : drop_data.html_base_url;
464 item_list.push_back(item); 469 item_list.push_back(item);
465 } 470 }
466 471
467 for (std::vector<ui::FileInfo>::const_iterator it = 472 for (std::vector<ui::FileInfo>::const_iterator it =
468 drop_data.filenames.begin(); 473 drop_data.filenames.begin();
469 it != drop_data.filenames.end(); 474 it != drop_data.filenames.end();
470 ++it) { 475 ++it) {
471 WebDragData::Item item; 476 WebDragData::Item item;
472 item.storageType = WebDragData::Item::StorageTypeFilename; 477 item.storageType = WebDragData::Item::StorageTypeFilename;
473 item.filenameData = it->path.AsUTF16Unsafe(); 478 item.filenameData = is_meta_data ? WebString::fromUTF8("")
474 item.displayNameData = it->display_name.AsUTF16Unsafe(); 479 : WebString(it->path.AsUTF16Unsafe());
480 item.displayNameData = is_meta_data
481 ? WebString::fromUTF8("")
482 : WebString(it->display_name.AsUTF16Unsafe());
475 item_list.push_back(item); 483 item_list.push_back(item);
476 } 484 }
477 485
478 for (std::vector<DropData::FileSystemFileInfo>::const_iterator it = 486 for (std::vector<DropData::FileSystemFileInfo>::const_iterator it =
479 drop_data.file_system_files.begin(); 487 drop_data.file_system_files.begin();
480 it != drop_data.file_system_files.end(); 488 it != drop_data.file_system_files.end();
481 ++it) { 489 ++it) {
482 WebDragData::Item item; 490 WebDragData::Item item;
483 item.storageType = WebDragData::Item::StorageTypeFileSystemFile; 491 item.storageType = WebDragData::Item::StorageTypeFileSystemFile;
484 item.fileSystemURL = it->url; 492 item.fileSystemURL = is_meta_data ? GURL() : it->url;
485 item.fileSystemFileSize = it->size; 493 item.fileSystemFileSize = is_meta_data ? 0 : it->size;
486 item_list.push_back(item); 494 item_list.push_back(item);
487 } 495 }
488 496
489 for (std::map<base::string16, base::string16>::const_iterator it = 497 for (std::map<base::string16, base::string16>::const_iterator it =
490 drop_data.custom_data.begin(); 498 drop_data.custom_data.begin();
491 it != drop_data.custom_data.end(); 499 it != drop_data.custom_data.end();
492 ++it) { 500 ++it) {
493 WebDragData::Item item; 501 WebDragData::Item item;
494 item.storageType = WebDragData::Item::StorageTypeString; 502 item.storageType = WebDragData::Item::StorageTypeString;
495 item.stringType = it->first; 503 item.stringType = it->first;
496 item.stringData = it->second; 504 item.stringData =
505 is_meta_data ? WebString::fromUTF8("") : WebString(it->second);
497 item_list.push_back(item); 506 item_list.push_back(item);
498 } 507 }
499 508
500 WebDragData result; 509 WebDragData result;
501 result.initialize(); 510 result.initialize();
502 result.setItems(item_list); 511 result.setItems(item_list);
503 result.setFilesystemId(drop_data.filesystem_id); 512 result.setFilesystemId(drop_data.filesystem_id);
513 result.setCanReadContent(!is_meta_data);
504 return result; 514 return result;
505 } 515 }
506 516
507 typedef void (*SetFontFamilyWrapper)(blink::WebSettings*, 517 typedef void (*SetFontFamilyWrapper)(blink::WebSettings*,
508 const base::string16&, 518 const base::string16&,
509 UScriptCode); 519 UScriptCode);
510 520
511 void SetStandardFontFamilyWrapper(WebSettings* settings, 521 void SetStandardFontFamilyWrapper(WebSettings* settings,
512 const base::string16& font, 522 const base::string16& font,
513 UScriptCode script) { 523 UScriptCode script) {
(...skipping 1861 matching lines...) Expand 10 before | Expand all | Expand 10 after
2375 if (main_render_frame_) 2385 if (main_render_frame_)
2376 main_render_frame_->MaybeEnableMojoBindings(); 2386 main_render_frame_->MaybeEnableMojoBindings();
2377 } 2387 }
2378 2388
2379 void RenderViewImpl::OnDragTargetDragEnter(const DropData& drop_data, 2389 void RenderViewImpl::OnDragTargetDragEnter(const DropData& drop_data,
2380 const gfx::Point& client_point, 2390 const gfx::Point& client_point,
2381 const gfx::Point& screen_point, 2391 const gfx::Point& screen_point,
2382 WebDragOperationsMask ops, 2392 WebDragOperationsMask ops,
2383 int key_modifiers) { 2393 int key_modifiers) {
2384 WebDragOperation operation = webview()->dragTargetDragEnter( 2394 WebDragOperation operation = webview()->dragTargetDragEnter(
2385 DropDataToWebDragData(drop_data), 2395 DropDataToWebDragData(drop_data, true), client_point, screen_point, ops,
2386 ConvertWindowPointToViewport(client_point),
2387 screen_point,
2388 ops,
2389 key_modifiers); 2396 key_modifiers);
2390 2397
2391 Send(new DragHostMsg_UpdateDragCursor(GetRoutingID(), operation)); 2398 Send(new DragHostMsg_UpdateDragCursor(GetRoutingID(), operation));
2392 } 2399 }
2393 2400
2394 void RenderViewImpl::OnDragTargetDragOver(const gfx::Point& client_point, 2401 void RenderViewImpl::OnDragTargetDragOver(const gfx::Point& client_point,
2395 const gfx::Point& screen_point, 2402 const gfx::Point& screen_point,
2396 WebDragOperationsMask ops, 2403 WebDragOperationsMask ops,
2397 int key_modifiers) { 2404 int key_modifiers) {
2398 WebDragOperation operation = webview()->dragTargetDragOver( 2405 WebDragOperation operation = webview()->dragTargetDragOver(
2399 ConvertWindowPointToViewport(client_point), 2406 ConvertWindowPointToViewport(client_point),
2400 screen_point, 2407 screen_point,
2401 ops, 2408 ops,
2402 key_modifiers); 2409 key_modifiers);
2403 2410
2404 Send(new DragHostMsg_UpdateDragCursor(GetRoutingID(), operation)); 2411 Send(new DragHostMsg_UpdateDragCursor(GetRoutingID(), operation));
2405 } 2412 }
2406 2413
2407 void RenderViewImpl::OnDragTargetDragLeave() { 2414 void RenderViewImpl::OnDragTargetDragLeave() {
2408 webview()->dragTargetDragLeave(); 2415 webview()->dragTargetDragLeave();
2409 } 2416 }
2410 2417
2411 void RenderViewImpl::OnDragTargetDrop(const gfx::Point& client_point, 2418 void RenderViewImpl::OnDragTargetDrop(const DropData& drop_data,
2419 const gfx::Point& client_point,
2412 const gfx::Point& screen_point, 2420 const gfx::Point& screen_point,
2413 int key_modifiers) { 2421 int key_modifiers) {
2414 webview()->dragTargetDrop( 2422 webview()->dragTargetDrop(DropDataToWebDragData(drop_data, false),
2415 ConvertWindowPointToViewport(client_point), screen_point, key_modifiers); 2423 client_point, screen_point, key_modifiers);
2416 } 2424 }
2417 2425
2418 void RenderViewImpl::OnDragSourceEnded(const gfx::Point& client_point, 2426 void RenderViewImpl::OnDragSourceEnded(const gfx::Point& client_point,
2419 const gfx::Point& screen_point, 2427 const gfx::Point& screen_point,
2420 WebDragOperation op) { 2428 WebDragOperation op) {
2421 webview()->dragSourceEndedAt( 2429 webview()->dragSourceEndedAt(
2422 ConvertWindowPointToViewport(client_point), screen_point, op); 2430 ConvertWindowPointToViewport(client_point), screen_point, op);
2423 } 2431 }
2424 2432
2425 void RenderViewImpl::OnDragSourceSystemDragEnded() { 2433 void RenderViewImpl::OnDragSourceSystemDragEnded() {
(...skipping 1013 matching lines...) Expand 10 before | Expand all | Expand 10 after
3439 if (IsUseZoomForDSFEnabled()) { 3447 if (IsUseZoomForDSFEnabled()) {
3440 webview()->setZoomFactorForDeviceScaleFactor(device_scale_factor_); 3448 webview()->setZoomFactorForDeviceScaleFactor(device_scale_factor_);
3441 } else { 3449 } else {
3442 webview()->setDeviceScaleFactor(device_scale_factor_); 3450 webview()->setDeviceScaleFactor(device_scale_factor_);
3443 } 3451 }
3444 webview()->settings()->setPreferCompositingToLCDTextEnabled( 3452 webview()->settings()->setPreferCompositingToLCDTextEnabled(
3445 PreferCompositingToLCDText(compositor_deps_, device_scale_factor_)); 3453 PreferCompositingToLCDText(compositor_deps_, device_scale_factor_));
3446 } 3454 }
3447 3455
3448 } // namespace content 3456 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698