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

Side by Side Diff: ui/base/dragdrop/os_exchange_data_provider_win.cc

Issue 2322253004: Drag and dropping text, parsable as url (Closed)
Patch Set: Moving url logic out of os_exchange_data Created 4 years, 3 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 "ui/base/dragdrop/os_exchange_data_provider_win.h" 5 #include "ui/base/dragdrop/os_exchange_data_provider_win.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 } 215 }
216 // Carry over 216 // Carry over
217 e->cursor_ = other->cursor_; 217 e->cursor_ = other->cursor_;
218 return e; 218 return e;
219 } 219 }
220 220
221 /////////////////////////////////////////////////////////////////////////////// 221 ///////////////////////////////////////////////////////////////////////////////
222 // OSExchangeDataProviderWin, public: 222 // OSExchangeDataProviderWin, public:
223 223
224 // static 224 // static
225 bool OSExchangeDataProviderWin::HasPlainTextURL(IDataObject* source) {
226 base::string16 plain_text;
227 return (ClipboardUtil::GetPlainText(source, &plain_text) &&
228 !plain_text.empty() && GURL(plain_text).is_valid());
229 }
230
231 // static
232 bool OSExchangeDataProviderWin::GetPlainTextURL(IDataObject* source,
233 GURL* url) {
234 base::string16 plain_text;
235 if (ClipboardUtil::GetPlainText(source, &plain_text) &&
236 !plain_text.empty()) {
237 GURL gurl(plain_text);
238 if (gurl.is_valid()) {
239 *url = gurl;
240 return true;
241 }
242 }
243 return false;
244 }
245
246 // static
247 DataObjectImpl* OSExchangeDataProviderWin::GetDataObjectImpl( 225 DataObjectImpl* OSExchangeDataProviderWin::GetDataObjectImpl(
248 const OSExchangeData& data) { 226 const OSExchangeData& data) {
249 return static_cast<const OSExchangeDataProviderWin*>(&data.provider())-> 227 return static_cast<const OSExchangeDataProviderWin*>(&data.provider())->
250 data_.get(); 228 data_.get();
251 } 229 }
252 230
253 // static 231 // static
254 IDataObject* OSExchangeDataProviderWin::GetIDataObject( 232 IDataObject* OSExchangeDataProviderWin::GetIDataObject(
255 const OSExchangeData& data) { 233 const OSExchangeData& data) {
256 return static_cast<const OSExchangeDataProviderWin*>(&data.provider())-> 234 return static_cast<const OSExchangeDataProviderWin*>(&data.provider())->
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 } 384 }
407 385
408 bool OSExchangeDataProviderWin::GetString(base::string16* data) const { 386 bool OSExchangeDataProviderWin::GetString(base::string16* data) const {
409 return ClipboardUtil::GetPlainText(source_object_.get(), data); 387 return ClipboardUtil::GetPlainText(source_object_.get(), data);
410 } 388 }
411 389
412 bool OSExchangeDataProviderWin::GetURLAndTitle( 390 bool OSExchangeDataProviderWin::GetURLAndTitle(
413 OSExchangeData::FilenameToURLPolicy policy, 391 OSExchangeData::FilenameToURLPolicy policy,
414 GURL* url, 392 GURL* url,
415 base::string16* title) const { 393 base::string16* title) const {
416 base::string16 url_str; 394 return ClipboardUtil::GetUrl(source_object_.get(), url, title,
417 bool success = ClipboardUtil::GetUrl( 395 policy == OSExchangeData::CONVERT_FILENAMES);
418 source_object_.get(), url, title,
419 policy == OSExchangeData::CONVERT_FILENAMES ? true : false);
420 if (success) {
421 DCHECK(url->is_valid());
dyaroshev 2016/09/14 17:12:06 Am I correct that os_exchange_data GetURLAndTitle
Peter Kasting 2016/09/15 21:26:53 You mean in the existing code? It looks to me lik
422 return true;
423 } else if (GetPlainTextURL(source_object_.get(), url)) {
424 if (url->is_valid())
425 *title = net::GetSuggestedFilename(*url, "", "", "", "", std::string());
426 else
427 title->clear();
428 return true;
429 }
430 return false;
431 } 396 }
432 397
433 bool OSExchangeDataProviderWin::GetFilename(base::FilePath* path) const { 398 bool OSExchangeDataProviderWin::GetFilename(base::FilePath* path) const {
434 std::vector<base::string16> filenames; 399 std::vector<base::string16> filenames;
435 bool success = ClipboardUtil::GetFilenames(source_object_.get(), &filenames); 400 bool success = ClipboardUtil::GetFilenames(source_object_.get(), &filenames);
436 if (success) 401 if (success)
437 *path = base::FilePath(filenames[0]); 402 *path = base::FilePath(filenames[0]);
438 return success; 403 return success;
439 } 404 }
440 405
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 *base_url = GURL(url); 455 *base_url = GURL(url);
491 return success; 456 return success;
492 } 457 }
493 458
494 bool OSExchangeDataProviderWin::HasString() const { 459 bool OSExchangeDataProviderWin::HasString() const {
495 return ClipboardUtil::HasPlainText(source_object_.get()); 460 return ClipboardUtil::HasPlainText(source_object_.get());
496 } 461 }
497 462
498 bool OSExchangeDataProviderWin::HasURL( 463 bool OSExchangeDataProviderWin::HasURL(
499 OSExchangeData::FilenameToURLPolicy policy) const { 464 OSExchangeData::FilenameToURLPolicy policy) const {
500 return (ClipboardUtil::HasUrl( 465 return ClipboardUtil::HasUrl(source_object_.get(),
501 source_object_.get(), 466 policy == OSExchangeData::CONVERT_FILENAMES);
502 policy == OSExchangeData::CONVERT_FILENAMES ? true : false) ||
503 HasPlainTextURL(source_object_.get()));
504 } 467 }
505 468
506 bool OSExchangeDataProviderWin::HasFile() const { 469 bool OSExchangeDataProviderWin::HasFile() const {
507 return ClipboardUtil::HasFilenames(source_object_.get()); 470 return ClipboardUtil::HasFilenames(source_object_.get());
508 } 471 }
509 472
510 bool OSExchangeDataProviderWin::HasFileContents() const { 473 bool OSExchangeDataProviderWin::HasFileContents() const {
511 return ClipboardUtil::HasFileContents(source_object_.get()); 474 return ClipboardUtil::HasFileContents(source_object_.get());
512 } 475 }
513 476
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after
1061 std::min(file_name.size(), static_cast<size_t>(MAX_PATH - 1u))); 1024 std::min(file_name.size(), static_cast<size_t>(MAX_PATH - 1u)));
1062 1025
1063 STGMEDIUM* storage = new STGMEDIUM; 1026 STGMEDIUM* storage = new STGMEDIUM;
1064 storage->tymed = TYMED_HGLOBAL; 1027 storage->tymed = TYMED_HGLOBAL;
1065 storage->hGlobal = hdata; 1028 storage->hGlobal = hdata;
1066 storage->pUnkForRelease = NULL; 1029 storage->pUnkForRelease = NULL;
1067 return storage; 1030 return storage;
1068 } 1031 }
1069 1032
1070 } // namespace ui 1033 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698