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 |