| 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_aurax11.h" | 5 #include "ui/base/dragdrop/os_exchange_data_provider_aurax11.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/memory/ref_counted_memory.h" | 8 #include "base/memory/ref_counted_memory.h" |
| 9 #include "base/message_loop/message_pump_x11.h" | 9 #include "base/message_loop/message_pump_x11.h" |
| 10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 168 | 168 |
| 169 std::vector<unsigned char> bytes; | 169 std::vector<unsigned char> bytes; |
| 170 bytes.insert(bytes.end(), data, data + pickle.size()); | 170 bytes.insert(bytes.end(), data, data + pickle.size()); |
| 171 scoped_refptr<base::RefCountedMemory> mem( | 171 scoped_refptr<base::RefCountedMemory> mem( |
| 172 base::RefCountedBytes::TakeVector(&bytes)); | 172 base::RefCountedBytes::TakeVector(&bytes)); |
| 173 | 173 |
| 174 format_map_.Insert(atom_cache_.GetAtom(format.ToString().c_str()), mem); | 174 format_map_.Insert(atom_cache_.GetAtom(format.ToString().c_str()), mem); |
| 175 } | 175 } |
| 176 | 176 |
| 177 bool OSExchangeDataProviderAuraX11::GetString(base::string16* result) const { | 177 bool OSExchangeDataProviderAuraX11::GetString(base::string16* result) const { |
| 178 if (HasFile()) { |
| 179 // Various Linux file managers both pass a list of file:// URIs and set the |
| 180 // string representation to the URI. We explicitly don't want to return use |
| 181 // this representation. |
| 182 return false; |
| 183 } |
| 184 |
| 178 std::vector< ::Atom> text_atoms = ui::GetTextAtomsFrom(&atom_cache_); | 185 std::vector< ::Atom> text_atoms = ui::GetTextAtomsFrom(&atom_cache_); |
| 179 std::vector< ::Atom> requested_types; | 186 std::vector< ::Atom> requested_types; |
| 180 ui::GetAtomIntersection(text_atoms, GetTargets(), &requested_types); | 187 ui::GetAtomIntersection(text_atoms, GetTargets(), &requested_types); |
| 181 | 188 |
| 182 ui::SelectionData data(format_map_.GetFirstOf(requested_types)); | 189 ui::SelectionData data(format_map_.GetFirstOf(requested_types)); |
| 183 if (data.IsValid()) { | 190 if (data.IsValid()) { |
| 184 std::string text = data.GetText(); | 191 std::string text = data.GetText(); |
| 185 *result = base::UTF8ToUTF16(text); | 192 *result = base::UTF8ToUTF16(text); |
| 186 return true; | 193 return true; |
| 187 } | 194 } |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 return true; | 292 return true; |
| 286 } | 293 } |
| 287 | 294 |
| 288 return false; | 295 return false; |
| 289 } | 296 } |
| 290 | 297 |
| 291 bool OSExchangeDataProviderAuraX11::HasString() const { | 298 bool OSExchangeDataProviderAuraX11::HasString() const { |
| 292 std::vector< ::Atom> text_atoms = ui::GetTextAtomsFrom(&atom_cache_); | 299 std::vector< ::Atom> text_atoms = ui::GetTextAtomsFrom(&atom_cache_); |
| 293 std::vector< ::Atom> requested_types; | 300 std::vector< ::Atom> requested_types; |
| 294 ui::GetAtomIntersection(text_atoms, GetTargets(), &requested_types); | 301 ui::GetAtomIntersection(text_atoms, GetTargets(), &requested_types); |
| 295 return !requested_types.empty(); | 302 return !requested_types.empty() && !HasFile(); |
| 296 } | 303 } |
| 297 | 304 |
| 298 bool OSExchangeDataProviderAuraX11::HasURL() const { | 305 bool OSExchangeDataProviderAuraX11::HasURL() const { |
| 299 std::vector< ::Atom> url_atoms = ui::GetURLAtomsFrom(&atom_cache_); | 306 std::vector< ::Atom> url_atoms = ui::GetURLAtomsFrom(&atom_cache_); |
| 300 std::vector< ::Atom> requested_types; | 307 std::vector< ::Atom> requested_types; |
| 301 ui::GetAtomIntersection(url_atoms, GetTargets(), &requested_types); | 308 ui::GetAtomIntersection(url_atoms, GetTargets(), &requested_types); |
| 302 | 309 |
| 303 if (requested_types.empty()) | 310 if (requested_types.empty()) |
| 304 return false; | 311 return false; |
| 305 | 312 |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 | 456 |
| 450 /////////////////////////////////////////////////////////////////////////////// | 457 /////////////////////////////////////////////////////////////////////////////// |
| 451 // OSExchangeData, public: | 458 // OSExchangeData, public: |
| 452 | 459 |
| 453 // static | 460 // static |
| 454 OSExchangeData::Provider* OSExchangeData::CreateProvider() { | 461 OSExchangeData::Provider* OSExchangeData::CreateProvider() { |
| 455 return new OSExchangeDataProviderAuraX11(); | 462 return new OSExchangeDataProviderAuraX11(); |
| 456 } | 463 } |
| 457 | 464 |
| 458 } // namespace ui | 465 } // namespace ui |
| OLD | NEW |