blob: 7ef3926bca54472e6b482232c36c551b569059c1 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/task_management/providers/arc/arc_process_task.h"
#include "base/i18n/rtl.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/grit/generated_resources.h"
#include "components/arc/arc_bridge_service.h"
#include "ui/base/l10n/l10n_util.h"
namespace task_management {
namespace {
base::string16 MakeTitle(const std::string& process_name) {
base::string16 title =
l10n_util::GetStringFUTF16(
IDS_TASK_MANAGER_ARC_PREFIX, base::UTF8ToUTF16(process_name));
base::i18n::AdjustStringForLocaleDirection(&title);
return title;
}
} // namespace
ArcProcessTask::ArcProcessTask(
base::ProcessId pid,
base::ProcessId nspid,
const std::string& process_name)
: Task(MakeTitle(process_name), process_name, nullptr, pid),
nspid_(nspid),
process_name_(process_name) {
}
ArcProcessTask::~ArcProcessTask() {
}
Task::Type ArcProcessTask::GetType() const {
return Task::ARC;
}
int ArcProcessTask::GetChildProcessUniqueID() const {
// ARC process is not a child process of the browser.
return 0;
}
void ArcProcessTask::Kill() {
arc::ProcessInstance* arc_process_instance =
arc::ArcBridgeService::Get()->process_instance();
if (!arc_process_instance) {
LOG(ERROR) << "ARC process instance is not ready.";
return;
}
if (arc::ArcBridgeService::Get()->process_version() < 1) {
LOG(ERROR) << "ARC KillProcess IPC is unavailable.";
return;
}
arc_process_instance->KillProcess(
nspid_, "Killed manually from Task Manager");
}
} // namespace task_management