1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- // Copyright 2014 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef ASH_WM_LOCK_LAYOUT_MANAGER_H_
- #define ASH_WM_LOCK_LAYOUT_MANAGER_H_
- #include "ash/ash_export.h"
- #include "ash/keyboard/ui/keyboard_ui_controller.h"
- #include "ash/public/cpp/keyboard/keyboard_controller_observer.h"
- #include "ash/shelf/shelf.h"
- #include "ash/shelf/shelf_observer.h"
- #include "ash/wm/wm_default_layout_manager.h"
- #include "base/scoped_observation.h"
- #include "ui/aura/window_observer.h"
- #include "ui/gfx/geometry/rect.h"
- namespace ash {
- class WindowState;
- class WMEvent;
- // LockLayoutManager is used for the windows created in LockScreenContainer.
- // For Chrome OS this includes out-of-box/login/lock/multi-profile login use
- // cases. LockScreenContainer does not use default work area definition.
- // By default work area is defined as display area minus shelf, and minus
- // virtual keyboard bounds.
- // For windows in LockScreenContainer work area is display area minus virtual
- // keyboard bounds (only if keyboard overscroll is disabled). If keyboard
- // overscroll is enabled then work area always equals to display area size since
- // virtual keyboard changes inner workspace of each WebContents.
- // For all windows in LockScreenContainer default WindowState is replaced
- // with LockWindowState.
- class ASH_EXPORT LockLayoutManager : public WmDefaultLayoutManager,
- public aura::WindowObserver,
- public ShelfObserver,
- public KeyboardControllerObserver {
- public:
- LockLayoutManager(aura::Window* window, Shelf* shelf);
- LockLayoutManager(const LockLayoutManager&) = delete;
- LockLayoutManager& operator=(const LockLayoutManager&) = delete;
- ~LockLayoutManager() override;
- // Overridden from WmDefaultLayoutManager:
- void OnWindowResized() override;
- void OnWindowAddedToLayout(aura::Window* child) override;
- void OnWillRemoveWindowFromLayout(aura::Window* child) override;
- void OnWindowRemovedFromLayout(aura::Window* child) override;
- void OnChildWindowVisibilityChanged(aura::Window* child,
- bool visible) override;
- void SetChildBounds(aura::Window* child,
- const gfx::Rect& requested_bounds) override;
- // Overriden from aura::WindowObserver:
- void OnWindowDestroying(aura::Window* window) override;
- void OnWindowBoundsChanged(aura::Window* window,
- const gfx::Rect& old_bounds,
- const gfx::Rect& new_bounds,
- ui::PropertyChangeReason reason) override;
- // ShelfObserver:
- void WillChangeVisibilityState(ShelfVisibilityState visibility) override;
- // KeyboardControllerObserver overrides:
- void OnKeyboardOccludedBoundsChanged(const gfx::Rect& new_bounds) override;
- protected:
- // Adjusts the bounds of all managed windows when the display area changes.
- // This happens when the display size, work area insets has changed.
- void AdjustWindowsForWorkAreaChange(const WMEvent* event);
- aura::Window* window() { return window_; }
- aura::Window* root_window() { return root_window_; }
- private:
- aura::Window* window_;
- aura::Window* root_window_;
- base::ScopedObservation<Shelf, ShelfObserver> shelf_observation_{this};
- };
- } // namespace ash
- #endif // ASH_WM_LOCK_LAYOUT_MANAGER_H_
|