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

Unified Diff: ui/events/event_target_iterator.h

Issue 2628393003: Remove ScopedVector from ui/events/. (Closed)
Patch Set: chromeos2 Created 3 years, 11 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/events/event_target_iterator.h
diff --git a/ui/events/event_target_iterator.h b/ui/events/event_target_iterator.h
index fe3eca6c1730b39b2a2d69e1089a5dafd3b99a77..ae83b828719ccf2d970d38864fb83c28e6a0a68a 100644
--- a/ui/events/event_target_iterator.h
+++ b/ui/events/event_target_iterator.h
@@ -5,6 +5,7 @@
#ifndef UI_EVENTS_EVENT_TARGET_ITERATOR_H_
#define UI_EVENTS_EVENT_TARGET_ITERATOR_H_
+#include <memory>
#include <vector>
namespace ui {
@@ -18,21 +19,19 @@ class EventTargetIterator {
virtual EventTarget* GetNextTarget() = 0;
};
-// Provides an EventTargetIterator implementation for iterating over a list of
+// Provides EventTargetIterator implementations for iterating over a list of
// EventTargets. The list is iterated in the reverse order, since typically the
// EventTargets are maintained in increasing z-order in the lists.
-template<typename T>
-class EventTargetIteratorImpl : public EventTargetIterator {
+template <typename T>
+class EventTargetIteratorPtrImpl : public EventTargetIterator {
public:
- explicit EventTargetIteratorImpl(const std::vector<T*>& children)
- : begin_(children.rbegin()),
- end_(children.rend()) {
- }
- ~EventTargetIteratorImpl() override {}
+ explicit EventTargetIteratorPtrImpl(const std::vector<T*>& children)
+ : begin_(children.rbegin()), end_(children.rend()) {}
+ ~EventTargetIteratorPtrImpl() override {}
EventTarget* GetNextTarget() override {
if (begin_ == end_)
- return NULL;
+ return nullptr;
EventTarget* target = *(begin_);
++begin_;
return target;
@@ -43,6 +42,27 @@ class EventTargetIteratorImpl : public EventTargetIterator {
typename std::vector<T*>::const_reverse_iterator end_;
};
+template <typename T>
+class EventTargetIteratorUniquePtrImpl : public EventTargetIterator {
+ public:
+ explicit EventTargetIteratorUniquePtrImpl(
+ const std::vector<std::unique_ptr<T>>& children)
+ : begin_(children.rbegin()), end_(children.rend()) {}
+ ~EventTargetIteratorUniquePtrImpl() override {}
+
+ EventTarget* GetNextTarget() override {
+ if (begin_ == end_)
+ return nullptr;
+ EventTarget* target = begin_->get();
+ ++begin_;
+ return target;
+ }
+
+ private:
+ typename std::vector<std::unique_ptr<T>>::const_reverse_iterator begin_;
+ typename std::vector<std::unique_ptr<T>>::const_reverse_iterator end_;
+};
+
} // namespace ui
#endif // UI_EVENTS_EVENT_TARGET_ITERATOR_H_

Powered by Google App Engine
This is Rietveld 408576698