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 #ifndef ASH_WM_STACKING_CONTROLLER_H_ 6 #define ASH_WM_STACKING_CONTROLLER_H_ 7 8 #include "ash/ash_export.h" 9 #include "base/basictypes.h" 10 #include "base/compiler_specific.h" 11 #include "base/memory/scoped_ptr.h" 12 #include "ui/aura/client/stacking_client.h" 13 14 namespace aura{ 15 class RootWindow; 16 } 17 18 namespace ash { 19 20 namespace internal { 21 class AlwaysOnTopController; 22 } 23 24 class ASH_EXPORT StackingController : public aura::client::StackingClient { 25 public: 26 StackingController(); 27 virtual ~StackingController(); 28 29 // Overridden from aura::client::StackingClient: 30 virtual aura::Window* GetDefaultParent(aura::Window* context, 31 aura::Window* window, 32 const gfx::Rect& bounds) OVERRIDE; 33 34 private: 35 // Returns corresponding system modal container for a modal window. 36 // If screen lock is not active, all system modal windows are placed into the 37 // normal modal container. 38 // Otherwise those that originate from LockScreen container and above are 39 // placed in the screen lock modal container. 40 aura::Window* GetSystemModalContainer(aura::RootWindow* root, 41 aura::Window* window) const; 42 43 DISALLOW_COPY_AND_ASSIGN(StackingController); 44 }; 45 46 } // namespace ash 47 48 #endif // ASH_WM_STACKING_CONTROLLER_H_ 49