Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Unified Diff: components/mus/ws/server_window_drawn_tracker.cc

Issue 2119963002: Move mus to //services/ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « components/mus/ws/server_window_drawn_tracker.h ('k') | components/mus/ws/server_window_drawn_tracker_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698