Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Unified Diff: ui/base/dragdrop/os_exchange_data_provider_aurax11.h

Issue 16271006: Drag on linux (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Further cleanup Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/base/dragdrop/os_exchange_data_provider_aurax11.h
diff --git a/ui/base/dragdrop/os_exchange_data_provider_aurax11.h b/ui/base/dragdrop/os_exchange_data_provider_aurax11.h
index 6bc28acedddd9765bcb53c7200ffd10838c42f7b..de6cfa7021c4fbc4cb08377be9d6282e690781ee 100644
--- a/ui/base/dragdrop/os_exchange_data_provider_aurax11.h
+++ b/ui/base/dragdrop/os_exchange_data_provider_aurax11.h
@@ -26,19 +26,16 @@
namespace ui {
class Clipboard;
-class DesktopSelectionProviderAuraX11;
// OSExchangeData::Provider implementation for aura on linux.
class UI_EXPORT OSExchangeDataProviderAuraX11
: public OSExchangeData::Provider,
public base::MessagePumpDispatcher {
public:
- // Creates a Provider for drag receiving. |x_window| is the window the cursor
- // is over, and |targets| are the MIME types being offered by the other
- // process.
- OSExchangeDataProviderAuraX11(ui::DesktopSelectionProviderAuraX11* provider,
- ::Window x_window,
- const std::vector< ::Atom> targets);
+ // |x_window| is the window the cursor is over, and |targets| are the MIME
Daniel Erat 2013/06/17 22:09:57 nit: update this comment to remove stale mention o
+ // types being offered by the other process.
+ OSExchangeDataProviderAuraX11(::Window x_window,
+ SelectionFormatMap* selection);
// Creates a Provider for sending drag information. This creates its own,
// hidden X11 window to own send data.
@@ -46,9 +43,16 @@ class UI_EXPORT OSExchangeDataProviderAuraX11
virtual ~OSExchangeDataProviderAuraX11();
- // If we are receiving, we receive messages from a DesktopRootWindowHost
- // through this interface.
- void OnSelectionNotify(const XSelectionEvent& event);
+ // After all the Set* methods have built up the data we're offering, call
+ // this to
Daniel Erat 2013/06/17 22:09:57 nit: fix this comment
+ void TakeOwnershipOfSelection() const;
+
+ // Retrieves a list of types we're offering. Noop if we haven't taken the
+ // selection.
+ void RetrieveTargets(std::vector<Atom>* targets) const;
+
+ // Makes a copy of the format map currently being offered.
+ SelectionFormatMap* CloneFormatMap() const;
// Overridden from OSExchangeData::Provider:
virtual void SetString(const string16& data) OVERRIDE;
@@ -89,6 +93,9 @@ class UI_EXPORT OSExchangeDataProviderAuraX11
// parsed as a URL.
bool GetPlainTextURL(GURL* url) const;
+ // Returns the targets in |format_map_|.
+ std::vector< ::Atom> GetTargets() const;
+
// Drag image and offset data.
gfx::ImageSkia drag_image_;
gfx::Vector2d drag_image_offset_;
@@ -105,19 +112,17 @@ class UI_EXPORT OSExchangeDataProviderAuraX11
// our own xwindow just to receive events on it.
const bool own_window_;
- // When we don't own the window, we keep track of the object that does so we
- // can receive messages from it.
- ui::DesktopSelectionProviderAuraX11* selection_event_provider_;
-
::Window x_window_;
X11AtomCache atom_cache_;
- mutable SelectionRequestor selection_requestor_;
- mutable SelectionOwner selection_owner_;
+ // A representation of data. This is either passed to us from the other
+ // process, or build up through a sequence of Set*() calls. It can be passed
Daniel Erat 2013/06/17 22:09:57 nit: s/build/built/
+ // to |selection_owner_| when we take the selection.
+ scoped_ptr<SelectionFormatMap> format_map_;
- // The mime types we have been offered by the source window.
- std::vector< ::Atom> targets_;
+ // Takes a snapshot of |format_map_| and offers it to other windows.
+ mutable SelectionOwner selection_owner_;
DISALLOW_COPY_AND_ASSIGN(OSExchangeDataProviderAuraX11);
};

Powered by Google App Engine
This is Rietveld 408576698