| OLD | NEW |
| (Empty) |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "components/mus/ws/user_id_tracker.h" | |
| 6 | |
| 7 #include "components/mus/ws/user_id_tracker_observer.h" | |
| 8 #include "services/shell/public/interfaces/connector.mojom.h" | |
| 9 | |
| 10 namespace mus { | |
| 11 namespace ws { | |
| 12 | |
| 13 UserIdTracker::UserIdTracker() : active_id_(shell::mojom::kRootUserID) { | |
| 14 ids_.insert(active_id_); | |
| 15 } | |
| 16 | |
| 17 UserIdTracker::~UserIdTracker() { | |
| 18 } | |
| 19 | |
| 20 bool UserIdTracker::IsValidUserId(const UserId& id) const { | |
| 21 return ids_.count(id) > 0; | |
| 22 } | |
| 23 | |
| 24 void UserIdTracker::SetActiveUserId(const UserId& id) { | |
| 25 DCHECK(IsValidUserId(id)); | |
| 26 if (id == active_id_) | |
| 27 return; | |
| 28 | |
| 29 const UserId previously_active_id = active_id_; | |
| 30 active_id_ = id; | |
| 31 FOR_EACH_OBSERVER(UserIdTrackerObserver, observers_, | |
| 32 OnActiveUserIdChanged(previously_active_id, id)); | |
| 33 } | |
| 34 | |
| 35 void UserIdTracker::AddUserId(const UserId& id) { | |
| 36 if (IsValidUserId(id)) | |
| 37 return; | |
| 38 | |
| 39 ids_.insert(id); | |
| 40 FOR_EACH_OBSERVER(UserIdTrackerObserver, observers_, OnUserIdAdded(id)); | |
| 41 } | |
| 42 | |
| 43 void UserIdTracker::RemoveUserId(const UserId& id) { | |
| 44 DCHECK(IsValidUserId(id)); | |
| 45 ids_.erase(id); | |
| 46 FOR_EACH_OBSERVER(UserIdTrackerObserver, observers_, OnUserIdRemoved(id)); | |
| 47 } | |
| 48 | |
| 49 void UserIdTracker::AddObserver(UserIdTrackerObserver* observer) { | |
| 50 observers_.AddObserver(observer); | |
| 51 } | |
| 52 | |
| 53 void UserIdTracker::RemoveObserver(UserIdTrackerObserver* observer) { | |
| 54 observers_.RemoveObserver(observer); | |
| 55 } | |
| 56 | |
| 57 void UserIdTracker::Bind(mojom::UserAccessManagerRequest request) { | |
| 58 bindings_.AddBinding(this, std::move(request)); | |
| 59 } | |
| 60 | |
| 61 void UserIdTracker::SetActiveUser(const mojo::String& user_id) { | |
| 62 if (!IsValidUserId(user_id)) | |
| 63 AddUserId(user_id); | |
| 64 SetActiveUserId(user_id); | |
| 65 } | |
| 66 | |
| 67 } // namespace ws | |
| 68 } // namespace mus | |
| OLD | NEW |