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

Side by Side Diff: ui/events/platform/x11/x11_event_source_libevent.cc

Issue 1868363002: Replace scoped_ptr with std::unique_ptr in //ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@scopedptrcc
Patch Set: scopedptrui: rebase-make_scoped_ptr Created 4 years, 8 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 "ui/events/platform/x11/x11_event_source_libevent.h" 5 #include "ui/events/platform/x11/x11_event_source_libevent.h"
6 6
7 #include <X11/Xlib.h> 7 #include <X11/Xlib.h>
8 #include <X11/extensions/XInput2.h> 8 #include <X11/extensions/XInput2.h>
9 9
10 #include "base/memory/ptr_util.h"
10 #include "base/message_loop/message_loop.h" 11 #include "base/message_loop/message_loop.h"
11 #include "ui/events/event.h" 12 #include "ui/events/event.h"
12 #include "ui/events/event_utils.h" 13 #include "ui/events/event_utils.h"
13 #include "ui/events/keycodes/keyboard_code_conversion_x.h" 14 #include "ui/events/keycodes/keyboard_code_conversion_x.h"
14 #include "ui/events/platform/platform_event_dispatcher.h" 15 #include "ui/events/platform/platform_event_dispatcher.h"
15 #include "ui/events/x/events_x_utils.h" 16 #include "ui/events/x/events_x_utils.h"
16 17
17 namespace ui { 18 namespace ui {
18 19
19 namespace { 20 namespace {
20 21
21 // Translates XI2 XEvent into a ui::Event. 22 // Translates XI2 XEvent into a ui::Event.
22 scoped_ptr<ui::Event> TranslateXI2EventToEvent(const XEvent& xev) { 23 std::unique_ptr<ui::Event> TranslateXI2EventToEvent(const XEvent& xev) {
23 EventType event_type = EventTypeFromXEvent(xev); 24 EventType event_type = EventTypeFromXEvent(xev);
24 switch (event_type) { 25 switch (event_type) {
25 case ET_KEY_PRESSED: 26 case ET_KEY_PRESSED:
26 case ET_KEY_RELEASED: 27 case ET_KEY_RELEASED:
27 return make_scoped_ptr(new KeyEvent(event_type, 28 return base::WrapUnique(new KeyEvent(event_type,
28 KeyboardCodeFromXKeyEvent(&xev), 29 KeyboardCodeFromXKeyEvent(&xev),
29 EventFlagsFromXEvent(xev))); 30 EventFlagsFromXEvent(xev)));
30 case ET_MOUSE_PRESSED: 31 case ET_MOUSE_PRESSED:
31 case ET_MOUSE_MOVED: 32 case ET_MOUSE_MOVED:
32 case ET_MOUSE_DRAGGED: 33 case ET_MOUSE_DRAGGED:
33 case ET_MOUSE_RELEASED: 34 case ET_MOUSE_RELEASED:
34 return make_scoped_ptr( 35 return base::WrapUnique(
35 new MouseEvent(event_type, EventLocationFromXEvent(xev), 36 new MouseEvent(event_type, EventLocationFromXEvent(xev),
36 EventSystemLocationFromXEvent(xev), 37 EventSystemLocationFromXEvent(xev),
37 EventTimeFromXEvent(xev), EventFlagsFromXEvent(xev), 38 EventTimeFromXEvent(xev), EventFlagsFromXEvent(xev),
38 GetChangedMouseButtonFlagsFromXEvent(xev))); 39 GetChangedMouseButtonFlagsFromXEvent(xev)));
39 case ET_MOUSEWHEEL: 40 case ET_MOUSEWHEEL:
40 return make_scoped_ptr(new MouseWheelEvent( 41 return base::WrapUnique(new MouseWheelEvent(
41 GetMouseWheelOffsetFromXEvent(xev), EventLocationFromXEvent(xev), 42 GetMouseWheelOffsetFromXEvent(xev), EventLocationFromXEvent(xev),
42 EventSystemLocationFromXEvent(xev), EventTimeFromXEvent(xev), 43 EventSystemLocationFromXEvent(xev), EventTimeFromXEvent(xev),
43 EventFlagsFromXEvent(xev), 44 EventFlagsFromXEvent(xev),
44 GetChangedMouseButtonFlagsFromXEvent(xev))); 45 GetChangedMouseButtonFlagsFromXEvent(xev)));
45 case ET_SCROLL_FLING_START: 46 case ET_SCROLL_FLING_START:
46 case ET_SCROLL_FLING_CANCEL: { 47 case ET_SCROLL_FLING_CANCEL: {
47 float x_offset, y_offset, x_offset_ordinal, y_offset_ordinal; 48 float x_offset, y_offset, x_offset_ordinal, y_offset_ordinal;
48 GetFlingDataFromXEvent(xev, &x_offset, &y_offset, &x_offset_ordinal, 49 GetFlingDataFromXEvent(xev, &x_offset, &y_offset, &x_offset_ordinal,
49 &y_offset_ordinal, nullptr); 50 &y_offset_ordinal, nullptr);
50 return make_scoped_ptr(new ScrollEvent( 51 return base::WrapUnique(new ScrollEvent(
51 event_type, EventLocationFromXEvent(xev), EventTimeFromXEvent(xev), 52 event_type, EventLocationFromXEvent(xev), EventTimeFromXEvent(xev),
52 EventFlagsFromXEvent(xev), x_offset, y_offset, x_offset_ordinal, 53 EventFlagsFromXEvent(xev), x_offset, y_offset, x_offset_ordinal,
53 y_offset_ordinal, 0)); 54 y_offset_ordinal, 0));
54 } 55 }
55 case ET_SCROLL: { 56 case ET_SCROLL: {
56 float x_offset, y_offset, x_offset_ordinal, y_offset_ordinal; 57 float x_offset, y_offset, x_offset_ordinal, y_offset_ordinal;
57 int finger_count; 58 int finger_count;
58 GetScrollOffsetsFromXEvent(xev, &x_offset, &y_offset, &x_offset_ordinal, 59 GetScrollOffsetsFromXEvent(xev, &x_offset, &y_offset, &x_offset_ordinal,
59 &y_offset_ordinal, &finger_count); 60 &y_offset_ordinal, &finger_count);
60 return make_scoped_ptr(new ScrollEvent( 61 return base::WrapUnique(new ScrollEvent(
61 event_type, EventLocationFromXEvent(xev), EventTimeFromXEvent(xev), 62 event_type, EventLocationFromXEvent(xev), EventTimeFromXEvent(xev),
62 EventFlagsFromXEvent(xev), x_offset, y_offset, x_offset_ordinal, 63 EventFlagsFromXEvent(xev), x_offset, y_offset, x_offset_ordinal,
63 y_offset_ordinal, finger_count)); 64 y_offset_ordinal, finger_count));
64 } 65 }
65 case ET_TOUCH_MOVED: 66 case ET_TOUCH_MOVED:
66 case ET_TOUCH_PRESSED: 67 case ET_TOUCH_PRESSED:
67 case ET_TOUCH_CANCELLED: 68 case ET_TOUCH_CANCELLED:
68 case ET_TOUCH_RELEASED: 69 case ET_TOUCH_RELEASED:
69 return make_scoped_ptr( 70 return base::WrapUnique(
70 new TouchEvent(event_type, EventLocationFromXEvent(xev), 71 new TouchEvent(event_type, EventLocationFromXEvent(xev),
71 GetTouchIdFromXEvent(xev), EventTimeFromXEvent(xev))); 72 GetTouchIdFromXEvent(xev), EventTimeFromXEvent(xev)));
72 case ET_UNKNOWN: 73 case ET_UNKNOWN:
73 return nullptr; 74 return nullptr;
74 default: 75 default:
75 break; 76 break;
76 } 77 }
77 return nullptr; 78 return nullptr;
78 } 79 }
79 80
80 // Translates a XEvent into a ui::Event. 81 // Translates a XEvent into a ui::Event.
81 scoped_ptr<ui::Event> TranslateXEventToEvent(const XEvent& xev) { 82 std::unique_ptr<ui::Event> TranslateXEventToEvent(const XEvent& xev) {
82 int flags = EventFlagsFromXEvent(xev); 83 int flags = EventFlagsFromXEvent(xev);
83 switch (xev.type) { 84 switch (xev.type) {
84 case LeaveNotify: 85 case LeaveNotify:
85 case EnterNotify: 86 case EnterNotify:
86 // EnterNotify creates ET_MOUSE_MOVED. Mark as synthesized as this is 87 // EnterNotify creates ET_MOUSE_MOVED. Mark as synthesized as this is
87 // not real mouse move event. 88 // not real mouse move event.
88 if (xev.type == EnterNotify) 89 if (xev.type == EnterNotify)
89 flags |= EF_IS_SYNTHESIZED; 90 flags |= EF_IS_SYNTHESIZED;
90 return make_scoped_ptr( 91 return base::WrapUnique(
91 new MouseEvent(ET_MOUSE_MOVED, EventLocationFromXEvent(xev), 92 new MouseEvent(ET_MOUSE_MOVED, EventLocationFromXEvent(xev),
92 EventSystemLocationFromXEvent(xev), 93 EventSystemLocationFromXEvent(xev),
93 EventTimeFromXEvent(xev), flags, 0)); 94 EventTimeFromXEvent(xev), flags, 0));
94 95
95 case KeyPress: 96 case KeyPress:
96 case KeyRelease: 97 case KeyRelease:
97 return make_scoped_ptr(new KeyEvent( 98 return base::WrapUnique(new KeyEvent(
98 EventTypeFromXEvent(xev), KeyboardCodeFromXKeyEvent(&xev), flags)); 99 EventTypeFromXEvent(xev), KeyboardCodeFromXKeyEvent(&xev), flags));
99 100
100 case ButtonPress: 101 case ButtonPress:
101 case ButtonRelease: { 102 case ButtonRelease: {
102 switch (EventTypeFromXEvent(xev)) { 103 switch (EventTypeFromXEvent(xev)) {
103 case ET_MOUSEWHEEL: 104 case ET_MOUSEWHEEL:
104 return make_scoped_ptr(new MouseWheelEvent( 105 return base::WrapUnique(new MouseWheelEvent(
105 GetMouseWheelOffsetFromXEvent(xev), EventLocationFromXEvent(xev), 106 GetMouseWheelOffsetFromXEvent(xev), EventLocationFromXEvent(xev),
106 EventSystemLocationFromXEvent(xev), EventTimeFromXEvent(xev), 107 EventSystemLocationFromXEvent(xev), EventTimeFromXEvent(xev),
107 flags, 0)); 108 flags, 0));
108 case ET_MOUSE_PRESSED: 109 case ET_MOUSE_PRESSED:
109 case ET_MOUSE_RELEASED: 110 case ET_MOUSE_RELEASED:
110 return make_scoped_ptr(new MouseEvent( 111 return base::WrapUnique(new MouseEvent(
111 EventTypeFromXEvent(xev), EventLocationFromXEvent(xev), 112 EventTypeFromXEvent(xev), EventLocationFromXEvent(xev),
112 EventSystemLocationFromXEvent(xev), EventTimeFromXEvent(xev), 113 EventSystemLocationFromXEvent(xev), EventTimeFromXEvent(xev),
113 flags, GetChangedMouseButtonFlagsFromXEvent(xev))); 114 flags, GetChangedMouseButtonFlagsFromXEvent(xev)));
114 case ET_UNKNOWN: 115 case ET_UNKNOWN:
115 // No event is created for X11-release events for mouse-wheel 116 // No event is created for X11-release events for mouse-wheel
116 // buttons. 117 // buttons.
117 break; 118 break;
118 default: 119 default:
119 NOTREACHED(); 120 NOTREACHED();
120 } 121 }
(...skipping 18 matching lines...) Expand all
139 void X11EventSourceLibevent::AddXEventDispatcher(XEventDispatcher* dispatcher) { 140 void X11EventSourceLibevent::AddXEventDispatcher(XEventDispatcher* dispatcher) {
140 dispatchers_xevent_.AddObserver(dispatcher); 141 dispatchers_xevent_.AddObserver(dispatcher);
141 } 142 }
142 143
143 void X11EventSourceLibevent::RemoveXEventDispatcher( 144 void X11EventSourceLibevent::RemoveXEventDispatcher(
144 XEventDispatcher* dispatcher) { 145 XEventDispatcher* dispatcher) {
145 dispatchers_xevent_.RemoveObserver(dispatcher); 146 dispatchers_xevent_.RemoveObserver(dispatcher);
146 } 147 }
147 148
148 void X11EventSourceLibevent::ProcessXEvent(XEvent* xevent) { 149 void X11EventSourceLibevent::ProcessXEvent(XEvent* xevent) {
149 scoped_ptr<ui::Event> translated_event = TranslateXEventToEvent(*xevent); 150 std::unique_ptr<ui::Event> translated_event = TranslateXEventToEvent(*xevent);
150 if (translated_event) { 151 if (translated_event) {
151 DispatchEvent(translated_event.get()); 152 DispatchEvent(translated_event.get());
152 } else { 153 } else {
153 // Only if we can't translate XEvent into ui::Event, try to dispatch XEvent 154 // Only if we can't translate XEvent into ui::Event, try to dispatch XEvent
154 // directly to XEventDispatchers. 155 // directly to XEventDispatchers.
155 DispatchXEventToXEventDispatchers(xevent); 156 DispatchXEventToXEventDispatchers(xevent);
156 } 157 }
157 } 158 }
158 159
159 void X11EventSourceLibevent::AddEventWatcher() { 160 void X11EventSourceLibevent::AddEventWatcher() {
(...skipping 30 matching lines...) Expand all
190 191
191 void X11EventSourceLibevent::OnFileCanReadWithoutBlocking(int fd) { 192 void X11EventSourceLibevent::OnFileCanReadWithoutBlocking(int fd) {
192 event_source_.DispatchXEvents(); 193 event_source_.DispatchXEvents();
193 } 194 }
194 195
195 void X11EventSourceLibevent::OnFileCanWriteWithoutBlocking(int fd) { 196 void X11EventSourceLibevent::OnFileCanWriteWithoutBlocking(int fd) {
196 NOTREACHED(); 197 NOTREACHED();
197 } 198 }
198 199
199 } // namespace ui 200 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/platform/x11/x11_event_source_glib.cc ('k') | ui/events/scoped_target_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698