| OLD | NEW |
| 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 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 } | 214 } |
| 215 // Carry over | 215 // Carry over |
| 216 e->cursor_ = other->cursor_; | 216 e->cursor_ = other->cursor_; |
| 217 return e; | 217 return e; |
| 218 } | 218 } |
| 219 | 219 |
| 220 /////////////////////////////////////////////////////////////////////////////// | 220 /////////////////////////////////////////////////////////////////////////////// |
| 221 // OSExchangeDataProviderWin, public: | 221 // OSExchangeDataProviderWin, public: |
| 222 | 222 |
| 223 // static | 223 // static |
| 224 bool OSExchangeDataProviderWin::HasPlainTextURL(IDataObject* source) { | |
| 225 base::string16 plain_text; | |
| 226 return (ClipboardUtil::GetPlainText(source, &plain_text) && | |
| 227 !plain_text.empty() && GURL(plain_text).is_valid()); | |
| 228 } | |
| 229 | |
| 230 // static | |
| 231 bool OSExchangeDataProviderWin::GetPlainTextURL(IDataObject* source, | |
| 232 GURL* url) { | |
| 233 base::string16 plain_text; | |
| 234 if (ClipboardUtil::GetPlainText(source, &plain_text) && | |
| 235 !plain_text.empty()) { | |
| 236 GURL gurl(plain_text); | |
| 237 if (gurl.is_valid()) { | |
| 238 *url = gurl; | |
| 239 return true; | |
| 240 } | |
| 241 } | |
| 242 return false; | |
| 243 } | |
| 244 | |
| 245 // static | |
| 246 DataObjectImpl* OSExchangeDataProviderWin::GetDataObjectImpl( | 224 DataObjectImpl* OSExchangeDataProviderWin::GetDataObjectImpl( |
| 247 const OSExchangeData& data) { | 225 const OSExchangeData& data) { |
| 248 return static_cast<const OSExchangeDataProviderWin*>(&data.provider())-> | 226 return static_cast<const OSExchangeDataProviderWin*>(&data.provider())-> |
| 249 data_.get(); | 227 data_.get(); |
| 250 } | 228 } |
| 251 | 229 |
| 252 // static | 230 // static |
| 253 IDataObject* OSExchangeDataProviderWin::GetIDataObject( | 231 IDataObject* OSExchangeDataProviderWin::GetIDataObject( |
| 254 const OSExchangeData& data) { | 232 const OSExchangeData& data) { |
| 255 return static_cast<const OSExchangeDataProviderWin*>(&data.provider())-> | 233 return static_cast<const OSExchangeDataProviderWin*>(&data.provider())-> |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 404 } | 382 } |
| 405 | 383 |
| 406 bool OSExchangeDataProviderWin::GetString(base::string16* data) const { | 384 bool OSExchangeDataProviderWin::GetString(base::string16* data) const { |
| 407 return ClipboardUtil::GetPlainText(source_object_.get(), data); | 385 return ClipboardUtil::GetPlainText(source_object_.get(), data); |
| 408 } | 386 } |
| 409 | 387 |
| 410 bool OSExchangeDataProviderWin::GetURLAndTitle( | 388 bool OSExchangeDataProviderWin::GetURLAndTitle( |
| 411 OSExchangeData::FilenameToURLPolicy policy, | 389 OSExchangeData::FilenameToURLPolicy policy, |
| 412 GURL* url, | 390 GURL* url, |
| 413 base::string16* title) const { | 391 base::string16* title) const { |
| 414 base::string16 url_str; | 392 if (ClipboardUtil::GetUrl(source_object_.get(), url, title, |
| 415 bool success = ClipboardUtil::GetUrl( | 393 policy == OSExchangeData::CONVERT_FILENAMES)) { |
| 416 source_object_.get(), url, title, | |
| 417 policy == OSExchangeData::CONVERT_FILENAMES ? true : false); | |
| 418 if (success) { | |
| 419 DCHECK(url->is_valid()); | 394 DCHECK(url->is_valid()); |
| 420 return true; | 395 return true; |
| 421 } else if (GetPlainTextURL(source_object_.get(), url)) { | |
| 422 if (url->is_valid()) | |
| 423 *title = net::GetSuggestedFilename(*url, "", "", "", "", std::string()); | |
| 424 else | |
| 425 title->clear(); | |
| 426 return true; | |
| 427 } | 396 } |
| 397 *url = GURL(); |
| 398 title->clear(); |
| 428 return false; | 399 return false; |
| 429 } | 400 } |
| 430 | 401 |
| 431 bool OSExchangeDataProviderWin::GetFilename(base::FilePath* path) const { | 402 bool OSExchangeDataProviderWin::GetFilename(base::FilePath* path) const { |
| 432 std::vector<base::string16> filenames; | 403 std::vector<base::string16> filenames; |
| 433 bool success = ClipboardUtil::GetFilenames(source_object_.get(), &filenames); | 404 bool success = ClipboardUtil::GetFilenames(source_object_.get(), &filenames); |
| 434 if (success) | 405 if (success) |
| 435 *path = base::FilePath(filenames[0]); | 406 *path = base::FilePath(filenames[0]); |
| 436 return success; | 407 return success; |
| 437 } | 408 } |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 488 *base_url = GURL(url); | 459 *base_url = GURL(url); |
| 489 return success; | 460 return success; |
| 490 } | 461 } |
| 491 | 462 |
| 492 bool OSExchangeDataProviderWin::HasString() const { | 463 bool OSExchangeDataProviderWin::HasString() const { |
| 493 return ClipboardUtil::HasPlainText(source_object_.get()); | 464 return ClipboardUtil::HasPlainText(source_object_.get()); |
| 494 } | 465 } |
| 495 | 466 |
| 496 bool OSExchangeDataProviderWin::HasURL( | 467 bool OSExchangeDataProviderWin::HasURL( |
| 497 OSExchangeData::FilenameToURLPolicy policy) const { | 468 OSExchangeData::FilenameToURLPolicy policy) const { |
| 498 return (ClipboardUtil::HasUrl( | 469 return ClipboardUtil::HasUrl(source_object_.get(), |
| 499 source_object_.get(), | 470 policy == OSExchangeData::CONVERT_FILENAMES); |
| 500 policy == OSExchangeData::CONVERT_FILENAMES ? true : false) || | |
| 501 HasPlainTextURL(source_object_.get())); | |
| 502 } | 471 } |
| 503 | 472 |
| 504 bool OSExchangeDataProviderWin::HasFile() const { | 473 bool OSExchangeDataProviderWin::HasFile() const { |
| 505 return ClipboardUtil::HasFilenames(source_object_.get()); | 474 return ClipboardUtil::HasFilenames(source_object_.get()); |
| 506 } | 475 } |
| 507 | 476 |
| 508 bool OSExchangeDataProviderWin::HasFileContents() const { | 477 bool OSExchangeDataProviderWin::HasFileContents() const { |
| 509 return ClipboardUtil::HasFileContents(source_object_.get()); | 478 return ClipboardUtil::HasFileContents(source_object_.get()); |
| 510 } | 479 } |
| 511 | 480 |
| (...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1067 | 1036 |
| 1068 /////////////////////////////////////////////////////////////////////////////// | 1037 /////////////////////////////////////////////////////////////////////////////// |
| 1069 // OSExchangeData, public: | 1038 // OSExchangeData, public: |
| 1070 | 1039 |
| 1071 // static | 1040 // static |
| 1072 OSExchangeData::Provider* OSExchangeData::CreateProvider() { | 1041 OSExchangeData::Provider* OSExchangeData::CreateProvider() { |
| 1073 return new OSExchangeDataProviderWin(); | 1042 return new OSExchangeDataProviderWin(); |
| 1074 } | 1043 } |
| 1075 | 1044 |
| 1076 } // namespace ui | 1045 } // namespace ui |
| OLD | NEW |