blob: 8dcc8f2550239b5d47ad1656950a0acfaa9704b4 [file] [log] [blame]
// Copyright 2017 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/ash/policy/remote_commands/device_command_fetch_status_job.h"
#include <memory>
#include <utility>
#include "base/bind.h"
#include "base/syslog_logging.h"
#include "base/threading/thread_task_runner_handle.h"
#include "chrome/browser/ash/policy/core/browser_policy_connector_chromeos.h"
#include "chrome/browser/ash/policy/core/device_cloud_policy_manager_chromeos.h"
#include "chrome/browser/ash/policy/uploading/status_uploader.h"
#include "chrome/browser/ash/policy/uploading/system_log_uploader.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/browser_process_platform_part.h"
#include "components/policy/proto/device_management_backend.pb.h"
namespace policy {
DeviceCommandFetchStatusJob::DeviceCommandFetchStatusJob() {}
DeviceCommandFetchStatusJob::~DeviceCommandFetchStatusJob() {}
enterprise_management::RemoteCommand_Type
DeviceCommandFetchStatusJob::GetType() const {
return enterprise_management::RemoteCommand_Type_DEVICE_FETCH_STATUS;
}
void DeviceCommandFetchStatusJob::RunImpl(CallbackWithResult succeeded_callback,
CallbackWithResult failed_callback) {
SYSLOG(INFO) << "Fetching device status";
BrowserPolicyConnectorChromeOS* connector =
g_browser_process->platform_part()->browser_policy_connector_chromeos();
DeviceCloudPolicyManagerChromeOS* manager =
connector->GetDeviceCloudPolicyManager();
// DeviceCloudPolicyManagerChromeOS, StatusUploader and SystemLogUploader can
// be null during shutdown (and unit tests). StatusUploader and
// SystemLogUploader objects have the same lifetime - they are created
// together and they are destroyed together (which is why this code doesn't
// do separate checks for them before using them).
if (manager && manager->GetStatusUploader() &&
manager->GetSystemLogUploader()) {
manager->GetStatusUploader()->ScheduleNextStatusUploadImmediately();
manager->GetSystemLogUploader()->ScheduleNextSystemLogUploadImmediately();
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(succeeded_callback), nullptr));
return;
}
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(failed_callback), nullptr));
}
} // namespace policy