Chromium Code Reviews| Index: ui/aura_shell/shell_unittest.cc |
| diff --git a/ui/aura_shell/shell_unittest.cc b/ui/aura_shell/shell_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e70a6007dac2fb4366cb5f76f38be114dfbf1320 |
| --- /dev/null |
| +++ b/ui/aura_shell/shell_unittest.cc |
| @@ -0,0 +1,101 @@ |
| +// 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 "ui/aura/aura_constants.h" |
| +#include "ui/aura/desktop.h" |
| +#include "ui/aura/test/aura_test_base.h" |
| +#include "ui/aura/window.h" |
| +#include "ui/aura_shell/shell.h" |
| +#include "ui/aura_shell/shell_window_ids.h" |
| +#include "views/widget/widget.h" |
| + |
| +namespace aura_shell { |
| +namespace test { |
| + |
| +class ShellTest : public aura::test::AuraTestBase { |
| + public: |
| + ShellTest() : shell_(NULL) {} |
| + virtual ~ShellTest() {} |
| + |
| + virtual void SetUp() OVERRIDE { |
| + aura::test::AuraTestBase::SetUp(); |
| + |
| + // Triggers Shell creation and hook with Desktop. |
| + shell_ = aura_shell::Shell::GetInstance(); |
| + } |
| + |
| + views::Widget* CreateTestWindow(const views::Widget::InitParams& params) { |
|
oshima
2011/11/04 18:14:11
const or maybe static
xiyuan
2011/11/04 18:39:31
Moved to anonymous namespace.
|
| + views::Widget* widget = new views::Widget; |
| + widget->Init(params); |
| + widget->SetContentsView(new views::View); |
|
oshima
2011/11/04 18:14:11
do you need this? If so, include views.h. (I wonde
xiyuan
2011/11/04 18:39:31
Removed SetContentsView.
|
| + return widget; |
| + } |
| + |
| + private: |
| + aura_shell::Shell* shell_; |
|
oshima
2011/11/04 18:14:11
do you need this?
xiyuan
2011/11/04 18:39:31
Removed.
|
| + |
| + DISALLOW_COPY_AND_ASSIGN(ShellTest); |
| +}; |
| + |
| +TEST_F(ShellTest, CreateAlwaysOnTopWindow) { |
| + // Creates an always-on-top window. |
| + views::Widget::InitParams widget_params( |
| + views::Widget::InitParams::TYPE_WINDOW); |
| + widget_params.keep_on_top = true; |
| + |
| + views::Widget* widget = CreateTestWindow(widget_params); |
| + widget->Show(); |
| + |
| + // It should be put into the always-on-top container. |
| + EXPECT_EQ( |
| + Shell::GetInstance()->GetContainer( |
| + aura_shell::internal::kShellWindowId_AlwaysOnTopContainer), |
| + widget->GetNativeWindow()->parent()); |
| + |
| + widget->Close(); |
| +} |
| + |
| +TEST_F(ShellTest, ChangeAlwaysOnTop) { |
| + views::Widget::InitParams widget_params( |
| + views::Widget::InitParams::TYPE_WINDOW); |
| + |
| + // Creates a normal window |
| + views::Widget* widget = CreateTestWindow(widget_params); |
| + widget->Show(); |
| + |
| + // It should be in default container. |
| + EXPECT_EQ( |
| + Shell::GetInstance()->GetContainer( |
| + aura_shell::internal::kShellWindowId_DefaultContainer), |
|
oshima
2011/11/04 18:14:11
Add method (like default_container()) to get conta
xiyuan
2011/11/04 18:39:31
Done. Added helper functions to get default contai
|
| + widget->GetNativeWindow()->parent()); |
| + |
| + // Flip always-on-top flag. |
| + widget->SetAlwaysOnTop(true); |
| + // And it should in always on top container now. |
| + EXPECT_EQ( |
| + Shell::GetInstance()->GetContainer( |
| + aura_shell::internal::kShellWindowId_AlwaysOnTopContainer), |
| + widget->GetNativeWindow()->parent()); |
| + |
| + // Flip always-on-top flag. |
| + widget->SetAlwaysOnTop(false); |
| + // It should go back to default container. |
| + EXPECT_EQ( |
| + Shell::GetInstance()->GetContainer( |
| + aura_shell::internal::kShellWindowId_DefaultContainer), |
| + widget->GetNativeWindow()->parent()); |
| + |
| + // Set the same always-on-top flag again. |
| + widget->SetAlwaysOnTop(false); |
| + // Should have no effect and we are still in the default container. |
| + EXPECT_EQ( |
| + Shell::GetInstance()->GetContainer( |
| + aura_shell::internal::kShellWindowId_DefaultContainer), |
| + widget->GetNativeWindow()->parent()); |
| + |
| + widget->Close(); |
| +} |
| + |
| +} // namespace test |
| +} // namespace aura_shell |