blob: c091e03d1f7e246b1e3a3e9900271a8a3e400033 [file] [log] [blame]
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +00001// 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"
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +00008#include "ash/wm/window_properties.h"
9#include "ash/wm/window_util.h"
10#include "ui/aura/client/aura_constants.h"
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000011#include "ui/aura/window.h"
Torne (Richard Coles)a1401312014-03-18 10:20:56 +000012#include "ui/aura/window_event_dispatcher.h"
13#include "ui/wm/core/window_util.h"
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000014
15using aura::Window;
16
17namespace ash {
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000018
19class 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);
Torne (Richard Coles)5d1f7b12014-02-21 12:16:55 +000027 window->SetType(ui::wm::WINDOW_TYPE_NORMAL);
28 window->Init(aura::WINDOW_LAYER_TEXTURED);
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000029 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.
38TEST_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());
Torne (Richard Coles)a1401312014-03-18 10:20:56 +000051 ::wm::AddTransientChild(w2.get(), w1.get());
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000052 w1->SetBounds(gfx::Rect(10, 11, 250, 251));
Torne (Richard Coles)1e9bf3e2013-10-31 11:16:26 +000053 ParentWindowInPrimaryRootWindow(w1.get());
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000054 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
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000062} // namespace ash