| 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 <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
| 8 #include <X11/extensions/Xfixes.h> | 8 #include <X11/extensions/Xfixes.h> |
| 9 #include <X11/Xatom.h> | 9 #include <X11/Xatom.h> |
| 10 #include <map> | 10 #include <map> |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 DLOG(ERROR) << "Unexpected selection atom: " << ev->selection; | 103 DLOG(ERROR) << "Unexpected selection atom: " << ev->selection; |
| 104 } | 104 } |
| 105 } | 105 } |
| 106 return GDK_FILTER_CONTINUE; | 106 return GDK_FILTER_CONTINUE; |
| 107 } | 107 } |
| 108 | 108 |
| 109 const char kMimeTypeBitmap[] = "image/bmp"; | 109 const char kMimeTypeBitmap[] = "image/bmp"; |
| 110 const char kMimeTypeMozillaURL[] = "text/x-moz-url"; | 110 const char kMimeTypeMozillaURL[] = "text/x-moz-url"; |
| 111 const char kMimeTypePepperCustomData[] = "chromium/x-pepper-custom-data"; | 111 const char kMimeTypePepperCustomData[] = "chromium/x-pepper-custom-data"; |
| 112 const char kMimeTypeWebkitSmartPaste[] = "chromium/x-webkit-paste"; | 112 const char kMimeTypeWebkitSmartPaste[] = "chromium/x-webkit-paste"; |
| 113 const char kIncognitoMarkerType[] = "org.chromium.incognito-marker"; |
| 113 | 114 |
| 114 std::string GdkAtomToString(const GdkAtom& atom) { | 115 std::string GdkAtomToString(const GdkAtom& atom) { |
| 115 gchar* name = gdk_atom_name(atom); | 116 gchar* name = gdk_atom_name(atom); |
| 116 std::string rv(name); | 117 std::string rv(name); |
| 117 g_free(name); | 118 g_free(name); |
| 118 return rv; | 119 return rv; |
| 119 } | 120 } |
| 120 | 121 |
| 121 GdkAtom StringToGdkAtom(const std::string& str) { | 122 GdkAtom StringToGdkAtom(const std::string& str) { |
| 122 return gdk_atom_intern(str.c_str(), FALSE); | 123 return gdk_atom_intern(str.c_str(), FALSE); |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 DCHECK(CalledOnValidThread()); | 211 DCHECK(CalledOnValidThread()); |
| 211 clipboard_ = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); | 212 clipboard_ = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); |
| 212 primary_selection_ = gtk_clipboard_get(GDK_SELECTION_PRIMARY); | 213 primary_selection_ = gtk_clipboard_get(GDK_SELECTION_PRIMARY); |
| 213 } | 214 } |
| 214 | 215 |
| 215 Clipboard::~Clipboard() { | 216 Clipboard::~Clipboard() { |
| 216 DCHECK(CalledOnValidThread()); | 217 DCHECK(CalledOnValidThread()); |
| 217 gtk_clipboard_store(clipboard_); | 218 gtk_clipboard_store(clipboard_); |
| 218 } | 219 } |
| 219 | 220 |
| 220 void Clipboard::WriteObjects(Buffer buffer, const ObjectMap& objects) { | 221 void Clipboard::WriteObjectsImpl(Buffer buffer, const ObjectMap& objects) { |
| 221 DCHECK(CalledOnValidThread()); | 222 DCHECK(CalledOnValidThread()); |
| 222 clipboard_data_ = new TargetMap(); | 223 clipboard_data_ = new TargetMap(); |
| 223 | 224 |
| 224 for (ObjectMap::const_iterator iter = objects.begin(); | 225 for (ObjectMap::const_iterator iter = objects.begin(); |
| 225 iter != objects.end(); ++iter) { | 226 iter != objects.end(); ++iter) { |
| 226 DispatchObject(static_cast<ObjectType>(iter->first), iter->second); | 227 DispatchObject(static_cast<ObjectType>(iter->first), iter->second); |
| 227 } | 228 } |
| 228 | 229 |
| 229 SetGtkClipboard(buffer); | 230 SetGtkClipboard(buffer); |
| 230 } | 231 } |
| (...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 652 CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeWebCustomData)); | 653 CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeWebCustomData)); |
| 653 return type; | 654 return type; |
| 654 } | 655 } |
| 655 | 656 |
| 656 // static | 657 // static |
| 657 const Clipboard::FormatType& Clipboard::GetPepperCustomDataFormatType() { | 658 const Clipboard::FormatType& Clipboard::GetPepperCustomDataFormatType() { |
| 658 CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypePepperCustomData)); | 659 CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypePepperCustomData)); |
| 659 return type; | 660 return type; |
| 660 } | 661 } |
| 661 | 662 |
| 663 // static |
| 664 const Clipboard::FormatType& Clipboard::GetIncognitoMarkerFormatType() { |
| 665 CR_DEFINE_STATIC_LOCAL(FormatType, type, (kIncognitoMarkerType)); |
| 666 return type; |
| 667 } |
| 668 |
| 662 void Clipboard::InsertMapping(const char* key, | 669 void Clipboard::InsertMapping(const char* key, |
| 663 char* data, | 670 char* data, |
| 664 size_t data_len) { | 671 size_t data_len) { |
| 665 DCHECK(clipboard_data_->find(key) == clipboard_data_->end()); | 672 DCHECK(clipboard_data_->find(key) == clipboard_data_->end()); |
| 666 (*clipboard_data_)[key] = std::make_pair(data, data_len); | 673 (*clipboard_data_)[key] = std::make_pair(data, data_len); |
| 667 } | 674 } |
| 668 | 675 |
| 669 GtkClipboard* Clipboard::LookupBackingClipboard(Buffer clipboard) const { | 676 GtkClipboard* Clipboard::LookupBackingClipboard(Buffer clipboard) const { |
| 670 switch (clipboard) { | 677 switch (clipboard) { |
| 671 case BUFFER_STANDARD: | 678 case BUFFER_STANDARD: |
| 672 return clipboard_; | 679 return clipboard_; |
| 673 case BUFFER_SELECTION: | 680 case BUFFER_SELECTION: |
| 674 return primary_selection_; | 681 return primary_selection_; |
| 675 default: | 682 default: |
| 676 NOTREACHED(); | 683 NOTREACHED(); |
| 677 return NULL; | 684 return NULL; |
| 678 } | 685 } |
| 679 } | 686 } |
| 680 | 687 |
| 681 } // namespace ui | 688 } // namespace ui |
| OLD | NEW |