summaryrefslogtreecommitdiffstats
path: root/chromium/ash/wm/system_modal_container_layout_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ash/wm/system_modal_container_layout_manager.cc')
-rw-r--r--chromium/ash/wm/system_modal_container_layout_manager.cc224
1 files changed, 0 insertions, 224 deletions
diff --git a/chromium/ash/wm/system_modal_container_layout_manager.cc b/chromium/ash/wm/system_modal_container_layout_manager.cc
deleted file mode 100644
index 2c2cdebb57a..00000000000
--- a/chromium/ash/wm/system_modal_container_layout_manager.cc
+++ /dev/null
@@ -1,224 +0,0 @@
-// Copyright (c) 2012 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.
-
-#include "ash/wm/system_modal_container_layout_manager.h"
-
-#include "ash/session_state_delegate.h"
-#include "ash/shell.h"
-#include "ash/shell_window_ids.h"
-#include "ash/wm/system_modal_container_event_filter.h"
-#include "ash/wm/window_animations.h"
-#include "ash/wm/window_util.h"
-#include "base/bind.h"
-#include "ui/aura/client/aura_constants.h"
-#include "ui/aura/client/capture_client.h"
-#include "ui/aura/root_window.h"
-#include "ui/aura/window.h"
-#include "ui/base/ui_base_switches_util.h"
-#include "ui/compositor/layer.h"
-#include "ui/compositor/layer_animator.h"
-#include "ui/compositor/scoped_layer_animation_settings.h"
-#include "ui/events/event.h"
-#include "ui/gfx/screen.h"
-#include "ui/views/background.h"
-#include "ui/views/corewm/compound_event_filter.h"
-#include "ui/views/view.h"
-#include "ui/views/widget/widget.h"
-
-namespace ash {
-namespace internal {
-
-////////////////////////////////////////////////////////////////////////////////
-// SystemModalContainerLayoutManager, public:
-
-SystemModalContainerLayoutManager::SystemModalContainerLayoutManager(
- aura::Window* container)
- : container_(container),
- modal_background_(NULL) {
-}
-
-SystemModalContainerLayoutManager::~SystemModalContainerLayoutManager() {
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// SystemModalContainerLayoutManager, aura::LayoutManager implementation:
-
-void SystemModalContainerLayoutManager::OnWindowResized() {
- if (modal_background_) {
- // Note: we have to set the entire bounds with the screen offset.
- modal_background_->SetBounds(
- Shell::GetScreen()->GetDisplayNearestWindow(container_).bounds());
- }
- if (!modal_windows_.empty()) {
- aura::Window::Windows::iterator it = modal_windows_.begin();
- for (it = modal_windows_.begin(); it != modal_windows_.end(); ++it) {
- gfx::Rect bounds = (*it)->bounds();
- bounds.AdjustToFit(container_->bounds());
- (*it)->SetBounds(bounds);
- }
- }
-}
-
-void SystemModalContainerLayoutManager::OnWindowAddedToLayout(
- aura::Window* child) {
- DCHECK((modal_background_ && child == modal_background_->GetNativeView()) ||
- child->type() == aura::client::WINDOW_TYPE_NORMAL ||
- child->type() == aura::client::WINDOW_TYPE_POPUP);
- DCHECK(
- container_->id() != internal::kShellWindowId_LockSystemModalContainer ||
- Shell::GetInstance()->session_state_delegate()->IsUserSessionBlocked());
-
- child->AddObserver(this);
- if (child->GetProperty(aura::client::kModalKey) != ui::MODAL_TYPE_NONE)
- AddModalWindow(child);
-}
-
-void SystemModalContainerLayoutManager::OnWillRemoveWindowFromLayout(
- aura::Window* child) {
- child->RemoveObserver(this);
- if (child->GetProperty(aura::client::kModalKey) != ui::MODAL_TYPE_NONE)
- RemoveModalWindow(child);
-}
-
-void SystemModalContainerLayoutManager::OnWindowRemovedFromLayout(
- aura::Window* child) {
-}
-
-void SystemModalContainerLayoutManager::OnChildWindowVisibilityChanged(
- aura::Window* child,
- bool visible) {
-}
-
-void SystemModalContainerLayoutManager::SetChildBounds(
- aura::Window* child,
- const gfx::Rect& requested_bounds) {
- SetChildBoundsDirect(child, requested_bounds);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// SystemModalContainerLayoutManager, aura::WindowObserver implementation:
-
-void SystemModalContainerLayoutManager::OnWindowPropertyChanged(
- aura::Window* window,
- const void* key,
- intptr_t old) {
- if (key != aura::client::kModalKey)
- return;
-
- if (window->GetProperty(aura::client::kModalKey) != ui::MODAL_TYPE_NONE) {
- AddModalWindow(window);
- } else if (static_cast<ui::ModalType>(old) != ui::MODAL_TYPE_NONE) {
- RemoveModalWindow(window);
- Shell::GetInstance()->OnModalWindowRemoved(window);
- }
-}
-
-void SystemModalContainerLayoutManager::OnWindowDestroying(
- aura::Window* window) {
- if (modal_background_ && modal_background_->GetNativeView() == window)
- modal_background_ = NULL;
-}
-
-bool SystemModalContainerLayoutManager::CanWindowReceiveEvents(
- aura::Window* window) {
- // We could get when we're at lock screen and there is modal window at
- // system modal window layer which added event filter.
- // Now this lock modal windows layer layout manager should not block events
- // for windows at lock layer.
- // See SystemModalContainerLayoutManagerTest.EventFocusContainers and
- // http://crbug.com/157469
- if (modal_windows_.empty())
- return true;
- // This container can not handle events if the screen is locked and it is not
- // above the lock screen layer (crbug.com/110920).
- if (Shell::GetInstance()->session_state_delegate()->IsUserSessionBlocked() &&
- container_->id() < ash::internal::kShellWindowId_LockScreenContainer)
- return true;
- return wm::GetActivatableWindow(window) == modal_window();
-}
-
-bool SystemModalContainerLayoutManager::ActivateNextModalWindow() {
- if (modal_windows_.empty())
- return false;
- wm::ActivateWindow(modal_window());
- return true;
-}
-
-void SystemModalContainerLayoutManager::CreateModalBackground() {
- if (!modal_background_) {
- modal_background_ = new views::Widget;
- views::Widget::InitParams params(views::Widget::InitParams::TYPE_CONTROL);
- params.parent = container_;
- params.bounds = Shell::GetScreen()->GetDisplayNearestWindow(
- container_).bounds();
- modal_background_->Init(params);
- modal_background_->GetNativeView()->SetName(
- "SystemModalContainerLayoutManager.ModalBackground");
- views::View* contents_view = new views::View();
- // TODO(jamescook): This could be SK_ColorWHITE for the new dialog style.
- contents_view->set_background(
- views::Background::CreateSolidBackground(SK_ColorBLACK));
- modal_background_->SetContentsView(contents_view);
- modal_background_->GetNativeView()->layer()->SetOpacity(0.0f);
- }
-
- ui::ScopedLayerAnimationSettings settings(
- modal_background_->GetNativeView()->layer()->GetAnimator());
- modal_background_->Show();
- modal_background_->GetNativeView()->layer()->SetOpacity(0.5f);
- container_->StackChildAtTop(modal_background_->GetNativeView());
-}
-
-void SystemModalContainerLayoutManager::DestroyModalBackground() {
- // modal_background_ can be NULL when a root window is shutting down
- // and OnWindowDestroying is called first.
- if (modal_background_) {
- ui::ScopedLayerAnimationSettings settings(
- modal_background_->GetNativeView()->layer()->GetAnimator());
- modal_background_->Close();
- settings.AddObserver(views::corewm::CreateHidingWindowAnimationObserver(
- modal_background_->GetNativeView()));
- modal_background_->GetNativeView()->layer()->SetOpacity(0.0f);
- modal_background_ = NULL;
- }
-}
-
-// static
-bool SystemModalContainerLayoutManager::IsModalBackground(
- aura::Window* window) {
- int id = window->parent()->id();
- if (id != internal::kShellWindowId_SystemModalContainer &&
- id != internal::kShellWindowId_LockSystemModalContainer)
- return false;
- SystemModalContainerLayoutManager* layout_manager =
- static_cast<SystemModalContainerLayoutManager*>(
- window->parent()->layout_manager());
- return layout_manager->modal_background_ &&
- layout_manager->modal_background_->GetNativeWindow() == window;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// SystemModalContainerLayoutManager, private:
-
-void SystemModalContainerLayoutManager::AddModalWindow(aura::Window* window) {
- if (modal_windows_.empty()) {
- aura::Window* capture_window = aura::client::GetCaptureWindow(container_);
- if (capture_window)
- capture_window->ReleaseCapture();
- }
- modal_windows_.push_back(window);
- Shell::GetInstance()->CreateModalBackground(window);
- window->parent()->StackChildAtTop(window);
-}
-
-void SystemModalContainerLayoutManager::RemoveModalWindow(
- aura::Window* window) {
- aura::Window::Windows::iterator it =
- std::find(modal_windows_.begin(), modal_windows_.end(), window);
- if (it != modal_windows_.end())
- modal_windows_.erase(it);
-}
-
-} // namespace internal
-} // namespace ash