1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "ash/shell.h" 6 #include "ash/shell_window_ids.h" 7 #include "ash/test/ash_test_base.h" 8 #include "ash/wm/property_util.h" 9 #include "ash/wm/window_properties.h" 10 #include "ash/wm/window_util.h" 11 #include "ui/aura/client/aura_constants.h" 12 #include "ui/aura/root_window.h" 13 #include "ui/aura/window.h" 14 15 using aura::Window; 16 17 namespace ash { 18 namespace internal { 19 20 class StackingControllerTest : public test::AshTestBase { 21 public: 22 StackingControllerTest() {} 23 virtual ~StackingControllerTest() {} 24 25 aura::Window* CreateTestWindow() { 26 aura::Window* window = new aura::Window(NULL); 27 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); 28 window->SetType(aura::client::WINDOW_TYPE_NORMAL); 29 window->Init(ui::LAYER_TEXTURED); 30 return window; 31 } 32 33 private: 34 DISALLOW_COPY_AND_ASSIGN(StackingControllerTest); 35 }; 36 37 // Verifies a window with a transient parent is in the same container as its 38 // transient parent. 39 TEST_F(StackingControllerTest, TransientParent) { 40 // Normal window . 41 scoped_ptr<Window> w2(CreateTestWindow()); 42 w2->SetBounds(gfx::Rect(10, 11, 250, 251)); 43 aura::Window* launcher = Shell::GetContainer(Shell::GetPrimaryRootWindow(), 44 kShellWindowId_ShelfContainer); 45 launcher->AddChild(w2.get()); 46 w2->Show(); 47 48 wm::ActivateWindow(w2.get()); 49 50 // Window with a transient parent. 51 scoped_ptr<Window> w1(CreateTestWindow()); 52 w2->AddTransientChild(w1.get()); 53 w1->SetBounds(gfx::Rect(10, 11, 250, 251)); 54 SetDefaultParentByPrimaryRootWindow(w1.get()); 55 w1->Show(); 56 wm::ActivateWindow(w1.get()); 57 58 // The window with the transient parent should get added to the same container 59 // as its transient parent. 60 EXPECT_EQ(launcher, w1->parent()); 61 } 62 63 } // namespace internal 64 } // namespace ash 65