| Index: ui/base/x/selection_utils.h
|
| diff --git a/ui/base/x/selection_utils.h b/ui/base/x/selection_utils.h
|
| index d7abf3ff4d026ef0dc5bd6340efc322697d151ea..609ee9d12ea2f22a81e01f3448460ead0710a7a2 100644
|
| --- a/ui/base/x/selection_utils.h
|
| +++ b/ui/base/x/selection_utils.h
|
| @@ -13,6 +13,7 @@
|
| #include <map>
|
|
|
| #include "base/basictypes.h"
|
| +#include "base/memory/ref_counted_memory.h"
|
| #include "ui/base/clipboard/clipboard.h"
|
| #include "ui/base/ui_export.h"
|
| #include "ui/base/x/x11_atom_cache.h"
|
| @@ -36,6 +37,16 @@ UI_EXPORT void GetAtomIntersection(const std::vector< ::Atom>& one,
|
| const std::vector< ::Atom>& two,
|
| std::vector< ::Atom>* output);
|
|
|
| +// Takes the raw bytes of the string16 and copies them into |bytes|.
|
| +UI_EXPORT void AddString16ToVector(const string16& str,
|
| + std::vector<unsigned char>* bytes);
|
| +
|
| +UI_EXPORT std::string RefCountedMemoryToString(
|
| + const scoped_refptr<base::RefCountedMemory>& memory);
|
| +
|
| +UI_EXPORT string16 RefCountedMemoryToString16(
|
| + const scoped_refptr<base::RefCountedMemory>& memory);
|
| +
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| // Represents the selection in different data formats. Binary data passed in is
|
| @@ -43,27 +54,24 @@ UI_EXPORT void GetAtomIntersection(const std::vector< ::Atom>& one,
|
| class UI_EXPORT SelectionFormatMap {
|
| public:
|
| // Our internal data store, which we only expose through iterators.
|
| - typedef std::map< ::Atom, std::pair<char*, size_t> > InternalMap;
|
| - typedef std::map< ::Atom, std::pair<char*, size_t> >::const_iterator
|
| - const_iterator;
|
| + typedef std::map< ::Atom, scoped_refptr<base::RefCountedMemory> > InternalMap;
|
| + typedef InternalMap::const_iterator const_iterator;
|
|
|
| SelectionFormatMap();
|
| ~SelectionFormatMap();
|
| + // Copy and assignment deliberately open.
|
|
|
| // Adds the selection in the format |atom|. Ownership of |data| is passed to
|
| // us.
|
| - void Insert(::Atom atom, char* data, size_t size);
|
| + void Insert(::Atom atom, const scoped_refptr<base::RefCountedMemory>& item);
|
|
|
| // Returns the first of the requested_types or NULL if missing.
|
| - ui::SelectionData* GetFirstOf(
|
| + ui::SelectionData GetFirstOf(
|
| const std::vector< ::Atom>& requested_types) const;
|
|
|
| // Returns all the selected types.
|
| std::vector< ::Atom> GetTypes() const;
|
|
|
| - // Creates a copy of the selection data.
|
| - scoped_ptr<SelectionFormatMap> Clone() const;
|
| -
|
| // Pass through to STL map. Only allow non-mutation access.
|
| const_iterator begin() const { return data_.begin(); }
|
| const_iterator end() const { return data_.end(); }
|
| @@ -72,8 +80,6 @@ class UI_EXPORT SelectionFormatMap {
|
|
|
| private:
|
| InternalMap data_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SelectionFormatMap);
|
| };
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| @@ -83,13 +89,16 @@ class UI_EXPORT SelectionData {
|
| public:
|
| // |atom_cache| is still owned by caller.
|
| SelectionData();
|
| + SelectionData(::Atom type,
|
| + const scoped_refptr<base::RefCountedMemory>& memory);
|
| + SelectionData(const SelectionData& rhs);
|
| ~SelectionData();
|
| + SelectionData& operator=(const SelectionData& rhs);
|
|
|
| - ::Atom type() const { return type_; }
|
| - char* data() const { return data_; }
|
| - size_t size() const { return size_; }
|
| -
|
| - void Set(::Atom type, char* data, size_t size, bool owned);
|
| + bool IsValid() const;
|
| + ::Atom GetType() const;
|
| + const unsigned char* GetData() const;
|
| + size_t GetSize() const;
|
|
|
| // If |type_| is a string type, convert the data to UTF8 and return it.
|
| std::string GetText() const;
|
| @@ -104,13 +113,9 @@ class UI_EXPORT SelectionData {
|
|
|
| private:
|
| ::Atom type_;
|
| - char* data_;
|
| - size_t size_;
|
| - bool owned_;
|
| + scoped_refptr<base::RefCountedMemory> memory_;
|
|
|
| X11AtomCache atom_cache_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SelectionData);
|
| };
|
|
|
| } // namespace ui
|
|
|