Commit 7caac4f0 authored by Jason Lin's avatar Jason Lin Committed by Commit Bot

Take VM media capture state into account in NotifyCaptureState()

VM media capture state was used only in NotifyVmCaptureState(). This CL
makes NotifyCaptureState() take it into account too. UserChooserView is
the only class subscribing to NotifyCaptureState(), so it will also
display the media capturing red dot now when VM is using the camera or
mic.

Bug: 167491603
Change-Id: I426a83858eb209ec016e1b77580fd94c5817055c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2465895
Commit-Queue: Jason Lin <lxj@google.com>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#816811}
parent b28d3c6c
......@@ -217,12 +217,16 @@ void MediaClientImpl::HandleMediaSeekForward() {
void MediaClientImpl::RequestCaptureState() {
base::flat_map<AccountId, MediaCaptureState> capture_states;
for (user_manager::User* user :
user_manager::UserManager::Get()->GetLRULoggedInUsers()) {
auto* manager = user_manager::UserManager::Get();
for (user_manager::User* user : manager->GetLRULoggedInUsers()) {
capture_states[user->GetAccountId()] = GetMediaCaptureStateOfAllWebContents(
chromeos::ProfileHelper::Get()->GetProfileByUser(user));
}
const user_manager::User* primary_user = manager->GetPrimaryUser();
if (primary_user)
capture_states[primary_user->GetAccountId()] |= vm_media_capture_state_;
media_controller_->NotifyCaptureState(std::move(capture_states));
}
......@@ -254,12 +258,12 @@ void MediaClientImpl::OnBrowserSetLastActive(Browser* browser) {
void MediaClientImpl::OnVmCameraMicActiveChanged(
chromeos::VmCameraMicManager* manager) {
using DeviceType = chromeos::VmCameraMicManager::DeviceType;
MediaCaptureState state = MediaCaptureState::kNone;
vm_media_capture_state_ = MediaCaptureState::kNone;
if (manager->GetDeviceActive(DeviceType::kCamera))
state |= MediaCaptureState::kVideo;
vm_media_capture_state_ |= MediaCaptureState::kVideo;
if (manager->GetDeviceActive(DeviceType::kMic))
state |= MediaCaptureState::kAudio;
media_controller_->NotifyVmCaptureState(state);
vm_media_capture_state_ |= MediaCaptureState::kAudio;
media_controller_->NotifyVmCaptureState(vm_media_capture_state_);
}
void MediaClientImpl::EnableCustomMediaKeyHandler(
......
......@@ -6,6 +6,7 @@
#define CHROME_BROWSER_UI_ASH_MEDIA_CLIENT_IMPL_H_
#include "ash/public/cpp/media_client.h"
#include "ash/public/cpp/media_controller.h"
#include "base/containers/flat_map.h"
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
......@@ -14,11 +15,6 @@
#include "chrome/browser/ui/browser_list_observer.h"
#include "ui/base/accelerators/media_keys_listener.h"
namespace ash {
enum class MediaCaptureState;
class MediaController;
} // namespace ash
class MediaClientImpl : public ash::MediaClient,
public BrowserListObserver,
public chromeos::VmCameraMicManager::Observer,
......@@ -101,6 +97,9 @@ class MediaClientImpl : public ash::MediaClient,
content::BrowserContext* active_context_ = nullptr;
ash::MediaCaptureState vm_media_capture_state_ =
ash::MediaCaptureState::kNone;
base::WeakPtrFactory<MediaClientImpl> weak_ptr_factory_{this};
DISALLOW_COPY_AND_ASSIGN(MediaClientImpl);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment