Index: ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc |
diff --git a/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc b/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc |
index 3b288de59b48f99b29916302aef03e5e5d8b6050..175ae236bad7fd206573cd06e286cf1c5910afb7 100644 |
--- a/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc |
+++ b/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc |
@@ -75,14 +75,6 @@ const char kXdndActionCopy[] = "XdndActionCopy"; |
const char kXdndActionMove[] = "XdndActionMove"; |
const char kXdndActionLink[] = "XdndActionLink"; |
-// "The target will do something that the source would not understand." The |
-// source only needs to provide a copy of the dragged data. |
-const char kXdndActionPrivate[] = "XdndActionPrivate"; |
- |
-// The target should ask the user what action it wants to perform. Intended to |
-// match Windows' right-click drag and drop, which shows a dropdown. |
-const char kXdndActionAsk[] = "XdndActionAsk"; |
- |
// Triggers the XDS protocol. |
const char kXdndActionDirectSave[] = "XdndActionDirectSave"; |
@@ -155,30 +147,6 @@ const char kXdndPosition[] = "XdndPosition"; |
// action will be taken if the drop is accepted. |
const char kXdndStatus[] = "XdndStatus"; |
-const char* kAtomsToCache[] = { |
- kChromiumDragReciever, |
- kXdndActionAsk, |
- kXdndActionCopy, |
- kXdndActionDirectSave, |
- kXdndActionLink, |
- kXdndActionList, |
- kXdndActionMove, |
- kXdndActionPrivate, |
- kXdndAware, |
- kXdndDirectSave0, |
- kXdndDrop, |
- kXdndEnter, |
- kXdndFinished, |
- kXdndLeave, |
- kXdndPosition, |
- kXdndProxy, |
- kXdndSelection, |
- kXdndStatus, |
- kXdndTypeList, |
- ui::Clipboard::kMimeTypeText, |
- NULL |
-}; |
- |
int XGetModifiers() { |
XDisplay* display = gfx::GetXDisplay(); |
@@ -242,9 +210,7 @@ DesktopDragDropClientAuraX11::g_current_drag_drop_client = NULL; |
class DesktopDragDropClientAuraX11::X11DragContext |
: public ui::PlatformEventDispatcher { |
public: |
- X11DragContext(ui::X11AtomCache* atom_cache, |
- ::Window local_window, |
- const XClientMessageEvent& event); |
+ X11DragContext(::Window local_window, const XClientMessageEvent& event); |
~X11DragContext() override; |
// When we receive an XdndPosition message, we need to have all the data |
@@ -287,9 +253,6 @@ class DesktopDragDropClientAuraX11::X11DragContext |
bool CanDispatchEvent(const ui::PlatformEvent& event) override; |
uint32_t DispatchEvent(const ui::PlatformEvent& event) override; |
- // The atom cache owned by our parent. |
- ui::X11AtomCache* atom_cache_; |
- |
// The XID of our chrome local aura window handling our events. |
::Window local_window_; |
@@ -336,11 +299,9 @@ class DesktopDragDropClientAuraX11::X11DragContext |
}; |
DesktopDragDropClientAuraX11::X11DragContext::X11DragContext( |
- ui::X11AtomCache* atom_cache, |
::Window local_window, |
const XClientMessageEvent& event) |
- : atom_cache_(atom_cache), |
- local_window_(local_window), |
+ : local_window_(local_window), |
source_window_(event.data.l[0]), |
source_client_( |
DesktopDragDropClientAuraX11::GetForWindow(source_window_)), |
@@ -430,11 +391,8 @@ void DesktopDragDropClientAuraX11::X11DragContext::RequestNextTarget() { |
::Atom target = unfetched_targets_.back(); |
unfetched_targets_.pop_back(); |
- XConvertSelection(gfx::GetXDisplay(), |
- atom_cache_->GetAtom(kXdndSelection), |
- target, |
- atom_cache_->GetAtom(kChromiumDragReciever), |
- local_window_, |
+ XConvertSelection(gfx::GetXDisplay(), ui::GetAtom(kXdndSelection), target, |
+ ui::GetAtom(kChromiumDragReciever), local_window_, |
position_time_stamp_); |
} |
@@ -450,7 +408,7 @@ void DesktopDragDropClientAuraX11::X11DragContext::OnSelectionNotify( |
DVLOG(1) << "SelectionNotify, format " << event.target; |
if (event.property != None) { |
- DCHECK_EQ(event.property, atom_cache_->GetAtom(kChromiumDragReciever)); |
+ DCHECK_EQ(event.property, ui::GetAtom(kChromiumDragReciever)); |
scoped_refptr<base::RefCountedMemory> data; |
::Atom type = None; |
@@ -508,11 +466,11 @@ int DesktopDragDropClientAuraX11::X11DragContext::GetDragOperation() const { |
void DesktopDragDropClientAuraX11::X11DragContext::MaskOperation( |
::Atom xdnd_operation, |
int* drag_operation) const { |
- if (xdnd_operation == atom_cache_->GetAtom(kXdndActionCopy)) |
+ if (xdnd_operation == ui::GetAtom(kXdndActionCopy)) |
*drag_operation |= ui::DragDropTypes::DRAG_COPY; |
- else if (xdnd_operation == atom_cache_->GetAtom(kXdndActionMove)) |
+ else if (xdnd_operation == ui::GetAtom(kXdndActionMove)) |
*drag_operation |= ui::DragDropTypes::DRAG_MOVE; |
- else if (xdnd_operation == atom_cache_->GetAtom(kXdndActionLink)) |
+ else if (xdnd_operation == ui::GetAtom(kXdndActionLink)) |
*drag_operation |= ui::DragDropTypes::DRAG_LINK; |
} |
@@ -524,7 +482,7 @@ bool DesktopDragDropClientAuraX11::X11DragContext::CanDispatchEvent( |
uint32_t DesktopDragDropClientAuraX11::X11DragContext::DispatchEvent( |
const ui::PlatformEvent& event) { |
if (event->type == PropertyNotify && |
- event->xproperty.atom == atom_cache_->GetAtom(kXdndActionList)) { |
+ event->xproperty.atom == ui::GetAtom(kXdndActionList)) { |
ReadActions(); |
return ui::POST_DISPATCH_STOP_PROPAGATION; |
} |
@@ -542,7 +500,6 @@ DesktopDragDropClientAuraX11::DesktopDragDropClientAuraX11( |
cursor_manager_(cursor_manager), |
xdisplay_(xdisplay), |
xwindow_(xwindow), |
- atom_cache_(xdisplay_, kAtomsToCache), |
current_modifier_state_(ui::EF_NONE), |
target_window_(NULL), |
waiting_on_status_(false), |
@@ -559,8 +516,8 @@ DesktopDragDropClientAuraX11::DesktopDragDropClientAuraX11( |
// Mark that we are aware of drag and drop concepts. |
unsigned long xdnd_version = kMaxXdndVersion; |
- XChangeProperty(xdisplay_, xwindow_, atom_cache_.GetAtom(kXdndAware), |
- XA_ATOM, 32, PropModeReplace, |
+ XChangeProperty(xdisplay_, xwindow_, ui::GetAtom(kXdndAware), XA_ATOM, 32, |
+ PropModeReplace, |
reinterpret_cast<unsigned char*>(&xdnd_version), 1); |
} |
@@ -609,8 +566,7 @@ void DesktopDragDropClientAuraX11::OnXdndEnter( |
// Make sure that we've run ~X11DragContext() before creating another one. |
target_current_context_.reset(); |
- target_current_context_.reset( |
- new X11DragContext(&atom_cache_, xwindow_, event)); |
+ target_current_context_.reset(new X11DragContext(xwindow_, event)); |
// In the Windows implementation, we immediately call DesktopDropTargetWin:: |
// Translate(). The XDND specification demands that we wait until we receive |
@@ -770,7 +726,7 @@ void DesktopDragDropClientAuraX11::OnXdndDrop( |
XEvent xev; |
xev.xclient.type = ClientMessage; |
- xev.xclient.message_type = atom_cache_.GetAtom(kXdndFinished); |
+ xev.xclient.message_type = ui::GetAtom(kXdndFinished); |
xev.xclient.format = 32; |
xev.xclient.window = source_window; |
xev.xclient.data.l[0] = xwindow_; |
@@ -819,11 +775,10 @@ int DesktopDragDropClientAuraX11::StartDragAndDrop( |
std::vector<::Atom> actions = GetOfferedDragOperations(); |
if (!source_provider_->file_contents_name().empty()) { |
- actions.push_back(atom_cache_.GetAtom(kXdndActionDirectSave)); |
+ actions.push_back(ui::GetAtom(kXdndActionDirectSave)); |
ui::SetStringProperty( |
- xwindow_, |
- atom_cache_.GetAtom(kXdndDirectSave0), |
- atom_cache_.GetAtom(ui::Clipboard::kMimeTypeText), |
+ xwindow_, ui::GetAtom(kXdndDirectSave0), |
+ ui::GetAtom(ui::Clipboard::kMimeTypeText), |
source_provider_->file_contents_name().AsUTF8Unsafe()); |
} |
ui::SetAtomArrayProperty(xwindow_, kXdndActionList, "ATOM", actions); |
@@ -865,8 +820,8 @@ int DesktopDragDropClientAuraX11::StartDragAndDrop( |
source_provider_ = NULL; |
g_current_drag_drop_client = NULL; |
drag_operation_ = 0; |
- XDeleteProperty(xdisplay_, xwindow_, atom_cache_.GetAtom(kXdndActionList)); |
- XDeleteProperty(xdisplay_, xwindow_, atom_cache_.GetAtom(kXdndDirectSave0)); |
+ XDeleteProperty(xdisplay_, xwindow_, ui::GetAtom(kXdndActionList)); |
+ XDeleteProperty(xdisplay_, xwindow_, ui::GetAtom(kXdndDirectSave0)); |
return negotiated_operation_; |
} |
@@ -1007,22 +962,22 @@ void DesktopDragDropClientAuraX11::SendXClientEvent(::Window xid, |
DesktopDragDropClientAuraX11* short_circuit = GetForWindow(xid); |
if (short_circuit) { |
Atom message_type = xev->xclient.message_type; |
- if (message_type == atom_cache_.GetAtom(kXdndEnter)) { |
+ if (message_type == ui::GetAtom(kXdndEnter)) { |
short_circuit->OnXdndEnter(xev->xclient); |
return; |
- } else if (message_type == atom_cache_.GetAtom(kXdndLeave)) { |
+ } else if (message_type == ui::GetAtom(kXdndLeave)) { |
short_circuit->OnXdndLeave(xev->xclient); |
return; |
- } else if (message_type == atom_cache_.GetAtom(kXdndPosition)) { |
+ } else if (message_type == ui::GetAtom(kXdndPosition)) { |
short_circuit->OnXdndPosition(xev->xclient); |
return; |
- } else if (message_type == atom_cache_.GetAtom(kXdndStatus)) { |
+ } else if (message_type == ui::GetAtom(kXdndStatus)) { |
short_circuit->OnXdndStatus(xev->xclient); |
return; |
- } else if (message_type == atom_cache_.GetAtom(kXdndFinished)) { |
+ } else if (message_type == ui::GetAtom(kXdndFinished)) { |
short_circuit->OnXdndFinished(xev->xclient); |
return; |
- } else if (message_type == atom_cache_.GetAtom(kXdndDrop)) { |
+ } else if (message_type == ui::GetAtom(kXdndDrop)) { |
short_circuit->OnXdndDrop(xev->xclient); |
return; |
} |
@@ -1160,22 +1115,22 @@ void DesktopDragDropClientAuraX11::NotifyDragLeave() { |
::Atom DesktopDragDropClientAuraX11::DragOperationToAtom( |
int drag_operation) { |
if (drag_operation & ui::DragDropTypes::DRAG_COPY) |
- return atom_cache_.GetAtom(kXdndActionCopy); |
+ return ui::GetAtom(kXdndActionCopy); |
if (drag_operation & ui::DragDropTypes::DRAG_MOVE) |
- return atom_cache_.GetAtom(kXdndActionMove); |
+ return ui::GetAtom(kXdndActionMove); |
if (drag_operation & ui::DragDropTypes::DRAG_LINK) |
- return atom_cache_.GetAtom(kXdndActionLink); |
+ return ui::GetAtom(kXdndActionLink); |
return None; |
} |
ui::DragDropTypes::DragOperation |
DesktopDragDropClientAuraX11::AtomToDragOperation(::Atom atom) { |
- if (atom == atom_cache_.GetAtom(kXdndActionCopy)) |
+ if (atom == ui::GetAtom(kXdndActionCopy)) |
return ui::DragDropTypes::DRAG_COPY; |
- if (atom == atom_cache_.GetAtom(kXdndActionMove)) |
+ if (atom == ui::GetAtom(kXdndActionMove)) |
return ui::DragDropTypes::DRAG_MOVE; |
- if (atom == atom_cache_.GetAtom(kXdndActionLink)) |
+ if (atom == ui::GetAtom(kXdndActionLink)) |
return ui::DragDropTypes::DRAG_LINK; |
return ui::DragDropTypes::DRAG_NONE; |
@@ -1184,11 +1139,11 @@ DesktopDragDropClientAuraX11::AtomToDragOperation(::Atom atom) { |
std::vector<::Atom> DesktopDragDropClientAuraX11::GetOfferedDragOperations() { |
std::vector<::Atom> operations; |
if (drag_operation_ & ui::DragDropTypes::DRAG_COPY) |
- operations.push_back(atom_cache_.GetAtom(kXdndActionCopy)); |
+ operations.push_back(ui::GetAtom(kXdndActionCopy)); |
if (drag_operation_ & ui::DragDropTypes::DRAG_MOVE) |
- operations.push_back(atom_cache_.GetAtom(kXdndActionMove)); |
+ operations.push_back(ui::GetAtom(kXdndActionMove)); |
if (drag_operation_ & ui::DragDropTypes::DRAG_LINK) |
- operations.push_back(atom_cache_.GetAtom(kXdndActionLink)); |
+ operations.push_back(ui::GetAtom(kXdndActionLink)); |
return operations; |
} |
@@ -1216,7 +1171,7 @@ void DesktopDragDropClientAuraX11::CompleteXdndPosition( |
// sets this nor respects it if set. |
XEvent xev; |
xev.xclient.type = ClientMessage; |
- xev.xclient.message_type = atom_cache_.GetAtom(kXdndStatus); |
+ xev.xclient.message_type = ui::GetAtom(kXdndStatus); |
xev.xclient.format = 32; |
xev.xclient.window = source_window; |
xev.xclient.data.l[0] = xwindow_; |
@@ -1232,7 +1187,7 @@ void DesktopDragDropClientAuraX11::CompleteXdndPosition( |
void DesktopDragDropClientAuraX11::SendXdndEnter(::Window dest_window) { |
XEvent xev; |
xev.xclient.type = ClientMessage; |
- xev.xclient.message_type = atom_cache_.GetAtom(kXdndEnter); |
+ xev.xclient.message_type = ui::GetAtom(kXdndEnter); |
xev.xclient.format = 32; |
xev.xclient.window = dest_window; |
xev.xclient.data.l[0] = xwindow_; |
@@ -1259,7 +1214,7 @@ void DesktopDragDropClientAuraX11::SendXdndEnter(::Window dest_window) { |
void DesktopDragDropClientAuraX11::SendXdndLeave(::Window dest_window) { |
XEvent xev; |
xev.xclient.type = ClientMessage; |
- xev.xclient.message_type = atom_cache_.GetAtom(kXdndLeave); |
+ xev.xclient.message_type = ui::GetAtom(kXdndLeave); |
xev.xclient.format = 32; |
xev.xclient.window = dest_window; |
xev.xclient.data.l[0] = xwindow_; |
@@ -1278,7 +1233,7 @@ void DesktopDragDropClientAuraX11::SendXdndPosition( |
XEvent xev; |
xev.xclient.type = ClientMessage; |
- xev.xclient.message_type = atom_cache_.GetAtom(kXdndPosition); |
+ xev.xclient.message_type = ui::GetAtom(kXdndPosition); |
xev.xclient.format = 32; |
xev.xclient.window = dest_window; |
xev.xclient.data.l[0] = xwindow_; |
@@ -1303,7 +1258,7 @@ void DesktopDragDropClientAuraX11::SendXdndPosition( |
void DesktopDragDropClientAuraX11::SendXdndDrop(::Window dest_window) { |
XEvent xev; |
xev.xclient.type = ClientMessage; |
- xev.xclient.message_type = atom_cache_.GetAtom(kXdndDrop); |
+ xev.xclient.message_type = ui::GetAtom(kXdndDrop); |
xev.xclient.format = 32; |
xev.xclient.window = dest_window; |
xev.xclient.data.l[0] = xwindow_; |