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/window_properties.h" 9 #include "ash/wm/window_util.h" 10 #include "ui/aura/client/aura_constants.h" 11 #include "ui/aura/window.h" 12 #include "ui/aura/window_event_dispatcher.h" 13 #include "ui/wm/core/window_util.h" 14 15 using aura::Window; 16 17 namespace ash { 18 19 class StackingControllerTest : public test::AshTestBase { 20 public: 21 StackingControllerTest() {} 22 virtual ~StackingControllerTest() {} 23 24 aura::Window* CreateTestWindow() { 25 aura::Window* window = new aura::Window(NULL); 26 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); 27 window->SetType(ui::wm::WINDOW_TYPE_NORMAL); 28 window->Init(aura::WINDOW_LAYER_TEXTURED); 29 return window; 30 } 31 32 private: 33 DISALLOW_COPY_AND_ASSIGN(StackingControllerTest); 34 }; 35 36 // Verifies a window with a transient parent is in the same container as its 37 // transient parent. 38 TEST_F(StackingControllerTest, TransientParent) { 39 // Normal window . 40 scoped_ptr<Window> w2(CreateTestWindow()); 41 w2->SetBounds(gfx::Rect(10, 11, 250, 251)); 42 aura::Window* launcher = Shell::GetContainer(Shell::GetPrimaryRootWindow(), 43 kShellWindowId_ShelfContainer); 44 launcher->AddChild(w2.get()); 45 w2->Show(); 46 47 wm::ActivateWindow(w2.get()); 48 49 // Window with a transient parent. 50 scoped_ptr<Window> w1(CreateTestWindow()); 51 ::wm::AddTransientChild(w2.get(), w1.get()); 52 w1->SetBounds(gfx::Rect(10, 11, 250, 251)); 53 ParentWindowInPrimaryRootWindow(w1.get()); 54 w1->Show(); 55 wm::ActivateWindow(w1.get()); 56 57 // The window with the transient parent should get added to the same container 58 // as its transient parent. 59 EXPECT_EQ(launcher, w1->parent()); 60 } 61 62 } // namespace ash 63