| Index: ui/events/gestures/gesture_recognizer_impl.cc
|
| diff --git a/ui/events/gestures/gesture_recognizer_impl.cc b/ui/events/gestures/gesture_recognizer_impl.cc
|
| index 5d3e546e3a81bd51687950a466cc85749700b27a..9bd655d2e85691058b56596b2368722214caee43 100644
|
| --- a/ui/events/gestures/gesture_recognizer_impl.cc
|
| +++ b/ui/events/gestures/gesture_recognizer_impl.cc
|
| @@ -11,6 +11,7 @@
|
|
|
| #include "base/command_line.h"
|
| #include "base/logging.h"
|
| +#include "base/memory/ptr_util.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/time/time.h"
|
| #include "ui/events/event.h"
|
| @@ -24,12 +25,12 @@ namespace ui {
|
|
|
| namespace {
|
|
|
| -template <typename T>
|
| -void TransferConsumer(GestureConsumer* current_consumer,
|
| - GestureConsumer* new_consumer,
|
| - std::map<GestureConsumer*, T>* map) {
|
| +void TransferConsumer(
|
| + GestureConsumer* current_consumer,
|
| + GestureConsumer* new_consumer,
|
| + std::map<GestureConsumer*, std::unique_ptr<GestureProviderAura>>* map) {
|
| if (map->count(current_consumer)) {
|
| - (*map)[new_consumer] = (*map)[current_consumer];
|
| + (*map)[new_consumer] = std::move((*map)[current_consumer]);
|
| (*map)[new_consumer]->set_gesture_consumer(new_consumer);
|
| map->erase(current_consumer);
|
| }
|
| @@ -38,8 +39,7 @@ void TransferConsumer(GestureConsumer* current_consumer,
|
| bool RemoveConsumerFromMap(GestureConsumer* consumer,
|
| GestureRecognizerImpl::TouchIdToConsumerMap* map) {
|
| bool consumer_removed = false;
|
| - for (GestureRecognizerImpl::TouchIdToConsumerMap::iterator i = map->begin();
|
| - i != map->end();) {
|
| + for (auto i = map->begin(); i != map->end();) {
|
| if (i->second == consumer) {
|
| map->erase(i++);
|
| consumer_removed = true;
|
| @@ -50,11 +50,6 @@ bool RemoveConsumerFromMap(GestureConsumer* consumer,
|
| return consumer_removed;
|
| }
|
|
|
| -GestureProviderAura* CreateGestureProvider(GestureConsumer* consumer,
|
| - GestureProviderAuraClient* client) {
|
| - return new GestureProviderAura(consumer, client);
|
| -}
|
| -
|
| } // namespace
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| @@ -64,7 +59,6 @@ GestureRecognizerImpl::GestureRecognizerImpl() {
|
| }
|
|
|
| GestureRecognizerImpl::~GestureRecognizerImpl() {
|
| - base::STLDeleteValues(&consumer_gesture_provider_);
|
| }
|
|
|
| // Checks if this finger is already down, if so, returns the current target.
|
| @@ -84,11 +78,9 @@ GestureConsumer* GestureRecognizerImpl::GetTargetForLocation(
|
| int closest_touch_id = 0;
|
| double closest_distance_squared = std::numeric_limits<double>::infinity();
|
|
|
| - std::map<GestureConsumer*, GestureProviderAura*>::iterator i;
|
| - for (i = consumer_gesture_provider_.begin();
|
| - i != consumer_gesture_provider_.end();
|
| - ++i) {
|
| - const MotionEventAura& pointer_state = i->second->pointer_state();
|
| + for (const auto& provider_pair : consumer_gesture_provider_) {
|
| + const MotionEventAura& pointer_state =
|
| + provider_pair.second->pointer_state();
|
| for (size_t j = 0; j < pointer_state.GetPointerCount(); ++j) {
|
| if (source_device_id != pointer_state.GetSourceDeviceId(j))
|
| continue;
|
| @@ -115,7 +107,7 @@ void GestureRecognizerImpl::CancelActiveTouchesExcept(
|
| // active touches may cause the consumer to be removed from
|
| // |consumer_gesture_provider_|. See crbug.com/651258 for more info.
|
| std::vector<GestureConsumer*> consumers(consumer_gesture_provider_.size());
|
| - for (auto entry : consumer_gesture_provider_) {
|
| + for (const auto& entry : consumer_gesture_provider_) {
|
| if (entry.first == not_cancelled)
|
| continue;
|
|
|
| @@ -238,10 +230,11 @@ bool GestureRecognizerImpl::CancelActiveTouches(GestureConsumer* consumer) {
|
|
|
| GestureProviderAura* GestureRecognizerImpl::GetGestureProviderForConsumer(
|
| GestureConsumer* consumer) {
|
| - GestureProviderAura* gesture_provider = consumer_gesture_provider_[consumer];
|
| + GestureProviderAura* gesture_provider =
|
| + consumer_gesture_provider_[consumer].get();
|
| if (!gesture_provider) {
|
| - gesture_provider = CreateGestureProvider(consumer, this);
|
| - consumer_gesture_provider_[consumer] = gesture_provider;
|
| + gesture_provider = new GestureProviderAura(consumer, this);
|
| + consumer_gesture_provider_[consumer] = base::WrapUnique(gesture_provider);
|
| }
|
| return gesture_provider;
|
| }
|
| @@ -296,7 +289,6 @@ bool GestureRecognizerImpl::CleanupStateForConsumer(
|
|
|
| if (consumer_gesture_provider_.count(consumer)) {
|
| state_cleaned_up = true;
|
| - delete consumer_gesture_provider_[consumer];
|
| consumer_gesture_provider_.erase(consumer);
|
| }
|
|
|
|
|