| Index: aura/window_unittest.cc
|
| ===================================================================
|
| --- aura/window_unittest.cc (revision 100961)
|
| +++ aura/window_unittest.cc (working copy)
|
| @@ -1,281 +0,0 @@
|
| -// Copyright (c) 2011 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 "aura/desktop.h"
|
| -#include "aura/event.h"
|
| -#include "aura/focus_manager.h"
|
| -#include "aura/root_window.h"
|
| -#include "aura/window_delegate.h"
|
| -#include "base/basictypes.h"
|
| -#include "base/compiler_specific.h"
|
| -#include "base/message_loop.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "ui/gfx/canvas_skia.h"
|
| -#include "ui/base/keycodes/keyboard_codes.h"
|
| -
|
| -#if !defined(OS_WIN)
|
| -#include "aura/hit_test.h"
|
| -#endif
|
| -
|
| -namespace aura {
|
| -namespace internal {
|
| -
|
| -namespace {
|
| -
|
| -// WindowDelegate implementation with all methods stubbed out.
|
| -class WindowDelegateImpl : public WindowDelegate {
|
| - public:
|
| - WindowDelegateImpl() {}
|
| - virtual ~WindowDelegateImpl() {}
|
| -
|
| - // Overriden from WindowDelegate:
|
| - virtual void OnFocus() OVERRIDE {}
|
| - virtual void OnBlur() OVERRIDE {}
|
| - virtual bool OnKeyEvent(KeyEvent* event) OVERRIDE {
|
| - return false;
|
| - }
|
| - virtual int GetNonClientComponent(const gfx::Point& point) const OVERRIDE {
|
| - return HTCLIENT;
|
| - }
|
| - virtual bool OnMouseEvent(MouseEvent* event) OVERRIDE { return false; }
|
| - virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE {}
|
| - virtual void OnWindowDestroying() OVERRIDE {}
|
| - virtual void OnWindowDestroyed() OVERRIDE {}
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(WindowDelegateImpl);
|
| -};
|
| -
|
| -// Used for verifying destruction methods are invoked.
|
| -class DestroyTrackingDelegateImpl : public WindowDelegateImpl {
|
| - public:
|
| - DestroyTrackingDelegateImpl()
|
| - : destroying_count_(0),
|
| - destroyed_count_(0),
|
| - in_destroying_(false) {}
|
| -
|
| - void clear_destroying_count() { destroying_count_ = 0; }
|
| - int destroying_count() const { return destroying_count_; }
|
| -
|
| - void clear_destroyed_count() { destroyed_count_ = 0; }
|
| - int destroyed_count() const { return destroyed_count_; }
|
| -
|
| - bool in_destroying() const { return in_destroying_; }
|
| -
|
| - virtual void OnWindowDestroying() OVERRIDE {
|
| - EXPECT_FALSE(in_destroying_);
|
| - in_destroying_ = true;
|
| - destroying_count_++;
|
| - }
|
| -
|
| - virtual void OnWindowDestroyed() OVERRIDE {
|
| - EXPECT_TRUE(in_destroying_);
|
| - in_destroying_ = false;
|
| - destroyed_count_++;
|
| - }
|
| -
|
| - private:
|
| - bool in_destroying_;
|
| - int destroying_count_;
|
| - int destroyed_count_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(DestroyTrackingDelegateImpl);
|
| -};
|
| -
|
| -// Used to verify that when OnWindowDestroying is invoked the parent is also
|
| -// is in the process of being destroyed.
|
| -class ChildWindowDelegateImpl : public DestroyTrackingDelegateImpl {
|
| - public:
|
| - explicit ChildWindowDelegateImpl(
|
| - DestroyTrackingDelegateImpl* parent_delegate)
|
| - : parent_delegate_(parent_delegate) {
|
| - }
|
| -
|
| - virtual void OnWindowDestroying() OVERRIDE {
|
| - EXPECT_TRUE(parent_delegate_->in_destroying());
|
| - DestroyTrackingDelegateImpl::OnWindowDestroying();
|
| - }
|
| -
|
| - private:
|
| - DestroyTrackingDelegateImpl* parent_delegate_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ChildWindowDelegateImpl);
|
| -};
|
| -
|
| -// A simple WindowDelegate implementation for these tests. It owns itself
|
| -// (deletes itself when the Window it is attached to is destroyed).
|
| -class TestWindowDelegate : public WindowDelegateImpl {
|
| - public:
|
| - TestWindowDelegate(SkColor color)
|
| - : color_(color),
|
| - last_key_code_(ui::VKEY_UNKNOWN) {
|
| - }
|
| - virtual ~TestWindowDelegate() {}
|
| -
|
| - ui::KeyboardCode last_key_code() const { return last_key_code_; }
|
| -
|
| - // Overridden from WindowDelegateImpl:
|
| - virtual bool OnKeyEvent(KeyEvent* event) OVERRIDE {
|
| - last_key_code_ = event->key_code();
|
| - return true;
|
| - }
|
| - virtual void OnWindowDestroyed() OVERRIDE {
|
| - delete this;
|
| - }
|
| - virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE {
|
| - canvas->AsCanvasSkia()->drawColor(color_, SkXfermode::kSrc_Mode);
|
| - }
|
| -
|
| - private:
|
| - SkColor color_;
|
| - ui::KeyboardCode last_key_code_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestWindowDelegate);
|
| -};
|
| -
|
| -class WindowTest : public testing::Test {
|
| - public:
|
| - WindowTest() : main_message_loop(MessageLoop::TYPE_UI) {
|
| - aura::Desktop::GetInstance()->Show();
|
| - aura::Desktop::GetInstance()->SetSize(gfx::Size(500, 500));
|
| - }
|
| - virtual ~WindowTest() {}
|
| -
|
| - // Overridden from testing::Test:
|
| - virtual void SetUp() OVERRIDE {
|
| - }
|
| -
|
| - virtual void TearDown() OVERRIDE {
|
| - }
|
| -
|
| - Window* CreateTestWindow(SkColor color,
|
| - int id,
|
| - const gfx::Rect& bounds,
|
| - Window* parent) {
|
| - return CreateTestWindowWithDelegate(new TestWindowDelegate(color),
|
| - id, bounds, parent);
|
| - }
|
| -
|
| - Window* CreateTestWindowWithDelegate(WindowDelegate* delegate,
|
| - int id,
|
| - const gfx::Rect& bounds,
|
| - Window* parent) {
|
| - Window* window = new Window(delegate);
|
| - window->set_id(id);
|
| - window->Init();
|
| - window->SetBounds(bounds, 0);
|
| - window->SetVisibility(Window::VISIBILITY_SHOWN);
|
| - window->SetParent(parent);
|
| - return window;
|
| - }
|
| -
|
| - void RunPendingMessages() {
|
| - MessageLoop message_loop(MessageLoop::TYPE_UI);
|
| - MessageLoopForUI::current()->Run(NULL);
|
| - }
|
| -
|
| - private:
|
| - MessageLoop main_message_loop;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WindowTest);
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -TEST_F(WindowTest, HitTest) {
|
| - Window w1(new TestWindowDelegate(SK_ColorWHITE));
|
| - w1.set_id(1);
|
| - w1.Init();
|
| - w1.SetBounds(gfx::Rect(10, 10, 50, 50), 0);
|
| - w1.SetVisibility(Window::VISIBILITY_SHOWN);
|
| - w1.SetParent(NULL);
|
| -
|
| - // Points are in the Window's coordinates.
|
| - EXPECT_TRUE(w1.HitTest(gfx::Point(1, 1)));
|
| - EXPECT_FALSE(w1.HitTest(gfx::Point(-1, -1)));
|
| -
|
| - // TODO(beng): clip Window to parent.
|
| -}
|
| -
|
| -TEST_F(WindowTest, GetEventHandlerForPoint) {
|
| - scoped_ptr<Window> w1(
|
| - CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 10, 500, 500), NULL));
|
| - scoped_ptr<Window> w11(
|
| - CreateTestWindow(SK_ColorGREEN, 11, gfx::Rect(5, 5, 100, 100), w1.get()));
|
| - scoped_ptr<Window> w111(
|
| - CreateTestWindow(SK_ColorCYAN, 111, gfx::Rect(5, 5, 75, 75), w11.get()));
|
| - scoped_ptr<Window> w1111(
|
| - CreateTestWindow(SK_ColorRED, 1111, gfx::Rect(5, 5, 50, 50), w111.get()));
|
| - scoped_ptr<Window> w12(
|
| - CreateTestWindow(SK_ColorMAGENTA, 12, gfx::Rect(10, 420, 25, 25),
|
| - w1.get()));
|
| - scoped_ptr<Window> w121(
|
| - CreateTestWindow(SK_ColorYELLOW, 121, gfx::Rect(5, 5, 5, 5), w12.get()));
|
| - scoped_ptr<Window> w13(
|
| - CreateTestWindow(SK_ColorGRAY, 13, gfx::Rect(5, 470, 50, 50), w1.get()));
|
| -
|
| - Window* desktop = Desktop::GetInstance()->window();
|
| - EXPECT_EQ(desktop, desktop->GetEventHandlerForPoint(gfx::Point(5, 5)));
|
| - EXPECT_EQ(w1.get(), desktop->GetEventHandlerForPoint(gfx::Point(11, 11)));
|
| - EXPECT_EQ(w11.get(), desktop->GetEventHandlerForPoint(gfx::Point(16, 16)));
|
| - EXPECT_EQ(w111.get(), desktop->GetEventHandlerForPoint(gfx::Point(21, 21)));
|
| - EXPECT_EQ(w1111.get(), desktop->GetEventHandlerForPoint(gfx::Point(26, 26)));
|
| - EXPECT_EQ(w12.get(), desktop->GetEventHandlerForPoint(gfx::Point(21, 431)));
|
| - EXPECT_EQ(w121.get(), desktop->GetEventHandlerForPoint(gfx::Point(26, 436)));
|
| - EXPECT_EQ(w13.get(), desktop->GetEventHandlerForPoint(gfx::Point(26, 481)));
|
| -}
|
| -
|
| -TEST_F(WindowTest, Focus) {
|
| - scoped_ptr<Window> w1(
|
| - CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 10, 500, 500), NULL));
|
| - scoped_ptr<Window> w11(
|
| - CreateTestWindow(SK_ColorGREEN, 11, gfx::Rect(5, 5, 100, 100), w1.get()));
|
| - scoped_ptr<Window> w111(
|
| - CreateTestWindow(SK_ColorCYAN, 111, gfx::Rect(5, 5, 75, 75), w11.get()));
|
| - scoped_ptr<Window> w1111(
|
| - CreateTestWindow(SK_ColorRED, 1111, gfx::Rect(5, 5, 50, 50), w111.get()));
|
| - scoped_ptr<Window> w12(
|
| - CreateTestWindow(SK_ColorMAGENTA, 12, gfx::Rect(10, 420, 25, 25),
|
| - w1.get()));
|
| - TestWindowDelegate* w121delegate = new TestWindowDelegate(SK_ColorYELLOW);
|
| - scoped_ptr<Window> w121(
|
| - CreateTestWindowWithDelegate(w121delegate, 121, gfx::Rect(5, 5, 5, 5),
|
| - w12.get()));
|
| - scoped_ptr<Window> w13(
|
| - CreateTestWindow(SK_ColorGRAY, 13, gfx::Rect(5, 470, 50, 50), w1.get()));
|
| -
|
| - // Click on a sub-window (w121) to focus it.
|
| - Desktop* desktop = Desktop::GetInstance();
|
| - gfx::Point click_point = w121->bounds().CenterPoint();
|
| - Window::ConvertPointToWindow(w121->parent(), desktop->window(), &click_point);
|
| - desktop->OnMouseEvent(
|
| - MouseEvent(ui::ET_MOUSE_PRESSED, click_point, ui::EF_LEFT_BUTTON_DOWN));
|
| - internal::FocusManager* focus_manager = w121->GetFocusManager();
|
| - EXPECT_EQ(w121.get(), focus_manager->focused_window());
|
| -
|
| - // The key press should be sent to the focused sub-window.
|
| - desktop->OnKeyEvent(KeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_E, 0));
|
| - EXPECT_EQ(ui::VKEY_E, w121delegate->last_key_code());
|
| -}
|
| -
|
| -// Various destruction assertions.
|
| -TEST_F(WindowTest, DestroyTest) {
|
| - DestroyTrackingDelegateImpl parent_delegate;
|
| - ChildWindowDelegateImpl child_delegate(&parent_delegate);
|
| - {
|
| - scoped_ptr<Window> parent(
|
| - CreateTestWindowWithDelegate(&parent_delegate, 0, gfx::Rect(), NULL));
|
| - Window* child = CreateTestWindowWithDelegate(&child_delegate, 0,
|
| - gfx::Rect(), parent.get());
|
| - }
|
| - // Both the parent and child should have been destroyed.
|
| - EXPECT_EQ(1, parent_delegate.destroying_count());
|
| - EXPECT_EQ(1, parent_delegate.destroyed_count());
|
| - EXPECT_EQ(1, child_delegate.destroying_count());
|
| - EXPECT_EQ(1, child_delegate.destroyed_count());
|
| -}
|
| -
|
| -} // namespace internal
|
| -} // namespace aura
|
| -
|
|
|