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

Side by Side Diff: ui/events/scoped_target_handler_unittest.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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/scoped_target_handler.h" 5 #include "ui/events/scoped_target_handler.h"
6 6
7 #include <memory>
7 #include <utility> 8 #include <utility>
8 9
9 #include "base/macros.h" 10 #include "base/macros.h"
10 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/ptr_util.h"
11 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
12 #include "ui/events/event_handler.h" 13 #include "ui/events/event_handler.h"
13 #include "ui/events/event_target.h" 14 #include "ui/events/event_target.h"
14 #include "ui/events/event_target_iterator.h" 15 #include "ui/events/event_target_iterator.h"
15 #include "ui/events/event_utils.h" 16 #include "ui/events/event_utils.h"
16 17
17 namespace ui { 18 namespace ui {
18 19
19 namespace { 20 namespace {
20 21
21 class TestEventTargetIterator : public EventTargetIterator { 22 class TestEventTargetIterator : public EventTargetIterator {
22 public: 23 public:
23 TestEventTargetIterator() {} 24 TestEventTargetIterator() {}
24 25
25 // EventTargetIterator: 26 // EventTargetIterator:
26 EventTarget* GetNextTarget() override { return nullptr; } 27 EventTarget* GetNextTarget() override { return nullptr; }
27 28
28 private: 29 private:
29 DISALLOW_COPY_AND_ASSIGN(TestEventTargetIterator); 30 DISALLOW_COPY_AND_ASSIGN(TestEventTargetIterator);
30 }; 31 };
31 32
32 // An EventTarget that holds ownership of its target and delegate EventHandlers. 33 // An EventTarget that holds ownership of its target and delegate EventHandlers.
33 class TestEventTarget : public EventTarget { 34 class TestEventTarget : public EventTarget {
34 public: 35 public:
35 TestEventTarget() {} 36 TestEventTarget() {}
36 ~TestEventTarget() override {} 37 ~TestEventTarget() override {}
37 38
38 void SetHandler(scoped_ptr<EventHandler> target_handler, 39 void SetHandler(std::unique_ptr<EventHandler> target_handler,
39 scoped_ptr<EventHandler> delegate) { 40 std::unique_ptr<EventHandler> delegate) {
40 target_handler_ = std::move(target_handler); 41 target_handler_ = std::move(target_handler);
41 delegate_ = std::move(delegate); 42 delegate_ = std::move(delegate);
42 } 43 }
43 44
44 // EventTarget: 45 // EventTarget:
45 void DispatchEvent(Event* event) { target_handler()->OnEvent(event); } 46 void DispatchEvent(Event* event) { target_handler()->OnEvent(event); }
46 bool CanAcceptEvent(const Event& event) override { return true; } 47 bool CanAcceptEvent(const Event& event) override { return true; }
47 EventTarget* GetParentTarget() override { return nullptr; } 48 EventTarget* GetParentTarget() override { return nullptr; }
48 scoped_ptr<EventTargetIterator> GetChildIterator() const override { 49 std::unique_ptr<EventTargetIterator> GetChildIterator() const override {
49 return make_scoped_ptr(new TestEventTargetIterator); 50 return base::WrapUnique(new TestEventTargetIterator);
50 } 51 }
51 EventTargeter* GetEventTargeter() override { return nullptr; } 52 EventTargeter* GetEventTargeter() override { return nullptr; }
52 53
53 private: 54 private:
54 scoped_ptr<EventHandler> target_handler_; 55 std::unique_ptr<EventHandler> target_handler_;
55 scoped_ptr<EventHandler> delegate_; 56 std::unique_ptr<EventHandler> delegate_;
56 57
57 DISALLOW_COPY_AND_ASSIGN(TestEventTarget); 58 DISALLOW_COPY_AND_ASSIGN(TestEventTarget);
58 }; 59 };
59 60
60 // An EventHandler that sets itself as a target handler for an EventTarget and 61 // An EventHandler that sets itself as a target handler for an EventTarget and
61 // can recursively dispatch an Event. 62 // can recursively dispatch an Event.
62 class NestedEventHandler : public EventHandler { 63 class NestedEventHandler : public EventHandler {
63 public: 64 public:
64 NestedEventHandler(TestEventTarget* target, int nesting) 65 NestedEventHandler(TestEventTarget* target, int nesting)
65 : target_(target), nesting_(nesting) { 66 : target_(target), nesting_(nesting) {
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 public: 123 public:
123 EventCountingEventHandler(EventTarget* target, int* count) 124 EventCountingEventHandler(EventTarget* target, int* count)
124 : scoped_target_handler_(new ScopedTargetHandler(target, this)), 125 : scoped_target_handler_(new ScopedTargetHandler(target, this)),
125 count_(count) {} 126 count_(count) {}
126 ~EventCountingEventHandler() override {} 127 ~EventCountingEventHandler() override {}
127 128
128 protected: 129 protected:
129 void OnEvent(Event* event) override { (*count_)++; } 130 void OnEvent(Event* event) override { (*count_)++; }
130 131
131 private: 132 private:
132 scoped_ptr<ScopedTargetHandler> scoped_target_handler_; 133 std::unique_ptr<ScopedTargetHandler> scoped_target_handler_;
133 int* count_; 134 int* count_;
134 135
135 DISALLOW_COPY_AND_ASSIGN(EventCountingEventHandler); 136 DISALLOW_COPY_AND_ASSIGN(EventCountingEventHandler);
136 }; 137 };
137 138
138 } // namespace 139 } // namespace
139 140
140 // Tests that a ScopedTargetHandler invokes both the target and a delegate. 141 // Tests that a ScopedTargetHandler invokes both the target and a delegate.
141 TEST(ScopedTargetHandlerTest, HandlerInvoked) { 142 TEST(ScopedTargetHandlerTest, HandlerInvoked) {
142 int count = 0; 143 int count = 0;
143 TestEventTarget* target = new TestEventTarget; 144 TestEventTarget* target = new TestEventTarget;
144 scoped_ptr<NestedEventHandler> target_handler( 145 std::unique_ptr<NestedEventHandler> target_handler(
145 new NestedEventHandler(target, 1)); 146 new NestedEventHandler(target, 1));
146 scoped_ptr<EventCountingEventHandler> delegate( 147 std::unique_ptr<EventCountingEventHandler> delegate(
147 new EventCountingEventHandler(target, &count)); 148 new EventCountingEventHandler(target, &count));
148 target->SetHandler(std::move(target_handler), std::move(delegate)); 149 target->SetHandler(std::move(target_handler), std::move(delegate));
149 MouseEvent event(ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), 150 MouseEvent event(ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
150 EventTimeForNow(), EF_LEFT_MOUSE_BUTTON, 151 EventTimeForNow(), EF_LEFT_MOUSE_BUTTON,
151 EF_LEFT_MOUSE_BUTTON); 152 EF_LEFT_MOUSE_BUTTON);
152 target->DispatchEvent(&event); 153 target->DispatchEvent(&event);
153 EXPECT_EQ(1, count); 154 EXPECT_EQ(1, count);
154 delete target; 155 delete target;
155 } 156 }
156 157
157 // Tests that a ScopedTargetHandler invokes both the target and a delegate when 158 // Tests that a ScopedTargetHandler invokes both the target and a delegate when
158 // an Event is dispatched recursively such as with synthetic events. 159 // an Event is dispatched recursively such as with synthetic events.
159 TEST(ScopedTargetHandlerTest, HandlerInvokedNested) { 160 TEST(ScopedTargetHandlerTest, HandlerInvokedNested) {
160 int count = 0; 161 int count = 0;
161 TestEventTarget* target = new TestEventTarget; 162 TestEventTarget* target = new TestEventTarget;
162 scoped_ptr<NestedEventHandler> target_handler( 163 std::unique_ptr<NestedEventHandler> target_handler(
163 new NestedEventHandler(target, 2)); 164 new NestedEventHandler(target, 2));
164 scoped_ptr<EventCountingEventHandler> delegate( 165 std::unique_ptr<EventCountingEventHandler> delegate(
165 new EventCountingEventHandler(target, &count)); 166 new EventCountingEventHandler(target, &count));
166 target->SetHandler(std::move(target_handler), std::move(delegate)); 167 target->SetHandler(std::move(target_handler), std::move(delegate));
167 MouseEvent event(ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), 168 MouseEvent event(ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
168 EventTimeForNow(), EF_LEFT_MOUSE_BUTTON, 169 EventTimeForNow(), EF_LEFT_MOUSE_BUTTON,
169 EF_LEFT_MOUSE_BUTTON); 170 EF_LEFT_MOUSE_BUTTON);
170 target->DispatchEvent(&event); 171 target->DispatchEvent(&event);
171 EXPECT_EQ(2, count); 172 EXPECT_EQ(2, count);
172 delete target; 173 delete target;
173 } 174 }
174 175
175 // Tests that a it is safe to delete a ScopedTargetHandler while handling an 176 // Tests that a it is safe to delete a ScopedTargetHandler while handling an
176 // event. 177 // event.
177 TEST(ScopedTargetHandlerTest, SafeToDestroy) { 178 TEST(ScopedTargetHandlerTest, SafeToDestroy) {
178 int count = 0; 179 int count = 0;
179 TestEventTarget* target = new TestEventTarget; 180 TestEventTarget* target = new TestEventTarget;
180 scoped_ptr<TargetDestroyingEventHandler> target_handler( 181 std::unique_ptr<TargetDestroyingEventHandler> target_handler(
181 new TargetDestroyingEventHandler(target, 1)); 182 new TargetDestroyingEventHandler(target, 1));
182 scoped_ptr<EventCountingEventHandler> delegate( 183 std::unique_ptr<EventCountingEventHandler> delegate(
183 new EventCountingEventHandler(target, &count)); 184 new EventCountingEventHandler(target, &count));
184 target->SetHandler(std::move(target_handler), std::move(delegate)); 185 target->SetHandler(std::move(target_handler), std::move(delegate));
185 MouseEvent event(ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), 186 MouseEvent event(ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
186 EventTimeForNow(), EF_LEFT_MOUSE_BUTTON, 187 EventTimeForNow(), EF_LEFT_MOUSE_BUTTON,
187 EF_LEFT_MOUSE_BUTTON); 188 EF_LEFT_MOUSE_BUTTON);
188 target->DispatchEvent(&event); 189 target->DispatchEvent(&event);
189 EXPECT_EQ(0, count); 190 EXPECT_EQ(0, count);
190 } 191 }
191 192
192 // Tests that a it is safe to delete a ScopedTargetHandler while handling an 193 // Tests that a it is safe to delete a ScopedTargetHandler while handling an
193 // event recursively. 194 // event recursively.
194 TEST(ScopedTargetHandlerTest, SafeToDestroyNested) { 195 TEST(ScopedTargetHandlerTest, SafeToDestroyNested) {
195 int count = 0; 196 int count = 0;
196 TestEventTarget* target = new TestEventTarget; 197 TestEventTarget* target = new TestEventTarget;
197 scoped_ptr<TargetDestroyingEventHandler> target_handler( 198 std::unique_ptr<TargetDestroyingEventHandler> target_handler(
198 new TargetDestroyingEventHandler(target, 2)); 199 new TargetDestroyingEventHandler(target, 2));
199 scoped_ptr<EventCountingEventHandler> delegate( 200 std::unique_ptr<EventCountingEventHandler> delegate(
200 new EventCountingEventHandler(target, &count)); 201 new EventCountingEventHandler(target, &count));
201 target->SetHandler(std::move(target_handler), std::move(delegate)); 202 target->SetHandler(std::move(target_handler), std::move(delegate));
202 MouseEvent event(ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), 203 MouseEvent event(ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
203 EventTimeForNow(), EF_LEFT_MOUSE_BUTTON, 204 EventTimeForNow(), EF_LEFT_MOUSE_BUTTON,
204 EF_LEFT_MOUSE_BUTTON); 205 EF_LEFT_MOUSE_BUTTON);
205 target->DispatchEvent(&event); 206 target->DispatchEvent(&event);
206 EXPECT_EQ(0, count); 207 EXPECT_EQ(0, count);
207 } 208 }
208 209
209 } // namespace ui 210 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/platform/x11/x11_event_source_libevent.cc ('k') | ui/events/test/device_data_manager_test_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698