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/clipboard/clipboard.h" | 5 #include "ui/base/clipboard/clipboard.h" |
6 | 6 |
7 #include <X11/extensions/Xfixes.h> | 7 #include <X11/extensions/Xfixes.h> |
8 #include <X11/Xatom.h> | 8 #include <X11/Xatom.h> |
9 #include <list> | 9 #include <list> |
10 #include <set> | 10 #include <set> |
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
561 return target_list.ContainsFormat(format); | 561 return target_list.ContainsFormat(format); |
562 } | 562 } |
563 | 563 |
564 void Clipboard::Clear(ClipboardType type) { | 564 void Clipboard::Clear(ClipboardType type) { |
565 DCHECK(CalledOnValidThread()); | 565 DCHECK(CalledOnValidThread()); |
566 DCHECK(IsSupportedClipboardType(type)); | 566 DCHECK(IsSupportedClipboardType(type)); |
567 aurax11_details_->Clear(type); | 567 aurax11_details_->Clear(type); |
568 } | 568 } |
569 | 569 |
570 void Clipboard::ReadAvailableTypes(ClipboardType type, | 570 void Clipboard::ReadAvailableTypes(ClipboardType type, |
571 std::vector<string16>* types, | 571 std::vector<base::string16>* types, |
572 bool* contains_filenames) const { | 572 bool* contains_filenames) const { |
573 DCHECK(CalledOnValidThread()); | 573 DCHECK(CalledOnValidThread()); |
574 if (!types || !contains_filenames) { | 574 if (!types || !contains_filenames) { |
575 NOTREACHED(); | 575 NOTREACHED(); |
576 return; | 576 return; |
577 } | 577 } |
578 | 578 |
579 TargetList target_list = aurax11_details_->WaitAndGetTargetsList(type); | 579 TargetList target_list = aurax11_details_->WaitAndGetTargetsList(type); |
580 | 580 |
581 types->clear(); | 581 types->clear(); |
582 | 582 |
583 if (target_list.ContainsText()) | 583 if (target_list.ContainsText()) |
584 types->push_back(UTF8ToUTF16(kMimeTypeText)); | 584 types->push_back(UTF8ToUTF16(kMimeTypeText)); |
585 if (target_list.ContainsFormat(GetHtmlFormatType())) | 585 if (target_list.ContainsFormat(GetHtmlFormatType())) |
586 types->push_back(UTF8ToUTF16(kMimeTypeHTML)); | 586 types->push_back(UTF8ToUTF16(kMimeTypeHTML)); |
587 if (target_list.ContainsFormat(GetRtfFormatType())) | 587 if (target_list.ContainsFormat(GetRtfFormatType())) |
588 types->push_back(UTF8ToUTF16(kMimeTypeRTF)); | 588 types->push_back(UTF8ToUTF16(kMimeTypeRTF)); |
589 if (target_list.ContainsFormat(GetBitmapFormatType())) | 589 if (target_list.ContainsFormat(GetBitmapFormatType())) |
590 types->push_back(UTF8ToUTF16(kMimeTypePNG)); | 590 types->push_back(UTF8ToUTF16(kMimeTypePNG)); |
591 *contains_filenames = false; | 591 *contains_filenames = false; |
592 | 592 |
593 SelectionData data(aurax11_details_->RequestAndWaitForTypes( | 593 SelectionData data(aurax11_details_->RequestAndWaitForTypes( |
594 type, aurax11_details_->GetAtomsForFormat(GetWebCustomDataFormatType()))); | 594 type, aurax11_details_->GetAtomsForFormat(GetWebCustomDataFormatType()))); |
595 if (data.IsValid()) | 595 if (data.IsValid()) |
596 ReadCustomDataTypes(data.GetData(), data.GetSize(), types); | 596 ReadCustomDataTypes(data.GetData(), data.GetSize(), types); |
597 } | 597 } |
598 | 598 |
599 void Clipboard::ReadText(ClipboardType type, string16* result) const { | 599 void Clipboard::ReadText(ClipboardType type, base::string16* result) const { |
600 DCHECK(CalledOnValidThread()); | 600 DCHECK(CalledOnValidThread()); |
601 | 601 |
602 SelectionData data(aurax11_details_->RequestAndWaitForTypes( | 602 SelectionData data(aurax11_details_->RequestAndWaitForTypes( |
603 type, aurax11_details_->GetTextAtoms())); | 603 type, aurax11_details_->GetTextAtoms())); |
604 if (data.IsValid()) { | 604 if (data.IsValid()) { |
605 std::string text = data.GetText(); | 605 std::string text = data.GetText(); |
606 *result = UTF8ToUTF16(text); | 606 *result = UTF8ToUTF16(text); |
607 } | 607 } |
608 } | 608 } |
609 | 609 |
610 void Clipboard::ReadAsciiText(ClipboardType type, std::string* result) const { | 610 void Clipboard::ReadAsciiText(ClipboardType type, std::string* result) const { |
611 DCHECK(CalledOnValidThread()); | 611 DCHECK(CalledOnValidThread()); |
612 | 612 |
613 SelectionData data(aurax11_details_->RequestAndWaitForTypes( | 613 SelectionData data(aurax11_details_->RequestAndWaitForTypes( |
614 type, aurax11_details_->GetTextAtoms())); | 614 type, aurax11_details_->GetTextAtoms())); |
615 if (data.IsValid()) | 615 if (data.IsValid()) |
616 result->assign(data.GetText()); | 616 result->assign(data.GetText()); |
617 } | 617 } |
618 | 618 |
619 // TODO(estade): handle different charsets. | 619 // TODO(estade): handle different charsets. |
620 // TODO(port): set *src_url. | 620 // TODO(port): set *src_url. |
621 void Clipboard::ReadHTML(ClipboardType type, | 621 void Clipboard::ReadHTML(ClipboardType type, |
622 string16* markup, | 622 base::string16* markup, |
623 std::string* src_url, | 623 std::string* src_url, |
624 uint32* fragment_start, | 624 uint32* fragment_start, |
625 uint32* fragment_end) const { | 625 uint32* fragment_end) const { |
626 DCHECK(CalledOnValidThread()); | 626 DCHECK(CalledOnValidThread()); |
627 markup->clear(); | 627 markup->clear(); |
628 if (src_url) | 628 if (src_url) |
629 src_url->clear(); | 629 src_url->clear(); |
630 *fragment_start = 0; | 630 *fragment_start = 0; |
631 *fragment_end = 0; | 631 *fragment_end = 0; |
632 | 632 |
(...skipping 25 matching lines...) Expand all Loading... |
658 if (data.IsValid()) { | 658 if (data.IsValid()) { |
659 SkBitmap bitmap; | 659 SkBitmap bitmap; |
660 if (gfx::PNGCodec::Decode(data.GetData(), data.GetSize(), &bitmap)) | 660 if (gfx::PNGCodec::Decode(data.GetData(), data.GetSize(), &bitmap)) |
661 return SkBitmap(bitmap); | 661 return SkBitmap(bitmap); |
662 } | 662 } |
663 | 663 |
664 return SkBitmap(); | 664 return SkBitmap(); |
665 } | 665 } |
666 | 666 |
667 void Clipboard::ReadCustomData(ClipboardType clipboard_type, | 667 void Clipboard::ReadCustomData(ClipboardType clipboard_type, |
668 const string16& type, | 668 const base::string16& type, |
669 string16* result) const { | 669 base::string16* result) const { |
670 DCHECK(CalledOnValidThread()); | 670 DCHECK(CalledOnValidThread()); |
671 | 671 |
672 SelectionData data(aurax11_details_->RequestAndWaitForTypes( | 672 SelectionData data(aurax11_details_->RequestAndWaitForTypes( |
673 clipboard_type, | 673 clipboard_type, |
674 aurax11_details_->GetAtomsForFormat(GetWebCustomDataFormatType()))); | 674 aurax11_details_->GetAtomsForFormat(GetWebCustomDataFormatType()))); |
675 if (data.IsValid()) | 675 if (data.IsValid()) |
676 ReadCustomDataForType(data.GetData(), data.GetSize(), type, result); | 676 ReadCustomDataForType(data.GetData(), data.GetSize(), type, result); |
677 } | 677 } |
678 | 678 |
679 void Clipboard::ReadBookmark(string16* title, std::string* url) const { | 679 void Clipboard::ReadBookmark(base::string16* title, std::string* url) const { |
680 DCHECK(CalledOnValidThread()); | 680 DCHECK(CalledOnValidThread()); |
681 // TODO(erg): This was left NOTIMPLEMENTED() in the gtk port too. | 681 // TODO(erg): This was left NOTIMPLEMENTED() in the gtk port too. |
682 NOTIMPLEMENTED(); | 682 NOTIMPLEMENTED(); |
683 } | 683 } |
684 | 684 |
685 void Clipboard::ReadData(const FormatType& format, std::string* result) const { | 685 void Clipboard::ReadData(const FormatType& format, std::string* result) const { |
686 DCHECK(CalledOnValidThread()); | 686 DCHECK(CalledOnValidThread()); |
687 | 687 |
688 SelectionData data(aurax11_details_->RequestAndWaitForTypes( | 688 SelectionData data(aurax11_details_->RequestAndWaitForTypes( |
689 CLIPBOARD_TYPE_COPY_PASTE, aurax11_details_->GetAtomsForFormat(format))); | 689 CLIPBOARD_TYPE_COPY_PASTE, aurax11_details_->GetAtomsForFormat(format))); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
729 | 729 |
730 void Clipboard::WriteRTF(const char* rtf_data, size_t data_len) { | 730 void Clipboard::WriteRTF(const char* rtf_data, size_t data_len) { |
731 WriteData(GetRtfFormatType(), rtf_data, data_len); | 731 WriteData(GetRtfFormatType(), rtf_data, data_len); |
732 } | 732 } |
733 | 733 |
734 void Clipboard::WriteBookmark(const char* title_data, | 734 void Clipboard::WriteBookmark(const char* title_data, |
735 size_t title_len, | 735 size_t title_len, |
736 const char* url_data, | 736 const char* url_data, |
737 size_t url_len) { | 737 size_t url_len) { |
738 // Write as a mozilla url (UTF16: URL, newline, title). | 738 // Write as a mozilla url (UTF16: URL, newline, title). |
739 string16 url = UTF8ToUTF16(std::string(url_data, url_len) + "\n"); | 739 base::string16 url = UTF8ToUTF16(std::string(url_data, url_len) + "\n"); |
740 string16 title = UTF8ToUTF16(std::string(title_data, title_len)); | 740 base::string16 title = UTF8ToUTF16(std::string(title_data, title_len)); |
741 | 741 |
742 std::vector<unsigned char> data; | 742 std::vector<unsigned char> data; |
743 ui::AddString16ToVector(url, &data); | 743 ui::AddString16ToVector(url, &data); |
744 ui::AddString16ToVector(title, &data); | 744 ui::AddString16ToVector(title, &data); |
745 scoped_refptr<base::RefCountedMemory> mem( | 745 scoped_refptr<base::RefCountedMemory> mem( |
746 base::RefCountedBytes::TakeVector(&data)); | 746 base::RefCountedBytes::TakeVector(&data)); |
747 | 747 |
748 aurax11_details_->InsertMapping(kMimeTypeMozillaURL, mem); | 748 aurax11_details_->InsertMapping(kMimeTypeMozillaURL, mem); |
749 } | 749 } |
750 | 750 |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
848 return type; | 848 return type; |
849 } | 849 } |
850 | 850 |
851 // static | 851 // static |
852 const Clipboard::FormatType& Clipboard::GetPepperCustomDataFormatType() { | 852 const Clipboard::FormatType& Clipboard::GetPepperCustomDataFormatType() { |
853 CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypePepperCustomData)); | 853 CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypePepperCustomData)); |
854 return type; | 854 return type; |
855 } | 855 } |
856 | 856 |
857 } // namespace ui | 857 } // namespace ui |
OLD | NEW |