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

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

Issue 1465143004: Converts focusmanager from delegate to observer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleanup Created 5 years, 1 month 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
« no previous file with comments | « components/mus/ws/focus_controller.h ('k') | components/mus/ws/focus_controller_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/mus/ws/focus_controller.cc
diff --git a/components/mus/ws/focus_controller.cc b/components/mus/ws/focus_controller.cc
index cef209c92e27e64412c9b6c7c6c5a8a9745e465c..49324fd73dd9fc842a0342275fd623fb748b4f5e 100644
--- a/components/mus/ws/focus_controller.cc
+++ b/components/mus/ws/focus_controller.cc
@@ -4,16 +4,14 @@
#include "components/mus/ws/focus_controller.h"
-#include "components/mus/ws/focus_controller_delegate.h"
+#include "components/mus/ws/focus_controller_observer.h"
#include "components/mus/ws/server_window.h"
#include "components/mus/ws/server_window_drawn_tracker.h"
namespace mus {
-
namespace ws {
-FocusController::FocusController(FocusControllerDelegate* delegate)
- : delegate_(delegate) {}
+FocusController::FocusController() {}
FocusController::~FocusController() {}
@@ -21,13 +19,21 @@ void FocusController::SetFocusedWindow(ServerWindow* window) {
if (GetFocusedWindow() == window)
return;
- SetFocusedWindowImpl(window, CHANGE_SOURCE_EXPLICIT);
+ SetFocusedWindowImpl(FocusControllerChangeSource::EXPLICIT, window);
}
ServerWindow* FocusController::GetFocusedWindow() {
return drawn_tracker_ ? drawn_tracker_->window() : nullptr;
}
+void FocusController::AddObserver(FocusControllerObserver* observer) {
+ observers_.AddObserver(observer);
+}
+
+void FocusController::RemoveObserver(FocusControllerObserver* observer) {
+ observers_.RemoveObserver(observer);
+}
+
bool FocusController::CanBeFocused(ServerWindow* window) const {
// All ancestors of |window| must be drawn, and be focusable.
for (ServerWindow* w = window; w; w = w->parent()) {
@@ -51,8 +57,9 @@ bool FocusController::CanBeActivated(ServerWindow* window) const {
return true;
}
-void FocusController::SetFocusedWindowImpl(ServerWindow* window,
- ChangeSource change_source) {
+void FocusController::SetFocusedWindowImpl(
+ FocusControllerChangeSource change_source,
+ ServerWindow* window) {
if (window && !CanBeFocused(window))
return;
ServerWindow* old = GetFocusedWindow();
@@ -65,17 +72,17 @@ void FocusController::SetFocusedWindowImpl(ServerWindow* window,
else
drawn_tracker_.reset();
- if (change_source == CHANGE_SOURCE_DRAWN_STATE_CHANGED)
- delegate_->OnFocusChanged(old, window);
+ FOR_EACH_OBSERVER(FocusControllerObserver, observers_,
+ OnFocusChanged(change_source, old, window));
}
void FocusController::OnDrawnStateChanged(ServerWindow* ancestor,
ServerWindow* window,
bool is_drawn) {
DCHECK(!is_drawn); // We only observe when drawn.
- SetFocusedWindowImpl(ancestor, CHANGE_SOURCE_DRAWN_STATE_CHANGED);
+ SetFocusedWindowImpl(FocusControllerChangeSource::DRAWN_STATE_CHANGED,
+ ancestor);
}
} // namespace ws
-
} // namespace mus
« no previous file with comments | « components/mus/ws/focus_controller.h ('k') | components/mus/ws/focus_controller_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698