blob: 44e94c8f3a9f39acbece8f9631a5daf6b7aa82cf [file] [log] [blame]
// Copyright (c) 2012 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.
#ifndef UI_AURA_TEST_TEST_WINDOW_DELEGATE_H_
#define UI_AURA_TEST_TEST_WINDOW_DELEGATE_H_
#include <string>
#include "base/compiler_specific.h"
#include "third_party/skia/include/core/SkColor.h"
#include "ui/aura/window_delegate.h"
#include "ui/events/keycodes/keyboard_codes.h"
#include "ui/gfx/rect.h"
namespace aura {
namespace test {
// WindowDelegate implementation with all methods stubbed out.
class TestWindowDelegate : public WindowDelegate {
public:
TestWindowDelegate();
virtual ~TestWindowDelegate();
// Returns a TestWindowDelegate that delete itself when
// the associated window is destroyed.
static TestWindowDelegate* CreateSelfDestroyingDelegate();
void set_window_component(int window_component) {
window_component_ = window_component;
}
void set_minimum_size(const gfx::Size& minimum_size) {
minimum_size_ = minimum_size;
}
void set_maximum_size(const gfx::Size& maximum_size) {
maximum_size_ = maximum_size;
}
// Sets the return value for CanFocus(). Default is true.
void set_can_focus(bool can_focus) { can_focus_ = can_focus; }
// Overridden from WindowDelegate:
virtual gfx::Size GetMinimumSize() const OVERRIDE;
virtual gfx::Size GetMaximumSize() const OVERRIDE;
virtual void OnBoundsChanged(const gfx::Rect& old_bounds,
const gfx::Rect& new_bounds) OVERRIDE;
virtual gfx::NativeCursor GetCursor(const gfx::Point& point) OVERRIDE;
virtual int GetNonClientComponent(const gfx::Point& point) const OVERRIDE;
virtual bool ShouldDescendIntoChildForEventHandling(
Window* child,
const gfx::Point& location) OVERRIDE;
virtual bool CanFocus() OVERRIDE;
virtual void OnCaptureLost() OVERRIDE;
virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE;
virtual void OnWindowDestroying() OVERRIDE;
virtual void OnWindowDestroyed() OVERRIDE;
virtual void OnWindowTargetVisibilityChanged(bool visible) OVERRIDE;
virtual bool HasHitTestMask() const OVERRIDE;
virtual void GetHitTestMask(gfx::Path* mask) const OVERRIDE;
virtual void DidRecreateLayer(ui::Layer* old_layer,
ui::Layer* new_layer) OVERRIDE;
private:
int window_component_;
bool delete_on_destroyed_;
gfx::Size minimum_size_;
gfx::Size maximum_size_;
bool can_focus_;
DISALLOW_COPY_AND_ASSIGN(TestWindowDelegate);
};
// A simple WindowDelegate implementation for these tests. It owns itself
// (deletes itself when the Window it is attached to is destroyed).
class ColorTestWindowDelegate : public TestWindowDelegate {
public:
explicit ColorTestWindowDelegate(SkColor color);
virtual ~ColorTestWindowDelegate();
ui::KeyboardCode last_key_code() const { return last_key_code_; }
// Overridden from TestWindowDelegate:
virtual void OnKeyEvent(ui::KeyEvent* event) OVERRIDE;
virtual void OnWindowDestroyed() OVERRIDE;
virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
private:
SkColor color_;
ui::KeyboardCode last_key_code_;
DISALLOW_COPY_AND_ASSIGN(ColorTestWindowDelegate);
};
// A simple WindowDelegate that has a hit-test mask.
class MaskedWindowDelegate : public TestWindowDelegate {
public:
explicit MaskedWindowDelegate(const gfx::Rect mask_rect);
// Overridden from TestWindowDelegate:
virtual bool HasHitTestMask() const OVERRIDE;
virtual void GetHitTestMask(gfx::Path* mask) const OVERRIDE;
private:
gfx::Rect mask_rect_;
DISALLOW_COPY_AND_ASSIGN(MaskedWindowDelegate);
};
// Keeps track of mouse/key events.
class EventCountDelegate : public TestWindowDelegate {
public:
EventCountDelegate();
// Overridden from TestWindowDelegate:
virtual void OnKeyEvent(ui::KeyEvent* event) OVERRIDE;
virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE;
// Returns the counts of mouse motion events in the
// form of "<enter> <move> <leave>".
std::string GetMouseMotionCountsAndReset();
// Returns the counts of mouse button events in the
// form of "<press> <release>".
std::string GetMouseButtonCountsAndReset();
// Returns the counts of key events in the form of
// "<press> <release>".
std::string GetKeyCountsAndReset();
private:
int mouse_enter_count_;
int mouse_move_count_;
int mouse_leave_count_;
int mouse_press_count_;
int mouse_release_count_;
int key_press_count_;
int key_release_count_;
DISALLOW_COPY_AND_ASSIGN(EventCountDelegate);
};
} // namespace test
} // namespace aura
#endif // UI_AURA_TEST_TEST_WINDOW_DELEGATE_H_