| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "services/ui/ws/window_server.h" | 5 #include "services/ui/ws/window_server.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 | 275 |
| 276 ServerWindow* WindowServer::GetFocusedWindow() { | 276 ServerWindow* WindowServer::GetFocusedWindow() { |
| 277 for (Display* display : display_manager_->displays()) { | 277 for (Display* display : display_manager_->displays()) { |
| 278 ServerWindow* focused_window = display->GetFocusedWindow(); | 278 ServerWindow* focused_window = display->GetFocusedWindow(); |
| 279 if (focused_window) | 279 if (focused_window) |
| 280 return focused_window; | 280 return focused_window; |
| 281 } | 281 } |
| 282 return nullptr; | 282 return nullptr; |
| 283 } | 283 } |
| 284 | 284 |
| 285 bool WindowServer::IsActiveUserInHighContrastMode() const { |
| 286 return IsUserInHighContrastMode(user_id_tracker_.active_id()); |
| 287 } |
| 288 |
| 289 void WindowServer::SetHighContrastMode(const UserId& user, bool enabled) { |
| 290 if (IsUserInHighContrastMode(user) == enabled) |
| 291 return; |
| 292 high_contrast_mode_[user] = enabled; |
| 293 if (user_id_tracker_.active_id() != user) |
| 294 return; |
| 295 for (Display* display : display_manager_->displays()) { |
| 296 display->SchedulePaint(display->root_window(), |
| 297 gfx::Rect(display->root_window()->bounds().size())); |
| 298 } |
| 299 } |
| 300 |
| 285 uint32_t WindowServer::GenerateWindowManagerChangeId( | 301 uint32_t WindowServer::GenerateWindowManagerChangeId( |
| 286 WindowTree* source, | 302 WindowTree* source, |
| 287 uint32_t client_change_id) { | 303 uint32_t client_change_id) { |
| 288 const uint32_t wm_change_id = next_wm_change_id_++; | 304 const uint32_t wm_change_id = next_wm_change_id_++; |
| 289 in_flight_wm_change_map_[wm_change_id] = {source->id(), client_change_id}; | 305 in_flight_wm_change_map_[wm_change_id] = {source->id(), client_change_id}; |
| 290 return wm_change_id; | 306 return wm_change_id; |
| 291 } | 307 } |
| 292 | 308 |
| 293 void WindowServer::WindowManagerChangeCompleted( | 309 void WindowServer::WindowManagerChangeCompleted( |
| 294 uint32_t window_manager_change_id, | 310 uint32_t window_manager_change_id, |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 508 display_root->window_manager_state()->event_dispatcher(); | 524 display_root->window_manager_state()->event_dispatcher(); |
| 509 if (window != event_dispatcher->mouse_cursor_source_window()) | 525 if (window != event_dispatcher->mouse_cursor_source_window()) |
| 510 return; | 526 return; |
| 511 | 527 |
| 512 event_dispatcher->UpdateNonClientAreaForCurrentWindow(); | 528 event_dispatcher->UpdateNonClientAreaForCurrentWindow(); |
| 513 int32_t cursor_id = 0; | 529 int32_t cursor_id = 0; |
| 514 if (event_dispatcher->GetCurrentMouseCursor(&cursor_id)) | 530 if (event_dispatcher->GetCurrentMouseCursor(&cursor_id)) |
| 515 display_root->display()->UpdateNativeCursor(cursor_id); | 531 display_root->display()->UpdateNativeCursor(cursor_id); |
| 516 } | 532 } |
| 517 | 533 |
| 534 bool WindowServer::IsUserInHighContrastMode(const UserId& user) const { |
| 535 const auto iter = high_contrast_mode_.find(user); |
| 536 return (iter == high_contrast_mode_.end()) ? false : iter->second; |
| 537 } |
| 538 |
| 518 ui::SurfacesState* WindowServer::GetSurfacesState() { | 539 ui::SurfacesState* WindowServer::GetSurfacesState() { |
| 519 return surfaces_state_.get(); | 540 return surfaces_state_.get(); |
| 520 } | 541 } |
| 521 | 542 |
| 522 void WindowServer::OnScheduleWindowPaint(ServerWindow* window) { | 543 void WindowServer::OnScheduleWindowPaint(ServerWindow* window) { |
| 523 if (in_destructor_) | 544 if (in_destructor_) |
| 524 return; | 545 return; |
| 525 | 546 |
| 526 SchedulePaint(window, gfx::Rect(window->bounds().size())); | 547 SchedulePaint(window, gfx::Rect(window->bounds().size())); |
| 527 if (!window_paint_callback_.is_null()) | 548 if (!window_paint_callback_.is_null()) |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 729 return window_manager_state->got_frame_decoration_values(); | 750 return window_manager_state->got_frame_decoration_values(); |
| 730 } | 751 } |
| 731 | 752 |
| 732 WindowManagerState* WindowServer::GetWindowManagerStateForUser( | 753 WindowManagerState* WindowServer::GetWindowManagerStateForUser( |
| 733 const UserId& user_id) { | 754 const UserId& user_id) { |
| 734 return window_manager_window_tree_factory_set_.GetWindowManagerStateForUser( | 755 return window_manager_window_tree_factory_set_.GetWindowManagerStateForUser( |
| 735 user_id); | 756 user_id); |
| 736 } | 757 } |
| 737 | 758 |
| 738 void WindowServer::OnActiveUserIdChanged(const UserId& previously_active_id, | 759 void WindowServer::OnActiveUserIdChanged(const UserId& previously_active_id, |
| 739 const UserId& active_id) {} | 760 const UserId& active_id) { |
| 761 if (IsUserInHighContrastMode(previously_active_id) == |
| 762 IsUserInHighContrastMode(active_id)) |
| 763 return; |
| 764 for (Display* display : display_manager_->displays()) { |
| 765 display->SchedulePaint(display->root_window(), |
| 766 gfx::Rect(display->root_window()->bounds().size())); |
| 767 } |
| 768 } |
| 740 | 769 |
| 741 void WindowServer::OnUserIdAdded(const UserId& id) { | 770 void WindowServer::OnUserIdAdded(const UserId& id) { |
| 742 activity_monitor_map_[id] = base::MakeUnique<UserActivityMonitor>(nullptr); | 771 activity_monitor_map_[id] = base::MakeUnique<UserActivityMonitor>(nullptr); |
| 743 } | 772 } |
| 744 | 773 |
| 745 void WindowServer::OnUserIdRemoved(const UserId& id) { | 774 void WindowServer::OnUserIdRemoved(const UserId& id) { |
| 746 activity_monitor_map_.erase(id); | 775 activity_monitor_map_.erase(id); |
| 747 } | 776 } |
| 748 | 777 |
| 749 } // namespace ws | 778 } // namespace ws |
| 750 } // namespace ui | 779 } // namespace ui |
| OLD | NEW |