Home | History | Annotate | Download | only in wm
      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