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