| Index: athena/wm/window_list_provider_impl.cc
|
| diff --git a/athena/wm/window_list_provider_impl.cc b/athena/wm/window_list_provider_impl.cc
|
| deleted file mode 100644
|
| index eec4f8b245bf0280ac7c6770db5c5f7340a5c1ee..0000000000000000000000000000000000000000
|
| --- a/athena/wm/window_list_provider_impl.cc
|
| +++ /dev/null
|
| @@ -1,136 +0,0 @@
|
| -// 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.
|
| -
|
| -#include "athena/wm/window_list_provider_impl.h"
|
| -
|
| -#include <algorithm>
|
| -
|
| -#include "athena/athena_export.h"
|
| -#include "athena/wm/public/window_list_provider_observer.h"
|
| -#include "ui/aura/window.h"
|
| -#include "ui/aura/window_property.h"
|
| -#include "ui/wm/core/transient_window_manager.h"
|
| -#include "ui/wm/core/window_util.h"
|
| -
|
| -namespace athena {
|
| -namespace {
|
| -
|
| -// Used to keep track of which window should be managed. This is necessary
|
| -// as the necessary informatino used in IsValidWindow (transient parent
|
| -// for example) may not available during destruction.
|
| -DEFINE_WINDOW_PROPERTY_KEY(bool, kManagedKey, false);
|
| -
|
| -} // namespace
|
| -
|
| -WindowListProviderImpl::WindowListProviderImpl(aura::Window* container)
|
| - : container_(container) {
|
| - CHECK(container_);
|
| - container_->AddObserver(this);
|
| - RecreateWindowList();
|
| - for (auto* window : window_list_)
|
| - window->AddObserver(this);
|
| -}
|
| -
|
| -WindowListProviderImpl::~WindowListProviderImpl() {
|
| - // Remove all remaining window observers.
|
| - for (auto* window : window_list_) {
|
| - CHECK(window->GetProperty(kManagedKey));
|
| - window->RemoveObserver(this);
|
| - }
|
| - container_->RemoveObserver(this);
|
| -}
|
| -
|
| -bool WindowListProviderImpl::IsValidWindow(aura::Window* window) const {
|
| - if (wm::GetTransientParent(window))
|
| - return false;
|
| -
|
| - // TODO(oshima): crbug.com/413912.
|
| - return window->type() == ui::wm::WINDOW_TYPE_NORMAL ||
|
| - window->type() == ui::wm::WINDOW_TYPE_PANEL;
|
| -}
|
| -
|
| -void WindowListProviderImpl::AddObserver(WindowListProviderObserver* observer) {
|
| - observers_.AddObserver(observer);
|
| -}
|
| -
|
| -void WindowListProviderImpl::RemoveObserver(
|
| - WindowListProviderObserver* observer) {
|
| - observers_.RemoveObserver(observer);
|
| -}
|
| -
|
| -const aura::Window::Windows& WindowListProviderImpl::GetWindowList() const {
|
| - return window_list_;
|
| -}
|
| -
|
| -bool WindowListProviderImpl::IsWindowInList(aura::Window* window) const {
|
| - return std::find(window_list_.begin(), window_list_.end(), window) !=
|
| - window_list_.end();
|
| -}
|
| -
|
| -void WindowListProviderImpl::StackWindowFrontOf(
|
| - aura::Window* window,
|
| - aura::Window* reference_window) {
|
| - DCHECK_NE(window, reference_window);
|
| - DCHECK(IsWindowInList(window));
|
| - DCHECK(IsWindowInList(reference_window));
|
| - container_->StackChildAbove(window, reference_window);
|
| -}
|
| -
|
| -void WindowListProviderImpl::StackWindowBehindTo(
|
| - aura::Window* window,
|
| - aura::Window* reference_window) {
|
| - DCHECK_NE(window, reference_window);
|
| - DCHECK(IsWindowInList(window));
|
| - DCHECK(IsWindowInList(reference_window));
|
| - container_->StackChildBelow(window, reference_window);
|
| -}
|
| -
|
| -void WindowListProviderImpl::RecreateWindowList() {
|
| - window_list_.clear();
|
| - for (auto* window : container_->children()) {
|
| - if (window->GetProperty(kManagedKey))
|
| - window_list_.push_back(window);
|
| - }
|
| -}
|
| -
|
| -void WindowListProviderImpl::OnWindowAdded(aura::Window* window) {
|
| - if (!IsValidWindow(window) || window->parent() != container_)
|
| - return;
|
| -
|
| - window->SetProperty(kManagedKey, true);
|
| - RecreateWindowList();
|
| - DCHECK(IsWindowInList(window));
|
| - window->AddObserver(this);
|
| - FOR_EACH_OBSERVER(
|
| - WindowListProviderObserver, observers_, OnWindowAddedToList(window));
|
| -}
|
| -
|
| -void WindowListProviderImpl::OnWillRemoveWindow(aura::Window* window) {
|
| - if (!window->GetProperty(kManagedKey))
|
| - return;
|
| - DCHECK(IsWindowInList(window));
|
| - aura::Window::Windows::iterator find = std::find(window_list_.begin(),
|
| - window_list_.end(),
|
| - window);
|
| - CHECK(find != window_list_.end());
|
| - int index = find - window_list_.begin();
|
| - window_list_.erase(find);
|
| - window->ClearProperty(kManagedKey);
|
| - window->RemoveObserver(this);
|
| - FOR_EACH_OBSERVER(WindowListProviderObserver,
|
| - observers_,
|
| - OnWindowRemovedFromList(window, index));
|
| -}
|
| -
|
| -void WindowListProviderImpl::OnWindowStackingChanged(aura::Window* window) {
|
| - if (window == container_)
|
| - return;
|
| - DCHECK(IsWindowInList(window));
|
| - RecreateWindowList();
|
| - // Inform our listeners that the stacking has been changed.
|
| - FOR_EACH_OBSERVER(
|
| - WindowListProviderObserver, observers_, OnWindowStackingChangedInList());
|
| -}
|
| -
|
| -} // namespace athena
|
|
|