test_event_target.cc revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// found in the LICENSE file. 4a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "ui/events/test/test_event_target.h" 6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "ui/events/event.h" 8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "ui/events/event_target_iterator.h" 9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "ui/events/event_targeter.h" 10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)namespace ui { 12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)namespace test { 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TestEventTarget::TestEventTarget() 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) : parent_(NULL) {} 16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TestEventTarget::~TestEventTarget() {} 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void TestEventTarget::AddChild(scoped_ptr<TestEventTarget> child) { 19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TestEventTarget* child_r = child.get(); 20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (child->parent()) { 21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) AddChild(child->parent()->RemoveChild(child.release())); 22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } else { 23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) children_.push_back(child.release()); 24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) child_r->set_parent(this); 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)scoped_ptr<TestEventTarget> TestEventTarget::RemoveChild(TestEventTarget *c) { 29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ScopedVector<TestEventTarget>::iterator iter = std::find(children_.begin(), 30a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) children_.end(), 31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) c); 32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (iter != children_.end()) { 33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) children_.weak_erase(iter); 34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) c->set_parent(NULL); 35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return scoped_ptr<TestEventTarget>(c); 36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return scoped_ptr<TestEventTarget>(); 38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void TestEventTarget::SetEventTargeter(scoped_ptr<EventTargeter> targeter) { 41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) targeter_ = targeter.Pass(); 42a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 43a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 44a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)bool TestEventTarget::DidReceiveEvent(ui::EventType type) const { 45a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return received_.count(type) > 0; 46a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 48a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void TestEventTarget::ResetReceivedEvents() { 49a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) received_.clear(); 50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 51a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 52a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//////////////////////////////////////////////////////////////////////////////// 53a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// TestEventTarget, protected 54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 55a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)bool TestEventTarget::CanAcceptEvent(const ui::Event& event) { 56a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return true; 57a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 58a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 59a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)EventTarget* TestEventTarget::GetParentTarget() { 60a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return parent_; 61a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 62a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 63a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)scoped_ptr<EventTargetIterator> TestEventTarget::GetChildIterator() const { 64a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return scoped_ptr<EventTargetIterator>( 65a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) new EventTargetIteratorImpl<TestEventTarget>(children_.get())); 66a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 67a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 68a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)EventTargeter* TestEventTarget::GetEventTargeter() { 69a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return targeter_.get(); 70a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 71a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 72a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void TestEventTarget::OnEvent(Event* event) { 73a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) received_.insert(event->type()); 74a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EventTarget::OnEvent(event); 75a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 76a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 77a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//////////////////////////////////////////////////////////////////////////////// 78a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// TestEventTarget, private 79a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 80a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)bool TestEventTarget::Contains(TestEventTarget* target) const { 81a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) while (target && target != this) 82a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) target = target->parent(); 83a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return target == this; 84a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 85a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 86a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} // namespace test 87a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} // namespace ui 88