Commit c3a7b6f9 authored by Xiaohui Chen's avatar Xiaohui Chen Committed by Commit Bot

assistant: fix crash when register fallback media handler

It is possible that the callback from libassistant comes right after
assistant_manager is stopped/reset.  Let's guard this case.

Bug: 879390
Test: locally build
Change-Id: Iea2fe174a02627e6d61406a1319d172470028afd
Reviewed-on: https://chromium-review.googlesource.com/1198105Reviewed-by: default avatarMuyuan Li <muyuanli@chromium.org>
Commit-Queue: Xiaohui Chen <xiaohuic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#587879}
parent b6153c40
......@@ -4,6 +4,7 @@
#include "chromeos/services/assistant/assistant_manager_service_impl.h"
#include <algorithm>
#include <utility>
#include "ash/public/interfaces/constants.mojom.h"
......@@ -133,6 +134,12 @@ void AssistantManagerServiceImpl::SetAccessToken(
}
void AssistantManagerServiceImpl::RegisterFallbackMediaHandler() {
// This is a callback from LibAssistant, it is async from LibAssistant thread.
// It is possible that when it reaches here, the assistant_manager_ has
// been stopped.
if (!assistant_manager_internal_)
return;
// Register handler for media actions.
assistant_manager_internal_->RegisterFallbackMediaHandler(
[this](std::string play_media_args_proto) {
......@@ -735,8 +742,13 @@ void AssistantManagerServiceImpl::HandleUpdateSettingsResponse(
callback.Run(result);
}
// assistant_client::DeviceStateListener overrides
// Run on LibAssistant threads
void AssistantManagerServiceImpl::OnStartFinished() {
RegisterFallbackMediaHandler();
main_thread_task_runner_->PostTask(
FROM_HERE,
base::BindOnce(&AssistantManagerServiceImpl::RegisterFallbackMediaHandler,
weak_factory_.GetWeakPtr()));
}
void AssistantManagerServiceImpl::OnTimerSoundingStarted() {
......
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