This source file includes following definitions.
- SetUp
- TearDown
- TEST_F
- TEST_F
- TEST_F
#include "ui/wm/core/transient_window_stacking_client.h"
#include "base/memory/scoped_ptr.h"
#include "ui/aura/test/aura_test_base.h"
#include "ui/aura/test/test_windows.h"
#include "ui/compositor/test/test_layers.h"
#include "ui/wm/core/window_util.h"
using aura::test::ChildWindowIDsAsString;
using aura::test::CreateTestWindowWithId;
using aura::Window;
namespace wm {
class TransientWindowStackingClientTest : public aura::test::AuraTestBase {
public:
TransientWindowStackingClientTest() {}
virtual ~TransientWindowStackingClientTest() {}
virtual void SetUp() OVERRIDE {
AuraTestBase::SetUp();
client_.reset(new TransientWindowStackingClient);
aura::client::SetWindowStackingClient(client_.get());
}
virtual void TearDown() OVERRIDE {
aura::client::SetWindowStackingClient(NULL);
AuraTestBase::TearDown();
}
private:
scoped_ptr<TransientWindowStackingClient> client_;
DISALLOW_COPY_AND_ASSIGN(TransientWindowStackingClientTest);
};
TEST_F(TransientWindowStackingClientTest, TransientChildrenGroupAbove) {
scoped_ptr<Window> parent(CreateTestWindowWithId(0, root_window()));
scoped_ptr<Window> w1(CreateTestWindowWithId(1, parent.get()));
Window* w11 = CreateTestWindowWithId(11, parent.get());
scoped_ptr<Window> w2(CreateTestWindowWithId(2, parent.get()));
Window* w21 = CreateTestWindowWithId(21, parent.get());
Window* w211 = CreateTestWindowWithId(211, parent.get());
Window* w212 = CreateTestWindowWithId(212, parent.get());
Window* w213 = CreateTestWindowWithId(213, parent.get());
Window* w22 = CreateTestWindowWithId(22, parent.get());
ASSERT_EQ(8u, parent->children().size());
AddTransientChild(w1.get(), w11);
AddTransientChild(w2.get(), w21);
AddTransientChild(w2.get(), w22);
AddTransientChild(w21, w211);
AddTransientChild(w21, w212);
AddTransientChild(w21, w213);
EXPECT_EQ("1 11 2 21 211 212 213 22", ChildWindowIDsAsString(parent.get()));
parent->StackChildAtTop(w1.get());
EXPECT_EQ(w11, parent->children().back());
EXPECT_EQ("2 21 211 212 213 22 1 11", ChildWindowIDsAsString(parent.get()));
parent->StackChildAtTop(w2.get());
EXPECT_EQ(w22, parent->children().back());
EXPECT_EQ("1 11 2 21 211 212 213 22", ChildWindowIDsAsString(parent.get()));
parent->StackChildAbove(w11, w2.get());
EXPECT_EQ(w11, parent->children().back());
EXPECT_EQ("2 21 211 212 213 22 1 11", ChildWindowIDsAsString(parent.get()));
parent->StackChildAbove(w21, w1.get());
EXPECT_EQ(w22, parent->children().back());
EXPECT_EQ("1 11 2 21 211 212 213 22", ChildWindowIDsAsString(parent.get()));
parent->StackChildAbove(w21, w22);
EXPECT_EQ(w213, parent->children().back());
EXPECT_EQ("1 11 2 22 21 211 212 213", ChildWindowIDsAsString(parent.get()));
parent->StackChildAbove(w11, w21);
EXPECT_EQ(w11, parent->children().back());
EXPECT_EQ("2 22 21 211 212 213 1 11", ChildWindowIDsAsString(parent.get()));
parent->StackChildAbove(w213, w21);
EXPECT_EQ(w11, parent->children().back());
EXPECT_EQ("2 22 21 213 211 212 1 11", ChildWindowIDsAsString(parent.get()));
parent->StackChildAbove(w21, w211);
EXPECT_EQ(w11, parent->children().back());
EXPECT_EQ("2 22 21 213 211 212 1 11", ChildWindowIDsAsString(parent.get()));
parent->StackChildAbove(w2.get(), w1.get());
EXPECT_EQ(w212, parent->children().back());
EXPECT_EQ("1 11 2 22 21 213 211 212", ChildWindowIDsAsString(parent.get()));
parent->StackChildAbove(w11, w213);
EXPECT_EQ(w11, parent->children().back());
EXPECT_EQ("2 22 21 213 211 212 1 11", ChildWindowIDsAsString(parent.get()));
}
TEST_F(TransientWindowStackingClientTest, TransientChildrenGroupBelow) {
scoped_ptr<Window> parent(CreateTestWindowWithId(0, root_window()));
scoped_ptr<Window> w1(CreateTestWindowWithId(1, parent.get()));
Window* w11 = CreateTestWindowWithId(11, parent.get());
scoped_ptr<Window> w2(CreateTestWindowWithId(2, parent.get()));
Window* w21 = CreateTestWindowWithId(21, parent.get());
Window* w211 = CreateTestWindowWithId(211, parent.get());
Window* w212 = CreateTestWindowWithId(212, parent.get());
Window* w213 = CreateTestWindowWithId(213, parent.get());
Window* w22 = CreateTestWindowWithId(22, parent.get());
ASSERT_EQ(8u, parent->children().size());
AddTransientChild(w1.get(), w11);
AddTransientChild(w2.get(), w21);
AddTransientChild(w2.get(), w22);
AddTransientChild(w21, w211);
AddTransientChild(w21, w212);
AddTransientChild(w21, w213);
EXPECT_EQ("1 11 2 21 211 212 213 22", ChildWindowIDsAsString(parent.get()));
parent->StackChildAtBottom(w2.get());
EXPECT_EQ(w11, parent->children().back());
EXPECT_EQ("2 21 211 212 213 22 1 11", ChildWindowIDsAsString(parent.get()));
parent->StackChildAtBottom(w1.get());
EXPECT_EQ(w22, parent->children().back());
EXPECT_EQ("1 11 2 21 211 212 213 22", ChildWindowIDsAsString(parent.get()));
parent->StackChildBelow(w21, w1.get());
EXPECT_EQ(w11, parent->children().back());
EXPECT_EQ("2 21 211 212 213 22 1 11", ChildWindowIDsAsString(parent.get()));
parent->StackChildBelow(w11, w2.get());
EXPECT_EQ(w22, parent->children().back());
EXPECT_EQ("1 11 2 21 211 212 213 22", ChildWindowIDsAsString(parent.get()));
parent->StackChildBelow(w22, w21);
EXPECT_EQ(w213, parent->children().back());
EXPECT_EQ("1 11 2 22 21 211 212 213", ChildWindowIDsAsString(parent.get()));
parent->StackChildBelow(w21, w11);
EXPECT_EQ(w11, parent->children().back());
EXPECT_EQ("2 22 21 211 212 213 1 11", ChildWindowIDsAsString(parent.get()));
parent->StackChildBelow(w213, w211);
EXPECT_EQ(w11, parent->children().back());
EXPECT_EQ("2 22 21 213 211 212 1 11", ChildWindowIDsAsString(parent.get()));
parent->StackChildBelow(w21, w211);
EXPECT_EQ(w11, parent->children().back());
EXPECT_EQ("2 22 21 213 211 212 1 11", ChildWindowIDsAsString(parent.get()));
parent->StackChildBelow(w1.get(), w2.get());
EXPECT_EQ(w212, parent->children().back());
EXPECT_EQ("1 11 2 22 21 213 211 212", ChildWindowIDsAsString(parent.get()));
parent->StackChildBelow(w213, w11);
EXPECT_EQ(w11, parent->children().back());
EXPECT_EQ("2 22 21 213 211 212 1 11", ChildWindowIDsAsString(parent.get()));
}
TEST_F(TransientWindowStackingClientTest,
StackWindowsWhoseLayersHaveNoDelegate) {
scoped_ptr<Window> window1(CreateTestWindowWithId(1, root_window()));
window1->layer()->set_name("1");
scoped_ptr<Window> window2(CreateTestWindowWithId(2, root_window()));
window2->layer()->set_name("2");
scoped_ptr<Window> window3(CreateTestWindowWithId(3, root_window()));
window3->layer()->set_name("3");
root_window()->StackChildAbove(window1.get(), window3.get());
EXPECT_EQ("2 3 1", ChildWindowIDsAsString(root_window()));
EXPECT_EQ("2 3 1",
ui::test::ChildLayerNamesAsString(*root_window()->layer()));
window1->layer()->set_delegate(NULL);
root_window()->StackChildAbove(window2.get(), window1.get());
EXPECT_EQ("3 2 1", ChildWindowIDsAsString(root_window()));
EXPECT_EQ("3 2 1",
ui::test::ChildLayerNamesAsString(*root_window()->layer()));
root_window()->StackChildBelow(window3.get(), window1.get());
EXPECT_EQ("2 3 1", ChildWindowIDsAsString(root_window()));
EXPECT_EQ("2 3 1",
ui::test::ChildLayerNamesAsString(*root_window()->layer()));
window3->layer()->set_delegate(NULL);
root_window()->StackChildBelow(window2.get(), window1.get());
EXPECT_EQ("2 3 1", ChildWindowIDsAsString(root_window()));
EXPECT_EQ("2 3 1",
ui::test::ChildLayerNamesAsString(*root_window()->layer()));
}
}