| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/x/selection_utils.h" | 5 #include "ui/base/x/selection_utils.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/i18n/icu_string_conversions.h" | 9 #include "base/i18n/icu_string_conversions.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "base/strings/string_util.h" |
| 11 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
| 12 #include "ui/base/clipboard/clipboard.h" | 13 #include "ui/base/clipboard/clipboard.h" |
| 13 #include "ui/base/x/x11_util.h" | 14 #include "ui/base/x/x11_util.h" |
| 14 #include "ui/gfx/x/x11_atom_cache.h" | 15 #include "ui/gfx/x/x11_atom_cache.h" |
| 15 | 16 |
| 16 namespace ui { | 17 namespace ui { |
| 17 | 18 |
| 18 const char kMimeTypeMozillaURL[] = "text/x-moz-url"; | 19 const char kMimeTypeMozillaURL[] = "text/x-moz-url"; |
| 19 const char kString[] = "STRING"; | 20 const char kString[] = "STRING"; |
| 20 const char kText[] = "TEXT"; | 21 const char kText[] = "TEXT"; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 36 return atoms; | 37 return atoms; |
| 37 } | 38 } |
| 38 | 39 |
| 39 std::vector< ::Atom> GetURLAtomsFrom(const X11AtomCache* atom_cache) { | 40 std::vector< ::Atom> GetURLAtomsFrom(const X11AtomCache* atom_cache) { |
| 40 std::vector< ::Atom> atoms; | 41 std::vector< ::Atom> atoms; |
| 41 atoms.push_back(atom_cache->GetAtom(Clipboard::kMimeTypeURIList)); | 42 atoms.push_back(atom_cache->GetAtom(Clipboard::kMimeTypeURIList)); |
| 42 atoms.push_back(atom_cache->GetAtom(kMimeTypeMozillaURL)); | 43 atoms.push_back(atom_cache->GetAtom(kMimeTypeMozillaURL)); |
| 43 return atoms; | 44 return atoms; |
| 44 } | 45 } |
| 45 | 46 |
| 47 std::vector< ::Atom> GetURIListAtomsFrom(const X11AtomCache* atom_cache) { |
| 48 std::vector< ::Atom> atoms; |
| 49 atoms.push_back(atom_cache->GetAtom(Clipboard::kMimeTypeURIList)); |
| 50 return atoms; |
| 51 } |
| 52 |
| 46 void GetAtomIntersection(const std::vector< ::Atom>& desired, | 53 void GetAtomIntersection(const std::vector< ::Atom>& desired, |
| 47 const std::vector< ::Atom>& offered, | 54 const std::vector< ::Atom>& offered, |
| 48 std::vector< ::Atom>* output) { | 55 std::vector< ::Atom>* output) { |
| 49 for (std::vector< ::Atom>::const_iterator it = desired.begin(); | 56 for (std::vector< ::Atom>::const_iterator it = desired.begin(); |
| 50 it != desired.end(); ++it) { | 57 it != desired.end(); ++it) { |
| 51 std::vector< ::Atom>::const_iterator jt = | 58 std::vector< ::Atom>::const_iterator jt = |
| 52 std::find(offered.begin(), offered.end(), *it); | 59 std::find(offered.begin(), offered.end(), *it); |
| 53 if (jt != offered.end()) | 60 if (jt != offered.end()) |
| 54 output->push_back(*it); | 61 output->push_back(*it); |
| 55 } | 62 } |
| 56 } | 63 } |
| 57 | 64 |
| 58 void AddString16ToVector(const base::string16& str, | 65 void AddString16ToVector(const base::string16& str, |
| 59 std::vector<unsigned char>* bytes) { | 66 std::vector<unsigned char>* bytes) { |
| 60 const unsigned char* front = | 67 const unsigned char* front = |
| 61 reinterpret_cast<const unsigned char*>(str.data()); | 68 reinterpret_cast<const unsigned char*>(str.data()); |
| 62 bytes->insert(bytes->end(), front, front + (str.size() * 2)); | 69 bytes->insert(bytes->end(), front, front + (str.size() * 2)); |
| 63 } | 70 } |
| 64 | 71 |
| 72 std::vector<std::string> ParseURIList(const SelectionData& data) { |
| 73 // uri-lists are newline separated file lists in URL encoding. |
| 74 std::string unparsed; |
| 75 data.AssignTo(&unparsed); |
| 76 |
| 77 std::vector<std::string> tokens; |
| 78 Tokenize(unparsed, "\n", &tokens); |
| 79 return tokens; |
| 80 } |
| 81 |
| 65 std::string RefCountedMemoryToString( | 82 std::string RefCountedMemoryToString( |
| 66 const scoped_refptr<base::RefCountedMemory>& memory) { | 83 const scoped_refptr<base::RefCountedMemory>& memory) { |
| 67 if (!memory.get()) { | 84 if (!memory.get()) { |
| 68 NOTREACHED(); | 85 NOTREACHED(); |
| 69 return std::string(); | 86 return std::string(); |
| 70 } | 87 } |
| 71 | 88 |
| 72 size_t size = memory->size(); | 89 size_t size = memory->size(); |
| 73 if (!size) | 90 if (!size) |
| 74 return std::string(); | 91 return std::string(); |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 | 238 |
| 222 void SelectionData::AssignTo(std::string* result) const { | 239 void SelectionData::AssignTo(std::string* result) const { |
| 223 *result = RefCountedMemoryToString(memory_); | 240 *result = RefCountedMemoryToString(memory_); |
| 224 } | 241 } |
| 225 | 242 |
| 226 void SelectionData::AssignTo(base::string16* result) const { | 243 void SelectionData::AssignTo(base::string16* result) const { |
| 227 *result = RefCountedMemoryToString16(memory_); | 244 *result = RefCountedMemoryToString16(memory_); |
| 228 } | 245 } |
| 229 | 246 |
| 230 } // namespace ui | 247 } // namespace ui |
| OLD | NEW |