Commit 85a5f770 authored by Alan Lau's avatar Alan Lau Committed by Commit Bot

Pass user agent to SetAssistantOptions

Change-Id: I52953684bd1588b4ceda11379cbd2856de7b1273
Reviewed-on: https://chromium-review.googlesource.com/972626
Commit-Queue: Alan Lau <alanlau@google.com>
Reviewed-by: default avatarXiaohui Chen <xiaohuic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544938}
parent 573f82bc
......@@ -6,10 +6,15 @@
#include <utility>
#include "base/bind.h"
#include "base/logging.h"
#include "base/strings/stringprintf.h"
#include "base/sys_info.h"
#include "base/task_scheduler/post_task.h"
#include "chromeos/assistant/internal/internal_constants.h"
#include "chromeos/assistant/internal/internal_util.h"
#include "chromeos/services/assistant/service.h"
#include "chromeos/system/version_loader.h"
#include "libassistant/shared/internal_api/assistant_manager_internal.h"
#include "url/gurl.h"
......@@ -29,9 +34,23 @@ AssistantManagerServiceImpl::AssistantManagerServiceImpl(
AssistantManagerServiceImpl::~AssistantManagerServiceImpl() {}
void AssistantManagerServiceImpl::Start(const std::string& access_token) {
// Posting to background thread because GetARCVersion may be blocking
base::PostTaskWithTraitsAndReplyWithResult(
FROM_HERE, {base::MayBlock(), base::TaskPriority::USER_VISIBLE},
base::BindOnce(&chromeos::version_loader::GetARCVersion),
base::BindOnce(&AssistantManagerServiceImpl::StartAssistantInternal,
base::Unretained(this), access_token));
// Set the flag to avoid starting the service multiple times.
running_ = true;
}
void AssistantManagerServiceImpl::StartAssistantInternal(
const std::string& access_token,
const std::string& arc_version) {
auto* internal_options =
assistant_manager_internal_->CreateDefaultInternalOptions();
SetAssistantOptions(internal_options);
SetAssistantOptions(internal_options, BuildUserAgent(arc_version));
assistant_manager_internal_->SetOptions(*internal_options, [](bool success) {
DVLOG(2) << "set options: " << success;
});
......@@ -40,7 +59,25 @@ void AssistantManagerServiceImpl::Start(const std::string& access_token) {
SetAccessToken(access_token);
assistant_manager_->Start();
running_ = true;
}
std::string AssistantManagerServiceImpl::BuildUserAgent(
const std::string& arc_version) const {
int32_t os_major_version = 0;
int32_t os_minor_version = 0;
int32_t os_bugfix_version = 0;
base::SysInfo::OperatingSystemVersionNumbers(
&os_major_version, &os_minor_version, &os_bugfix_version);
std::string user_agent;
base::StringAppendF(&user_agent, "Mozilla/5.0 (X11; CrOS %s %d.%d.%d)",
base::SysInfo::OperatingSystemArchitecture().c_str(),
os_major_version, os_minor_version, os_bugfix_version);
if (!arc_version.empty()) {
base::StringAppendF(&user_agent, " ARC/%s", arc_version.c_str());
}
return user_agent;
}
bool AssistantManagerServiceImpl::IsRunning() const {
......
......@@ -57,6 +57,10 @@ class AssistantManagerServiceImpl
assistant_client::AssistantManagerInternal* const assistant_manager_internal_;
mojo::InterfacePtrSet<mojom::AssistantEventSubscriber> subscribers_;
void StartAssistantInternal(const std::string& access_token,
const std::string& arc_version);
std::string BuildUserAgent(const std::string& arc_version) const;
DISALLOW_COPY_AND_ASSIGN(AssistantManagerServiceImpl);
};
......
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