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

Side by Side Diff: ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11_unittest.cc

Issue 2914103002: Remove usages of XInternAtom (Closed)
Patch Set: Address sadrul and sergeyu comments Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <map> 5 #include <map>
6 #include <memory> 6 #include <memory>
7 #include <vector> 7 #include <vector>
8 8
9 // Include views_test_base.h first because the definition of None in X.h 9 // Include views_test_base.h first because the definition of None in X.h
10 // conflicts with the definition of None in gtest-type-util.h 10 // conflicts with the definition of None in gtest-type-util.h
11 #include "ui/views/test/views_test_base.h" 11 #include "ui/views/test/views_test_base.h"
12 12
13 #include "base/location.h" 13 #include "base/location.h"
14 #include "base/macros.h" 14 #include "base/macros.h"
15 #include "base/memory/ptr_util.h" 15 #include "base/memory/ptr_util.h"
16 #include "base/run_loop.h" 16 #include "base/run_loop.h"
17 #include "base/single_thread_task_runner.h" 17 #include "base/single_thread_task_runner.h"
18 #include "base/strings/utf_string_conversions.h" 18 #include "base/strings/utf_string_conversions.h"
19 #include "base/threading/thread_task_runner_handle.h" 19 #include "base/threading/thread_task_runner_handle.h"
20 #include "ui/aura/client/drag_drop_delegate.h" 20 #include "ui/aura/client/drag_drop_delegate.h"
21 #include "ui/aura/test/test_screen.h" 21 #include "ui/aura/test/test_screen.h"
22 #include "ui/aura/window.h" 22 #include "ui/aura/window.h"
23 #include "ui/aura/window_tree_host.h" 23 #include "ui/aura/window_tree_host.h"
24 #include "ui/base/dragdrop/os_exchange_data.h" 24 #include "ui/base/dragdrop/os_exchange_data.h"
25 #include "ui/base/x/x11_util.h" 25 #include "ui/base/x/x11_util.h"
26 #include "ui/events/event_utils.h" 26 #include "ui/events/event_utils.h"
27 #include "ui/gfx/x/x11_atom_cache.h"
28 #include "ui/gfx/x/x11_types.h" 27 #include "ui/gfx/x/x11_types.h"
29 #include "ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.h" 28 #include "ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.h"
30 #include "ui/views/widget/desktop_aura/desktop_native_cursor_manager.h" 29 #include "ui/views/widget/desktop_aura/desktop_native_cursor_manager.h"
31 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" 30 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
32 #include "ui/views/widget/desktop_aura/x11_move_loop.h" 31 #include "ui/views/widget/desktop_aura/x11_move_loop.h"
33 #include "ui/views/widget/widget.h" 32 #include "ui/views/widget/widget.h"
34 33
35 #include <X11/Xlib.h> 34 #include <X11/Xlib.h>
36 35
37 namespace views { 36 namespace views {
38 37
39 namespace { 38 namespace {
40 39
41 const char* kAtomsToCache[] = {
42 "XdndActionCopy",
43 "XdndDrop",
44 "XdndEnter",
45 "XdndFinished",
46 "XdndLeave",
47 "XdndPosition",
48 "XdndStatus",
49 "XdndTypeList",
50 NULL
51 };
52
53 class TestDragDropClient; 40 class TestDragDropClient;
54 41
55 // Collects messages which would otherwise be sent to |xid_| via 42 // Collects messages which would otherwise be sent to |xid_| via
56 // SendXClientEvent(). 43 // SendXClientEvent().
57 class ClientMessageEventCollector { 44 class ClientMessageEventCollector {
58 public: 45 public:
59 ClientMessageEventCollector(::Window xid, TestDragDropClient* client); 46 ClientMessageEventCollector(::Window xid, TestDragDropClient* client);
60 virtual ~ClientMessageEventCollector(); 47 virtual ~ClientMessageEventCollector();
61 48
62 // Returns true if |events_| is non-empty. 49 // Returns true if |events_| is non-empty.
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 // DesktopDragDropClientAuraX11: 175 // DesktopDragDropClientAuraX11:
189 void SendXClientEvent(::Window xid, XEvent* event) override; 176 void SendXClientEvent(::Window xid, XEvent* event) override;
190 177
191 // The XID of the window which initiated the drag. 178 // The XID of the window which initiated the drag.
192 ::Window source_xid_; 179 ::Window source_xid_;
193 180
194 // Map of ::Windows to the collector which intercepts XClientMessageEvents 181 // Map of ::Windows to the collector which intercepts XClientMessageEvents
195 // for that window. 182 // for that window.
196 std::map< ::Window, ClientMessageEventCollector*> collectors_; 183 std::map< ::Window, ClientMessageEventCollector*> collectors_;
197 184
198 ui::X11AtomCache atom_cache_;
199
200 DISALLOW_COPY_AND_ASSIGN(TestDragDropClient); 185 DISALLOW_COPY_AND_ASSIGN(TestDragDropClient);
201 }; 186 };
202 187
203 /////////////////////////////////////////////////////////////////////////////// 188 ///////////////////////////////////////////////////////////////////////////////
204 // ClientMessageEventCollector 189 // ClientMessageEventCollector
205 190
206 ClientMessageEventCollector::ClientMessageEventCollector( 191 ClientMessageEventCollector::ClientMessageEventCollector(
207 ::Window xid, 192 ::Window xid,
208 TestDragDropClient* client) 193 TestDragDropClient* client)
209 : xid_(xid), 194 : xid_(xid),
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 // static 288 // static
304 const int TestDragDropClient::kMouseMoveX = 100; 289 const int TestDragDropClient::kMouseMoveX = 100;
305 290
306 // static 291 // static
307 const int TestDragDropClient::kMouseMoveY = 200; 292 const int TestDragDropClient::kMouseMoveY = 200;
308 293
309 TestDragDropClient::TestDragDropClient( 294 TestDragDropClient::TestDragDropClient(
310 aura::Window* window, 295 aura::Window* window,
311 DesktopNativeCursorManager* cursor_manager) 296 DesktopNativeCursorManager* cursor_manager)
312 : SimpleTestDragDropClient(window, cursor_manager), 297 : SimpleTestDragDropClient(window, cursor_manager),
313 source_xid_(window->GetHost()->GetAcceleratedWidget()), 298 source_xid_(window->GetHost()->GetAcceleratedWidget()) {}
314 atom_cache_(gfx::GetXDisplay(), kAtomsToCache) {
315 }
316 299
317 TestDragDropClient::~TestDragDropClient() { 300 TestDragDropClient::~TestDragDropClient() {
318 } 301 }
319 302
320 Atom TestDragDropClient::GetAtom(const char* name) { 303 Atom TestDragDropClient::GetAtom(const char* name) {
321 return atom_cache_.GetAtom(name); 304 return ui::GetAtom(name);
322 } 305 }
323 306
324 bool TestDragDropClient::MessageHasType(const XClientMessageEvent& event, 307 bool TestDragDropClient::MessageHasType(const XClientMessageEvent& event,
325 const char* type) { 308 const char* type) {
326 return event.message_type == atom_cache_.GetAtom(type); 309 return event.message_type == GetAtom(type);
327 } 310 }
328 311
329 void TestDragDropClient::SetEventCollectorFor( 312 void TestDragDropClient::SetEventCollectorFor(
330 ::Window xid, 313 ::Window xid,
331 ClientMessageEventCollector* collector) { 314 ClientMessageEventCollector* collector) {
332 if (collector) 315 if (collector)
333 collectors_[xid] = collector; 316 collectors_[xid] = collector;
334 else 317 else
335 collectors_.erase(xid); 318 collectors_.erase(xid);
336 } 319 }
337 320
338 void TestDragDropClient::OnStatus(XID target_window, 321 void TestDragDropClient::OnStatus(XID target_window,
339 bool will_accept_drop, 322 bool will_accept_drop,
340 ::Atom accepted_action) { 323 ::Atom accepted_action) {
341 XClientMessageEvent event; 324 XClientMessageEvent event;
342 event.message_type = atom_cache_.GetAtom("XdndStatus"); 325 event.message_type = GetAtom("XdndStatus");
343 event.format = 32; 326 event.format = 32;
344 event.window = source_xid_; 327 event.window = source_xid_;
345 event.data.l[0] = target_window; 328 event.data.l[0] = target_window;
346 event.data.l[1] = will_accept_drop ? 1 : 0; 329 event.data.l[1] = will_accept_drop ? 1 : 0;
347 event.data.l[2] = 0; 330 event.data.l[2] = 0;
348 event.data.l[3] = 0; 331 event.data.l[3] = 0;
349 event.data.l[4] = accepted_action; 332 event.data.l[4] = accepted_action;
350 OnXdndStatus(event); 333 OnXdndStatus(event);
351 } 334 }
352 335
353 void TestDragDropClient::OnFinished(XID target_window, 336 void TestDragDropClient::OnFinished(XID target_window,
354 bool accepted_drop, 337 bool accepted_drop,
355 ::Atom performed_action) { 338 ::Atom performed_action) {
356 XClientMessageEvent event; 339 XClientMessageEvent event;
357 event.message_type = atom_cache_.GetAtom("XdndFinished"); 340 event.message_type = GetAtom("XdndFinished");
358 event.format = 32; 341 event.format = 32;
359 event.window = source_xid_; 342 event.window = source_xid_;
360 event.data.l[0] = target_window; 343 event.data.l[0] = target_window;
361 event.data.l[1] = accepted_drop ? 1 : 0; 344 event.data.l[1] = accepted_drop ? 1 : 0;
362 event.data.l[2] = performed_action; 345 event.data.l[2] = performed_action;
363 event.data.l[3] = 0; 346 event.data.l[3] = 0;
364 event.data.l[4] = 0; 347 event.data.l[4] = 0;
365 OnXdndFinished(event); 348 OnXdndFinished(event);
366 } 349 }
367 350
(...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after
999 // the aura::client::DragDropDelegate is properly notified. 982 // the aura::client::DragDropDelegate is properly notified.
1000 TEST_F(DesktopDragDropClientAuraX11ChromeSourceTargetTest, CtrlPressed) { 983 TEST_F(DesktopDragDropClientAuraX11ChromeSourceTargetTest, CtrlPressed) {
1001 base::ThreadTaskRunnerHandle::Get()->PostTask( 984 base::ThreadTaskRunnerHandle::Get()->PostTask(
1002 FROM_HERE, 985 FROM_HERE,
1003 base::Bind(&ChromeSourceTargetStep2, client(), ui::EF_CONTROL_DOWN)); 986 base::Bind(&ChromeSourceTargetStep2, client(), ui::EF_CONTROL_DOWN));
1004 int result = StartDragAndDrop(); 987 int result = StartDragAndDrop();
1005 EXPECT_EQ(ui::DragDropTypes::DRAG_COPY, result); 988 EXPECT_EQ(ui::DragDropTypes::DRAG_COPY, result);
1006 } 989 }
1007 990
1008 } // namespace views 991 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc ('k') | ui/views/widget/desktop_aura/desktop_screen_x11.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698