[M149] Guard RestoreTokenManager add/reads with Mutex

Original change's description:
> Guard RestoreTokenManager add/reads with Mutex
>
> The RestoreTokenManager is a singleton who's adds and reads could be
> accessed by multiple threads simultaneously. To prevent any potential
> issues/collisions, ensure that such accesses happen behind a lock.
>
> Bug: chromium:513049286
> Change-Id: I44c1c7977a6d02e1ac3fbe00e6ffc7bc22e41e46
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/472480
> Reviewed-by: Mark Foltz <mfoltz@chromium.org>
> Auto-Submit: Alexander Cooper <alcooper@chromium.org>
> Commit-Queue: Mark Foltz <mfoltz@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#47711}

(cherry picked from commit b9f0b184cb5a487fcb4910efaf4f84483ddba284)

Bug: chromium:514929759,chromium:513049286
Change-Id: I44c1c7977a6d02e1ac3fbe00e6ffc7bc22e41e46
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/474080
Commit-Queue: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/7827@{#2}
Cr-Branched-From: d606bc991592fbf4dcbe85e9d05db5e501a5ad42-refs/heads/main@{#47595}
diff --git a/modules/desktop_capture/linux/wayland/restore_token_manager.cc b/modules/desktop_capture/linux/wayland/restore_token_manager.cc
index ff843c2..101a5af 100644
--- a/modules/desktop_capture/linux/wayland/restore_token_manager.cc
+++ b/modules/desktop_capture/linux/wayland/restore_token_manager.cc
@@ -13,6 +13,7 @@
 #include <string>
 
 #include "modules/desktop_capture/desktop_capturer.h"
+#include "rtc_base/synchronization/mutex.h"
 
 namespace webrtc {
 
@@ -24,15 +25,18 @@
 
 void RestoreTokenManager::AddToken(DesktopCapturer::SourceId id,
                                    const std::string& token) {
+  MutexLock lock(&mutex_);
   restore_tokens_.insert({id, token});
 }
 
 std::string RestoreTokenManager::GetToken(DesktopCapturer::SourceId id) {
+  MutexLock lock(&mutex_);
   const std::string token = restore_tokens_[id];
   return token;
 }
 
 DesktopCapturer::SourceId RestoreTokenManager::GetUnusedId() {
+  MutexLock lock(&mutex_);
   return ++last_source_id_;
 }
 
diff --git a/modules/desktop_capture/linux/wayland/restore_token_manager.h b/modules/desktop_capture/linux/wayland/restore_token_manager.h
index 06d3071..120a4b2 100644
--- a/modules/desktop_capture/linux/wayland/restore_token_manager.h
+++ b/modules/desktop_capture/linux/wayland/restore_token_manager.h
@@ -15,6 +15,8 @@
 #include <unordered_map>
 
 #include "modules/desktop_capture/desktop_capturer.h"
+#include "rtc_base/synchronization/mutex.h"
+#include "rtc_base/thread_annotations.h"
 
 namespace webrtc {
 
@@ -35,9 +37,11 @@
   RestoreTokenManager() = default;
   ~RestoreTokenManager() = default;
 
-  DesktopCapturer::SourceId last_source_id_ = 0;
+  Mutex mutex_;
+  DesktopCapturer::SourceId last_source_id_ RTC_GUARDED_BY(mutex_) = 0;
 
-  std::unordered_map<DesktopCapturer::SourceId, std::string> restore_tokens_;
+  std::unordered_map<DesktopCapturer::SourceId, std::string> restore_tokens_
+      RTC_GUARDED_BY(mutex_);
 };
 
 }  // namespace webrtc