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/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