blob: d0ad7d53186134e23fd4e6e6f76a2b7f9ded69d7 [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/views/test/test_views.h"
#include "ui/events/event.h"
#include "ui/views/widget/native_widget_private.h"
#include "ui/views/widget/widget.h"
namespace views {
StaticSizedView::StaticSizedView(const gfx::Size& size)
// Default GetMinimumSize() is GetPreferredSize(). Default GetMaximumSize()
// is 0x0.
: size_(size),
minimum_size_(size) {
}
StaticSizedView::~StaticSizedView() {}
gfx::Size StaticSizedView::GetPreferredSize() const {
return size_;
}
gfx::Size StaticSizedView::GetMinimumSize() const {
return minimum_size_;
}
gfx::Size StaticSizedView::GetMaximumSize() const {
return maximum_size_;
}
ProportionallySizedView::ProportionallySizedView(int factor)
: factor_(factor), preferred_width_(-1) {}
ProportionallySizedView::~ProportionallySizedView() {}
int ProportionallySizedView::GetHeightForWidth(int w) const {
return w * factor_;
}
gfx::Size ProportionallySizedView::GetPreferredSize() const {
if (preferred_width_ >= 0)
return gfx::Size(preferred_width_, GetHeightForWidth(preferred_width_));
return View::GetPreferredSize();
}
CloseWidgetView::CloseWidgetView(ui::EventType event_type)
: event_type_(event_type) {
}
void CloseWidgetView::OnEvent(ui::Event* event) {
if (event->type() == event_type_) {
// Go through NativeWidgetPrivate to simulate what happens if the OS
// deletes the NativeWindow out from under us.
// TODO(tapted): Change this to WidgetTest::SimulateNativeDestroy for a more
// authentic test on Mac.
GetWidget()->native_widget_private()->CloseNow();
} else {
View::OnEvent(event);
if (!event->IsTouchEvent())
event->SetHandled();
}
}
EventCountView::EventCountView()
: last_flags_(0), handle_mode_(PROPAGATE_EVENTS) {}
EventCountView::~EventCountView() {}
int EventCountView::GetEventCount(ui::EventType type) {
return event_count_[type];
}
void EventCountView::ResetCounts() {
event_count_.clear();
}
void EventCountView::OnMouseMoved(const ui::MouseEvent& event) {
// MouseMove events are not re-dispatched from the RootView.
++event_count_[ui::ET_MOUSE_MOVED];
last_flags_ = 0;
}
void EventCountView::OnKeyEvent(ui::KeyEvent* event) {
RecordEvent(event);
}
void EventCountView::OnMouseEvent(ui::MouseEvent* event) {
RecordEvent(event);
}
void EventCountView::OnScrollEvent(ui::ScrollEvent* event) {
RecordEvent(event);
}
void EventCountView::OnGestureEvent(ui::GestureEvent* event) {
RecordEvent(event);
}
void EventCountView::RecordEvent(ui::Event* event) {
++event_count_[event->type()];
last_flags_ = event->flags();
if (handle_mode_ == CONSUME_EVENTS)
event->SetHandled();
}
} // namespace views