| Index: components/mus/ws/server_window_drawn_tracker.cc
|
| diff --git a/components/mus/ws/server_window_drawn_tracker.cc b/components/mus/ws/server_window_drawn_tracker.cc
|
| deleted file mode 100644
|
| index cdbca8ccddf25e1060da708355cfeb7c2a055e98..0000000000000000000000000000000000000000
|
| --- a/components/mus/ws/server_window_drawn_tracker.cc
|
| +++ /dev/null
|
| @@ -1,136 +0,0 @@
|
| -// Copyright 2015 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 "components/mus/ws/server_window_drawn_tracker.h"
|
| -
|
| -#include "components/mus/ws/server_window.h"
|
| -#include "components/mus/ws/server_window_drawn_tracker_observer.h"
|
| -
|
| -namespace mus {
|
| -
|
| -namespace ws {
|
| -
|
| -ServerWindowDrawnTracker::ServerWindowDrawnTracker(
|
| - ServerWindow* window,
|
| - ServerWindowDrawnTrackerObserver* observer)
|
| - : window_(window), observer_(observer), drawn_(window->IsDrawn()) {
|
| - AddObservers();
|
| -}
|
| -
|
| -ServerWindowDrawnTracker::~ServerWindowDrawnTracker() {
|
| - RemoveObservers();
|
| -}
|
| -
|
| -void ServerWindowDrawnTracker::SetDrawn(ServerWindow* ancestor, bool drawn) {
|
| - // If |windows_| is empty when this code runs, that means |window_| has been
|
| - // destroyed. So set |window_| to nullptr, but make sure the right value is
|
| - // sent to OnDrawnStateChanged().
|
| - ServerWindow* window = window_;
|
| - if (windows_.empty())
|
| - window_ = nullptr;
|
| -
|
| - if (drawn == drawn_)
|
| - return;
|
| -
|
| - drawn_ = drawn;
|
| - observer_->OnDrawnStateChanged(ancestor, window, drawn);
|
| -}
|
| -
|
| -void ServerWindowDrawnTracker::AddObservers() {
|
| - if (!window_)
|
| - return;
|
| -
|
| - for (ServerWindow* v = window_; v; v = v->parent()) {
|
| - v->AddObserver(this);
|
| - windows_.insert(v);
|
| - }
|
| -}
|
| -
|
| -void ServerWindowDrawnTracker::RemoveObservers() {
|
| - for (ServerWindow* window : windows_)
|
| - window->RemoveObserver(this);
|
| -
|
| - windows_.clear();
|
| -}
|
| -
|
| -void ServerWindowDrawnTracker::OnWindowDestroying(ServerWindow* window) {
|
| - if (!drawn_)
|
| - return;
|
| - observer_->OnDrawnStateWillChange(window->parent(), window_, false);
|
| -}
|
| -
|
| -void ServerWindowDrawnTracker::OnWindowDestroyed(ServerWindow* window) {
|
| - // As windows are removed before being destroyed, resulting in
|
| - // OnWindowHierarchyChanged() and us removing ourself as an observer, the only
|
| - // window we should ever get notified of destruction on is |window_|.
|
| - DCHECK_EQ(window, window_);
|
| - RemoveObservers();
|
| - SetDrawn(nullptr, false);
|
| -}
|
| -
|
| -void ServerWindowDrawnTracker::OnWillChangeWindowHierarchy(
|
| - ServerWindow* window,
|
| - ServerWindow* new_parent,
|
| - ServerWindow* old_parent) {
|
| - bool new_is_drawn = new_parent && new_parent->IsDrawn();
|
| - if (new_is_drawn) {
|
| - for (ServerWindow* w = window_; new_is_drawn && w != old_parent;
|
| - w = w->parent()) {
|
| - new_is_drawn = w->visible();
|
| - }
|
| - }
|
| - if (drawn_ != new_is_drawn) {
|
| - observer_->OnDrawnStateWillChange(new_is_drawn ? nullptr : old_parent,
|
| - window_, new_is_drawn);
|
| - }
|
| -}
|
| -
|
| -void ServerWindowDrawnTracker::OnWindowHierarchyChanged(
|
| - ServerWindow* window,
|
| - ServerWindow* new_parent,
|
| - ServerWindow* old_parent) {
|
| - RemoveObservers();
|
| - AddObservers();
|
| - const bool is_drawn = window_->IsDrawn();
|
| - SetDrawn(is_drawn ? nullptr : old_parent, is_drawn);
|
| -}
|
| -
|
| -void ServerWindowDrawnTracker::OnWillChangeWindowVisibility(
|
| - ServerWindow* window) {
|
| - bool will_change = false;
|
| - if (drawn_) {
|
| - // If |window_| is currently drawn, then any change of visibility of the
|
| - // windows will toggle the drawn status.
|
| - will_change = true;
|
| - } else {
|
| - // If |window| is currently visible, then it's becoming invisible, and so
|
| - // |window_| will remain not drawn.
|
| - if (window->visible()) {
|
| - will_change = false;
|
| - } else {
|
| - bool is_drawn = (window->GetRoot() == window) ||
|
| - (window->parent() && window->parent()->IsDrawn());
|
| - if (is_drawn) {
|
| - for (ServerWindow* w = window_; is_drawn && w != window;
|
| - w = w->parent())
|
| - is_drawn = w->visible();
|
| - }
|
| - will_change = drawn_ != is_drawn;
|
| - }
|
| - }
|
| - if (will_change) {
|
| - bool new_is_drawn = !drawn_;
|
| - observer_->OnDrawnStateWillChange(new_is_drawn ? nullptr : window->parent(),
|
| - window_, new_is_drawn);
|
| - }
|
| -}
|
| -
|
| -void ServerWindowDrawnTracker::OnWindowVisibilityChanged(ServerWindow* window) {
|
| - const bool is_drawn = window_->IsDrawn();
|
| - SetDrawn(is_drawn ? nullptr : window->parent(), is_drawn);
|
| -}
|
| -
|
| -} // namespace ws
|
| -
|
| -} // namespace mus
|
|
|